EU Clinical Trials (CTIS) Scraper
Pricing
from $3.00 / 1,000 results
EU Clinical Trials (CTIS) Scraper
Scrape the EU Clinical Trials Information System (CTIS) - the EMA's official register of clinical trials across the EU/EEA. Search by title, condition, sponsor, status, phase, therapeutic area, country, and more, or look up full trial detail by EU CT number. Public REST API - no auth, no proxy.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape the EU Clinical Trials Information System (CTIS) — the European Medicines Agency's official public register of clinical trials authorised across the EU and EEA. Search by title, medical condition, sponsor, trial status, phase, therapeutic area, country, age group, and more, or look up complete trial detail by EU CT number. HTTP-only via the public euclinicaltrials.eu JSON API. No auth, no proxy required.
What this actor does
- Two modes:
search(filtered trial listing) andbyTrialId(full detail for one or more EU CT numbers) - Rich server-side filters: title, condition, sponsor, EU CT number, trial status, phase, therapeutic area, EU/EEA member state, age group, gender, sponsor type, trial region, rare disease, low intervention, orphan designation, has-results
- Full trial detail on demand: objectives, endpoints, recruitment dates, per-country site counts, product names
- Trial URL included — direct link to the public CTIS trial page
- Empty fields are omitted — no
null,"",[], or{}in the output
Output per trial (mode = search)
ctNumber— EU CT number, e.g.2023-509723-41-00title,shortTitlecondition— medical condition(s) under studysponsor,sponsorTypetherapeuticAreas[]— MeSH-derived therapeutic area(s)countries[]— EU/EEA member states concernedstatus,statusCode— human-readable status + its numeric codephase— trial phaseageGroup,gendertrialRegion— EEA only / non-EEA only / bothproducts[]— investigational medicinal product name(s)totalNumberEnrolledprimaryEndPoint,endPointdecisionDate,decisionDateDetail,startDate,endDate,endDateDetail,lastUpdated,lastPublicationUpdatehasResults— whether results have been submittedtrialUrl— public CTIS trial pagerecordType: "trial",scrapedAt
Output per trial (mode = byTrialId)
ctNumber,title,shortTitlestatus,statusCodedecisionDate,publishDate,startDate,endDatetrialRegion,sponsorconditions[],therapeuticAreas[],products[]isLowInterventionmainObjective,primaryEndPointestimatedRecruitmentStartDate,estimatedEndDatecountries[],totalNumberEnrolled(summed across reporting member states)hasResultstrialUrlrecordType: "trialDetail",scrapedAt
Trials that fail to resolve (invalid EU CT number format, or a number not found in the public register) are still emitted as a typed record with recordType: "error" and an error message — they are never silently dropped.
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | search | search / byTrialId |
title | string | – | Free-text search against the trial title (mode=search) |
medicalCondition | string | – | Free-text search against condition(s) (mode=search) |
sponsorName | string | – | Free-text search against sponsor name (mode=search) |
ctNumberQuery | string | – | Free-text / partial EU CT number search (mode=search) |
status | array | [] | One or more trial statuses (12 options) |
trialPhase | array | [] | One or more trial phases (11 options) |
therapeuticArea | array | [] | One or more therapeutic areas (58 options) |
ageGroup | array | [] | One or more participant age groups (4 options) |
gender | array | [] | One or more participant genders |
countries | array | [] | One or more EU/EEA member states (30 options) |
trialRegion | string | – | EEA only / non-EEA only / both (note: since CTIS is the EU/EEA trial register, "non-EEA only" trials are rare-to-nonexistent in practice) |
sponsorType | array | [] | One or more sponsor organisation types |
hasResultsOnly | boolean | false | Only trials with published results |
isRareDiseaseOnly | boolean | false | Only rare-disease trials |
isLowInterventionOnly | boolean | false | Only low-intervention trials |
hasOrphanDesignationOnly | boolean | false | Only trials with an orphan-designated product |
ctNumbers | array | [] | EU CT numbers to fetch (mode=byTrialId) |
sortBy | string | decisionDate | Sort search results by decisionDate or ctNumber (mode=search) |
sortDirection | string | DESC | ASC or DESC, used with sortBy (mode=search) |
maxItems | integer | 5 | Hard cap on emitted records (1–2000) |
Example: search by condition and status
{"mode": "search","medicalCondition": "leukemia","status": ["2", "3", "4"],"maxItems": 25}
Example: search by therapeutic area and country
{"mode": "search","therapeuticArea": ["4"],"countries": ["724", "250"],"trialPhase": ["4", "5"],"maxItems": 50}
Example: rare-disease trials with published results
{"mode": "search","isRareDiseaseOnly": true,"hasResultsOnly": true,"maxItems": 20}
Example: lookup by EU CT number
{"mode": "byTrialId","ctNumbers": ["2023-509723-41-00", "2024-517420-20-00"]}
Use cases
- Pharma competitive intelligence — track competitor trials by sponsor, therapeutic area, or phase across the EU
- Regulatory monitoring — watch trial status transitions (authorised, halted, suspended, ended) for a therapy area
- Market access research — identify which EU/EEA member states host trials for a given condition
- Academic research — bulk-export CTIS records for meta-analysis or systematic review
- Patient advocacy — find ongoing rare-disease or orphan-designation trials enrolling participants
- Investment research — monitor clinical development pipelines by sponsor or product
FAQ
What is the data source? The European Medicines Agency's Clinical Trials Information System (CTIS) public portal at euclinicaltrials.eu — the EU's official register of clinical trials since January 2023, covering all EU/EEA member states.
Is this affiliated with the EMA or CTIS? No. This is an independent third-party actor built on CTIS's public read API. It is not endorsed by or affiliated with the European Medicines Agency.
Do I need an account or API key? No. CTIS's trial search and detail data is fully public — no login or credentials required.
What's the difference between search and byTrialId mode?
search returns a filtered list of trials matching your criteria (title, condition, sponsor, status, etc.). byTrialId returns the complete detail record for one or more specific trials when you already know their EU CT number.
Why do some trials only return a status of "Not authorised" or "Cancelled" with limited fields?
CTIS discloses fewer public fields for trials that were withdrawn, refused, or cancelled before authorisation — this actor surfaces every field CTIS makes public for each trial state.
How fresh is the data? Every run queries the live CTIS API directly, so results reflect the current public register at run time.
Why is my EU CT number rejected in byTrialId mode?
EU CT numbers follow the fixed format YYYY-NNNNNN-NN-NN (e.g. 2023-509723-41-00). Numbers that don't match this shape, or that aren't found in the public register, are returned as a typed error record explaining why.
Can I combine multiple filters in search mode?
Yes — all filters are combined with AND logic. For example, therapeuticArea + countries + trialPhase together narrow to trials matching all three.