| name | clinicaltrials |
| description | Search the ClinicalTrials.gov registry through its version 2 REST API for interventional and observational studies, their phases, enrolment, endpoints, sponsors, and posted results. Use this skill to survey who is developing what against an indication, date a competitor's programme, read primary and secondary outcome measures, find eligibility criteria, and distinguish a study that completed from one that was terminated or withdrawn. Also trigger on ClinicalTrials.gov, NCT number, trial registry, study phase, enrolment, primary outcome measure, recruiting status, trial sponsor, or competitive landscape. |
| license | MIT |
| allowed-tools | Read Write Edit Bash |
| compatibility | Requires Python 3.10+ and outbound HTTPS access to clinicaltrials.gov. The bundled client uses only the Python standard library and needs no API key or account. The version 2 API replaced the retired classic API in June 2024. Registry entries are sponsor-submitted and are not independently verified. |
| metadata | {"version":"1.0","skill-author":"K-Dense Inc.","openclaw":{"emoji":"🧾","homepage":"https://clinicaltrials.gov/data-api/api"},"hermes":{"category":"research"}} |
ClinicalTrials.gov
The world's largest trial registry: roughly 560 000 studies, sponsor-submitted, going back to
2000. It answers the question that no bench assay can — has anyone already tried this in
people, and what happened to them when they did. For a target or an indication it is the
cheapest competitive and feasibility intelligence available.
Base URL: https://clinicaltrials.gov/api/v2 — REST, no key.
Docs: data-api ·
search areas
Checked against: the live v2 API, August 2026. The classic API was retired in June 2024.
Read references/api-reference.md before writing a query by hand,
references/study-structure.md before reaching for a field, and
references/reading-a-registry.md before drawing a conclusion
from anything you find — that one is judgement, not syntax.
The three scripts
| Script | Answers |
|---|
ct_search.py | What is registered against this condition or drug, and how much of it? |
ct_study.py | What exactly did this one study set out to do? |
ct_landscape.py | Who else is in this indication, and what stops trials here? |
COMPLETED does not mean it worked
This is the single thing to get right. overallStatus: COMPLETED means the study finished
running. It says nothing about whether the intervention succeeded — a trial that comprehensively
missed its primary endpoint completes normally.
Three separate facts, routinely conflated:
| Means |
|---|
overallStatus: COMPLETED | the study finished |
hasResults: true | results were posted to the registry |
| whether the endpoint was met | not recorded in the registry at all |
hasResults is a top-level sibling of protocolSection, not part of the status module, and it is
the easiest useful field to miss. ct_study.py show prints a warning when a study completed
without posting results.