ClinicalTrials.gov Scraper icon

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.

FieldTypeRequiredWhat 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

EventPriceWhen
Actor start$0.20Once per run, covers warm-up and proxy session setup.
Result emitted$0.0020Per 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?
No. ClinicalTrials.gov API v2 is public and keyless, so a run needs no credentials from you.
How fresh is the data?
It comes straight from the live registry at run time — whatever the registry shows, the run returns.
Can I get every trial for a condition?
Yes. Raise <b>Maximum trials</b>; the Actor pages through results until the registry runs out or your limit is reached.

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

Teams that run this also run