How it will work: 3 steps
- Follow us on ApifyThe tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
[]in Study countries. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
Search ClinicalTrials.gov by disease, treatment, sponsor, country, recruitment status or phase. Get study records and compare them with your own earlier snapshot. No API key is needed.
Who uses it
Pharma business teams
Watch studies by drug, sponsor or phase.
CRO planners
Find recruiting studies by country.
Registry analysts
Export study data for research.
Price
Prices will be shown after release.
Questions
Can it match patients to trials?
No. It returns public study data only. It gives no medical advice.
Does it give contact details?
No. Personal contacts are not returned.
How many studies can one run check?
Up to 500 studies per run.
Do I need an API key?
No. The ClinicalTrials.gov API is public.
Details
Step by step on Apify
- Open Input. The new form has
condition: "diabetes",overallStatus: ["RECRUITING"],maxResults: 25andonlyNew: false. - Click Start.
- Open Output → Studies. Check
nctId,briefTitleandoverallStatus. - Export JSON, CSV or Excel from the Dataset.
- For a later comparison, open Next snapshot and save the whole JSON object.
Use cases
| Task | Filters | Key fields |
|---|---|---|
| Review a disease research pipeline | condition, phase | NCT ID, phases, sponsor, enrollment |
| Review an organization portfolio | sponsor | Titles, countries, dates |
| Watch recruitment updates | previousSnapshot, onlyNew | Change type, status, content fingerprint |
| Export a regional registry list | countries, overallStatus | Countries, status, source links |
Tips for better results
- Start with a small max number, like 25, then grow it.
- Keep the same filters when you use a saved snapshot.
- Look at the date type. Estimated dates are plans, not facts.
Limits and good to know
The proven maximum is 500 distinct studies per run. Work at the source stops after 90 seconds. Requests have a 15-second limit, including the body. The Actor retries temporary errors at most three attempts, with at most two timeouts. It reads at most 10 study pages and accepts at most 6 MB of response data. A large or slow response can produce partial output.
Troubleshooting
| Problem | Action |
|---|---|
| No rows | Check spelling and combined filters. Read summary: not_found is a valid result. |
| No changes | This can be normal. Check scanned count and the same search fingerprint. |
SNAPSHOT_QUERY_MISMATCH | Restore the filters and maxResults from the baseline run. |
INVALID_previousSnapshot | Copy the full successful SNAPSHOT, not Dataset rows. |
SOURCE_QUERY_REJECTED | Check the text search syntax, for example an unclosed bracket or quote. |
| Unknown country name | Use registry country names such as United States, Korea, Republic of or Turkey (Türkiye). |
SOURCE_RATE_LIMIT or SOURCE_UNAVAILABLE | Retry later. Do not run many copies at once. |
| Deadline or byte limit | Use a smaller or narrower search. Partial data remains visible. |
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"nctId":"NCT07348432",
"briefTitle":"The diabEAT Study: Insulin dElivery Technologies And eaTing Behaviours in People With Type 1 Diabetes",
"overallStatus":"RECRUITING",
"phases":[],
"studyType":"OBSERVATIONAL",
"leadSponsor":"McGill University",
"enrollment":106,
"enrollmentType":"ESTIMATED",
"startDate":{"date":"2024-07-29","type":"ACTUAL"},
"primaryCompletionDate":{"date":"2026-10-31","type":"ESTIMATED"},
"completionDate":{"date":"2027-04-30","type":"ESTIMATED"},
"locationsCount":1,
"countries":["Canada"],
"lastUpdatePostDate":"2026-10-09",
"url":"https://clinicaltrials.gov/study/NCT07348432",
"changeType":"SNAPSHOT"
}Data fields (30)
| Field | Type | Meaning |
|---|---|---|
nctId | string | ClinicalTrials.gov registry ID, for example NCT07348432. |
briefTitle | string | Short public title of the study. |
officialTitle | string | Full official study title. Null when the registry has none. |
overallStatus | string | Overall recruitment status, for example RECRUITING or COMPLETED. |
phases | array | Study phases from the registry, for example PHASE2 and PHASE3. Empty when no phase is reported; NA means not applicable. |
studyType | string | INTERVENTIONAL, OBSERVATIONAL or EXPANDED_ACCESS. Null when not reported. |
conditions | array | Diseases or conditions reported for the study. |
interventions | array | Treatments as {name, type}, for example a drug or device. No contact data. |
leadSponsor | string | Organization that leads the study. Null when not reported. |
leadSponsorClass | string | Registry organization class, for example INDUSTRY, NIH or OTHER. |
collaborators | array | Partner organizations as {name, class}. |
enrollment | number | Number of participants reported by the sponsor. Null means not reported, not zero. |
enrollmentType | string | ACTUAL for a reported count, ESTIMATED for a planned count. |
startDate | object | Study start as {date, type}. Type is ACTUAL or ESTIMATED; the date can be year-month only. |
primaryCompletionDate | object | Date of the last main outcome measurement as {date, type}. |
completionDate | object | Study completion as {date, type}. |
locationsCount | integer | Number of study site entries. Null when the registry did not return sites. |
countries | array | Unique countries of study sites. |
lastUpdatePostDate | string | Date the latest study update was posted, YYYY-MM-DD. |
url | string | Public ClinicalTrials.gov page of the study. |
provider | string | Always ClinicalTrials.gov. |
sourceUrl | string | Official API URL of this study record. |
fetchedAt | string | Time this run read the record, ISO UTC. |
sourceUpdatedAt | string | Same value as the last update posted date. |
providerDataTimestamp | string | Registry data processing time from the API version endpoint. |
license | string | Reuse terms notice for the registry data. |
licenseUrl | string | Link to the ClinicalTrials.gov terms and conditions. |
changeType | string | SNAPSHOT without a baseline; NEW, UNCHANGED, STATUS_CHANGED or UPDATED against your previous snapshot. |
changedFields | array | overallStatus for a status change, record for any other content change. |
contentHash | string | SHA-256 of the normalized study content, used for comparison. Fetch time is not included. |
Input settings (10)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| Condition or disease | condition | string | "diabetes" |
| Intervention or drug | intervention | string | "" |
| Sponsor or collaborator | sponsor | string | "" |
| Updated since | updatedSince | string | "" |
| Study countries | countries | array | [] |
| Recruitment statuses | overallStatus | array | ["RECRUITING"] |
| Study phases | phase | array | [] |
| Maximum studies to scan | maxResults | integer | 25 |
| Previous snapshot | previousSnapshot | object | |
| Return changes only | onlyNew | boolean | false |
