Developer tools
ClinicalTrials.gov Scraper — Trials, Phases & Sponsors
Search ClinicalTrials.gov and export structured trial records — NCT ID, title, phase, status, sponsor, conditions, interventions, enrollment, locations, and start/completion dates — as clean JSON, CSV or Excel.
Free Apify credit covers a first run. No credit card to try.
What this Actor scrapes
ClinicalTrials.gov holds the registry every pharma, CRO and biotech competitive-intel team works from, and its API v2 returns deeply nested JSON that is painful to flatten by hand. This Actor wraps it with a plain input form and hands back one flat row per trial, so you can pull a therapeutic-area landscape into a spreadsheet without writing a parser.
What we handle for you
- 🛡️ Browser fingerprint rotation — the target sees a real browser TLS handshake, not a script.
- 🌐 Proxy rotation — fresh exit on every block through Apify Proxy.
- 🔁 Retries with backoff — 408 / 429 / 5xx retried up to five times, Retry-After honoured.
- 🧊 Clean, typed rows — schema-validated output with ISO-8601 timestamps.
- 💰 Pay per result — no data, no result charge.
Use cases
- Map the competitive landscape for a therapeutic area before a portfolio review.
- Track which sponsors are recruiting for a condition, and where.
- Build a site-selection shortlist from countries already running comparable trials.
- Monitor status changes on a watchlist of trials without checking the registry by hand.
Input
Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.
| Field | Type | Required | What it does |
|---|---|---|---|
condition | string | no | Condition, disease or therapeutic area to search for. Maps to the registry's query.cond field. Example: type 2 diabetes. |
searchTerm | string | no | Free-text terms matched across the whole record (query.term) — sponsor names, drug names, keywords. Leave empty to search by condition only. |
phases | array | no | Restrict to these phases. Valid values: EARLY_PHASE1, PHASE1, PHASE2, PHASE3, PHASE4, NA. Leave empty for every phase. |
overallStatus | array | no | Restrict to these statuses, e.g. RECRUITING, COMPLETED, TERMINATED. Leave empty for every status. |
maxResults | integer | no | Stop after this many trials. Each trial is one billed result row. |
{
"condition": "type 2 diabetes",
"maxResults": 3,
"proxyConfiguration": {
"useApifyProxy": false
}
} Output
One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.
nct_idurlbrief_titleofficial_titleoverall_statusphasesstudy_typelead_sponsorconditionsinterventionsenrollment_countstart_dateprimary_completion_datelocation_countriesbrief_summary
{} Pricing
| Event | Price | When |
|---|---|---|
| Actor start | $0.20 | Once per run, covers warm-up and proxy session setup. |
| Result emitted | $0.0020 | Per result written to the dataset. |
You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.
Limitations
- Returns registry data only — it does not scrape linked publications or results tables.
- Date fields are passed through exactly as the registry publishes them, which may be a month (
2026-03) rather than a full date.
FAQ
Do I need an API key?
How fresh is the data?
Can I get every trial for a condition?
Ready to run it?
Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.
Related Actors