ClinicalTrials.gov Scraper avatar

ClinicalTrials.gov Scraper

Pricing

from $0.70 / 1,000 studies

Go to Apify Store
ClinicalTrials.gov Scraper

ClinicalTrials.gov Scraper

Trial records with the whyStopped free text classified into safety, futility, slow accrual, funding and the rest — unreadable at scale across 34,000+ terminated studies until now. Plus enrolment failure, overdue records and how many stopped trials never posted results.

Pricing

from $0.70 / 1,000 studies

Rating

0.0

(0)

Developer

Datalayer

Datalayer

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 days ago

Last modified

Categories

Share

ClinicalTrials.gov Scraper — Why Trials Stop

ClinicalTrials.gov is free, official and has a good search UI. Scraping the study record and handing it back is not a product — the registry already does that better.

The field nobody uses is whyStopped. When a sponsor halts a trial they must say why, in free text. Two real examples:

"Initial PI departed institution."

"Study was prematurely terminated due to difficulties experienced in recruiting patients in a reasonable timeframe."

Completely different events. The first is administrative and says nothing about the drug. The second is an accrual failure — the most common cause of death in clinical research and a direct read on how hard that indication is to run.

As free text it is unusable at scale, which is why it sits unread across 34,000+ terminated studies. This Actor classifies it.

Measured on 300 live melanoma trials

ReasonCount
Slow accrual85
Business decision38
Safety37
Sponsor decision, no rationale given21
Futility / lack of efficacy18
Funding18
Administrative12
Investigator or site9
No reason given at all9
COVID / regulatory / drug supply8
Unclassified45

197 of the 300 never posted results. A trial that stops and publishes nothing is how a negative finding disappears, and resultsWithheld counts them.

sponsor_decision_undisclosed is its own category on purpose. "Sponsor decision" was the single most common thing sponsors wrote — a reason in form only. Lumping it in with genuine strategic rationale would hide that.

The other signals, all computed from the record

enrolledNobody — a stopped trial whose actual enrolment is one or zero. It never got going, whatever reason was given.

isOverdue — the primary completion date is still marked ESTIMATED and has already passed. The record was never updated to say what happened. Only detectable by comparing the date's type against today, which is why nobody reports it.

isLatePhase — a halted Phase 2 or 3 is a material event; a halted NA study usually is not.

durationMonths — how long a trial survived before it was killed.

Input

{
"condition": "melanoma",
"stoppedOnly": true,
"phases": ["PHASE2", "PHASE3"],
"maxStudies": 500
}
FieldDefaultNotes
conditionmelanomaDisease or condition.
interventionDrug, device or procedure.
sponsorLead sponsor only, not collaborators.
searchTermExtra registry search terms.
stoppedOnlytrueApplied registry-side, not after downloading.
statusesSpecific statuses; overrides stoppedOnly.
phasesPHASE1PHASE4, NA.
maxStudies500Real ceiling — the registry is large.
pageSize100Up to 1000.

An unfiltered query is refused rather than quietly downloading the whole registry.

Output

study — one row per trial:

{
"type": "study",
"nctId": "NCT06185088",
"status": "TERMINATED",
"whyStopped": "Initial PI departed institution.",
"stopReason": "investigator_or_site",
"stopReasonGiven": true,
"phase": "NA",
"isLatePhase": false,
"leadSponsor": "University of Michigan",
"isIndustrySponsored": false,
"enrollment": 1,
"enrolledNobody": true,
"durationMonths": 3,
"resultsWithheld": false,
"countries": ["United States", "Canada"],
"url": "https://clinicaltrials.gov/study/NCT06185088"
}

analysis — one cohort summary with the full reason breakdown, results- withheld rate, median months before stopping and the sponsor stopping the most trials.

Who uses this

  • Biotech and pharma competitive intelligence — what kills trials in an indication before you commit to running one there
  • Site selection and CRO planning — accrual failure rate by condition is the number that decides feasibility
  • Investors — a Phase 3 halted for futility is a very different signal to one halted because the PI left
  • Research integrity — the results-withheld rate, by sponsor

Reliability

  • Official ClinicalTrials.gov API v2. Public, unauthenticated, no key.
  • Paging is by opaque nextPageToken. There is no offset parameter — passing one is silently ignored and every page comes back identical.
  • Registry dates arrive as YYYY, YYYY-MM or YYYY-MM-DD and are normalised without inventing precision.
  • One malformed record never fails the run; it lands in RUN_SUMMARY.

Limits

  • The classifier reads English free text written by thousands of different sponsors. On the live melanoma run 15% fell through to other — those keep their raw whyStopped so you can read them yourself. The classifier is a filter over the sponsor's words, never a replacement for them.
  • Where reasons overlap the strongest signal wins: a trial stopped "for safety after slow enrolment" is classified as a safety stop.
  • stopReason is null for trials still running. It is not a prediction.
  • Registry records are self-reported and frequently stale — which is precisely what isOverdue measures.