REST API · JSON · through RapidAPI
ClinicalTrials.gov Study Monitor API
Studies from the official ClinicalTrials.gov API v2 for a condition, phase and status, returning only the studies whose status, phase, enrollment or last update changed since your last run.
Read from the official source when you call (clinicaltrials.gov); no personal data. GET /v1/clinical-trials-monitor answers {"product", "count", "items", "fetched_at"}.
Get a key on RapidAPI plans and pricing are on the listing; one key covers every endpoint.
Parameters
| Parameter | Type | What it does | Example |
|---|---|---|---|
condition | string | Disease or condition to follow (for example breast cancer, type 2 diabetes, Alzheimer). | "breast cancer" |
phase | string | Study phase to follow. One of: EARLY_PHASE1, PHASE1, PHASE2, PHASE3, PHASE4. | "PHASE2" |
status | string | Recruitment status to follow. One of: RECRUITING, NOT_YET_RECRUITING, ACTIVE_NOT_RECRUITING, ENROLLING_BY_INVITATION, COMPLETED, TERMINATED, WITHDRAWN, SUSPENDED. | "RECRUITING" |
updated_since | string | Only studies whose record was last updated on or after this date (YYYY-MM-DD). | "2025-01-01" |
limit | integer | At most this many results (1–1000, default 100). | 20 |
What each result holds
| Field | Type |
|---|---|
nct_id | id |
title | text |
sponsor | text |
phase | list |
status | text |
enrollment | integer |
start_date | date |
completion_date | date |
last_update_date | date |
conditions | list |
lead_intervention | text |
first_country | text |
Call it
With curl:
curl -G "https://clinical-trials-eu-tenders-open-data-api.p.rapidapi.com/v1/clinical-trials-monitor" \ --data-urlencode 'condition=breast cancer' \ --data-urlencode phase=PHASE2 \ --data-urlencode status=RECRUITING \ --data-urlencode updated_since=2025-01-01 \ --data-urlencode limit=20 \ -H "X-RapidAPI-Key: $RAPIDAPI_KEY" \ -H "X-RapidAPI-Host: clinical-trials-eu-tenders-open-data-api.p.rapidapi.com"
With Python (pip install requests):
import os, requests
r = requests.get(
"https://clinical-trials-eu-tenders-open-data-api.p.rapidapi.com/v1/clinical-trials-monitor",
params={'condition': 'breast cancer',
'phase': 'PHASE2',
'status': 'RECRUITING',
'updated_since': '2025-01-01',
'limit': 20},
headers={"X-RapidAPI-Key": os.environ["RAPIDAPI_KEY"], "X-RapidAPI-Host": "clinical-trials-eu-tenders-open-data-api.p.rapidapi.com"},
timeout=120,
)
for item in r.json()["items"]:
print(item)
For code and AI agents that pick tools at run time, GET /v1/products lists every endpoint with its parameters and fields.
Questions
How fresh is it? Each call reads the official source then; an identical query within 15 minutes is answered from a cache.
What if the source is down? The answer says so: a 502, or "partial": true when only some of its requests failed.