Primary URL
primary_url
Optional
Link to the trial on its primary registry.
Clinical Trials API - ClinicalTrials.gov, ISRCTN, EU CTIS
Pricing
from $3.30 / 1,000 results
Clinical trials API: search ClinicalTrials.gov, ISRCTN and the EU CTIS register in one call and get deduplicated trial records in a unified schema, with per-registry status on every row and optional patent linkage. Query by condition, drug, sponsor or status. Keyless, official registries.
Pricing
from $3.30 / 1,000 results
Rating
0.0
(0)
Developer
Kyle Maloney
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
21 days ago
Last modified
Categories
Share
Trial title
title
Optional
Brief title of the clinical trial.
Official title
official_title
Optional
Full official/scientific title of the study.
Status
status
Optional
Overall recruitment/study status.
Phase
phase
Optional
Trial phase(s).
Study type
study_type
Optional
Interventional or observational study type.
Enrollment
enrollment
Optional
Number of participants enrolled/targeted.
Lead sponsor
sponsor
Optional
Primary sponsor organization.
Conditions
conditions
Optional
Medical conditions studied.
Interventions
interventions
Optional
Drugs, devices, or procedures tested.
Countries
countries
Optional
Countries where the trial has sites.
Start date
start_date
Optional
Study start date.
Completion date
completion_date
Optional
Study completion date.
Last update
last_update
Optional
Date the registry record was last updated.
Source registries
registries
Optional
Every registry this unified trial was found in (source, id, url).
All identifiers
all_ids
Optional
All cross-registry IDs (NCT/ISRCTN/EudraCT) for this trial.
Registry count
source_count
Optional
Number of registry ENTRIES merged into this row. Two records from the SAME registry that merged on a shared identifier count as 2. For genuine cross-registry coverage read distinct_registry_count or cross_registry instead.
Multi-registry
multi_registry
Optional
True when the trial was found in more than one DISTINCT registry. CORRECTED 2026-08-25: this previously counted registry entries, so it read true for a trial whose two merged records were both from ISRCTN. It is now identical to cross_registry.
Primary URL
primary_url
Optional
Link to the trial on its primary registry.
Linked patents
linked_patents
Optional
Related US patents matched on interventions (when patent enrichment is enabled).
Linked patent count
linked_patent_count
Optional
Number of related patents linked to this trial.
Distinct registries
distinct_registries
Optional
Each DISTINCT registry this trial was found in, listed once and sorted. Use this, not source_count, to judge cross-registry coverage.
Distinct registry count
distinct_registry_count
Optional
Number of DISTINCT registries this trial appears in. Differs from source_count when two records from the SAME registry merged on a shared identifier.
Cross-registry
cross_registry
Optional
True only when the trial was found in two or more DISTINCT registries. This is the meta-search value-add.
Registry entry count
registry_entry_count
Optional
Number of registry records merged into this row, counting two records from the same registry as two. Identical to source_count; named explicitly so the distinction from distinct_registry_count is unambiguous.
Registry status code
registry_status_code
Optional
The registry-native numeric status code where the registry publishes one (EU CTIS ctStatus 1-11). Null for registries that publish status as text.
Status decode provenance
status_decode
Optional
How the status field was produced: native_text (the registry published text), decoded_coarse (a numeric code decoded against a measured lookup), unmapped_code (an unrecognised code, so status is null and was NOT guessed), or absent.
Row source bucket
row_source_bucket
Optional
Which allocation bucket this row was granted from: cross_registry, a registry name, or unattributed. Shows how the maxResults budget was shared.
Registries requested
sources_requested
Optional
The registries this run was asked to search.
Registries that answered
sources_ok
Optional
Registries that answered and were parsed. A zero record count from one of these IS a verified negative.
Registries that failed
sources_failed
Optional
Registries that were asked and could not answer. Their absence from the results means nothing - it is not evidence that no trial matched.
Run degraded
sources_degraded
Optional
True when at least one requested registry failed, so this result set is incomplete for reasons unrelated to your query.
Per-registry status
source_status
Optional
Per-registry outcome: ok (answered), failed (asked, could not answer), or not_requested.
Per-registry record counts
source_record_counts
Optional
Records contributed per registry. A failed or not-requested registry reports null, NEVER 0, because zero is a factual claim that we looked.
Per-registry diagnostics
source_diagnostics
Optional
Per registry: status, records returned, records the registry says match in total, whether we truncated, and the error text if it failed.
Raw records fetched
raw_records_fetched
Optional
Total records received from all registries before merging.
Unified rows available
unified_rows_available
Optional
Unified trials produced by merging, BEFORE the maxResults cap. Compare with the row count you received to see how much was truncated.
Records merged
records_merged
Optional
The TRUE merge count: raw records absorbed into an existing unified row. Computed before the cap, so it never mixes merging with truncation.
Cross-registry rows
cross_registry_rows
Optional
Unified rows spanning two or more DISTINCT registries.
Same-registry merge rows
same_registry_merge_rows
Optional
Unified rows that merged two or more records from the SAME registry, typically on a shared EudraCT number. These are not cross-registry findings.
Rows dropped by cap
rows_dropped_by_cap
Optional
Unified trials that existed but were not written because maxResults was reached.
Results truncated
results_truncated
Optional
True when rows_dropped_by_cap is greater than zero.
Max results
max_results
Optional
The maxResults cap this run applied. It bounds both the rows written and the amount billed.
Patent enrichment status
patent_enrichment_status
Optional
What the patent leg did: not_requested, no_api_key, ok, partial, failed, or no_interventions_to_match. When no lookup ran, linked_patent_count is null rather than 0.
EU CTIS decode canary
ctis_decode_canary_status
Optional
Outcome of the live check that EU CTIS's numeric status codes still decode to the statuses the registry itself publishes: pass (at least one code+text pair verified, no drift measured), fail (drift measured - the run is failed and nothing is billed), unavailable (CTIS could not be probed, so the EU leg is reported as failed rather than as a result), or not_checked (euctis was not requested).
Decode canary probes passed
ctis_decode_canary_probes_passed
Optional
How many pinned EU CTIS trials had their code+text pair verified against our table this run. Null when euctis was not requested.
Decode canary probes failed
ctis_decode_canary_probes_failed
Optional
How many pinned EU CTIS trials measurably disagreed with our status table. Any value above zero fails the run before a row is written.
Decode canary codes verified
ctis_decode_canary_codes_verified
Optional
The EU CTIS status codes actually verified this run, computed from the codes observed rather than from what was expected. A short list means thin coverage, not a failure.
Decode canary codes NOT verified
ctis_decode_canary_codes_unverified
Optional
Status codes present in our table that no probe exercised this run. Codes 1 (Under evaluation), 6 (Halted) and 7 (Suspended) are normally here by design: they are transient states, so a trial pinned in one stops covering its own code within months.
Decode canary measurements
ctis_decode_canary_measured
Optional
One entry per pinned trial: the code the search endpoint published, the code and status text the retrieve endpoint published, the label our table gives that code, whether the search filter was proven to have applied, and the outcome with its reason.
Decode canary coverage note
ctis_decode_canary_note
Optional
The canary's own honesty boundary, stated on every row: codes 2, 3, 4 and 5 all decode to the single label "Authorised" and EMA publishes no finer public status text, so a renumbering confined to those four codes is NOT detectable and is not covered by a pass.