ClinicalTrials.gov Scraper - Sites & Contacts avatar

ClinicalTrials.gov Scraper - Sites & Contacts

Pricing

from $4.00 / 1,000 trial sites

Go to Apify Store
ClinicalTrials.gov Scraper - Sites & Contacts

ClinicalTrials.gov Scraper - Sites & Contacts

Scrape ClinicalTrials.gov at site level: one row per trial site, not per trial, with facility, city, country, coordinates and the investigator's name, role, phone and email as published. Filter by condition, status and country for site selection and outreach.

Pricing

from $4.00 / 1,000 trial sites

Rating

0.0

(0)

Developer

Tom Awake

Tom Awake

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

What does ClinicalTrials.gov Scraper do?

Export clinical trial sites from ClinicalTrials.gov — one row per site, with the investigator's name, role, phone number and email as published by the sponsor.

No login. No API key. No proxies.

Why one row per site

Every other tool gives you one row per trial, with the sites buried in a nested field — and the leading alternative states plainly that it does not include site contacts or investigator details.

That is the wrong shape for the people who actually need this data. A CRO looking for investigators, a site network scouting partners, a patient recruitment agency, a medical affairs team mapping KOLs — none of them want a study. They want to know who to call.

So this Actor flattens the other way: one row per site, with the contact attached.

Measured on recruiting breast cancer trials, 200 site rows:

Coverage
Phone number96 %
Email address80 %
Coordinates100 %

Real rows, real institutions — caroli-bosc.p@chu-nice.fr at CHU de Nice, louis.potier@aphp.fr at Bichat-Claude Bernard.

Output

FieldExample
facilityHadassah Medical Center
siteCity, siteState, siteCountryJerusalem, —, Israel
latitude, longitude31.7683, 35.2137
siteStatusRECRUITING
contactNameTanir Michal Eloise, MD
contactRoleCONTACT
contactPhone+972 2 677 7111
contactEmailtanir@hadassah.org.il
contactSourcesite, central or none
investigatorNameSaranya Chumsri, M.D.
investigatorRolePRINCIPAL_INVESTIGATOR, STUDY_DIRECTOR, …
investigatorAffiliationMayo Clinic
investigatorSourcesite, study or none
nctId, studyUrlNCT01234567
briefTitle, overallStatus, phase, studyType
leadSponsor, sponsorClass
conditions, interventions
enrollment, startDate, completionDate
minimumAge, sex, healthyVolunteers
centralContactName, centralContactPhone, centralContactEmail

contactSource tells you where the contact came from. When a site publishes no contact of its own, the study's central contact is used rather than leaving the row unreachable — and the field says so, so you can filter if you only want site-level people.

The coordinator and the investigator are not the same person

A site's contact list mixes two roles, and the first entry is almost always the administrative coordinator. Measured 17 September 2026 across 568 sites: 59 published an investigator, but only 4 had them listed first — 41 sat at position 2, 14 at position 3. Reading the first contact therefore loses 55 investigators out of 59 that the source does publish.

That matters, because they are the person who decides:

SitecontactNameinvestigatorName
Mayo Clinic in FloridaClinical Trials Referral OfficeSaranya Chumsri, M.D.
Mayo Clinic in RochesterClinical Trials Referral OfficeAmy C. Degnim, M.D.
Moffitt Cancer CenterGina BellengerOnyee Chan, MD

Both are now given. investigatorSource says which level the name came from — site when the site named its own, study when it fell back to the trial's overall official. investigatorRole carries the role as published (PRINCIPAL_INVESTIGATOR, SUB_INVESTIGATOR, STUDY_DIRECTOR, STUDY_CHAIR) rather than flattening them into one label, so a study director is never passed off as a site investigator.

Input

{
"condition": "breast cancer",
"status": ["RECRUITING"],
"onlyWithContact": true,
"maxItems": 500
}
FieldDefaultNotes
conditionbreast cancerCondition or disease
status["RECRUITING"]Nine recruitment statuses
onlyWithContacttrueKeep only rows with a phone or email
maxItems500Counts sites, not trials
country—Country or city, e.g. France
phase—Early Phase 1 through Phase 4
intervention—Drug or procedure, e.g. pembrolizumab
sponsor—Lead sponsor, e.g. Sanofi
searchTerm—Free text across the whole record
maxSitesPerStudy0Cap sites per trial; 0 means no cap

maxSitesPerStudy matters more than it looks. Some phase 3 trials register hundreds of sites and would fill your entire export from a single study. Setting it to 2 or 3 spreads the export across many trials — in testing, 60 rows covered 41 different trials instead of 2.

Use cases

  • Site selection and feasibility — find centres already recruiting in your indication, with the investigator named.
  • Patient recruitment — reach the sites actively enrolling, by city.
  • Medical affairs and KOL mapping — see which investigators run which trials, for which sponsor.
  • Competitive intelligence — which sponsors are running what, where, at what enrollment.
  • CRO business development — a contactable list filtered by indication, phase and country.

Data quality, honestly

This Actor reports exactly what sponsors registered. That means:

  • Coverage varies by phase. Academic and early-phase trials usually publish a named investigator with an institutional email. Large industry phase 3 trials often publish a central call centre instead — in testing, a phase 3 slice returned 100 % phone numbers but only 2 % emails.
  • Placeholder values exist. Sponsors sometimes register 111-111-1111 or a contact named Site 034. These are in the source record; the Actor does not silently drop them, so filter if they matter to you.
  • Registered ≠ current. A site listed as recruiting may have stopped. The registry lags reality.

Personal data

Investigator names, phone numbers and email addresses are personal data. They are published on a public government registry so that patients and researchers can make contact about those trials.

Using them for unrelated commercial outreach is a different purpose, and in the EU or UK that makes you the data controller: you need a lawful basis, you must tell people where their data came from on first contact, and you must honour objections. That obligation is yours, not the tool's.

Notes

  • Source: the official ClinicalTrials.gov API v2, public and unauthenticated.
  • Requests are paced at roughly one per second out of courtesy to a free public service.
  • Not affiliated with ClinicalTrials.gov, the NIH or the NLM.

How much does it cost?

You pay per trial site returned: $0.006 each, that is $6.00 per 1,000. There is no start fee, and subscription plans pay less per trial site.

The example input below asks for up to 200 trial sites, so it costs $1.20 at most.

If a run reaches the spending limit you set, the output stops at that limit and never goes past it. You are never charged for rows that were not delivered.

Use ClinicalTrials.gov Scraper as an API

Call it from your own code with the Apify client, here in Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("DataIO/clinicaltrials-sites-investigators").call(run_input={
'condition': 'breast cancer',
'status': ['RECRUITING'],
'onlyWithContact': True,
'maxItems': 200,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

It also works from JavaScript, Make, Zapier, n8n, and from AI agents through the Apify MCP server.

Other actors you might like

FAQ

The actor reads public data from its official source, without logging in and without bypassing any access control. What you do with the data, for example contacting people listed in it, is your responsibility under the laws that apply to you, such as GDPR in Europe.

Can I run it on a schedule?

Yes. Create a schedule in Apify Console, daily or weekly for example, and each run delivers a fresh dataset, which you can send by email, webhook or integration.

Can AI agents use it?

Yes. It is available through the Apify MCP server, and every input field is described in its input schema, so an agent can call it directly.