Search clinical trials
Changed onSearch 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 use ClinicalTrials.gov advanced-search syntax, such as AREA[Condition]"obesity", rather than a natural-language query.
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
maxResults defaults to 10. Search returns up to that many results in one response; it does not provide a pagination cursor. Each plan caps how many results a single request may return. A value above your plan's cap returns 400 invalid_request rather than being silently reduced:
| 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
- Base URLhttps://elicit.com/api/v2
- URLhttps://elicit.com/api/v2/search/trials
- AuthHTTP bearer
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
- info
added the optional property
/to the response with the status - info
added the optional property
/to the response with the status - info
added the optional property
/to the response with the status - info
added the optional property
/to the response with the status - info
added the optional property
/to the response with the status - info
the
response property const valueinsufficient_quotawas added for the status
- info
- info
added the optional property
/to the response with the status - info
added the optional property
/to the response with the status - info
added the optional property
/to the response with the status - info
added the optional property
/to the response with the status - info
added the optional property
/to the response with the status
- info