Search clinical trials
Search for clinical trials. Trial records come from ClinicalTrials.gov.
Pass trialFilters to narrow by phase, recruitment status, or whether the trial has posted results. Set searchMode to "keyword" to send the query as a Lucene-style boolean expression directly to the underlying advanced-filter API.
Filters and searchMode: "keyword" are mutually exclusive — put filter expressions directly into the query when using keyword search. Mixing them returns a 400.
To search academic papers instead, use POST /api/v2/search/papers.
Limits
Each plan caps how many results a single search request may return:
| Plan | Results per request |
|---|---|
| Basic | No access |
| Plus | No access |
| Pro | 300 |
| Scale | 500 |
| Enterprise | 10,000 |
Search is rate-limited only by the global limit of 100 requests per minute per IP address, applied across all endpoints and all plans. Exceeding it returns a 429 and blocks the IP for 5 minutes.
Upgrade your plan in account settings for higher per-request result caps.
Example
curl -X POST https://elicit.com/api/v2/search/trials \
-H "Authorization: Bearer elk_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"query": "semaglutide obesity", "trialFilters": {"phase": ["PHASE3"]}}'
Request body
Example request
{
"query": "GLP-1 receptor agonists for weight loss",
"searchMode": "semantic",
"trialFilters": {
"phase": [
"PHASE2",
"PHASE3"
],
"recruitmentStatus": [
"RECRUITING",
"ACTIVE_NOT_RECRUITING"
],
"hasResults": true
}
}Response
Trial search results returned successfully.
Example response
{
"trials": [
{
"nctId": "NCT05646706",
"url": "https://clinicaltrials.gov/study/NCT05646706"
}
]
}Changes
No recorded changes to this endpoint across all 1 revision of this API.