483 Investigator Intelligence
Access FDA investigator profiles and inspection patterns based on public records.
Required Tier: Starter+ (Starter, Pro, Enterprise)
Rate limits apply per tier — see Rate Limits for details.
GET /v1/483/investigators
List investigator profiles with filtering, sorting, and pagination.
Request
GET https://api.ctwise.ai/v1/483/investigators?min_inspections=10&sort_by=total_inspections&limit=20
X-Api-Key: YOUR_API_KEY
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
min_inspections | integer | No | Minimum number of inspections (default: 0) |
product_type | string | No | Filter by product type (matches against investigator's top product types) |
sort_by | string | No | Sort by: total_inspections, oai_rate, facilities_inspected, name (default: total_inspections) |
limit | integer | No | Maximum results to return (default: 20, max: 100) |
offset | integer | No | Number of results to skip (default: 0) |
Response
{
"results": [
{
"investigator_name": "J. Smith",
"total_inspections": 147,
"oai_rate": 0.231,
"facilities_inspected": 89,
"top_product_types": ["Sterile Injectables", "Oral Solids", "APIs"],
"top_cfrs": [
{"cfr": "21 CFR 211.160", "count": 42},
{"cfr": "21 CFR 211.192", "count": 38},
{"cfr": "21 CFR 211.100", "count": 31}
]
},
{
"investigator_name": "A. Johnson",
"total_inspections": 98,
"oai_rate": 0.204,
"facilities_inspected": 64,
"top_product_types": ["Biologics", "Sterile Injectables"],
"top_cfrs": [
{"cfr": "21 CFR 211.22", "count": 28},
{"cfr": "21 CFR 211.113", "count": 25}
]
}
],
"total": 2,
"offset": 0,
"limit": 20,
"filters_applied": {
"min_inspections": 10,
"product_type": null,
"sort_by": "total_inspections"
},
"query_metadata": {
"execution_time_ms": 120
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
results | array | Array of investigator profiles |
results[].investigator_name | string | Investigator name from public FDA records |
results[].total_inspections | integer | Total inspections in CTWise database |
results[].oai_rate | number | OAI classification rate (0.0-1.0) |
results[].facilities_inspected | integer | Number of unique facilities inspected |
results[].top_product_types | string[] | Most common product types inspected |
results[].top_cfrs | array | Most frequently cited CFR references |
results[].top_cfrs[].cfr | string | CFR reference (e.g., "21 CFR 211.160") |
results[].top_cfrs[].count | integer | Number of times cited |
total | integer | Total results matching filters |
offset | integer | Current offset |
limit | integer | Page size |
filters_applied | object | Applied search filters |
query_metadata | object | Execution metadata |
GET /v1/483/investigators/{name}
Get detailed profile for a specific FDA investigator by name. Case-insensitive lookup.
Request
GET https://api.ctwise.ai/v1/483/investigators/J.%20Smith
X-Api-Key: YOUR_API_KEY
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Investigator name (URL-encoded, case-insensitive) |
Response
{
"investigator_name": "J. Smith",
"total_inspections": 147,
"oai_rate": 0.231,
"facilities_inspected": 89,
"top_product_types": ["Sterile Injectables", "Oral Solids", "APIs"],
"top_cfrs": [
{"cfr": "21 CFR 211.160", "count": 42},
{"cfr": "21 CFR 211.192", "count": 38},
{"cfr": "21 CFR 211.100", "count": 31}
],
"query_metadata": {
"execution_time_ms": 85
}
}
Examples
List Investigators
curl -X GET "https://api.ctwise.ai/v1/483/investigators?min_inspections=20&sort_by=oai_rate&limit=10" \
-H "X-Api-Key: YOUR_API_KEY"
Get Investigator by Name
curl -X GET "https://api.ctwise.ai/v1/483/investigators/J.%20Smith" \
-H "X-Api-Key: YOUR_API_KEY"
Filter by Product Type
curl -X GET "https://api.ctwise.ai/v1/483/investigators?product_type=sterile+injectables&min_inspections=10" \
-H "X-Api-Key: YOUR_API_KEY"
Python Example - Investigator Profile
import requests
API_KEY = "your_api_key"
BASE_URL = "https://api.ctwise.ai/v1"
# List investigators with high OAI rates
response = requests.get(
f"{BASE_URL}/483/investigators",
headers={"X-Api-Key": API_KEY},
params={
"min_inspections": 20,
"sort_by": "oai_rate",
"limit": 10
}
)
data = response.json()
print(f"Found {data['total']} investigators with 20+ inspections\n")
for inv in data['results']:
print(f"{inv['investigator_name']}")
print(f" Inspections: {inv['total_inspections']}")
print(f" OAI Rate: {inv['oai_rate']:.1%}")
print(f" Facilities: {inv['facilities_inspected']}")
if inv.get('top_cfrs'):
print(f" Top Citation: {inv['top_cfrs'][0]['cfr']} ({inv['top_cfrs'][0]['count']}x)")
print()
Python Example - Inspection Preparation
import requests
API_KEY = "your_api_key"
BASE_URL = "https://api.ctwise.ai/v1"
# Find investigators for your product type
response = requests.get(
f"{BASE_URL}/483/investigators",
headers={"X-Api-Key": API_KEY},
params={
"product_type": "sterile injectables",
"min_inspections": 30,
"sort_by": "total_inspections",
"limit": 10
}
)
investigators = response.json()['results']
print("FDA Investigators - Sterile Injectables")
print("=" * 60)
for inv in investigators:
print(f"\n{inv['investigator_name']}")
print(f" Inspections: {inv['total_inspections']} | OAI Rate: {inv['oai_rate']:.1%}")
if inv.get('top_cfrs'):
print(" Top CFR Citations:")
for cfr in inv['top_cfrs'][:3]:
print(f" {cfr['cfr']} ({cfr['count']}x)")
if inv.get('top_product_types'):
print(f" Product Types: {', '.join(inv['top_product_types'])}")
print("\n" + "=" * 60)
print("Preparation Tips:")
print(" 1. Review top citation areas for investigators in your product type")
print(" 2. Conduct self-inspection focused on common deficiency categories")
print(" 3. Prepare documentation for high-frequency CFR citations")
JavaScript Example
const API_KEY = 'your_api_key';
const BASE_URL = 'https://api.ctwise.ai/v1';
// Get investigators sorted by OAI rate
const response = await fetch(
`${BASE_URL}/483/investigators?min_inspections=20&sort_by=oai_rate&limit=10`,
{
headers: { 'X-Api-Key': API_KEY }
}
);
const data = await response.json();
console.log(`${data.total} Investigators (20+ inspections)\n`);
data.results.forEach((inv, idx) => {
console.log(`${idx + 1}. ${inv.investigator_name}`);
console.log(` OAI Rate: ${(inv.oai_rate * 100).toFixed(1)}%`);
console.log(` Inspections: ${inv.total_inspections}`);
if (inv.top_product_types) {
console.log(` Products: ${inv.top_product_types.join(', ')}`);
}
});
Error Responses
Investigator Not Found
{
"error": "Investigator 'John Doe' not found",
"status_code": 404
}
Status: 404 Not Found
Invalid API Key
{
"message": "Unauthorized"
}
Status: 401 Unauthorized
Performance
| Metric | Target |
|---|---|
| List response time | < 2 seconds |
| Detail response time | < 2 seconds |
| Data freshness | Updated weekly (via intelligence pipeline) |
| Caching | 5-minute Lambda-level cache |
| Timeout | 30 seconds |
Important Disclaimers
-
Public Records Only: All investigator data is compiled from publicly available FDA 483 forms and establishment inspection reports. No confidential FDA information is used.
-
Informational Purpose: This data is intended for informational and research purposes only. It does not represent:
- Official FDA investigator assignments
- Investigator qualifications or certifications
- FDA inspection scheduling or planning
- Individual investigator performance evaluations
-
Privacy: Investigator names may be abbreviated as they appear in public FDA records.
-
No Prediction: Past inspection patterns do not guarantee future inspector assignment or inspection outcomes.
-
Ethical Use: This data should be used to improve compliance programs, not to target or profile individual investigators.
-
Data Limitations:
- Based only on inspections resulting in FDA 483s
- Limited to data available in public FDA databases
- Investigator profiling depends on name fields being populated in source data
Recommended Use Cases
Appropriate Uses:
- Understand common citation categories for inspection preparation
- Benchmark your facility's citation profile against industry patterns
- Tailor inspection readiness training to likely focus areas
- Analyze compliance trends by product type
Inappropriate Uses:
- Attempting to influence inspector assignment
- Profiling individual investigators for adversarial purposes
- Making assumptions about future inspection outcomes
Related Endpoints
- POST /v1/483/observations/search - Search observations
- GET /v1/483/citations/trending - Trending citations
- GET /v1/483/facilities - Facility inspection history