# PubMed Articles Scraper (`scrapers_lat/pubmed-scraper`) Actor

Scrape biomedical articles with title, authors, journal, publication date, DOI and a direct link. Search by keyword. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/scrapers\_lat/pubmed-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** Business, Developer tools, Other
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.80 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![PubMed Articles Scraper](https://scrapers.lat/banners/pubmed-scraper.png)](https://console.apify.com/actors/4SsGME6tqYieuG96q/input)

## PubMed Articles Scraper

Here is one real result, with every field the actor returns:

```json
{
  "pmid": "42595355",
  "title": "Turning off methylglyoxal stress: an alternative approach to inhibit MDSC expansion and metastasis in triple-negative breast cancer.",
  "authors": ["Mohring V", "Ancion M", "Hubert P", "Lardinois F", "Bizet M", "Stern D", "Nokin MJ", "Herfs M", "Rademaker G", "Peulen O", "Janji B", "Bellahcene A"],
  "source": "J Immunother Cancer",
  "journal": "Journal for immunotherapy of cancer",
  "pubDate": "2026 Aug 13",
  "volume": "14",
  "issue": "8",
  "pages": null,
  "doi": "10.1136/jitc-2026-014841",
  "pubTypes": ["Journal Article"],
  "url": "https://pubmed.ncbi.nlm.nih.gov/42595355/",
  "sourceName": "PubMed",
  "abstract": "BACKGROUND: Metabolic reprogramming through enhanced glycolysis is a hallmark of cancer that supports tumor progression and promotes protumor immune responses. Methylglyoxal (MG), a reactive by-product of glycolysis, has recently emerged as an oncometabolite implicated in cancer progression and therapy resistance. [abstract continues with METHODS, RESULTS and CONCLUSIONS sections]",
  "aiSummary": "This study investigates the role of methylglyoxal (MG) stress in promoting immune evasion and metastasis in triple-negative breast cancer (TNBC). The findings suggest that targeting MG stress alongside PD-1 signaling can reduce immune suppression and metastatic spread, offering a potential new treatment strategy for resistant cases.",
  "aiKeywords": ["methylglyoxal", "triple-negative breast cancer", "myeloid-derived suppressor cells", "metastasis", "immunotherapy", "tumor microenvironment"],
  "aiField": "Oncology",
  "observedAt": "2026-08-14T06:29:10.806Z"
}
```

The most complete PubMed scraper available. It returns the fields most PubMed exports leave out, including the full abstract, MeSH headings, author keywords, chemical/substance names, per-author affiliations, the corresponding-author email, funding agencies, ISSN and the PMC free full-text URL, on top of the standard title, authors, journal, date, DOI and PMID, plus optional paid AI add-ons for a plain-English summary, topical keywords and field classification.

**📥 [Input](https://apify.com/scrapers_lat/pubmed-scraper/input-schema) · 📤 [Output](https://apify.com/scrapers_lat/pubmed-scraper/output-schema) · 💰 [Pricing](https://apify.com/scrapers_lat/pubmed-scraper/pricing) · ▶️ [Examples](https://apify.com/scrapers_lat/pubmed-scraper/examples)**

![Apify](https://img.shields.io/badge/Platform-Apify-1CE1CE?logo=apify\&logoColor=white)
![Coverage](https://img.shields.io/badge/Coverage-Biomedical%20literature-blue)
![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-orange)
![Billing](https://img.shields.io/badge/Billing-Pay%20per%20result-brightgreen)

### Table of contents

- [What it does](#what-it-does)
- [Quickstart](#quickstart)
- [Input reference](#input-reference)
- [Output reference](#output-reference)
- [Example output record](#example-output-record)
- [Run via API and CLI](#run-via-api-and-cli)
- [Fetch results](#fetch-results)
- [Billing and limits](#billing-and-limits)
- [FAQ and troubleshooting](#faq-and-troubleshooting)

### What it does

The actor searches PubMed for your keyword query, paginates the matching biomedical articles, and writes one normalized record per article to the run's dataset. Every record carries the bibliographic fields (PMID, title, authors, journal, publication date, volume, issue, pages, DOI, URL) plus the deeper detail fields PubMed exposes: full abstract with section labels, MeSH terms, author keywords, chemical/substance names, author affiliations, corresponding-author email, funding agencies, PMC ID and free full-text URL, ISSN and language. Missing source values are returned as `null`.

Three optional paid AI add-ons enrich each article: `withAiSummary` (a 1-2 sentence plain-English summary), `withAiKeywords` (5-10 topical keywords) and `withAiField` (biomedical field classification). They are off by default and require a paid Apify plan.

### Quickstart

Open the actor, paste this into the input, and press Run. It returns up to 10 articles on covid vaccine efficacy.

```json
{
  "searchQuery": "covid vaccine efficacy",
  "maxArticles": 10
}
```

Every input field is optional. Turn on any of the AI add-ons (`withAiSummary`, `withAiKeywords`, `withAiField`) on a paid plan to enrich each article.

### Input reference

| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| `searchQuery` | string | no | `covid vaccine efficacy` | Keyword to search biomedical articles by topic, disease, drug or author, for example `alzheimer biomarkers`, `crispr`. |
| `maxArticles` | integer | no | `10` | Maximum articles to collect. Free Apify plans are capped at 10 per run. |
| `withAiSummary` | boolean | no | `false` | Paid add-on. Generates a 1-2 sentence plain-English summary from each abstract (skipped when no abstract). Requires a paid plan. Billed only when a summary is produced. |
| `withAiKeywords` | boolean | no | `false` | Paid add-on. Extracts 5-10 topical keywords per article from title, abstract and MeSH. Requires a paid plan. Billed only when keywords are produced. |
| `withAiField` | boolean | no | `false` | Paid add-on. Classifies each article's biomedical field/specialty. Requires a paid plan. Billed only when a classification is produced. |

### Output reference

One dataset item per article. Types: `string`, `string[]`, or `null` when the source value is absent.

| Field | Type | Description |
|---|---|---|
| `pmid` | string | PubMed ID (unique per article). |
| `title` | string | Article title. |
| `authors` | string\[] | Author names. |
| `journal` | string | Full journal name. |
| `journalAbbrev` | string | Journal abbreviation. |
| `source` | string | Journal source string (abbreviated citation). |
| `pubDate` | string | Publication date as published (for example `2026 Aug 13`). |
| `volume` | string | Journal volume. |
| `issue` | string | Journal issue. |
| `pages` | string | Page range, or `null`. |
| `doi` | string | DOI, where available. |
| `url` | string | Direct PubMed article URL. |
| `abstract` | string | Full abstract, with section labels preserved. |
| `meshTerms` | string\[] | MeSH headings assigned to the article. |
| `keywords` | string\[] | Author-supplied keywords. |
| `chemicals` | string\[] | Chemical / substance names. |
| `affiliations` | string\[] | Author affiliations. |
| `correspondingEmail` | string | Corresponding-author email, where the journal lists one. |
| `grantAgencies` | string\[] | Funding agency names. |
| `pmcid` | string | PubMed Central ID, or `null`. |
| `fullTextUrl` | string | Free full-text URL (PMC), when an open-access version exists. |
| `issn` | string | Journal ISSN. |
| `language` | string | Article language. |
| `pubTypes` | string\[] | Publication types, for example `Journal Article`, `Review`. |
| `sourceName` | string | Source label. Always `PubMed`. |
| `observedAt` | string | ISO 8601 timestamp of when the record was collected. |
| `aiSummary` | string | Add-on only. Plain-English summary of the abstract. |
| `aiKeywords` | string\[] | Add-on only. AI-extracted topical keywords. |
| `aiField` | string | Add-on only. AI biomedical field classification. |

### Example output record

Real record from a live run (input `{"searchQuery":"cancer immunotherapy","withAiSummary":true,"withAiKeywords":true,"withAiField":true}`). The `authors` list and `abstract` are trimmed here; every value shown is unchanged from the live record:

```json
{
  "pmid": "42595355",
  "title": "Turning off methylglyoxal stress: an alternative approach to inhibit MDSC expansion and metastasis in triple-negative breast cancer.",
  "authors": ["Mohring V", "Ancion M", "Hubert P", "Nokin MJ", "Herfs M", "Bellahcene A"],
  "source": "J Immunother Cancer",
  "journal": "Journal for immunotherapy of cancer",
  "pubDate": "2026 Aug 13",
  "volume": "14",
  "issue": "8",
  "doi": "10.1136/jitc-2026-014841",
  "pubTypes": ["Journal Article"],
  "url": "https://pubmed.ncbi.nlm.nih.gov/42595355/",
  "sourceName": "PubMed",
  "aiSummary": "This study investigates the role of methylglyoxal (MG) stress in promoting immune evasion and metastasis in triple-negative breast cancer (TNBC). The findings suggest that targeting MG stress alongside PD-1 signaling can reduce immune suppression and metastatic spread, offering a potential new treatment strategy for resistant cases.",
  "aiKeywords": ["methylglyoxal", "triple-negative breast cancer", "myeloid-derived suppressor cells", "metastasis", "immunotherapy", "tumor microenvironment"],
  "aiField": "Oncology",
  "observedAt": "2026-08-14T06:29:10.806Z"
}
```

### Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace `<TOKEN>` with your Apify API token.

Run synchronously and get dataset items in one call:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~pubmed-scraper/run-sync-get-dataset-items?token=%3CTOKEN%3E" \
  -H "Content-Type: application/json" \
  -d '{"searchQuery":"covid vaccine efficacy","maxArticles":25}'
```

Start a run asynchronously:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~pubmed-scraper/runs?token=%3CTOKEN%3E" \
  -H "Content-Type: application/json" \
  -d '{"searchQuery":"cancer immunotherapy","maxArticles":100,"withAiSummary":true,"withAiField":true}'
```

Apify CLI:

```bash
apify call scrapers_lat/pubmed-scraper \
  --input '{"searchQuery":"alzheimer biomarkers"}'
```

### Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing `format`:

```bash
## JSON
curl "https://api.apify.com/v2/datasets/%3CDATASET_ID%3E/items?token=%3CTOKEN%3E&clean=true&format=json"

## CSV
curl "https://api.apify.com/v2/datasets/%3CDATASET_ID%3E/items?token=%3CTOKEN%3E&clean=true&format=csv"

## Paginate large datasets
curl "https://api.apify.com/v2/datasets/%3CDATASET_ID%3E/items?token=%3CTOKEN%3E&offset=1000&limit=1000"
```

`<DATASET_ID>` is returned as `defaultDatasetId` in the run object. Use `offset` and `limit` to page through large result sets. `clean=true` drops empty and internal fields.

### Billing and limits

- **Pay per result.** You are charged per article returned (`result` event). See the [pricing tab](https://apify.com/scrapers_lat/pubmed-scraper/pricing) for the current per-result price.
- **AI add-ons.** Each add-on (`withAiSummary`, `withAiKeywords`, `withAiField`) is billed per article only when it returns usable output, and requires a paid Apify plan. All are off by default.
- **No charge on failure.** If a run finds nothing or errors, no billable result is charged. Empty runs cost nothing.
- **Spend cap respected.** Set `maxTotalChargeUsd` on the run; once reached, the actor stops emitting and charging further billable results.
- **Free Apify plans** are capped at 10 articles per run and cannot use the AI add-ons. Upgrade for higher `maxArticles` and AI enrichment.

### FAQ and troubleshooting

**What can I search for?**
Any biomedical topic, disease, drug, method or author. A query like `covid vaccine efficacy` returns the most relevant matching articles.

**Do I get the abstract and MeSH terms?**
Yes. Every record includes the full abstract (with section labels preserved), MeSH headings, author keywords and chemical/substance names where the article provides them.

**Can I get author affiliations and a contact email?**
Yes. Each record lists the author affiliations and, where the journal publishes it, the corresponding-author email.

**Can I read the full paper?**
Where an open-access version exists, the record includes a PMC free full-text link (`fullTextUrl`) alongside the `pmcid`.

**What do the AI add-ons return?**
`withAiSummary` adds a plain-English `aiSummary`, `withAiKeywords` adds `aiKeywords`, and `withAiField` adds an `aiField` classification. They are paid add-ons, off by default, and require a paid Apify plan.

**Is this an official PubMed tool?**
No. This actor is independent and has no affiliation with PubMed or the NLM. It accesses only publicly available data.

### Example tasks

Preconfigured templates for common scenarios. Open one and press Run, or use it as a starting point:

- [Scrape PubMed Articles for Covid Vaccine](https://apify.com/scrapers_lat/pubmed-scraper/examples/pubmed-covid-vaccine)
- [Scrape PubMed Articles for Alzheimer Treatment](https://apify.com/scrapers_lat/pubmed-scraper/examples/pubmed-alzheimer-treatment)
- [Scrape PubMed Articles for Type 2 Diabetes](https://apify.com/scrapers_lat/pubmed-scraper/examples/pubmed-type-2-diabetes)
- [Scrape PubMed Articles for Crispr](https://apify.com/scrapers_lat/pubmed-scraper/examples/pubmed-crispr)
- [Scrape PubMed Articles for Cancer Immunotherapy](https://apify.com/scrapers_lat/pubmed-scraper/examples/pubmed-cancer-immunotherapy)
- [Scrape PubMed Articles for Gut Microbiome](https://apify.com/scrapers_lat/pubmed-scraper/examples/pubmed-gut-microbiome)
- [Scrape PubMed Articles for Statins](https://apify.com/scrapers_lat/pubmed-scraper/examples/pubmed-statins)
- [Scrape PubMed Articles for Obesity](https://apify.com/scrapers_lat/pubmed-scraper/examples/pubmed-obesity)
- [Scrape PubMed Articles for Depression](https://apify.com/scrapers_lat/pubmed-scraper/examples/pubmed-depression)
- [Scrape PubMed Articles for Antibiotic Resistance](https://apify.com/scrapers_lat/pubmed-scraper/examples/pubmed-antibiotic-resistance)

### Related scrapers

- [Clinical Trials Scraper](https://apify.com/scrapers_lat/clinicaltrials-scraper): trials from ClinicalTrials.gov.
- [Crossref Scholarly Metadata Scraper](https://apify.com/scrapers_lat/crossref-scraper): scholarly metadata by DOI or query.
- [arXiv Papers Scraper](https://apify.com/scrapers_lat/arxiv-papers-scraper): preprints from arXiv.
- [GBIF Species Occurrence Scraper](https://apify.com/scrapers_lat/gbif-species-scraper): biodiversity species records.

### More scrapers at scrapers.lat

Built and maintained by [scrapers.lat](https://scrapers.lat), where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at [scrapers.lat](https://scrapers.lat).

***

> Independent tool, not affiliated with PubMed or the NLM. Accesses only publicly available data. Use the results in accordance with the source's terms.

# Actor input Schema

## `maxArticles` (type: `integer`):

Maximum number of PubMed articles to collect. Optional.

## `searchQuery` (type: `string`):

Keyword to search biomedical articles by topic, disease, drug or author (for example 'covid vaccine efficacy', 'alzheimer biomarkers').

## `withAiSummary` (type: `boolean`):

Off by default. When on, generates a 1-2 sentence plain-English summary from each article's abstract (skipped when no abstract). Requires a paid Apify plan. Billed only when a summary is produced.

## `withAiKeywords` (type: `boolean`):

Off by default. When on, extracts 5-10 topical keywords per article from title/abstract/MeSH. Requires a paid Apify plan. Billed only when keywords are produced.

## `withAiField` (type: `boolean`):

Off by default. When on, classifies each article's biomedical field/specialty. Requires a paid Apify plan. Billed only when a classification is produced.

## Actor input object example

```json
{
  "maxArticles": 10,
  "searchQuery": "covid vaccine efficacy",
  "withAiSummary": false,
  "withAiKeywords": false,
  "withAiField": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxArticles": 10,
    "searchQuery": "covid vaccine efficacy"
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/pubmed-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "maxArticles": 10,
    "searchQuery": "covid vaccine efficacy",
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/pubmed-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxArticles": 10,
  "searchQuery": "covid vaccine efficacy"
}' |
apify call scrapers_lat/pubmed-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapers_lat/pubmed-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/4SsGME6tqYieuG96q/builds/7NkAj4eOHkT5kRHap/openapi.json
