Clinical Trials Monitor - New Trials & Status Change Alerts
Pricing
from $10.50 / 1,000 trial event detecteds
Clinical Trials Monitor - New Trials & Status Change Alerts
Change feed for ClinicalTrials.gov. Watch conditions, sponsors and keywords and get one record per NEW trial registration and per STATUS CHANGE (Not yet recruiting → Recruiting → Completed) on the trials you already watch, with the previous status on the record.
Pricing
from $10.50 / 1,000 trial event detecteds
Rating
0.0
(0)
Developer
Daniel Matthee
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Share
Clinical Trials Monitor — ClinicalTrials.gov New Trials & Status Changes
The change feed for ClinicalTrials.gov. Watch the conditions, sponsors and keywords you care about; every scheduled run emits one record per new trial registration and per status change on a trial you are already watching — carrying the previous status on the record.
The registry has plenty of scrapers that dump studies on demand. This actor answers the question a dump cannot: what changed since I last looked? No API key, no login — it reads the official ClinicalTrials.gov API v2.
Two kinds of record
eventType | When it fires |
|---|---|
new-trial | A trial matching your watch was first posted to the registry inside the window, and this monitor has never reported it before. |
status-change | A trial this monitor already reported has changed recruitment status — e.g. NOT_YET_RECRUITING → RECRUITING, or RECRUITING → COMPLETED. oldStatus carries the previous value. |
A trial is announced exactly once, and it is never both a new trial and a status change in the same run: a newly detected trial's status is stored silently and transitions are reported from the next run onwards.
The first run seeds status tracking
Run 1 delivers your backfill of new trials (everything first posted inside
sinceDays) and quietly records each one's current status. Status changes are
reported from run 2 on, so you are never billed for a wall of "changes" that
are just today's registry state. An empty dataset on a scheduled run means
nothing in your watch moved.
Recommended schedule: daily or weekly. Registrations post every business day; the registry adds roughly 2,000 new studies a fortnight across all conditions.
Example output record
{"nctId": "NCT07751042","eventType": "new-trial","title": "Phase 1/2 Study of Intravenous Injection of STX-003 in Advanced Solid Tumors as Monotherapy or in Combination With Pembrolizumab","sponsor": "Strand Therapeutics Inc.","conditions": ["Advanced Solid Tumor"],"phase": "PHASE1/PHASE2","overallStatus": "RECRUITING","oldStatus": null,"enrollmentCount": 220,"startDate": "2026-06-30","studyFirstPostDate": "2026-08-06","lastUpdatePostDate": "2026-08-06","url": "https://clinicaltrials.gov/study/NCT07751042","detectedAt": "2026-08-31T07:14:02Z"}
A status change on the same trial would arrive as:
{"nctId": "NCT07751042","eventType": "status-change","overallStatus": "ACTIVE_NOT_RECRUITING","oldStatus": "RECRUITING","...": "same columns as above"}
oldStatus is null on new-trial rows so the column shape never varies.
phase is the study's phase list joined with / (PHASE1/PHASE2), NA for
studies recorded as not applicable, and empty for observational and
expanded-access studies that state no phase.
Input options
| Field | Default | What it does |
|---|---|---|
conditions | — | Conditions/diseases to watch, e.g. melanoma, type 2 diabetes. Each becomes its own registry condition search. |
sponsors | — | Sponsor names to watch, e.g. Pfizer. Matches lead and collaborating sponsors. |
keywords | — | Free-text terms searched across the whole study record (drug codes, mechanisms), e.g. CAR-T. Broader than a condition search. |
phases | all | Only emit new trials in these phases. Studies with no stated phase are excluded whenever this is set. |
overallStatuses | all | Only emit new trials currently in these statuses. Status changes are always reported for every watched trial, whatever this says. |
trackStatusChanges | true | Turn off to receive new registrations only. |
sinceDays | 14 | Days of newly registered trials to scan, by first-posted date. Your backfill size on run 1. |
maxItems | 500 | Cap on records per run, split evenly between the two event types (unused half goes to the other). Records over the cap are held back and emitted on the next run, never dropped. |
stateStoreName | clinical-trials-monitor-state | Named key-value store holding reported trial ids and their last known statuses. Change it to reset the monitor. |
conditions, sponsors and keywords are OR'd — each becomes its own
registry query and the results are merged and de-duplicated by NCT id. Give
none of them and the monitor watches every new registration in the window,
which is where phases and overallStatuses earn their keep. phases and
overallStatuses narrow every watch.
Reliability
- Announced once, never twice. Reported NCT ids are persisted, so a re-run on the same day emits nothing — even though the registry's dates have day granularity and cannot be used as a watermark.
- Never a fake transition. Status changes are reported only from a stored previous value against a freshly read one. A trial the registry does not return this run keeps its last known status; a failed status refresh leaves every snapshot untouched and reports nothing.
- Partial-failure safe. One failing watch is logged and skipped while the others still emit; if every watch fails the run fails loudly, so a dead run never looks like a quiet day.
- Cost control that loses nothing.
maxItemsis split evenly between new trials and status changes, so a busy week of registrations cannot silence status tracking; whichever half is quiet lends its share to the other. Anything over the cap stays pending and emits on the next run — new trials are left unreported, and a held-back status change keeps its previously stored status so the same transition is re-detected. Schema drift is logged with the field named and never crashes a run. - Paid for only what you received. Records are pushed to the dataset before any state is written, so a failed push means the next run reports the same events again rather than losing them.
- Only the official ClinicalTrials.gov API v2 is read — no scraping, no key.
Use cases
- Competitive intelligence — "tell me when anyone registers a new phase 2
or phase 3 trial in my indication", and when a rival's trial flips to
COMPLETED(read-out coming) orTERMINATED(programme trouble). - CRO and site business development — watch
sponsorsfor newly registered studies and reach the sponsor while the protocol is still being operationalised, not after enrolment closed. - Patient recruitment and advocacy — watch a condition for trials moving
into
RECRUITINGso you point patients only at studies actually enrolling. - Healthcare investing — a pipeline asset slipping from
ACTIVE_NOT_RECRUITINGtoSUSPENDED, or an enrolment date moving, is a dated, citable signal with the NCT id attached.
Pricing
Pay per event: a small per-run fee plus a fee per record emitted. Quiet weeks cost almost nothing; busy ones deliver exactly the changes worth acting on.
Maintenance
Field paths are checked against the live API v2 payload; drift is logged clearly and never crashes a run. The state format is stable, so updates keep your history.
Changelog
- 0.1 — initial release: new-trial detection by condition, sponsor and keyword watches, plus status-change tracking with the previous status on the record.