ClinicalTrials.gov Feed: New Trials, Status Changes & Results
Pricing
from $3.00 / 1,000 study records
ClinicalTrials.gov Feed: New Trials, Status Changes & Results
Daily feed of new clinical trials from the official ClinicalTrials.gov API (public domain), plus status changes (recruiting, completed, terminated, withdrawn) and newly posted results. Filter by condition, drug, sponsor, sponsor class, phase, country. No contact data.
Pricing
from $3.00 / 1,000 study records
Rating
0.0
(0)
Developer
Luke Miller
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Security
Limited permissionsShare
ClinicalTrials.gov Feed: New Trials, Status Changes & Results (official API, no key)
Get every new clinical trial the day it is posted on ClinicalTrials.gov, plus status changes (newly recruiting, completed, terminated, withdrawn, suspended) and newly posted results, from the official ClinicalTrials.gov API v2 run by the U.S. National Library of Medicine (public domain). About 150-270 new studies are registered every weekday worldwide. Filter by condition, drug / intervention, sponsor name, sponsor class (industry, NIH, academic), phase, study type, site country and status, and run it on a schedule to get only what is new since the last run.
Who it's for
- Pharma and biotech business development / licensing: spot new Phase 1-3 programs from other sponsors in your therapeutic areas the day they are registered, and see which trials just completed or were terminated (with the sponsor's stated reason).
- CROs, site networks, SMOs, central labs, eCOA / eClinical vendors and patient-recruitment firms: new industry trials that are not yet recruiting are your sales pipeline. Filter
sponsorClasses: ["INDUSTRY"],overallStatuses: ["NOT_YET_RECRUITING"]and your countries. - Competitive intelligence and investors: watch competitors (
sponsorNames) and mechanisms (interventions) for new studies, terminations and results postings. - Medical affairs, market access, consultants and analysts: a clean daily list of trial starts, completions and results by indication.
- Data teams, CRMs and AI agents: flat JSON with NCT ID, sponsor, collaborators, phase, status, conditions (plus MeSH terms), interventions, enrollment, dates, site facility / city / country and a link.
Why this Actor
- A change feed, not a search box. Existing ClinicalTrials.gov scrapers return search results. This Actor returns events:
newStudies(first posted),statusChangesandresultsPosted, with a stateless lookback window by default or new since last run for schedules (you only pay for events you have not received yet). - Status changes that mean something. Hundreds of records are edited every day; most edits are routine. By default the feed keeps only updates whose status looks freshly changed (e.g. COMPLETED with an actual completion date in the last 180 days, RECRUITING with an actual start in the last 120 days, TERMINATED / WITHDRAWN / SUSPENDED with the stated reason). On scheduled
sinceLastRunruns it also confirms changes against the status it saw last time and gives youpreviousStatus. - Filters done server-side with ClinicalTrials.gov's own search (condition synonyms, intervention search, sponsor/collaborator search), so filtered runs are fast and cheap.
- Friendly inputs: phases as
2,Phase 3,1/2orIII; countries as ISO codes (US,DE,KR) or names; sponsor classes asindustry,NIH,university. - Sponsor-level data only. No investigator names, no contact names, emails or phone numbers. Individual (person) sponsors are shown as "Individual sponsor (name withheld)".
- Official, public-domain source, keyless, no proxies, no browser.
Quick start
Run with the default input {}: you get the 30 newest studies first posted on ClinicalTrials.gov (latest posting day, widened to earlier days when needed, e.g. on weekends) in a few seconds.
Example inputs:
{ "sponsorClasses": ["INDUSTRY"], "phases": ["2", "3"], "conditions": ["obesity", "type 2 diabetes"], "daysBack": 7, "maxItems": 200 }
{ "eventTypes": ["statusChanges"], "overallStatuses": ["TERMINATED", "WITHDRAWN", "SUSPENDED"], "sponsorClasses": ["INDUSTRY"], "daysBack": 7, "maxItems": 200 }
{ "eventTypes": ["newStudies", "statusChanges", "resultsPosted"], "sponsorNames": ["Pfizer", "Novartis", "AstraZeneca"], "daysBack": 30, "maxItems": 300 }
{ "interventions": ["CAR-T", "cell therapy"], "countries": ["US", "CN"], "overallStatuses": ["NOT_YET_RECRUITING", "RECRUITING"], "daysBack": 14 }
Schedule tip (daily feed)
Create a schedule (e.g. every weekday at 08:00 ET, after the daily ClinicalTrials.gov refresh) with "mode": "sinceLastRun", your filters, a large maxItems (e.g. 1000) and one stateKey per schedule. Each run delivers only events not delivered before; the first run covers daysBack days. Connect the dataset to Slack, email, Google Sheets, HubSpot or a webhook with Apify integrations.
Input
| Field | What it does |
|---|---|
eventTypes | newStudies (default), statusChanges, resultsPosted. maxItems is split evenly across them. |
mode | window (default, stateless) or sinceLastRun (only events not delivered before for this stateKey). |
daysBack | Posting days to cover, ending today (default 2). Window mode widens up to 7 extra days when short (autoExtend). |
conditions | Disease / condition terms (ClinicalTrials.gov condition search incl. synonyms). Any of them. |
interventions | Drug, biologic, device or procedure terms. Any of them. |
keywords | Free text anywhere in the record. Any of them. |
sponsorNames | Lead sponsor or collaborator names. Any of them. |
sponsorClasses | Lead sponsor class: INDUSTRY, NIH, FED, OTHER_GOV, NETWORK, OTHER (academic, hospitals, nonprofits). |
phases | EARLY_PHASE1, PHASE1 ... PHASE4, NA (shortcuts 1, 2, 1/2, III). |
studyTypes | INTERVENTIONAL, OBSERVATIONAL, EXPANDED_ACCESS. |
countries | Site countries as ISO codes or names. Many brand-new studies list no sites yet, so this filter drops them. |
overallStatuses | Current status filter for all event types. For statusChanges, empty = watch RECRUITING, ACTIVE_NOT_RECRUITING, COMPLETED, TERMINATED, WITHDRAWN, SUSPENDED. |
onlyLikelyStatusChanges | Default true: drop routine edits (see "How status changes work"). |
maxItems | Hard cap on delivered records and spend (default 30). |
autoExtend | Window mode: widen the window when it holds fewer than maxItems (default true). |
stateKey | Saved-history name for sinceLastRun. |
Output
One dataset item per event. Example (newStudies; see sample-output.json for a status change and a results posting; locations are trimmed to 3 there, the Actor returns up to 50 per study plus locationCount):
{"eventType": "newStudies","eventDate": "2026-10-30","nctId": "NCT07906717","title": "A Study of JNJ-101556143 With Best Supportive Care in Participants With Metastatic Prostate Cancer","officialTitle": "A Phase 3 Randomized, Double-blind, Placebo-controlled Study of JNJ-101556143, a Regulated Induced Proximity Targeting Chimera (RIPTAC™) Therapeutic Plus Best Supportive Care Versus Best Supportive Care in Participants With Metastatic Androgen Pathway Modulation-Resistant Prostate Cancer","acronym": null,"overallStatus": "NOT_YET_RECRUITING","lastKnownStatus": null,"whyStopped": null,"studyType": "INTERVENTIONAL","phases": ["PHASE3"],"phase": "PHASE3","leadSponsor": "Janssen Research & Development, LLC","leadSponsorClass": "INDUSTRY","collaborators": [],"collaboratorNames": null,"conditions": ["Prostatic Neoplasms"],"conditionMeshTerms": ["Prostatic Neoplasms"],"keywords": [],"interventions": [{"type": "DRUG","name": "JNJ-101556143"},{"type": "DRUG","name": "Placebo"},{"type": "DRUG","name": "Best Supportive Care"}],"interventionNames": "DRUG: JNJ-101556143; DRUG: Placebo; DRUG: Best Supportive Care","interventionMeshTerms": [],"enrollment": 400,"enrollmentType": "ESTIMATED","allocation": "RANDOMIZED","primaryPurpose": "TREATMENT","fdaRegulatedDrug": true,"fdaRegulatedDevice": false,"startDate": "2026-11-06","startDateType": "ESTIMATED","primaryCompletionDate": "2028-02-14","primaryCompletionDateType": "ESTIMATED","completionDate": "2028-08-18","completionDateType": "ESTIMATED","firstPostedDate": "2026-10-30","lastUpdatePostedDate": "2026-10-30","resultsFirstPostedDate": null,"hasResults": false,"statusVerifiedDate": "2026-10","locationCount": 0,"countries": [],"locations": [],"briefSummary": "The purpose of this study is to evaluate how well JNJ-101556143 plus Best Supportive Care (BSC) improves overall survival (the length of time a participant remains alive) compared with placebo plus BSC in participants with metastatic androgen pathway modulation-resistant prostate cancer (mAPMR). mAPMR is an advanced form of prostate cancer that has spread to other parts of the body and no longer responds to hormone treatments designed to block male hormones (androgens).","url": "https://clinicaltrials.gov/study/NCT07906717","firstSeenAt": "2026-10-31T07:08:34.907Z"}
Main fields: eventType, eventDate (first posted / last update posted / results first posted, depending on event), nctId, title, officialTitle, acronym, overallStatus, whyStopped, studyType, phase / phases, leadSponsor, leadSponsorClass, collaborators / collaboratorNames, conditions, conditionMeshTerms, keywords, interventions / interventionNames, interventionMeshTerms, enrollment (+ type), allocation, primaryPurpose, fdaRegulatedDrug / fdaRegulatedDevice, startDate, primaryCompletionDate, completionDate (+ ACTUAL / ESTIMATED types), firstPostedDate, lastUpdatePostedDate, resultsFirstPostedDate, hasResults, countries, locationCount, locations (facility, city, state, country, site recruitment status), briefSummary (first 600 characters), url, firstSeenAt. Status-change items add statusSignal (likely-new, confirmed-change, or routine-update when the filter is off), statusSignalReason and previousStatus (on confirmed changes).
A run summary (windows, resolved filters, counts, skipped routine updates, why the run stopped) is saved as the OUTPUT record in the default key-value store.
How status changes work
The public API returns each study's current status; record history is not available through it. So statusChanges looks at studies whose record was updated (LastUpdatePostDate) in the window and have a watched status, and by default keeps only the ones whose status looks freshly changed:
- TERMINATED / WITHDRAWN / SUSPENDED unless the study stopped long ago (actual completion more than 180 days earlier, or results already posted before the window). The sponsor's
whyStoppedreason is included. - COMPLETED with an ACTUAL completion date in the last 180 days.
- RECRUITING / ENROLLING_BY_INVITATION with an ACTUAL start date in the last 120 days.
- ACTIVE_NOT_RECRUITING with an ACTUAL primary completion date in the last 120 days (enrollment closed).
In
sinceLastRunmode the Actor also remembers the status of every study it delivered, so a later run reports a real change withpreviousStatus(statusSignal: "confirmed-change") and skips studies whose status did not change. SetonlyLikelyStatusChanges: falseto receive every updated record with a watched status.
Pricing
Pay per event: a small fee per run start plus a fee per delivered study record. maxItems and your run's maximum charge cap the spend; the Actor never delivers records your limit cannot cover. See the Pricing tab for current prices.
Data source and notes
- Source: ClinicalTrials.gov API v2, U.S. National Library of Medicine. ClinicalTrials.gov data is in the public domain (see its Terms and Conditions); please credit ClinicalTrials.gov as the source.
- The database is refreshed once a day (Monday to Friday postings). Dates are ClinicalTrials.gov's posting dates (US Eastern calendar days).
- Requests are paced to stay well under ClinicalTrials.gov's rate limits (about 50 requests per minute per IP). A default run makes 1 request.
- Sponsor-level data only. The Actor never requests central contacts, overall officials or site contacts, drops the organization's internal study ID and the responsible investigator, and withholds sponsor, collaborator or facility names that are individuals.
- This Actor is not affiliated with or endorsed by the NLM, NIH or ClinicalTrials.gov.
FAQ
Why did a weekend run return Friday's studies? Nothing is posted on weekends, so window mode widens to the latest posting days (up to 7 extra days). Set autoExtend: false to get exactly daysBack.
Why does a country filter return fewer new studies? Many studies are registered before sites are listed. Leave countries empty for complete coverage, or combine with sponsorNames.
Can I get investigator or site contact details? No. This feed is sponsor-level by design. Use the url to view the public record on ClinicalTrials.gov.
How do I get a full historical extract? Set daysBack up to 365 and a large maxItems. For daily monitoring use sinceLastRun on a schedule.