ClinicalTrials.gov Scraper
parseforge/clinicaltrials-scraper
AutomationDeveloper toolsOther
Scrapes clinical trial records from ClinicalTrials.gov by search query or direct URL. Returns each trial as a flat row with status, phase, enrollment, eligibility, contacts, locations, and posted dates.
- Total users
- 40
- Monthly active
- 2
- Total runs
- 426
- Bookmarked
- 3
- Rating
- 5.0 (1)
- Last modified
- 12 days ago
Overview
ClinicalTrials.gov Scraper
Scrape clinical trials from ClinicalTrials.gov by condition, intervention, location, phase, sponsor, or date, up to a million per run. Every trial comes with its status, eligibility, contacts, locations, and posted results. No API key or registration. Export to CSV, JSON, Excel, or XML.
ClinicalTrials.gov's official API needs a registered account, a token, and rate limits that throttle large exports. This reads the public study registry directly, filtered by condition, drug, phase, sponsor, location, or date, and returns each match in one fixed schema.
| Who uses it | What they scrape ClinicalTrials.gov for |
|---|---|
| Market researchers | Which trials are recruiting for a given condition this quarter |
| Pharma competitive intelligence teams | What sponsors are running Phase 3 trials in a therapeutic area |
| Clinical operations teams | Which sites are active for a protocol and their contact details |
| Patient advocacy groups | Which recruiting trials match a disease and location for their community |
| Data journalists | How many trials were posted or updated in a date range for a story |
What it does
This Actor collects clinical trial records from ClinicalTrials.gov by search query or direct URL, and returns each trial as a flat row.
- ๐ Search or URL: start from a ClinicalTrials.gov search URL, an API endpoint, or build a query from condition, intervention, location, and other filters.
- ๐ Structured rows: each trial returns as one flat record with status, phase, enrollment, eligibility, contacts, locations, and posted dates.
- ๐๏ธ Date filters: restrict by study start, primary completion, study completion, first posted, results first posted, or last update posted.
- ๐ฅ Eligibility filters: filter by sex, age groups, age range, and whether healthy volunteers are accepted.
- ๐ Study filters: filter by phase, study type, results availability, document types, funder type, and FDAAA violation flag.
- ๐ Export ready: download as CSV, JSON, Excel, or XML for analysis or upload to your own database.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with ClinicalTrials.gov data
๐ Track recruiting trials for a condition.
A market researcher sets condition to 'diabetes' and study status to 'Recruiting and not yet recruiting studies' to get a weekly list of new trials and their sites.
๐ Monitor competitor pipelines.
A pharma analyst filters by lead sponsor and phase to see every Phase 3 trial a competitor has posted or updated in the last month.
๐ฅ Find trial sites and contacts.
A clinical operations team searches by facility name or location to get site addresses and contact emails for a specific protocol.
๐ Audit FDAAA compliance.
A compliance officer sets the FDAAA violation flag to true to list all studies flagged for results submission violations.
๐ฐ Build a news dataset.
A journalist filters by first posted date range to count how many trials were registered for a disease in a given year.
Why choose this scraper
| What you get | |
|---|---|
| No API key | No registration or token, run the Actor |
| Up to 1M trials | Paid users can pull up to a million records per run |
| All trial fields | Status, phase, enrollment, eligibility, contacts, locations, and posted dates |
| Flexible filters | Condition, intervention, location, sponsor, phase, study type, dates, and more |
| Export formats | CSV, JSON, Excel, or XML |
How it compares
This Actor focuses on ClinicalTrials.gov study records with deep filters and high-volume export, while the competitors below add FDA data or AI enrichment.
| Feature | ParseForge | Clinical Trials & FDA Pipeline Intelligence Scraper | Healthcare Intel | ClinicalTrials.gov Scraper - Trials Data, No API Key |
|---|---|---|---|---|
| ClinicalTrials.gov study records | Yes | Yes | Yes | Yes |
| FDA drug approvals, devices, adverse events | Not listed | Yes | Yes | Not listed |
| AI-powered intelligence or news | Not listed | Not listed | Yes | Not listed |
| No API key required | Yes | Not listed | Not listed | Yes |
| Up to 1,000,000 records per run | Yes | Not listed | Not listed | Not listed |
| Export to CSV, JSON, Excel, XML | Yes | Not listed | Not listed | Yes |
Configure the run
Drive the Actor from a ClinicalTrials.gov search URL or build a query from condition, intervention, location, sponsor, and other filters. Filters run as each trial is read so only matches reach your dataset. The Input tab lists every parameter.
A first run with the defaults:
{
"startUrl": "https://clinicaltrials.gov/search",
"maxItems": 10
}
A larger pull:
{
"startUrl": "https://clinicaltrials.gov/search",
"maxItems": 200
}
Pricing
Pay-per-result: $0.16 per result collected. You pay only for the results written to your dataset.
| Results collected | Approximate cost |
|---|---|
| 100 results | $16.00 |
| 1,000 results | $160.00 |
| 10,000 results | $1600.00 |
New Apify accounts start with $5 in free credit.
Free users
Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the ClinicalTrials.gov Scraper.
- Set your inputs and any filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to ClinicalTrials.gov through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/clinicaltrials-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why am I getting no results?
Check that your filters are not too restrictive. Try removing some filters or broadening the condition or intervention terms. Also verify that the startUrl, if used, is a valid ClinicalTrials.gov search URL.
Why did the run stop at 100 items?
Free users are limited to 100 items per run. Upgrade to a paid plan to increase maxItems up to 1,000,000.
Why are my date filters not working?
Date fields expect YYYY-MM-DD format. Make sure you entered both From and To dates correctly and that the From date is before the To date.
Why are some fields empty in the output?
Not all trials have every field populated. For example, results first posted date is only present for trials with posted results. Empty fields are normal.
Can I use a URL from the ClinicalTrials.gov website?
Yes, paste any search URL from clinicaltrials.gov/search into startUrl. The Actor will parse the query parameters and ignore other filters.
FAQ
| Question | Answer |
|---|---|
| Do I need a ClinicalTrials.gov API key? | No. This Actor reads the public study registry directly, so no registration or token is required. |
| Can I scrape all trials for a condition? | Yes. Set the condition field and any other filters, then set maxItems to the number you need. Paid users can pull up to 1,000,000 records. |
| What filters are available? | You can filter by condition, intervention, location, study status, sex, age, phase, study type, results availability, document types, funder type, sponsor, dates, and more. |
| Can I use a search URL from ClinicalTrials.gov? | Yes. Paste any ClinicalTrials.gov search URL or API endpoint into the startUrl field, and all other filters are ignored. |
| What export formats are supported? | CSV, JSON, Excel, and XML. |
| Does it return posted results? | Yes. Each record includes whether results are posted and the results first posted date when available. |
| Can I filter by sponsor? | Yes. Use the leadSponsor field for the lead sponsor or sponsorOrCollaborator for any sponsor or collaborator. |
| Can I filter by study phase? | Yes. Select one or more phases from Early Phase 1 through Phase 4, or Not applicable. |
| Does it include contact information? | Yes. Each trial includes central and facility contacts with names, phone numbers, and emails when available. |
| Can I filter by location? | Yes. Use the location field to search by address, city, state, zip code, or country. |
| Is there a limit for free users? | Free users are limited to 100 items per run. Paid users can set maxItems up to 1,000,000. |
| Can I sort results? | Yes. Sort by relevance or newest first. |
Related actors
Browse the full ParseForge collection for more scrapers.
๐ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
โ ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by U.S. National Library of Medicine. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.
Input
| Field | Type | What it does | Default |
|---|---|---|---|
| startUrl | string | Paste a ClinicalTrials.gov search URL or an `https://clinicaltrials.gov/api/int/studies?...` endpoint. When this is set, all other filters are ignored. | https://clinicaltrials.gov/search |
| maxItems | integer | Free users: Limited to 100. Paid users: Optional, max 1,000,000 | 10 |
| condition | string | Specific condition or disease to search for (e.g. diabetes, hypertension, cancer). This will be combined with other search terms. | not set |
| otherTerms | string | Additional search terms (e.g. symptoms, treatments, keywords). This will be combined with condition and intervention. | not set |
| intervention | string | Intervention or treatment to search for (e.g. drug name, procedure, device). This will be combined with other search terms. | not set |
| location | string | Search by address, city, state, zip code, or country. For information on using this field, see the How to Search for Clinical Studies page. | not set |
| studyStatusFilter | string (2 options) | Filter studies by status. 'All studies' shows all studies. 'Recruiting and not yet recruiting studies' shows only studies that are currently recruiting or not yet recruiting. | all |
| sex | string (3 options) | Filter by eligible sex. | all |
| ageGroups | array | Filter by standard ClinicalTrials.gov age buckets. Only used when 'Select ranges' is selected. | not set |
| ageRangeFrom | number | Minimum age value. Only used when 'Manually enter range' is selected. | not set |
| ageRangeFromUnit | string (6 options) | Unit of measurement for the minimum age value. | years |
| ageRangeTo | number | Maximum age value. Only used when 'Manually enter range' is selected. | not set |
| ageRangeToUnit | string (6 options) | Unit of measurement for the maximum age value. | years |
| acceptsHealthyVolunteers | boolean | When true, only trials that accept healthy volunteers are returned. | not set |
| phases | array | Filter interventional trials by phase labels. | not set |
| studyTypes | array | Filter by study type buckets (interventional, observational, expanded access). | not set |
| resultsAvailability | string (3 options) | Limit to studies with or without posted results. | any |
| documentTypes | array | Return only studies with specific document uploads (protocols, SAPs, informed consent forms). | not set |
| funderTypes | array | Filter by the lead sponsor / funder class reported to ClinicalTrials.gov. | not set |
| studyStartDateFrom | string | Start date (YYYY-MM-DD) | not set |
| studyStartDateTo | string | End date (YYYY-MM-DD) | not set |
| primaryCompletionDateFrom | string | Start date (YYYY-MM-DD) | not set |
| primaryCompletionDateTo | string | End date (YYYY-MM-DD) | not set |
| studyCompletionDateFrom | string | Start date (YYYY-MM-DD) | not set |
| studyCompletionDateTo | string | End date (YYYY-MM-DD) | not set |
| firstPostedDateFrom | string | Start date (YYYY-MM-DD) | not set |
| firstPostedDateTo | string | End date (YYYY-MM-DD) | not set |
| resultsFirstPostedDateFrom | string | Start date (YYYY-MM-DD) | not set |
| resultsFirstPostedDateTo | string | End date (YYYY-MM-DD) | not set |
| lastUpdatePostedDateFrom | string | Start date (YYYY-MM-DD) | not set |
| lastUpdatePostedDateTo | string | End date (YYYY-MM-DD) | not set |
| titleOrAcronym | string | Search by study title or its acronym. | not set |
| outcomeMeasure | string | Search by outcome measures used in the study. | not set |
| sponsorOrCollaborator | string | Search by sponsor name or collaborator name. | not set |
| leadSponsor | string | Search by the lead sponsor name specifically. | not set |
| studyIds | string | Search by study identification numbers (e.g., NCT number, protocol ID). | not set |
| facilityName | string | Search by the name of the facility where the study is conducted. | not set |
| fdaRegulationViolation | boolean | Only return studies flagged for FDAAA results submission violations. | not set |
| sortBy | string (2 options) | Sort search results by relevance or by newest entries first. | relevance |
Pricing
from $8.00 per 1,000 results
| Charged for | What it is | Price each |
|---|---|---|
| Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). | $0.05 to $0.16 |
| result | Single result in the default dataset. | $0.008 to $0.012 |
Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.
API
One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.
curl -X POST "https://api.apify.com/v2/acts/parseforge~clinicaltrials-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"helloWorld": 123
}' Examples
Input that runs as-is.
{
"helloWorld": 123
} Reviews
Rated 5.0 out of 5 across 1 review. Read them on Apify.
Issues
We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.
Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.
