POST /api/pubmed/articles/search
Price: 10 credits
Search PubMed biomedical articles by query and filters
Search biomedical literature on PubMed (NCBI / MEDLINE). Combine a free-text query (PubMed syntax with author/title/journal/affiliation/MeSH/boolean/year-range support) with structured filters: author, journal, affiliation, title, MeSH term, publication type, language, species, sex, age group, text availability, associated data, journal subset, a publication/entrez/modification date range, and sort order. Returns a list of articles, each with title, abstract, authors (with affiliation and ORCID), journal info, publication year and date, keywords, MeSH headings, chemicals, grants, cross-reference ids (PMID, PMCID, DOI), and the PubMed web URL.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)term string nullable — Free-text query in PubMed query syntax. Supports fielded search (cancer[Title], Smith J[Author], [Affiliation], [Journal], [MeSH Terms]), boolean AND/OR/NOT, and year ranges (2018:2022[PDAT]). Combined (AND) with any structured fields and filters below (examples: "crispr cancer", "Iadecola C[Author] AND hypertension[Title]")count integer required — Number of articles to return (min: 1; max: 9999)author string nullable — Filter by author name (examples: "Iadecola C", "Doudna JA")journal string nullable — Filter by journal name or abbreviation (examples: "Nature", "N Engl J Med")affiliation string nullable — Filter by author affiliation text (examples: "Harvard", "Stanford University")article_title string nullable — Filter by words/phrase in the article title (examples: "gene editing")mesh_term string nullable — Filter by an indexed MeSH subject heading (examples: "Neoplasms", "Hypertension")article_types array nullable — Filter by one or more publication types (matched as any-of) (one of: "adaptive_clinical_trial", "address", "autobiography", "bibliography", "biography", "case_reports", "clinical_conference", "clinical_study", "clinical_trial", "clinical_trial_protocol", "clinical_trial_phase_1", "clinical_trial_phase_2", "clinical_trial_phase_3", "clinical_trial_phase_4", "clinical_trial_veterinary", "comment", "comparative_study", "congress", "consensus_development_conference_nih", "controlled_clinical_trial", "corrected_and_republished_article", "dataset", "dictionary", "directory", "duplicate_publication", "editorial", "electronic_supplementary_materials", "english_abstract", "equivalence_trial", "evaluation_study", "expression_of_concern", "festschrift", "government_publication", "guideline", "historical_article", "interview", "introductory_journal_article", "journal_article", "lecture", "legal_case", "legislation", "letter", "meta_analysis", "multicenter_study", "news", "newspaper_article", "observational_study", "observational_study_veterinary", "overall", "patient_education_handout", "personal_narrative", "portrait", "practice_guideline", "pragmatic_clinical_trial", "preprint", "published_erratum", "randomized_controlled_trial", "randomized_controlled_trial_veterinary", "retracted_publication", "review", "systematic_review", "technical_report", "twin_study", "validation_study", "video_audio_media")languages array nullable — Filter by one or more publication languages (any-of) (one of: "english", "french", "german", "spanish", "italian", "japanese", "chinese", "russian", "portuguese", "polish", "dutch", "swedish", "danish", "norwegian", "finnish", "czech", "hungarian", "turkish", "korean", "arabic", "hebrew", "greek", "romanian", "croatian", "serbian", "slovak", "bulgarian", "ukrainian", "persian", "hindi", "latin", "catalan", "slovenian", "lithuanian", "afrikaans", "icelandic", "vietnamese", "thai", "indonesian", "malay")species array nullable — Filter by studied species (any-of) (one of: "humans", "other_animals")sex array nullable — Filter by subject sex (any-of) (one of: "male", "female")age_groups array nullable — Filter by subject age group (any-of) (one of: "newborn", "infant", "preschool_child", "child", "adolescent", "adult", "young_adult", "middle_aged", "aged", "aged_80_and_over")text_availability array nullable — Filter by text availability: has an abstract, free full text, or any full text (any-of) (one of: "abstract", "free_full_text", "full_text")has_associated_data boolean — Restrict to articles linked to associated research data (datasets) (default: false)journal_subset array nullable — Filter by journal subset: MEDLINE-indexed or in PubMed Central (any-of) (one of: "medline", "pmc")sort string — Result ordering (default: "relevance"; one of: "relevance", "pub_date", "Author", "JournalName", "Title")mindate string nullable — Start of date range (YYYY, YYYY/MM or YYYY/MM/DD); used with maxdate (examples: "2018")maxdate string nullable — End of date range (YYYY, YYYY/MM or YYYY/MM/DD); used with mindate (examples: "2022")datetype string — Which date the range applies to (default: "pdat"; one of: "pdat", "edat", "mdat")@type string (default: "PubmedArticle")pmid string requireddoi string nullablepmcid string nullablepii string nullablevernacular_title string nullableabstract string nullableauthor_string string nullablelast_author string nullableauthors array (default: [])@type string (default: "PubmedAuthor")full_name string nullablelast_name string nullablefirst_name string nullableinitials string nullableorcid string nullableaffiliation string nullablejournal object nullable@type string (default: "PubmedJournal")iso_abbreviation string nullablemedline_abbreviation string nullablenlmid string nullableissn string nullableessn string nullableissn_linking string nullablevolume string nullableissue string nullablepages string nullablecountry string nullablepub_date string nullablepub_year integer nullablepub_date string nullableepub_date string nullablelanguage string nullablepub_model string nullablepublication_status string nullablepub_types array (default: [])keywords array (default: [])mesh_headings array (default: [])@type string (default: "PubmedMeshHeading")descriptor_name string requireddescriptor_ui string nullableis_major_topic boolean (default: false)qualifiers array (default: [])chemicals array (default: [])@type string (default: "PubmedChemical")name string requiredregistry_number string nullablegrants array (default: [])@type string (default: "PubmedGrant")grant_id string nullableagency string nullableacronym string nullablecountry string nullabledata_banks array (default: [])@type string (default: "PubmedDataBank")name string requiredaccession string requiredcoi_statement string nullablecitation_subset string nullablehistory array (default: [])@type string (default: "PubmedHistoryEvent")status string requireddate string requireddate_completed string nullabledate_revised string nullablerecord_status string nullablepmc_ref_count integer (default: 0)web_url string (default: "")422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — The entity was not found, or a precondition failed Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.