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

ActionWhat it does
Check query spellingAsk PubMed to correct the spelling of a search term against its own index.
Count matches across NCBICount 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 articlesList 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 referencesList the works in an article's own reference list that are themselves in PubMed (the other direction from Get citing articles).
Get article summariesFetch short citation summaries (title, authors, journal, dates, DOI and PMC ID) for one or more articles.
Get article textFetch 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 articlesFetch 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 linksList which kinds of link each article actually has, before following one.
Get citing articlesList the later articles that cite the ones you give it (PubMed's 'Cited by' set).
Get database detailsDescribe 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 linksGet the outside URLs where each article can actually be read: the publisher's page, and optionally every other resource NCBI knows about.
Get linked recordsFollow 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 databasesList every NCBI database reachable through this integration.
Match citations to PMIDsLook up the PMID for citations you already have.
Save articles for laterPark a list of PMIDs on NCBI's own servers and get a handle back.
Search articlesSearch 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 queryquerytextRequired
The query to check.

Outputs

changedtrue/false
corrected_querytext
querytext
replacementslist
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 queryquerytextRequired
The query to count.

Outputs

databaseslist
pubmed_countnumber
querytext
total_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 IDspmidslistRequired
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 articleper_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 resultsmax_resultsnumber
How many similar articles to return (1–10000). Defaults to 50.From 1 to 10000.

Outputs

by_articlelist
databasetext
link_nametext
result_countnumber
resultslist
source_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 IDspmidslistRequired
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 articleper_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 resultsmax_resultsnumber
How many references to return (1–10000). Defaults to 50.From 1 to 10000.

Outputs

by_articlelist
databasetext
link_nametext
result_countnumber
resultslist
source_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 IDspmidslist
The articles to summarise, by PMID. Leave empty if you are reading a saved set instead. Up to 200 per step.
Saved set: web environmentweb_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 keyquery_keytext
The query key returned alongside the web environment.
Number of resultsmax_resultsnumber
How many summaries from a saved set to return (1–10000). Defaults to 20.From 1 to 10000.
Skip the firststartnumber
How many results to skip before returning any, for paging through a large set. Defaults to 0.At least 0.

Outputs

not_foundlist
requested_pmidslist
result_countnumber
summarieslist
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 IDspmidslist
The articles to render, by PMID. Leave empty if you are reading a saved set instead. Up to 200 per step.
Formattext_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 environmentweb_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 keyquery_keytext
The query key returned alongside the web environment.
Number of resultsmax_resultsnumber
How many records from a saved set to return (1–10000). Defaults to 20.From 1 to 10000.
Skip the firststartnumber
How many results to skip before returning any, for paging through a large set. Defaults to 0.At least 0.

Outputs

formattext
requested_countnumber
requested_pmidslist
texttext
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 IDspmidslist
The articles to fetch, by PMID. Leave empty if you are reading a saved set instead. Up to 200 per step.
Saved set: web environmentweb_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 keyquery_keytext
The query key returned alongside the web environment.
Number of resultsmax_resultsnumber
How many records from a saved set to return (1–10000). Defaults to 20.From 1 to 10000.
Skip the firststartnumber
How many results to skip before returning any, for paging through a large set. Defaults to 0.At least 0.

Outputs

articleslist
not_foundlist
requested_pmidslist
result_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
}

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 IDspmidslistRequired
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

articleslist
requested_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 IDspmidslistRequired
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 articleper_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 resultsmax_resultsnumber
How many citing articles to return (1–10000). Defaults to 50.From 1 to 10000.

Outputs

by_articlelist
databasetext
link_nametext
result_countnumber
resultslist
source_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

DatabasedatabasetextRequired
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 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 IDspmidslistRequired
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 linksscopetext
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

articleslist
requested_pmidslist
scopetext
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 IDspmidslistRequired
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 databasedatabasetextRequired
Which NCBI database to follow the links into: for example pmc for the free full text, or gene.
Link typelink_nametext
Pick one exact link instead of every link into the target database. Leave empty for all of them.
Group results by articleper_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 resultsmax_resultsnumber
How many linked records to return (1–10000). Defaults to 50.From 1 to 10000.
Filter the linked recordstermtext
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 ondate_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 frompublished_fromdate
Only include linked records from this date onwards.
Published topublished_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_articlelist
databasetext
link_nametext
result_countnumber
resultslist
source_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

databaseslist
result_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

CitationscitationslistRequired
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

citationslist
matched_countnumber
unmatched_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 IDspmidslistRequired
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 setweb_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_keytext
saved_countnumber
saved_pmidslist
web_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 queryquerytextRequired
What to search for. Plain words search everywhere; add field tags to narrow it.
Search only insearch_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 bysort_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 ondate_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 frompublished_fromdate
Only include articles from this date onwards. Use with 'Published to'.
Published topublished_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 resultsmax_resultsnumber
How many PMIDs to return (1–10000). Defaults to 20.From 1 to 10000.
Skip the firststartnumber
How many results to skip before returning any, for paging through a large set. Defaults to 0.At least 0.
Save results for latersave_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

pmidslist
query_keytext
query_translationtext
result_countnumber
start_indexnumber
total_countnumber
warningsobject
web_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
}

On this page