PubMed Retrieval API

Operations for retrieving records from Entrez databases

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/pubmed-retrieval-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

pubmed-retrieval-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: NCBI Entrez E-utilities History Retrieval 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: Retrieval
  description: Operations for retrieving records from Entrez databases
paths:
  /efetch.fcgi:
    get:
      summary: EFetch - Retrieve full records
      description: Retrieves full records in a specified format for a list of input UIDs from an Entrez database. Supports multiple return types and modes depending on the target database.
      operationId: EFetch
      tags:
      - Retrieval
      parameters:
      - name: db
        in: query
        description: Database from which to retrieve records (e.g., pubmed, nucleotide, protein, gene).
        required: true
        schema:
          type: string
          example: pubmed
      - name: id
        in: query
        description: Comma-delimited list of UIDs to retrieve.
        required: false
        schema:
          type: string
          example: 36328499,36328500
      - name: retstart
        in: query
        description: 'Sequential index of the first record to retrieve (default: 0).'
        required: false
        schema:
          type: integer
          default: 0
      - name: retmax
        in: query
        description: 'Number of records to retrieve (default: 20, max: 10000).'
        required: false
        schema:
          type: integer
          default: 20
          maximum: 10000
      - name: rettype
        in: query
        description: 'Retrieval type. For PubMed: abstract, medline, uilist, docsum. For sequences: fasta, gb, gp.'
        required: false
        schema:
          type: string
          example: abstract
      - name: retmode
        in: query
        description: 'Retrieval mode. Values: xml, text, asn.1.'
        required: false
        schema:
          type: string
          enum:
          - xml
          - text
          - asn.1
      - name: WebEnv
        in: query
        description: Web environment string from a previous ESearch, EPost, or ELink call.
        required: false
        schema:
          type: string
      - name: query_key
        in: query
        description: Integer query key from 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.
        required: false
        schema:
          type: string
          format: email
      - name: api_key
        in: query
        description: API key to enable up to 10 requests/second.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Full records in the requested format
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/EFetchResult'
            text/plain:
              schema:
                type: string
components:
  schemas:
    EFetchResult:
      type: object
      description: Full records returned by EFetch. Structure varies by database and rettype/retmode.
  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/'