To query the Tooling API via Apex to gather these results, see Salesforce Field Auditor for a full solution and the following code snippet for a general method of sending the query, deserializing the JSON response into a map and then using the map to access the individual data points.
// QUERY 2 - Get the Id, InlineHelpText, CreatedBy.Name, LastModified.Name, CreatedDate, LastModifiedDate on all CUSTOM fields of this object
req.setEndpoint(instanceName + '/services/data/v48.0/tooling/query/?q=Select+Id,InlineHelpText,CreatedDate,LastModifiedDate,LastModifiedBy.Name,CreatedBy.Name+from+CustomField+Where+TableEnumOrId=\'' + objectId + '\'');
HttpResponse res2 = h.send(req);
responseBody = res2.getBody();
// Deserialize the response into an object and create a FieldAuditData object for each record in our response
Map<String, Object> payload2 = (Map<String, Object>)JSON.deserializeUntyped(responseBody);
for (Object data : (List<Object>)payload2.get('records'))
{
Map<String, Object> record = (Map<String, Object>)data;
Object createdByObject = (Object)record.get('CreatedBy');
Map<String, Object> createdByMap = (Map<String, Object>)createdByObject;
String createdName = (String) createdByMap.get('Name');
Object lastModifiedByObject = (Object)record.get('LastModifiedBy');
Map<String, Object> LastModifiedByMap = (Map<String, Object>)LastModifiedByObject;
String lastModifiedName = (String) LastModifiedByMap.get('Name');
// the ID for Custom field adds 3 characters to the end so they get removed here so that it matches its record from FieldDefinition query
String fieldId = (String)record.get('Id');
String formalizedFieldId = objectId + '.' + fieldId.substring(0,fieldId.length() - 3);
if(results.containsKey(formalizedFieldId)){
FieldAuditData f = results.get(formalizedFieldId);
f.helpText = (String)record.get('InlineHelpText');
f.createdDate = formatDateTime((String)record.get('CreatedDate'));
f.lastModifiedDate = formatDateTime((String)record.get('LastModifiedDate'));
f.lastModifiedBy = lastModifiedName;
f.createdBy = createdName;
}
}