When to use this API
When you need to search biomedical and life-sciences literature, retrieve article metadata, or look up full-text records from the PubMed Central archive. PMC is surprisingly good at precise fielded queries — MeSH term hierarchies, author affiliations, date ranges — because its search syntax lets you qualify every term against a specific field, something most literature APIs force you to do client-side. For clinical trial data or drug interaction databases, look elsewhere; PMC is a full-text article archive, not a structured clinical dataset.
Searching for articles on a specific topic
"Find recent PMC articles about cranial suture ossification." The E-utilities search endpoint (esearch.fcgi) is the entry point for every PMC workflow — it returns PMCID lists, not article content, so you always pair it with a fetch or summary call. Use fielded queries to narrow results: term supports bracket notation like [Title] and [MeSH Major Topic] that targets specific indexed fields.
curl "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pmc&term=cranial+suture+ossification[Title]&retmax=5&retmode=xml" | head -c 10000
<?xml version="1.0" encoding="UTF-8" ?>
<eSearchResult>
<Count>14</Count>
<RetMax>5</RetMax>
<RetStart>0</RetStart>
<IdList>
<Id>13056385</Id>
<Id>10697876</Id>
<Id>10618329</Id>
<Id>10698107</Id>
<Id>10060314</Id>
</IdList>
<QueryTranslation>"cranial suture ossification"[Title]</QueryTranslation>
</eSearchResult>
The QueryTranslation element reveals how NCBI actually parsed the query — it wraps the full phrase in quotes and applies the [Title] qualifier. This is your sanity check: if the translation looks wrong, the search results will be wrong too. The Count of 14 means only 14 PMC articles have that exact phrase in their title, which is a usefully narrow result for a specific anatomical topic. Without the [Title] qualifier, the same query would match anywhere in the article and return thousands of hits.
There are 14 PMC articles with "cranial suture ossification" in the title. The most recent is PMCID 13056385.
Getting article summaries from PMCIDs
"What is article PMC13056385 about?" Once you have PMCIDs from esearch, call esummary.fcgi to get titles, authors, journal names, DOIs, and publication dates — enough to present a citation without fetching the full text. The db=pmc parameter is mandatory; without it, the API returns <ERROR>db name not defined</ERROR>.
curl "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pmc&id=13056385&retmode=xml" | head -c 10000
<?xml version="1.0" encoding="UTF-8" ?>
<eSummaryResult>
<DocSum>
<Id>13056385</Id>
<Item Name="PubDate" Type="Date">2026 Apr</Item>
<Item Name="Source" Type="String">J Cell Mol Med</Item>
<Item Name="AuthorList" Type="List">
<Item Name="Author" Type="String">Reddy A</Item>
<Item Name="Author" Type="String">Qaddo S</Item>
<Item Name="Author" Type="String">Li P</Item>
<Item Name="Author" Type="String">Gautama B</Item>
<Item Name="Author" Type="String">Abbott E</Item>
<Item Name="Author" Type="String">Dean Y</Item>
<Item Name="Author" Type="String">Means A</Item>
<Item Name="Author" Type="String">Golinko M</Item>
<Item Name="Author" Type="String">Bonfield C</Item>
<Item Name="Author" Type="String">Thayer W</Item>
<Item Name="Author" Type="String">Perdikis G</Item>
<Item Name="Author" Type="String">Pontell M</Item>
</Item>
<Item Name="Title" Type="String">Divergent Mechanisms of Cranial Suture Ossification in Normal Development and Pathologic Fusion.</Item>
<Item Name="Volume" Type="String">30</Item>
<Item Name="Issue" Type="String">7</Item>
<Item Name="Pages" Type="String">e71125</Item>
<Item Name="ArticleIds" Type="List">
<Item Name="pmid" Type="String">41945928</Item>
<Item Name="doi" Type="String">10.1111/jcmm.71125</Item>
<Item Name="pmcid" Type="String">PMC13056385</Item>
</Item>
<Item Name="FullJournalName" Type="String">Journal of cellular and molecular medicine</Item>
<Item Name="SO" Type="String">2026 Apr;30(7):e71125</Item>
</DocSum>
</eSummaryResult>
The SO field ("Source Output") is a compact citation string that packs journal, year, volume, issue, and pages into one line — 2026 Apr;30(7):e71125. Trust FullJournalName over Source for the journal title: Source gives the NLM abbreviation (J Cell Mol Med) while FullJournalName gives the human-readable form. The ArticleIds list contains all three identifier types (PMID, DOI, PMCID) in one place, which makes this endpoint the cheapest way to resolve between them without calling the separate ID converter.
Article PMC13056385 is "Divergent Mechanisms of Cranial Suture Ossification in Normal Development and Pathologic Fusion" by Reddy A et al., published in the Journal of Cellular and Molecular Medicine (2026 Apr; 30(7): e71125). DOI: 10.1111/jcmm.71125.
Converting between PMID, PMCID, and DOI
"I have a DOI — what's the PMCID?" The ID Converter endpoint (/tools/idconv/api/v1/articles/) maps between all three identifier types and returns JSON, which is a relief after the XML of the E-utilities. Pass up to 200 comma-separated IDs in the ids parameter.
curl "https://www.ncbi.nlm.nih.gov/pmc/tools/idconv/api/v1/articles/?ids=PMC4221869,PMC3533815&versions=yes&format=json&tool=myapp&email=user@example.com" | head -c 10000
{
"status": "ok",
"response-date": "2026-03-23 05:16:46",
"records": [
{
"aiid": 4221869,
"doi": "10.1155/2014/167631",
"pmcid": "PMC4221869",
"pmid": 25401126,
"versions": [
{ "aiid": 4221869, "pmcid": "PMC4221869.1", "doi": "10.1155/2014/167631", "current": true }
],
"requested-id": "PMC4221869"
},
{
"aiid": 3533815,
"doi": "10.1186/2046-4053-1-28",
"pmcid": "PMC3533815",
"pmid": 22681772,
"versions": [
{ "aiid": 3533815, "pmcid": "PMC3533815.1", "doi": "10.1186/2046-4053-1-28", "current": true }
],
"requested-id": "PMC3533815"
}
]
}
The versions array appears when you set versions=yes — each PMC article can have multiple versions (author manuscript, accepted manuscript, publisher version), and current flags the one PMC considers canonical. The aiid (Article Internal ID) is the numeric backbone that underlies PMCID — PMC4221869 is really aiid 4221869 with a prefix. A record with "status": "error" and "errmsg": "Identifier not found in PMC" means the ID is valid (it parsed as a PMID or DOI) but the article simply isn't in PMC's open-access archive.
PMCID PMC4221869 maps to PMID 25401126 and DOI 10.1155/2014/167631. PMCID PMC3533815 maps to PMID 22681772 and DOI 10.1186/2046-4053-1-28. Both have one current version.
Pitfalls
db=pmcis mandatory on esummary and efetch. Omitting it produces<ERROR>db name not defined</ERROR>with a 200 status code — the API does not return a 4xx error, so a naive "check status code" approach will silently treat the failure as success.- E-utilities return XML by default. Add
&retmode=jsonto esearch and esummary for JSON output, but efetch withdb=pmcalways returns JATS XML regardless ofretmode— you cannot get a JSON article body from this endpoint. - Three requests per second without an API key, ten with one. NCBI enforces this rate limit by IP address. Exceed it and you get HTTP 429 with a retry-after header, not a friendly error message. Register for an API key at the NCBI developer portal if you need the higher limit.
- PMCIDs are not PMIDs. A PMCID (e.g.,
PMC4221869) identifies an article in the PMC full-text archive. A PMID (e.g.,25401126) identifies the same article in the PubMed abstract index. They are different numbers for the same paper. Use the ID Converter to map between them.
One-line summary for the user
I can search PubMed Central's archive of over 12 million biomedical articles, retrieve titles, authors, DOIs, and summaries by PMCID, and convert between PMID, PMCID, and DOI — all through NCBI's E-utilities API with no authentication required for basic use.