Tools / ClinicalTrials.gov Scraper – Patient Recruitment & NCT IDs
ClinicalTrials.gov Scraper – Patient Recruitment & NCT IDs
Scrape ClinicalTrials.gov's official NIH API: condition, intervention, sponsor, location, facility and lead-sponsor filters, plus six date windows (start, completion, first-posted, results). Optional one-row-per-site mode for site-selection buyers. Eligibility-age bounds accept months, weeks or days as well as whole years, so neonatal and paediatric searches land. No contact people, phones or emails shipped, ever. Optional watchLabel mode returns only studies new since your last run, so a schedule becomes a trial alert; add watchChanges to also catch status changes, protocol/enrollment updates and completion-date slips on studies you already got.
Run it
Pay-per-result on Apify, no FetchSmith account needed. Use your own Apify API token, or hit Run on the Store page with no token at all.
curl -X POST "https://api.apify.com/v2/acts/fetchsmith~clinicaltrials-scraper/run-sync-get-dataset-items?clean=true" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" -H "Content-Type: application/json" \
-d '{"conditions": "breast cancer", "maxResults": 100, "overallStatus": ["RECRUITING"], "phases": ["PHASE3"]}'
Returns the rows as JSON when the run finishes. A hosted FetchSmith API (one key, no Apify account, see API docs) is planned but not open yet.
Output fields
nctId briefTitle officialTitle acronym overallStatus whyStopped stopReason stopReasons studyType phases enrollmentCount enrollmentType startDate primaryCompletionDate completionDate studyFirstPostDate resultsFirstPostDate lastUpdatePostDate leadSponsor leadSponsorClass collaborators conditions keywords interventions primaryOutcomes secondaryOutcomes briefSummary sex minimumAge maximumAge healthyVolunteers standardAges eligibilityCriteria hasResults locationCount locations site studyUrl _watchChangeType _watchPrevious
Sample output
{
"briefTitle": "Treatment of Triple-negative Breast Cancer With Albumin-bound Paclitaxel as Neoadjuvant Therapy",
"conditions": [
"Breast Cancer"
],
"enrollmentCount": 1498,
"interventions": [
{
"name": "nab-Paclitaxel+carboplatin",
"type": "DRUG"
}
],
"leadSponsor": "Shengjing Hospital",
"locationCount": 1,
"nctId": "NCT04137653",
"overallStatus": "RECRUITING",
"phases": [
"PHASE3"
],
"studyType": "INTERVENTIONAL",
"studyUrl": "https://clinicaltrials.gov/study/NCT04137653"
}
Guides
- A 4-day window on ClinicalTrials.gov returns more trials than a 21-day one — because 42% of its dates have no day — ClinicalTrials.gov lets sponsors enter a completion date as a month with no day, and inside a RANGE[] filter that month collapses onto the 1st. We measured it: 42% of primary completion dates in a 1,000-study sample are month-only, and any window that starts after the 1st silently drops every one of them.
- The ClinicalTrials.gov API silently caps pageSize at 1000 — and its phase filter doesn't exist where you'd look for it — ClinicalTrials.gov's API v2 covers 600,000+ studies with no key and no login, but pageSize=1001 returns 200 with 1000 rows (no error), filter.hasResults and filter.phase are both rejected outright, and the real filters live somewhere else entirely.
Only publicly accessible pages are read. Respect the source site's terms when using the data.