: Convert between PMID, PMCID, and DOI

API: nih.gov:pubmed-central-api
Endpoint: /tools/idconv/api/v1/articles/
Response format: application/json
Auth: unknown
Method: GET
Last Status: 200
Latency: 574ms

Description

Converts between various article identifiers: PubMed IDs (PMID), PubMed Central IDs (PMCID), Manuscript IDs (MID), and DOIs. Supports up to 200 identifiers per request.

Parameters (7)

email (string, query, optional)

Contact email address

format (string, query, optional, default: xml)

Output format

Constraints: {'enum': ['xml', 'json', 'csv', 'html']}

ids (string, query, required)

Comma-separated list of identifiers (up to 200). PMCIDs should include 'PMC' prefix.

idtype (string, query, optional)

Override auto-detection: pmcid, pmid, mid, or doi

Constraints: {'enum': ['pmcid', 'pmid', 'mid', 'doi']}

showaiid (string, query, optional, default: no)

Expose Article Instance IDs for versioned articles

Constraints: {'enum': ['yes', 'no']}

tool (string, query, optional)

Application name for logging

versions (string, query, optional, default: no)

Include version history and author manuscript IDs

Constraints: {'enum': ['yes', 'no']}

Examples (2)

Convert single PMID to all formats (XML output) curl
curl 'https://www.ncbi.nlm.nih.gov/pmc/tools/idconv/api/v1/articles/?ids=25355835&email=user%40example.com'
import requests

resp = requests.get(
    "https://www.ncbi.nlm.nih.gov/pmc/tools/idconv/api/v1/articles/",
    params={
        'ids': '25355835',
        'email': 'user@example.com',
    },
)
data = resp.json()
import zingu_apis

api = zingu_apis.api("pubmed-central")
result = api.fetch("tools/idconv/api/v1/articles/", ids=25355835, email="user@example.com")

for item in result:
    print(item)
const resp = await fetch("https://www.ncbi.nlm.nih.gov/pmc/tools/idconv/api/v1/articles/?ids=25355835&email=user%40example.com");
const data = await resp.json();
Batch convert multiple PMCIDs with version history curl
curl 'https://www.ncbi.nlm.nih.gov/pmc/tools/idconv/api/v1/articles/?ids=PMC4221869%2CPMC3533815&versions=yes&showaiid=yes&format=json&email=user%40example.com'
import requests

resp = requests.get(
    "https://www.ncbi.nlm.nih.gov/pmc/tools/idconv/api/v1/articles/",
    params={
        'ids': 'PMC4221869,PMC3533815',
        'versions': 'yes',
        'showaiid': 'yes',
        'format': 'json',
        'email': 'user@example.com',
    },
)
data = resp.json()
import zingu_apis

api = zingu_apis.api("pubmed-central")
result = api.fetch("tools/idconv/api/v1/articles/", ids="PMC4221869,PMC3533815", versions="yes", showaiid="yes", format="json", email="user@example.com")

for item in result:
    print(item)
const resp = await fetch("https://www.ncbi.nlm.nih.gov/pmc/tools/idconv/api/v1/articles/?ids=PMC4221869%2CPMC3533815&versions=yes&showaiid=yes&format=json&email=user%40example.com");
const data = await resp.json();

Probe History

Latency

Status Codes

TimeStatusLatencySize
2026-04-16 02:26:18.393813 200 574ms
2026-04-16 02:25:16.207275 200 575ms
2026-04-15 00:27:42.083361 200 697ms
2026-04-15 00:12:49.267671 200 598ms
2026-04-14 03:37:05.829509 200 820ms
2026-04-14 02:15:49.671597 200 791ms
2026-04-12 15:53:38.091672 200 550ms
2026-04-12 15:46:12.646685 200 719ms
2026-04-10 02:33:56.614706 200 533ms
2026-04-10 01:21:03.156478 200 484ms
2026-04-09 02:08:23.560147 200 564ms
2026-04-09 01:33:17.175234 200 647ms
2026-03-23 10:16:46.228276 200 509ms
2026-03-23 09:48:01.250221 200 559ms