Next free-source hunt
We check for new free data every weekday.
Datasets / Research & Grey Literature
ncbi.nlm.nih.gov/

NCBI E-utilities (PubMed)

Freeauth: none (optional free API key for more than 3 requests a second)Provider terms#research-grey-literature#papers#historical-data✓ verified Nov 3, 2026

NCBI E-utilities (PubMed)

NCBI's Entrez Programming Utilities (E-utilities) are the public API to PubMed, NLM's database of citations and abstracts of biomedical literature, of which MEDLINE is the largest component. ESearch returns PubMed IDs for a query, and ESummary or EFetch return the records in JSON or XML; no key is needed for up to three requests a second.

Required Attribution:

NLM asks to be acknowledged as the source; the PubMed data terms also bar using the PubMed wordmark or logo with your product or service.

Coverage

PubMed citations and abstracts from several NLM literature resources, including MEDLINE. For bulk use NLM also publishes an annual baseline, "a complete snapshot of PubMed data", plus daily update files on its FTP servers. Publication delay: Not stated.

Verdict

Use it to search biomedical literature by topic, author, journal or date and pull citation records and PubMed IDs into a pipeline. NLM does not claim copyright on PubMed abstracts, but journal publishers or authors may. NCBI asks scripts to send no more than 3 requests a second, to run series of more than 100 requests at weekends or between 9 pm and 5 am Eastern Time on weekdays, and to pass tool and email parameters; an API key allows a higher rate. Services built on it must make NCBI's Disclaimer and Copyright notice evident to users.

Get the free weekly email

Free weekly email of newly verified free data. Unsubscribe by emailing us.

Use in your agent

Load PubMed search results via E-utilities into pandas and Parquet. Checked against the provider's documentation on Nov 3, 2026.

Raw skill file (/skills/ncbi-eutilities-pubmed.md)Also in our MCP server: call get_ingestion_skill with {"slug": "ncbi-eutilities-pubmed"}.

Access

  • No key needed up to 3 requests a second; an NCBI API key (free) allows more and goes in the api_key parameter.
  • Send requests to https://eutils.ncbi.nlm.nih.gov with tool and email parameters so NCBI can contact you.

Request

bash
curl 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=heat+wave+mortality&retmode=json&retmax=100&tool=my-loader&email=you@example.org'

Format

ESearch JSON: esearchresult with count and idlist (PubMed IDs). ESummary JSON: result with uids and one object per PMID carrying title, fulljournalname, pubdate, authors and articleids (including doi where present). EFetch returns full PubMed XML.

Load into pandas and Parquet

Needs Python 3 with requests, pandas and pyarrow.

python
"""PubMed via NCBI E-utilities (ESearch + ESummary) -> pandas -> Parquet. No key needed; at most 3 requests a second."""
import time
import requests
import pandas as pd

BASE = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils"
COMMON = {"db": "pubmed", "retmode": "json", "tool": "my-loader", "email": "you@example.org"}  # use your own tool name and email
s = requests.get(f"{BASE}/esearch.fcgi", params={**COMMON, "term": "heat wave mortality", "retmax": 100,
                 "sort": "pub_date", "datetype": "pdat", "mindate": "2025", "maxdate": "2026"}, timeout=60)
s.raise_for_status()
res = s.json()["esearchresult"]
time.sleep(0.4)
m = requests.get(f"{BASE}/esummary.fcgi", params={**COMMON, "id": ",".join(res["idlist"])}, timeout=60)
m.raise_for_status()
summ = m.json()["result"]
rows = [{
    "pmid": uid,
    "title": summ[uid].get("title"),
    "journal": summ[uid].get("fulljournalname"),
    "pubdate": summ[uid].get("pubdate"),
    "doi": next((i["value"] for i in summ[uid].get("articleids", []) if i.get("idtype") == "doi"), None),
} for uid in summ["uids"]]
df = pd.DataFrame(rows)
df.to_parquet("pubmed_summaries.parquet", index=False)
print(len(df), "PubMed summaries of", res["count"], "matches")

Run by us on 2026-11-03 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 100 PubMed summaries of 106 matches

Limits

  • No more than 3 requests per second without a key, counted across all E-utilities from one IP address.
  • Run series of more than 100 requests at weekends or between 9 pm and 5 am Eastern Time on weekdays.

Quirks

  • ESearch only returns IDs; fetch summaries or records in a second call (ESummary or EFetch).
  • pubdate is free text such as 2026 Oct 15 or 2026 Spring; parse it with care.

Terms and attribution

  • NLM asks to be acknowledged as the source; some PubMed abstracts may be under copyright held by publishers or authors.
  • NCBI's Disclaimer and Copyright notice must be evident to users of a service built on the data.

Sources

Information and education only. Not financial, investment, legal or tax advice. Listings can be inaccurate, incomplete or out of date and are provided "as is". Free tiers, limits and licenses belong to each provider and can change, so check the provider's own terms before you rely on them. Terms & Disclaimer