Clinical Trials & FDA Drug Data avatar

Clinical Trials & FDA Drug Data

Pricing

Pay per event

Go to Apify Store
Clinical Trials & FDA Drug Data

Clinical Trials & FDA Drug Data

Search ClinicalTrials.gov studies and FDA drug labels, recalls or adverse-event reaction counts. Get structured records from public government APIs.

Pricing

Pay per event

Rating

0.0

(0)

Developer

mia.cx

mia.cx

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Security

Limited permissions

Share

Give your agent study records and FDA drug data without parsing government websites. Search ClinicalTrials.gov studies or openFDA drug labels, recalls and aggregate adverse-event reaction counts. Each successful Record costs $0.0018, plus $0.00005 per run start at default memory.

Try it

{"mode":"trials","nctIds":["NCT04280705"]}

This looks up one study by ID. An empty input {} searches for up to 10 lung-cancer studies. No upstream API key is required. FDA modes can use an optional caller-supplied OPENFDA_API_KEY environment variable.

Use from an agent

Add https://mcp.apify.com?tools=miacx/clinical-trials-fda to your MCP client and sign in to Apify. Call the dedicated Actor tool, then use get-dataset-items to read the completed run's dataset. Or set APIFY_TOKEN to your Apify API token and call the API for JSON rows:

curl --fail-with-body 'https://api.apify.com/v2/actors/miacx~clinical-trials-fda/run-sync-get-dataset-items' \
-H "Authorization: Bearer $APIFY_TOKEN" -H 'Content-Type: application/json' \
-d '{"mode":"trials","nctIds":["NCT04280705"]}'

What you get

Read status first. Each ok row represents one study, label, recall or aggregate reaction count. Invalid and missing NCT IDs return separate uncharged rows alongside successful results. Adverse-event rows count reports mentioning a reaction; they are not individual reports or evidence of incidence or causality.

Selected fields from the recorded ClinicalTrials.gov fixture, normalized with the example input:

{
"type": "trials",
"status": "ok",
"nctId": "NCT04280705",
"title": "Adaptive COVID-19 Treatment Trial (ACTT)",
"trialStatus": "COMPLETED",
"phase": "PHASE3",
"conditions": "COVID-19",
"interventions": "Placebo; Remdesivir",
"sponsor": "National Institute of Allergy and Infectious Diseases (NIAID)",
"enrollment": 1062,
"startDate": "2020-02-21",
"completionDate": "2020-05-21",
"locationCount": 60,
"url": "https://clinicaltrials.gov/study/NCT04280705"
}

Every row includes type, status, input, source and fetchedAt. input is normalized JSON, or an individual failed NCT ID. source is the upstream query URL without credentials. source is empty when validation or budget prevents fetching. fetchedAt marks processing time, even on cache hits. Failed rows include reason; successful rows omit it. Fields for other modes and failed records are absent.

Missing source values are null. Multi-value study and label fields join with semicolons in source order. Country names remove duplicates. locationCount is zero when no location entries are present. Study dates retain source precision; FDA dates use YYYYMMDD.

Label rows include labelId, brandName, genericName, manufacturer, purpose, indications, warnings, dosage and effectiveDate. Recall rows include recallNumber, product, reasonForRecall, classification, recallStatus, recallingFirm, recallDate, country and distribution. Adverse-event rows contain term and count; one report can mention multiple reactions.

Input

FieldDefaultAccepted input
mode"trials"trials, drug-labels, recalls or adverse-events.
query"lung cancer"Trial free text, label generic name, recall product description or adverse-event medicinal product. Empty removes this filter.
condition""Trial condition text. Empty applies no filter.
intervention""Trial intervention name. Empty applies no filter.
sponsor""Trial sponsor text. Empty applies no filter.
trialStatus""One status listed below; empty accepts all.
phase""EARLY_PHASE1, PHASE1, PHASE2, PHASE3, PHASE4 or NA; empty accepts all.
country""Exact trial location country, such as United States. Empty accepts all.
dateFrom""Inclusive lower date, YYYY-MM-DD. Empty leaves it open; FDA uses 1900-01-01.
dateTo""Inclusive upper date, YYYY-MM-DD. Empty leaves it open; FDA uses 2999-12-31.
nctIds[]Up to 100 strings, trimmed, uppercased and deduplicated. Nonempty overrides trial filters and limit.
limit101–100 first-page records, or top reaction terms by count. No automatic pagination.

Text fields and individual NCT inputs allow at most 500 characters. Unknown fields are invalid. Trial statuses are RECRUITING, NOT_YET_RECRUITING, ACTIVE_NOT_RECRUITING, COMPLETED, TERMINATED, WITHDRAWN, SUSPENDED, ENROLLING_BY_INVITATION and UNKNOWN. Filters use AND. Set query: "" to use structured trial filters without the default lung-cancer text. Trial-only filters are ignored in FDA modes, but supplied status, phase and dates still undergo validation. Dates filter study start, label effective date, recall initiation date or adverse-event received date. The lower bound cannot exceed the upper.

For FDA labels, use {"mode":"drug-labels","query":"aspirin","limit":3}. Change the mode to recalls or adverse-events for the other FDA sources.

Pricing

EventPriceCounted unit
Record$0.0018One ok study, label, recall or aggregate reaction-count row, including rows with missing optional fields.
Actor start$0.00005One run start at the default 128 MB memory.

Ten successful records cost $0.01805 including startup at default memory. NCT input IDs are deduplicated within the run; other results follow the source response. Cached records still count. Errors and no_results rows incur no Record events. Successful rows remain billable when other rows fail. The spending limit can reduce the successful rows delivered. The $0.00005 per run start at default memory applies even with no billable records. Apify counts one startup event per GB of memory, with a minimum of one event.

Limits and data freshness

  • Each run requests one bounded upstream page. If ClinicalTrials.gov rejects a multi-ID request with HTTP 400, each ID is checked once individually, with at most three requests in flight; missing IDs return no_results. Search order and source updates affect which records appear.
  • Responses are limited to 2 MiB within a 24-second request deadline. Reduce limit or the NCT-ID batch if needed.
  • Successful responses can be reused for 15 minutes for trials and one hour for FDA data.
  • FDA label text can retain HTML and omit harmonized names. Study enrollment can be planned or actual.
  • openFDA data is not intended for medical-care decisions. Reaction counts can include duplicate reports.

No runtime LLM calls run. Sources are ClinicalTrials.gov and openFDA. An optional openFDA key raises its daily request allowance.

If a row fails

StatusNext step
invalid_inputCheck fields and dates. NCT IDs require NCT followed by eight digits.
no_resultsCheck the ID or broaden the search.
response_too_largeReduce limit or split the NCT-ID batch.
dns_error, network_error, timeout, rate_limited, upstream_HTTP_CODERead reason; retry transient failures later.
invalid_responseThe source omitted an identifier/count or returned an unexpected payload; retain the run ID for reporting.
budget_exhaustedRaise the spending limit or request fewer records.
internal_errorRetain the run ID and reason when reporting the failure.