PubMed
App · Research & Academia · 16 actions
Search PubMed, the U.S. National Library of Medicine's index of over 40 million biomedical citations, through NCBI's official E-utilities API. Search with PubMed's own query language and date filters, pull full records with abstracts, authors, affiliations, MeSH terms and funding, or short citation summaries. Follow an article's links to similar papers, to the papers citing it, to its own references, to the free full text in PubMed Central, and on into NCBI's gene, protein and structure databases. Also matches an existing bibliography to PMIDs, corrects query spellings, and counts a topic's matches across every NCBI database. No account needed.
Actions
| Action | What it does |
|---|---|
| Check query spelling | Ask PubMed to correct the spelling of a search term against its own index. |
| Count matches across NCBI | Count how many records match one query in every NCBI database at once: PubMed, PubMed Central, the gene, protein and structure databases, and the rest. |
| Find similar articles | List the articles PubMed considers most similar to the ones you give it (the same set behind the 'Similar articles' panel on a PubMed page). |
| Get article references | List the works in an article's own reference list that are themselves in PubMed (the other direction from Get citing articles). |
| Get article summaries | Fetch short citation summaries (title, authors, journal, dates, DOI and PMC ID) for one or more articles. |
| Get article text | Fetch PubMed records as plain text in one of NCBI's citation formats: the readable citation-and-abstract view, the tagged MEDLINE format reference managers import, or a bare list of PMIDs. |
| Get articles | Fetch the full PubMed record for one or more articles: title, abstract (with its labelled sections kept separate), every author and their affiliations, journal, volume, pages and dates, MeSH terms, keywords, funding, and the DOI and PMC ID. |
| Get available links | List which kinds of link each article actually has, before following one. |
| Get citing articles | List the later articles that cite the ones you give it (PubMed's 'Cited by' set). |
| Get database details | Describe one NCBI database: how many records it holds, when it was last updated, every field a search can be restricted to, and every link type that leads out of it. |
| Get full-text links | Get the outside URLs where each article can actually be read: the publisher's page, and optionally every other resource NCBI knows about. |
| Get linked records | Follow an article's links out of PubMed into any other NCBI database: the PubMed Central full text, the genes and proteins it studies, the structures, the clinical-trial and MeSH records. |
| List NCBI databases | List every NCBI database reachable through this integration. |
| Match citations to PMIDs | Look up the PMID for citations you already have. |
| Save articles for later | Park a list of PMIDs on NCBI's own servers and get a handle back. |
| Search articles | Search PubMed's 40 million citations and return the matching PMIDs, newest or most relevant first. |
Check query spelling
Ask PubMed to correct the spelling of a search term against its own index. Run it before Search articles so a typo in a drug or gene name returns the right papers instead of none.
Inputs
- Search query
querytextRequired - The query to check.
Outputs
changedtrue/falsecorrected_querytextquerytextreplacementslist
Example output
{
"changed": true,
"corrected_query": "asthma or allergies",
"query": "asthmaa OR alergies",
"replacements": [
"asthma",
"allergies"
]
}Count matches across NCBI
Count how many records match one query in every NCBI database at once: PubMed, PubMed Central, the gene, protein and structure databases, and the rest. Use it to see where a topic lives before deciding which database to search.
Inputs
- Search query
querytextRequired - The query to count.
Outputs
databaseslistpubmed_countnumberquerytexttotal_countnumber
Example output
{
"databases": [
{
"count": 244761,
"database": "pubmed",
"menu_name": "PubMed",
"status": "Ok"
},
{
"count": 475198,
"database": "pmc",
"menu_name": "PubMed Central",
"status": "Ok"
}
],
"pubmed_count": 244761,
"query": "asthma",
"total_count": 719959
}Find similar articles
List the articles PubMed considers most similar to the ones you give it (the same set behind the 'Similar articles' panel on a PubMed page). Results carry PubMed's own relatedness score, highest first, so this is the way to grow a reading list from one good paper.
Inputs
- PubMed IDs
pmidslistRequired - The articles to act on, by PMID. A pubmed.ncbi.nlm.nih.gov link or a 'PMID:' prefix works too. Up to 200 per step.
- Group results by article
per_articletrue/false - Off (the default) pools the results for every ID into one ranked list. On keeps them separate, so you can tell which input article each result came from.
- Number of results
max_resultsnumber - How many similar articles to return (1–10000). Defaults to 50.From 1 to 10000.
Outputs
by_articlelistdatabasetextlink_nametextresult_countnumberresultslistsource_pmidslist
Example output
{
"by_article": [
{
"links": [
{
"database": "pubmed",
"link_name": "pubmed_pubmed",
"records": [
{
"id": "25728500",
"pmid": "25728500",
"score": 50349498
}
]
}
],
"source_pmids": [
"25315507"
]
}
],
"database": "pubmed",
"link_name": "pubmed_pubmed",
"result_count": 2,
"results": [
{
"id": "25728500",
"pmid": "25728500",
"score": 50349498
},
{
"id": "24651067",
"pmid": "24651067",
"score": 45116026
}
],
"source_pmids": [
"25315507"
]
}Get article references
List the works in an article's own reference list that are themselves in PubMed (the other direction from Get citing articles). Use it to walk backwards from a review to the papers it was built on.
Inputs
- PubMed IDs
pmidslistRequired - The articles to act on, by PMID. A pubmed.ncbi.nlm.nih.gov link or a 'PMID:' prefix works too. Up to 200 per step.
- Group results by article
per_articletrue/false - Off (the default) pools the results for every ID into one ranked list. On keeps them separate, so you can tell which input article each result came from.
- Number of results
max_resultsnumber - How many references to return (1–10000). Defaults to 50.From 1 to 10000.
Outputs
by_articlelistdatabasetextlink_nametextresult_countnumberresultslistsource_pmidslist
Example output
{
"by_article": [
{
"links": [
{
"database": "pubmed",
"link_name": "pubmed_pubmed_refs",
"records": [
{
"id": "33077678",
"pmid": "33077678",
"score": null
}
]
}
],
"source_pmids": [
"33301246"
]
}
],
"database": "pubmed",
"link_name": "pubmed_pubmed_refs",
"result_count": 2,
"results": [
{
"id": "33077678",
"pmid": "33077678",
"score": null
},
{
"id": "33053279",
"pmid": "33053279",
"score": null
}
],
"source_pmids": [
"33301246"
]
}Get article summaries
Fetch short citation summaries (title, authors, journal, dates, DOI and PMC ID) for one or more articles. Smaller and faster than Get articles when you only need to list or cite the results rather than read them.
Inputs
- PubMed IDs
pmidslist - The articles to summarise, by PMID. Leave empty if you are reading a saved set instead. Up to 200 per step.
- Saved set: web environment
web_envtext - Read a set saved by Save articles for later (or by a search with 'Save results for later' switched on) instead of listing IDs here. Paste the web environment it returned.
- Saved set: query key
query_keytext - The query key returned alongside the web environment.
- Number of results
max_resultsnumber - How many summaries from a saved set to return (1–10000). Defaults to 20.From 1 to 10000.
- Skip the first
startnumber - How many results to skip before returning any, for paging through a large set. Defaults to 0.At least 0.
Outputs
not_foundlistrequested_pmidslistresult_countnumbersummarieslist
Example output
{
"not_found": [],
"requested_pmids": [
"25315507"
],
"result_count": 1,
"summaries": [
{
"article_ids": {
"doi": "10.1111/febs.13110",
"pubmed": "25315507"
},
"authors": [
"Ma Y",
"Zhang L",
"Huang X"
],
"doi": "10.1111/febs.13110",
"epub_date": "2014 Nov 7",
"has_abstract": true,
"issn": "1742-464X",
"issue": "23",
"journal": "The FEBS journal",
"journal_abbreviation": "FEBS J",
"languages": [
"eng"
],
"last_author": "Huang X",
"pages": "5186-93",
"pmc_id": null,
"pmid": "25315507",
"pub_date": "2014 Dec",
"publication_types": [
"Journal Article",
"Review"
],
"record_status": "PubMed - indexed for MEDLINE",
"sort_pub_date": "2014/12/01 00:00",
"title": "Genome modification by CRISPR/Cas9.",
"url": "https://pubmed.ncbi.nlm.nih.gov/25315507/",
"volume": "281"
}
]
}Get article text
Fetch PubMed records as plain text in one of NCBI's citation formats: the readable citation-and-abstract view, the tagged MEDLINE format reference managers import, or a bare list of PMIDs. Use it to hand a citation straight to a document, an email or a reference manager.
Inputs
- PubMed IDs
pmidslist - The articles to render, by PMID. Leave empty if you are reading a saved set instead. Up to 200 per step.
- Format
text_formattext - Which text view to return. Defaults to the readable abstract.One of:
abstract(Abstract (readable citation and abstract)),medline(MEDLINE (tagged format for reference managers)),uilist(PMID list (just the ID numbers)). - Saved set: web environment
web_envtext - Read a set saved by Save articles for later (or by a search with 'Save results for later' switched on) instead of listing IDs here. Paste the web environment it returned.
- Saved set: query key
query_keytext - The query key returned alongside the web environment.
- Number of results
max_resultsnumber - How many records from a saved set to return (1–10000). Defaults to 20.From 1 to 10000.
- Skip the first
startnumber - How many results to skip before returning any, for paging through a large set. Defaults to 0.At least 0.
Outputs
formattextrequested_countnumberrequested_pmidslisttexttext
Example output
{
"format": "abstract",
"requested_count": 1,
"requested_pmids": [
"25315507"
],
"text": "1. FEBS J. 2014 Dec;281(23):5186-93. doi: 10.1111/febs.13110.\n\nGenome modification by CRISPR/Cas9.\n\nMa Y, Zhang L, Huang X."
}Get articles
Fetch the full PubMed record for one or more articles: title, abstract (with its labelled sections kept separate), every author and their affiliations, journal, volume, pages and dates, MeSH terms, keywords, funding, and the DOI and PMC ID. Give PMIDs, or the handle from a saved set.
Inputs
- PubMed IDs
pmidslist - The articles to fetch, by PMID. Leave empty if you are reading a saved set instead. Up to 200 per step.
- Saved set: web environment
web_envtext - Read a set saved by Save articles for later (or by a search with 'Save results for later' switched on) instead of listing IDs here. Paste the web environment it returned.
- Saved set: query key
query_keytext - The query key returned alongside the web environment.
- Number of results
max_resultsnumber - How many records from a saved set to return (1–10000). Defaults to 20.From 1 to 10000.
- Skip the first
startnumber - How many results to skip before returning any, for paging through a large set. Defaults to 0.At least 0.
Outputs
articleslistnot_foundlistrequested_pmidslistresult_countnumber
Example output
{
"articles": [
{
"abstract": "Clustered regularly interspaced short palindromic repeats (CRISPR)-CRISPR-associated protein (Cas)9-mediated genome modification enables us to edit the genomes of a variety of organisms rapidly and efficiently.",
"abstract_sections": [
{
"label": "",
"text": "Clustered regularly interspaced short palindromic repeats (CRISPR)-CRISPR-associated protein (Cas)9-mediated genome modification enables us to edit the genomes of a variety of organisms rapidly and efficiently."
}
],
"article_ids": {
"doi": "10.1111/febs.13110",
"pubmed": "25315507"
},
"authors": [
{
"affiliations": [
"Institute of Laboratory Animal Science, Chinese Academy of Medical Sciences, Beijing, China."
],
"collective_name": null,
"fore_name": "Yuanwu",
"initials": "Y",
"last_name": "Ma",
"name": "Yuanwu Ma",
"orcid": null
},
{
"affiliations": [],
"collective_name": null,
"fore_name": "Lianfeng",
"initials": "L",
"last_name": "Zhang",
"name": "Lianfeng Zhang",
"orcid": null
}
],
"chemicals": [
"CRISPR-Associated Proteins"
],
"doi": "10.1111/febs.13110",
"grants": [],
"history": {
"medline": "2015-01-27",
"pubmed": "2014-10-16"
},
"journal": {
"iso_abbreviation": "FEBS J",
"issn": "1742-4658",
"issue": "23",
"published": {
"day": null,
"month": "Dec",
"text": "2014 Dec",
"year": "2014"
},
"title": "The FEBS journal",
"volume": "281"
},
"keywords": [
"CRISPR",
"Cas9",
"genome editing"
],
"languages": [
"eng"
],
"mesh_terms": [
{
"major_topic": false,
"qualifiers": [
{
"major_topic": true,
"term": "physiology",
"ui": "Q000502"
}
],
"term": "CRISPR-Associated Proteins",
"ui": "D064130"
}
],
"pages": "5186-93",
"pmc_id": null,
"pmid": "25315507",
"publication_status": "ppublish",
"publication_types": [
"Journal Article",
"Review"
],
"record_type": "article",
"title": "Genome modification by CRISPR/Cas9.",
"url": "https://pubmed.ncbi.nlm.nih.gov/25315507/"
}
],
"not_found": [],
"requested_pmids": [
"25315507"
],
"result_count": 1
}Get available links
List which kinds of link each article actually has, before following one. Answers 'is there a free full text, is this cited anywhere, is there a gene record' in a single call, so a workflow can branch instead of guessing.
Inputs
- PubMed IDs
pmidslistRequired - The articles to act on, by PMID. A pubmed.ncbi.nlm.nih.gov link or a 'PMID:' prefix works too. Up to 200 per step.
Outputs
articleslistrequested_pmidslist
Example output
{
"articles": [
{
"links": [
{
"database": "pubmed",
"label": "Similar articles",
"link_name": "pubmed_pubmed"
},
{
"database": "pmc",
"label": "Cited in PMC",
"link_name": "pubmed_pmc_refs"
}
],
"pmid": "25315507"
}
],
"requested_pmids": [
"25315507"
]
}Get citing articles
List the later articles that cite the ones you give it (PubMed's 'Cited by' set). Coverage comes from PubMed Central's reference data, so it counts citing articles that are in PMC rather than every citation in existence.
Inputs
- PubMed IDs
pmidslistRequired - The articles to act on, by PMID. A pubmed.ncbi.nlm.nih.gov link or a 'PMID:' prefix works too. Up to 200 per step.
- Group results by article
per_articletrue/false - Off (the default) pools the results for every ID into one ranked list. On keeps them separate, so you can tell which input article each result came from.
- Number of results
max_resultsnumber - How many citing articles to return (1–10000). Defaults to 50.From 1 to 10000.
Outputs
by_articlelistdatabasetextlink_nametextresult_countnumberresultslistsource_pmidslist
Example output
{
"by_article": [
{
"links": [
{
"database": "pubmed",
"link_name": "pubmed_pubmed_citedin",
"records": [
{
"id": "42098563",
"pmid": "42098563",
"score": null
}
]
}
],
"source_pmids": [
"25315507"
]
}
],
"database": "pubmed",
"link_name": "pubmed_pubmed_citedin",
"result_count": 2,
"results": [
{
"id": "42098563",
"pmid": "42098563",
"score": null
},
{
"id": "42053836",
"pmid": "42053836",
"score": null
}
],
"source_pmids": [
"25315507"
]
}Get database details
Describe one NCBI database: how many records it holds, when it was last updated, every field a search can be restricted to, and every link type that leads out of it. Run it on pubmed to see what each field tag ([TIAB], [MH], [DP] …) actually indexes.
Inputs
- Database
databasetextRequired - Which NCBI database to describe.
Outputs
databaseobject
Example output
{
"database": {
"build": "Build260819-0500m.1",
"description": "PubMed bibliographic record",
"last_update": "2026/08/19 06:11",
"links": [
{
"description": "Free full-text articles in PMC",
"menu": "PMC Links",
"name": "pubmed_pmc",
"target_database": "pmc"
}
],
"menu_name": "PubMed",
"name": "pubmed",
"record_count": 41032540,
"search_fields": [
{
"description": "Free text associated with Abstract/Title",
"full_name": "Title/Abstract",
"hidden": false,
"is_date": false,
"is_numerical": false,
"name": "TIAB"
}
]
}
}Get full-text links
Get the outside URLs where each article can actually be read: the publisher's page, and optionally every other resource NCBI knows about. Each link says who provides it and whether it is free, so a workflow can send readers straight to an open-access copy.
Inputs
- PubMed IDs
pmidslistRequired - The articles to act on, by PMID. A pubmed.ncbi.nlm.nih.gov link or a 'PMID:' prefix works too. Up to 200 per step.
- Which links
scopetext - How wide to cast. Defaults to the publisher's full-text link only.One of:
prlinks(Publisher's full text only),llinks(All outside resources),llinkslib(All outside resources, including libraries).
Outputs
articleslistrequested_pmidslistscopetext
Example output
{
"articles": [
{
"links": [
{
"attributes": [
"free resource"
],
"categories": [
"Full Text Sources"
],
"free": true,
"provider": "Wiley",
"subject_types": [],
"url": "https://onlinelibrary.wiley.com/doi/10.1111/febs.13110"
}
],
"pmid": "25315507"
}
],
"requested_pmids": [
"25315507"
],
"scope": "prlinks"
}Get linked records
Follow an article's links out of PubMed into any other NCBI database: the PubMed Central full text, the genes and proteins it studies, the structures, the clinical-trial and MeSH records. Pick the target database, and optionally the exact link type from Get available links.
Inputs
- PubMed IDs
pmidslistRequired - The articles to act on, by PMID. A pubmed.ncbi.nlm.nih.gov link or a 'PMID:' prefix works too. Up to 200 per step.
- Target database
databasetextRequired - Which NCBI database to follow the links into: for example pmc for the free full text, or gene.
- Link type
link_nametext - Pick one exact link instead of every link into the target database. Leave empty for all of them.
- Group results by article
per_articletrue/false - Off (the default) pools the results for every ID into one ranked list. On keeps them separate, so you can tell which input article each result came from.
- Number of results
max_resultsnumber - How many linked records to return (1–10000). Defaults to 50.From 1 to 10000.
- Filter the linked records
termtext - An Entrez query applied to the linked records after the links are followed. Only works when the target database is PubMed.
- Which date to filter on
date_typetext - Which date the filters below apply to. Only works when the target database is PubMed.One of:
pdat(Publication date),edat(Date added to PubMed),mdat(Date the record was last modified). - Published from
published_fromdate - Only include linked records from this date onwards.
- Published to
published_todate - Only include linked records up to this date.
- Published in the last (days)
within_last_daysnumber - A rolling window instead of fixed dates. Use this or the from/to dates, not both.From 1 to 36500.
Outputs
by_articlelistdatabasetextlink_nametextresult_countnumberresultslistsource_pmidslist
Example output
{
"by_article": [
{
"links": [
{
"database": "pmc",
"link_name": "pubmed_pmc",
"records": [
{
"id": "7745181",
"score": null
}
]
}
],
"source_pmids": [
"33301246"
]
}
],
"database": "pmc",
"link_name": "pubmed_pmc",
"result_count": 1,
"results": [
{
"id": "7745181",
"score": null
}
],
"source_pmids": [
"33301246"
]
}List NCBI databases
List every NCBI database reachable through this integration. These are the names Get linked records and Get database details take.
Inputs
None.
Outputs
databaseslistresult_countnumber
Example output
{
"databases": [
"pubmed",
"pmc",
"gene",
"protein",
"mesh"
],
"result_count": 5
}Match citations to PMIDs
Look up the PMID for citations you already have. Give the journal, year, volume, first page and first author for each reference and PubMed returns the article it matches (the way to turn a bibliography or a reference list into PubMed records in one call).
Inputs
- Citations
citationslistRequired - One entry per reference. The journal title is required; year, volume, first page and author narrow the match. 'key' is your own label, echoed back on the result so you can line answers up with inputs.
Outputs
citationslistmatched_countnumberunmatched_countnumber
Example output
{
"citations": [
{
"author": "palmenberg ac",
"first_page": "182",
"journal": "science",
"key": "ref1",
"pmid": "3026048",
"status": "found",
"url": "https://pubmed.ncbi.nlm.nih.gov/3026048/",
"volume": "235",
"year": "1987"
}
],
"matched_count": 1,
"unmatched_count": 0
}Save articles for later
Park a list of PMIDs on NCBI's own servers and get a handle back. Hand that handle to Get articles, Get article summaries or Get article text instead of passing the IDs again, and pass it back in here to add more IDs to the same set. Handles expire after about eight hours of no use.
Inputs
- PubMed IDs
pmidslistRequired - The articles to act on, by PMID. A pubmed.ncbi.nlm.nih.gov link or a 'PMID:' prefix works too. Up to 200 per step.
- Add to an existing set
web_envtext - The web environment from an earlier save, to add these IDs to that set as a new query key. Leave empty to start a new set.
Outputs
query_keytextsaved_countnumbersaved_pmidslistweb_envtext
Example output
{
"query_key": "1",
"saved_count": 2,
"saved_pmids": [
"25315507",
"33301246"
],
"web_env": "MCID_6a866a20139ff8b1c50a4459"
}Search articles
Search PubMed's 40 million citations and return the matching PMIDs, newest or most relevant first. The query is PubMed's own search language, so field tags like [Title/Abstract] and the AND, OR and NOT operators work exactly as they do on pubmed.ncbi.nlm.nih.gov. Feed the PMIDs into Get articles or Get article summaries to read the records.
Inputs
- Search query
querytextRequired - What to search for. Plain words search everywhere; add field tags to narrow it.
- Search only in
search_fieldtext - Restrict the whole query to one PubMed field. Leave empty to search everything, or use field tags inside the query for finer control.
- Sort by
sort_bytext - How to order the results. Defaults to best match.One of:
relevance(Best match (relevance)),pub_date(Publication date (newest first)),Author(First author),JournalName(Journal name). - Which date to filter on
date_typetext - Which of PubMed's dates the date filters below apply to. Defaults to the publication date.One of:
pdat(Publication date),edat(Date added to PubMed),mdat(Date the record was last modified). - Published from
published_fromdate - Only include articles from this date onwards. Use with 'Published to'.
- Published to
published_todate - Only include articles up to this date. Use with 'Published from'.
- Published in the last (days)
within_last_daysnumber - A rolling window instead of fixed dates: 7 for the past week, 30 for the past month. Use this or the from/to dates, not both.From 1 to 36500.
- Number of results
max_resultsnumber - How many PMIDs to return (1–10000). Defaults to 20.From 1 to 10000.
- Skip the first
startnumber - How many results to skip before returning any, for paging through a large set. Defaults to 0.At least 0.
- Save results for later
save_to_historytrue/false - Keep the whole result set on NCBI's servers and return a handle to it, so a later step can read it without passing thousands of IDs around.
Outputs
pmidslistquery_keytextquery_translationtextresult_countnumberstart_indexnumbertotal_countnumberwarningsobjectweb_envtext
Example output
{
"pmids": [
"25315507",
"31295471",
"33301246"
],
"query_key": null,
"query_translation": "\"clustered regularly interspaced short palindromic repeats\"[MeSH Terms] OR \"crispr\"[All Fields]",
"result_count": 3,
"start_index": 0,
"total_count": 25146,
"warnings": {},
"web_env": null
}