ClinicalTrials.gov Scraper - Sites & Contacts
Pricing
from $4.00 / 1,000 trial sites
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
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 number | 96 % |
| Email address | 80 % |
| Coordinates | 100 % |
Real rows, real institutions — caroli-bosc.p@chu-nice.fr at CHU de Nice,
louis.potier@aphp.fr at Bichat-Claude Bernard.
Output
| Field | Example |
|---|---|
facility | Hadassah Medical Center |
siteCity, siteState, siteCountry | Jerusalem, —, Israel |
latitude, longitude | 31.7683, 35.2137 |
siteStatus | RECRUITING |
contactName | Tanir Michal Eloise, MD |
contactRole | CONTACT |
contactPhone | +972 2 677 7111 |
contactEmail | tanir@hadassah.org.il |
contactSource | site, central or none |
investigatorName | Saranya Chumsri, M.D. |
investigatorRole | PRINCIPAL_INVESTIGATOR, STUDY_DIRECTOR, … |
investigatorAffiliation | Mayo Clinic |
investigatorSource | site, study or none |
nctId, studyUrl | NCT01234567 |
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:
| Site | contactName | investigatorName |
|---|---|---|
| Mayo Clinic in Florida | Clinical Trials Referral Office | Saranya Chumsri, M.D. |
| Mayo Clinic in Rochester | Clinical Trials Referral Office | Amy C. Degnim, M.D. |
| Moffitt Cancer Center | Gina Bellenger | Onyee 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}
| Field | Default | Notes |
|---|---|---|
condition | breast cancer | Condition or disease |
status | ["RECRUITING"] | Nine recruitment statuses |
onlyWithContact | true | Keep only rows with a phone or email |
maxItems | 500 | Counts 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 |
maxSitesPerStudy | 0 | Cap 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-1111or a contact namedSite 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 ApifyClientclient = 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
- FDA 510(k) Scraper: Device Clearances Data
- FDA Recalls Scraper: openFDA Enforcement
- NPI Registry Scraper: US Healthcare Providers
FAQ
Is it legal to use this data?
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.