Microproduct data guideintermediate

PubMed Citation Records

Curated biomedical citation records for building topic alerts, evidence discovery tools, publication monitors, and research trend summaries.

At a glance

Difficulty
Intermediate — some data preparation helps
Size
Small · ≤0.1 GB
Formats
JSON, XML
Access
API
API key
Not required
Provider
U.S. National Library of Medicine
Updates
Daily
Data terms
NCBI database and copyright policies

From source to product signal

Test a product idea in four steps

PubMed indexes biomedical and life-sciences citations with controlled vocabulary and publication metadata. Start with one query and records added during the last 30 days. Indexing can lag publication, query wording changes results, and a citation record is not an appraisal of evidence.

1

Check the setup

  • Python 3.10 or newer
  • A notebook environment such as Jupyter or Google Colab
  • An internet connection
2

Access the data

  1. 1.Test one bounded PubMed query in the web interface before automating it.
  2. 2.Use ESearch to retrieve a small list of PubMed identifiers added recently.
  3. 3.Fetch summaries for those identifiers and retain the retrieval date.
Open official source
3

Run the Python example

Install the packages, then run the notebook cell.

python -m pip install pandas requests

from datetime import date, timedelta
import pandas as pd
import requests

start = date.today() - timedelta(days=30)
search = requests.get(
    "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi",
    params={
        "db": "pubmed",
        "term": f'wildfire smoke AND ("{start:%Y/%m/%d}"[Date - Entry] : "3000"[Date - Entry])',
        "retmax": 50,
        "retmode": "json",
    },
    timeout=30,
)
search.raise_for_status()
ids = search.json()["esearchresult"]["idlist"]
summaries = requests.get(
    "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi",
    params={"db": "pubmed", "id": ",".join(ids), "retmode": "json"},
    timeout=30,
)
summaries.raise_for_status()
records = summaries.json()["result"]
articles = pd.DataFrame([records[item] for item in ids])
print(articles[["uid", "title", "pubdate"]].head(20))
4

Test a useful signal

Track newly indexed biomedical articles

Find PubMed records about wildfire smoke added during the last 30 days.

  1. 01Save the exact query and retrieve no more than 50 recent PubMed identifiers.
  2. 02Summarize the returned titles and publication dates without inferring study quality.
  3. 03Explain how indexing delay, query vocabulary, and missing abstracts affect the result.

Dataset details

U.S. National Library of Medicine is a government source. Last verified 2026-08-13. Temporal coverage: 1946-present.

Theme

Research & Reference

Domains

Biomedical ResearchScholarly Communication

Data types

Bibliographic DataText

Tasks

Literature MonitoringTopic ResearchAlerting

Geography

Global

Formats

JSONXML

Provider

U.S. National Library of Medicine

Data terms

NCBI database and copyright policies