openapi: 3.1.0 info: title: NCBI Entrez E-utilities History Search API description: The Entrez Programming Utilities (E-utilities) provide a stable interface to the NCBI Entrez query and database system. Nine server-side programs allow searching, fetching, posting, linking, and summarizing records across PubMed and 38 NCBI databases including PubMed Central, Gene, Nuccore, and Protein. Supports searching 35M+ biomedical citations, retrieving abstracts, full-text links, MeSH terms, and related article metadata. version: v1.0.0 termsOfService: https://www.ncbi.nlm.nih.gov/home/about/policies.shtml contact: name: NCBI Help Desk url: https://support.nlm.nih.gov/ email: info@ncbi.nlm.nih.gov license: name: NCBI Data Use Policies url: https://www.ncbi.nlm.nih.gov/home/about/policies.shtml servers: - url: https://eutils.ncbi.nlm.nih.gov/entrez/eutils description: NCBI E-utilities production server tags: - name: Search description: Operations for searching Entrez databases paths: /esearch.fcgi: get: summary: ESearch - Search a database description: Performs a text query search in a single Entrez database and retrieves a list of matching UIDs (unique identifiers). Results can be stored on the Entrez History server for later use with other E-utilities. operationId: ESearch tags: - Search parameters: - name: db in: query description: 'Database to search. Common values: pubmed, pmc, gene, nucleotide, protein, assembly, biosample.' required: true schema: type: string example: pubmed - name: term in: query description: Entrez text query (URL encoded). Spaces may be replaced by '+' signs. Can include field tags like [Author] or [MeSH Terms]. required: true schema: type: string example: cancer[MeSH Terms] - name: retstart in: query description: 'Sequential index of the first UID in the retrieved set (default: 0).' required: false schema: type: integer default: 0 - name: retmax in: query description: 'Total number of UIDs to retrieve (default: 20, max: 100000).' required: false schema: type: integer default: 20 maximum: 100000 - name: rettype in: query description: 'Retrieval type. Values: uilist (default), count.' required: false schema: type: string enum: - uilist - count default: uilist - name: retmode in: query description: 'Response format. Values: xml (default), json.' required: false schema: type: string enum: - xml - json default: xml - name: sort in: query description: Sort order for results. required: false schema: type: string enum: - journal - pub+date - most+recent - relevance - title - author - name: field in: query description: Limit search to specified field (e.g., Author, Title, MeSH Terms). required: false schema: type: string - name: datetype in: query description: 'Type of date to limit the search. Values: mdat (modification date), pdat (publication date), edat (Entrez date).' required: false schema: type: string enum: - mdat - pdat - edat - crdt - mhda - name: reldate in: query description: Limit results to items published in the last n days. required: false schema: type: integer - name: mindate in: query description: Minimum date for date range filter (YYYY/MM/DD, YYYY/MM, or YYYY). required: false schema: type: string example: 2020/01/01 - name: maxdate in: query description: Maximum date for date range filter (YYYY/MM/DD, YYYY/MM, or YYYY). required: false schema: type: string example: 2025/12/31 - name: usehistory in: query description: Set to 'y' to store results on the Entrez History server for use in subsequent calls. required: false schema: type: string enum: - y - name: WebEnv in: query description: Web environment string returned from a previous ESearch, EPost, or ELink call. required: false schema: type: string - name: query_key in: query description: Integer query key returned by a previous ESearch, EPost, or ELink call. required: false schema: type: integer - name: tool in: query description: Name of application making the call (no spaces). Recommended. required: false schema: type: string - name: email in: query description: Contact email address. Recommended for NCBI to contact in case of problems. required: false schema: type: string format: email - name: api_key in: query description: API key to enable up to 10 requests/second (vs 3 req/s without key). required: false schema: type: string responses: '200': description: Successful search response with UIDs content: application/json: schema: $ref: '#/components/schemas/ESearchResult' application/xml: schema: $ref: '#/components/schemas/ESearchResult' /espell.fcgi: get: summary: ESpell - Retrieve spelling suggestions description: Retrieves spelling suggestions for search terms in a given Entrez database. operationId: ESpell tags: - Search parameters: - name: db in: query description: Database to check spelling suggestions against. required: true schema: type: string example: pubmed - name: term in: query description: Search term to check for spelling suggestions (URL encoded). required: true schema: type: string example: asthmaa - name: tool in: query description: Name of application making the call. required: false schema: type: string - name: email in: query description: Contact email address. required: false schema: type: string format: email - name: api_key in: query description: API key to enable higher request rate. required: false schema: type: string responses: '200': description: Spelling suggestions content: application/xml: schema: $ref: '#/components/schemas/ESpellResult' /egquery.fcgi: get: summary: EGQuery - Global search across all databases description: Performs a text query in all Entrez databases simultaneously and returns the number of results for the query in each database. operationId: EGQuery tags: - Search parameters: - name: term in: query description: Entrez search query (URL encoded). required: true schema: type: string example: diabetes - name: tool in: query description: Name of application making the call. required: false schema: type: string - name: email in: query description: Contact email address. required: false schema: type: string format: email - name: api_key in: query description: API key to enable higher request rate. required: false schema: type: string responses: '200': description: Result counts across all Entrez databases content: application/xml: schema: type: object /ecitmatch.cgi: get: summary: ECitMatch - Match citations to PubMed IDs description: Retrieves PubMed IDs (PMIDs) that correspond to a set of input citation strings. Each citation string must include journal, year, volume, page, author name, and a user-assigned key. operationId: ECitMatch tags: - Search parameters: - name: db in: query description: Only 'pubmed' is supported. required: true schema: type: string enum: - pubmed - name: bdata in: query description: 'Citation strings formatted as: journal|year|volume|page|author|key|, separated by %0D (encoded newlines).' required: true schema: type: string - name: retmode in: query description: Response format (xml). required: false schema: type: string enum: - xml - name: tool in: query description: Name of application making the call. required: false schema: type: string - name: email in: query description: Contact email address. required: false schema: type: string format: email - name: api_key in: query description: API key to enable higher request rate. required: false schema: type: string responses: '200': description: Citation to PMID mapping results content: application/xml: schema: type: object components: schemas: ESearchResult: type: object properties: esearchresult: type: object properties: count: type: string description: Total number of records matching the query. retmax: type: string description: Number of UIDs returned in this response. retstart: type: string description: Index of the first UID returned. querykey: type: string description: Integer query key assigned on the History server. webenv: type: string description: Web environment string for History server. idlist: type: array items: type: string description: List of UIDs matching the query. translationset: type: array items: type: object description: Query translation details. querytranslation: type: string description: Entrez query translation used. ESpellResult: type: object properties: espellresult: type: object properties: database: type: string query: type: string correctedquery: type: string description: Spell-corrected version of the query. spelledquery: type: object properties: replaced: type: array items: type: object properties: position: type: string text: type: string securitySchemes: ApiKeyAuth: type: apiKey in: query name: api_key description: 'Optional NCBI API key. Without a key: 3 requests/second. With a key: 10 requests/second. Register at https://www.ncbi.nlm.nih.gov/account/'