ClinicalTrials.gov Scraper | Sponsors & Research Sites avatar

ClinicalTrials.gov Scraper | Sponsors & Research Sites

Pricing

from $2.00 / 1,000 delivered studies

Go to Apify Store
ClinicalTrials.gov Scraper | Sponsors & Research Sites

ClinicalTrials.gov Scraper | Sponsors & Research Sites

Export ClinicalTrials.gov study records with sponsors, eligibility, outcomes, available contacts, complete nested locations and explicit source dates.

Pricing

from $2.00 / 1,000 delivered studies

Rating

0.0

(0)

Developer

tingyou333 zhuang

tingyou333 zhuang

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Categories

Share

Clinical Trial Sponsor & Site Export

Prepare recurring study, sponsor and site lists from ClinicalTrials.gov, maintained by the U.S. National Library of Medicine (NLM). A study is the primary Dataset item. Its complete available site list remains nested in locations, alongside study eligibility, outcomes, document metadata and available central and facility contacts. The site CSV link derives site rows from those locations without another registry collection. Matching a recruiting study does not mean every listed site is recruiting.

This Actor is for clinical operations and research teams comparing sponsor pipelines, study eligibility or institutional sites. This is registry metadata, not patient data, medical advice or an independent verification of a study's claims. It is not an email-marketing list.

Bounded default example

Use examples/default.json:

{
"condition": "type 2 diabetes",
"studyStatusFilter": "recruitingAndNotYetRecruiting",
"funderTypes": [
"industry"
],
"maxItems": 10,
"pageSize": 5,
"maxRequests": 5,
"runTimeoutSecs": 240,
"maxResponseBytes": 8388608,
"maxRecordBytes": 8388608
}

This explicit example requests up to10 distinct studies, in API pages of at most5. Its total transport budget is5 attempts, including DNS and /api/v2/version; the runtime deadline is240seconds and response/record limits are8MiB each. DNS, errors and source behaviour can use the budget before10 studies arrive. The API may have more matches after the bounded run; the report must say so.

Schema defaults also set maxItems=10, the safety values shown above, unrestricted status/sex/results, relevance ordering and years for age units. condition, the recruiting-status selection and funderTypes=["industry"] prefill the UI example. Prefills do not change the API defaults. Native API input {} therefore differs from clicking the prefilled example. The separate examples/search-url.json demonstrates URL precedence. Do not send a URL together with filter values you expect to be combined: URL query filters replace separate filters. Output and safety limits still apply.

Search and collection controls

The following search fields and execution controls are available. No field is required. Empty optional text or arrays add no filter. Filters across supplied fields narrow the search; multiple choices within a category are alternatives. Manual age bounds are additional constraints when supplied. Invalid dates or reversed bounds require correction rather than silent swapping.

FieldTypeOwn schema defaultMeaning and bounds
startUrlstringunsetOptional ClinicalTrials.gov search or studies-API URL. Its query replaces the separate search filters. The study limit and safety settings still apply. No credentials or other hosts.
maxItemsinteger10Stop after this many distinct study rows. This is separate from page size and request budget. A large accepted value does not guarantee that a run will finish within its time or charge limit. Values: 1–1000000.
conditionstringunsetSearch diseases or conditions, for example type 2 diabetes. Can be combined with the other search fields.
otherTermsstringunsetSearch other terms in registry records. Leave empty to omit this query.
interventionstringunsetSearch an intervention, medicine, device or procedure reported in a study.
locationstringunsetSearch the registry by place, such as city, region, postal code or country. This filters studies; it does not remove other listed sites from a matching study.
studyStatusFilterstring"all"Choose all study statuses or the recruiting and not-yet-recruiting study statuses. A study status does not imply the same status at each site. Values: all / recruitingAndNotYetRecruiting.
sexstring"all"Restrict study eligibility by sex, or leave unrestricted. This is registry eligibility data, not participant-level data. Values: all / female / male.
ageGroupsarrayunsetSelect any standard age buckets to match. An empty list leaves this filter unset. Manual age bounds are separate filters. Values: child / adult / older.
ageRangeFromnumberunsetOptional nonnegative lower eligibility-age bound, expressed in the chosen lower-bound unit. Values: 0–no schema maximum.
ageRangeFromUnitstring"years"Unit for the lower age bound. Subyear units remain available. Values: years / months / weeks / days / hours / minutes.
ageRangeTonumberunsetOptional nonnegative upper eligibility-age bound, expressed in the chosen upper-bound unit. Reversed bounds must be corrected. Values: 0–no schema maximum.
ageRangeToUnitstring"years"Unit for the upper age bound. It may differ from the lower-bound unit. Values: years / months / weeks / days / hours / minutes.
acceptsHealthyVolunteersbooleanunsetEnable to require studies that accept healthy volunteers. Leaving this off adds no healthy-volunteer restriction.
phasesarrayunsetChoose one or more trial phases. Early Phase 1 uses phase0; notApplicable preserves the registry not-applicable category. Values: phase0 / phase1 / phase2 / phase3 / phase4 / notApplicable.
studyTypesarrayunsetSelect study categories, including patient registries and individual, intermediate-size or treatment expanded-access categories. An empty selection adds no type restriction. Values: interventional / observational / patientRegistry / expandedAccess / expandedAccessIndividual / expandedAccessIntermediate / expandedAccessTreatment.
resultsAvailabilitystring"any"Require posted results, require their absence, or leave unrestricted. This does not request extraction of results tables. Values: any / withResults / withoutResults.
documentTypesarrayunsetFilter for uploaded protocol, statistical-analysis-plan or informed-consent documents. Returned document metadata does not download attachment bytes. Values: protocol / sap / consent.
funderTypesarrayunsetSelect reported sponsor or funder categories. This does not infer an organisation category from its name. Values: nih / federal / industry / other.
studyStartDateFromstringunsetOptional from bound for study start, written YYYY-MM-DD. Source dates keep their published precision; do not enter a fabricated day into source output.
studyStartDateTostringunsetOptional through bound for study start, written YYYY-MM-DD. Source dates keep their published precision; do not enter a fabricated day into source output.
primaryCompletionDateFromstringunsetOptional from bound for primary completion, written YYYY-MM-DD. Source dates keep their published precision; do not enter a fabricated day into source output.
primaryCompletionDateTostringunsetOptional through bound for primary completion, written YYYY-MM-DD. Source dates keep their published precision; do not enter a fabricated day into source output.
studyCompletionDateFromstringunsetOptional from bound for study completion, written YYYY-MM-DD. Source dates keep their published precision; do not enter a fabricated day into source output.
studyCompletionDateTostringunsetOptional through bound for study completion, written YYYY-MM-DD. Source dates keep their published precision; do not enter a fabricated day into source output.
firstPostedDateFromstringunsetOptional from bound for first registration posting, written YYYY-MM-DD. Source dates keep their published precision; do not enter a fabricated day into source output.
firstPostedDateTostringunsetOptional through bound for first registration posting, written YYYY-MM-DD. Source dates keep their published precision; do not enter a fabricated day into source output.
resultsFirstPostedDateFromstringunsetOptional from bound for first results posting, written YYYY-MM-DD. Source dates keep their published precision; do not enter a fabricated day into source output.
resultsFirstPostedDateTostringunsetOptional through bound for first results posting, written YYYY-MM-DD. Source dates keep their published precision; do not enter a fabricated day into source output.
lastUpdatePostedDateFromstringunsetOptional from bound for latest study update posting, written YYYY-MM-DD. Source dates keep their published precision; do not enter a fabricated day into source output.
lastUpdatePostedDateTostringunsetOptional through bound for latest study update posting, written YYYY-MM-DD. Source dates keep their published precision; do not enter a fabricated day into source output.
titleOrAcronymstringunsetSearch a study title or acronym.
outcomeMeasurestringunsetSearch reported outcome-measure text.
sponsorOrCollaboratorstringunsetSearch organisations named as lead sponsors or collaborators.
leadSponsorstringunsetSearch lead-sponsor names only.
studyIdsstringunsetSearch NCT identifiers or other registry-reported protocol identifiers.
facilityNamestringunsetSearch a named study facility. Matching a facility must not discard the other locations of the study.
fdaRegulationViolationbooleanunsetEnable to require the registry FDAAA results-submission violation annotation. This is not an independent legal compliance assessment.
sortBystring"relevance"Choose relevance or newest registrations first. Source sorting and any remaining continuation are recorded by the runtime; this is not a live change-monitoring service. Values: relevance / newestFirst.
pageSizeinteger5Maximum study count requested per API page. It is not the output limit; a source page may return fewer studies. Values: 1–1000.
maxRequestsinteger5Limit all source-side transport attempts, including DNS resolution and the registry version request. Stop with explicit coverage status if another page would exceed the budget. Values: 1–1000000.
runTimeoutSecsinteger240Time budget in seconds for this collection. The platform run timeout may be shorter; completed rows must not be labelled a complete source export after interruption. Values: 30–3600.
maxResponseBytesinteger8388608Maximum accepted response bytes, with streaming and decoded-content checks. An oversized response is an explicit error, not silent field truncation. Values: 1024–8388608.
maxRecordBytesinteger8388608Maximum encoded bytes for one complete study row, including nested locations and contacts. Oversize rows are reported; fields or sites must not be silently removed to fit. Values: 1024–8388608.

startUrl is limited to recognised ClinicalTrials.gov search/studies aliases; the runtime must translate them into the supported official APIv2 rather than visiting arbitrary targets or treating an internal endpoint alias as independent access permission. newestFirst sorts by the first study posting date. Manual age bounds select studies whose published eligibility interval overlaps the requested interval; they also apply when age buckets are selected. Definitely reversed mixed-unit bounds are rejected using calendar ranges of28–31days/month and365–366days/year; ambiguous calendar bounds retain their source units. An NCT-only API query must not silently drop other requested constraints.

maxItems accepts up to1,000,000 to preserve the full requested range. This is not a claim that1M rows have been tested, will fit a small container, or can finish within the example budgets. Page size, request/time/charge limits and source continuation remain separate. Increase resource settings deliberately; a bound reached with unconsumed source data must be reported as incomplete coverage. Oversized responses/rows must fail explicitly, not silently delete sites, contacts or text.

Study rows and site export

The overview fields are:

nctId, briefTitle, studyUrl, briefSummary, overallStatus, hasResults, studyType, phase, leadSponsorName, leadSponsorClass, conditions, interventions, primaryOutcomeMeasures, secondaryOutcomeMeasures, locations, enrollmentCount, enrollmentType, startDate, primaryCompletionDate, completionDate, lastUpdatePostDate, gender, minimumAge, maximumAge, standardAges, inclusionCriteria, exclusionCriteria, centralContacts, collaborators, scrapedAt, error.

Additional fields preserve official title, original eligibility text, full outcome objects alongside measure labels, phase values, first/results posting dates, healthy-volunteer eligibility, FDAAA annotation, document metadata and source provenance. rawStudy retains the complete received study JSON; sourceStudyJsonSha256 hashes canonical study JSON and must not be described as an HTTP response-byte hash. See .actor/dataset_schema.json for field types.

  • locations retains all sites of a matching study, including their own status, facility, locality, postal code, country, coordinates and contacts when published. There is no hidden site count limit. Do not deduplicate facilities globally: the same facility can belong to several studies.
  • centralContacts and each site's contacts retain published name, role, phone, extension and email when available. A missing contact is not permission to invent one. Use these for legitimate clinical/institutional workflows; extracted emails must not be used for marketing or promotion.
  • interventions, outcome measures, collaborators and documents retain available source metadata. Document filtering and links do not imply downloaded PDFs, linked-publication extraction, OCR or extraction of results tables.
  • hasResults and resultsFirstPostedDate describe reported results presence/posting. They do not attest to scientific quality or that the complete results tables were collected.
  • Preserve eligibilityCriteria in full. Parsed inclusion/exclusion arrays supplement it; ambiguous headings must not cause the original text to be discarded.
  • Nullable scalars mean unknown/unavailable; an empty array means no entries were returned for that collection. The transport must request the complete intended source fields before treating absence as registry absence. No fabricated contact, date, zero enrollment or false FDAAA flag.
  • Source dates can beYYYY-MM orYYYY-MM-DD. Retain their precision. lastUpdatePostDate is a study update; scrapedAt is retrieval UTC; sourceDataTimestamp is the registry processing date from /api/v2/version. They are not interchangeable. If the processing date cannot be obtained, show it as unknown and report the failure.

The study Dataset supports JSON, CSV, Excel and XML through Apify exports. sitesCsv in .actor/output_schema.json uses unwind=locations&omit=rawStudy: location fields become top-level CSV columns (including facility, status, city, state, zip and country; nested values use columns such as contacts/0/email and geoPoint/lat when published), while the repeated rawStudy column is omitted from this export only. The default Dataset retains the complete rawStudy. The export keeps NCT, sponsor, study status, site details, source credit, modification notices and source dates. This export is derived from study rows and adds no custom per-site fee. A study without sites does not represent a real site. The source study JSON remains authoritative. No second independently populated sites Dataset is promised. Apify CSV exports have a 2,000-column limit; use complete JSON when large nested arrays exceed this table limit.

Coverage, errors and charges

Pagination follows source cursors until exhaustion, the study cap, or an explicit safety/charge bound. An empty page may still have another cursor; it does not prove exhaustion. Repeated cursors, invalid responses and source failures must not be reported as complete export. Good rows already acknowledged before a later failure remain available; RUN-REPORT must distinguish complete source exhaustion, requested-study limit, partial collection, errors and uncertain delivery. An abrupt platform kill can prevent a final report; absence of a report is not success.

Valid studies are delivered in batches of at most 50 rows, split further around 1 MiB of serialized output; a larger valid record is delivered alone. Each batch is acknowledged by the Dataset before its custom study events are charged. Unknown write or charge outcomes stop new work and retain uncertainty; they must not trigger blind write replay. Failed or skipped studies do not become billable success rows. A charge limit can stop collection after the last affordable study. RUN-REPORT records acknowledged rows and observed SDK event counts; the platform billing receipt is authoritative for charges.

Actor fees are $0.002 per delivered study, plus $0.001 per startup unit. Ten studies with one startup unit cost $0.021 in Actor fees. Site expansion adds no separate fee. Startup units can depend on selected memory, with a minimum of one; check the Store Pricing tab for the active platform usage allocation.

An optional Apify run-price limit is honoured when supplied. Omit it to use the normal SDK behaviour; the study, request and time limits still apply. Source failures, invalid studies and duplicate NCT IDs are not charged as new study results. A snapshot of the public registry is not a guarantee of completeness, scientific quality or future availability.

Source attribution and reuse

Source: ClinicalTrials.gov, a U.S. Government registry maintained by NLM. NLM's2025 API guidance recommends documented API GET and cursor pagination. No ClinicalTrials.gov API key is required for the documented public API. This independent product is not endorsed by NLM.

Follow the ClinicalTrials.gov Terms and Conditions. Preserve source credit, keep redistributed data current, clearly display the registry's processing date and disclose all modifications. This product's transformations include field renaming, nested-object extraction, optional eligibility-section parsing, duplicate NCT suppression and a derived site export; values are not independently corrected or clinically validated. Each delivered snapshot needs its actual source processing/retrieval dates. A saved export does not update itself: rerun and replace or reconcile dated snapshots when current data are needed.

Do not claim proprietary ownership of the database or describe it as a non-government database. Do not use extracted email addresses for marketing or promotion. Third-party content and rights outside the United States can carry additional conditions; this package does not grant blanket worldwide rights to all registry text or attachments. The service charge is for automation, normalisation and integration, not ownership of the public database. Preserve attribution and modification notices when distributing derived files.