Search

Search clinical trials

Changed on

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 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:

PlanResults per request
BasicNo access
PlusNo access
Pro300
Scale500
Enterprise10,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"]}}'
post/search/trials

Request

  • Base URL
    https://elicit.com/api/v2
  • URL
    https://elicit.com/api/v2/search/trials
  • Auth
    HTTP bearer

Request body

querystring required

The search query string

searchMode'semantic' | 'keyword'

How to interpret query. semantic (default) runs Elicit's semantic search. keyword uses the corpus's native syntax: Lucene-style expressions for the Elicit index, PubMed query syntax for PubMed, or ClinicalTrials.gov advanced-search syntax for trials. Mutually exclusive with filters / trialFilters — put filter expressions into the query string in keyword mode.

maxResultsinteger

Maximum number of results to return (default 10; schema range 1–10000). Your plan may impose a lower per-request cap; exceeding it returns 400 invalid_request. Search returns up to this many results without pagination.

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 value insufficient_quota was added for 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

      added the optional property / to the response with the status