Medium Scraper – Articles, Authors, Tags & Publications avatar

Medium Scraper – Articles, Authors, Tags & Publications

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Medium Scraper – Articles, Authors, Tags & Publications

Medium Scraper – Articles, Authors, Tags & Publications

Medium scraper: extract public articles by author, publication, tag or URL with title, full text, markdown, tags, claps, responses, dates and reading time. Export JSON, CSV or Excel. From $1 per 1,000 results.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Alexandre Manguis

Alexandre Manguis

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Share

What does it do?

This Medium scraper collects public Medium articles by author, publication, tag or direct article URL. For every article it returns the title, subtitle, author, publication, tags, publication and update dates, reading time, claps, responses and — optionally — the full text as plain text and Markdown. Results are stored in an Apify dataset that you can export as JSON, CSV, Excel, XML or HTML, or read through the API.

It uses Medium's own public web endpoints, needs no Medium account and no API key, and works with Apify datacenter proxies. It only returns what is publicly visible: no emails, no private data, and no bypass of the Medium paywall.

Who is it for / use cases

  • Content & SEO teams – monitor what competitors and publications publish, track topics and tags.
  • Researchers and data teams – build text corpora of articles on a topic (e.g. machine-learning) with dates, tags and engagement.
  • Newsletter and media curators – pull the newest articles of selected authors or publications.
  • AI / RAG builders – feed clean Markdown articles into pipelines.
  • Creators – export your own articles with claps and responses for analysis or backup.

Features

  • Four source types in one run: authors, publications, tags, article URLs (mix freely, up to 500 sources).
  • Full text as plain text and Markdown, plus word count (can be switched off for faster metadata-only runs).
  • Engagement fields: claps and responses.
  • Filters: total limit, per-source limit, publishedAfter date.
  • Deduplication of articles across sources.
  • Member-only stories: only the public preview is returned and flagged with isMemberOnly and textIsPreviewOnly.
  • Every row carries sourceType, sourceInput and scrapedAt, so you know where it came from.

Input

FieldTypeDescription
authorsarray@username, username or profile URL (https://medium.com/@username).
publicationsarrayPublication slug or URL (e.g. better-programming).
tagsarrayTag slug or URL (e.g. machine-learning). Newest first.
articleUrlsarrayDirect article URLs.
maxResultsintegerTotal limit, default 50 (max 100,000). Also caps your spending.
maxResultsPerSourceintegerLimit per author/publication/tag. Empty = only the total limit applies.
includeFullTextbooleanFetch text, Markdown and word count. Default true.
publishedAfterstringOnly articles first published on or after YYYY-MM-DD.
proxyConfigurationobjectApify datacenter proxy is enough.

At least one author, publication, tag or article URL is required; otherwise the run fails with a clear "Invalid input" message.

Example input:

{
"authors": ["@zackbloom"],
"publications": ["better-programming"],
"tags": ["machine-learning"],
"articleUrls": ["https://medium.com/@zackbloom/why-a-pneumatic-ventilator-e324da4a9b0f"],
"maxResults": 45,
"maxResultsPerSource": 8,
"includeFullText": true,
"proxyConfiguration": { "useApifyProxy": true }
}

Output

One dataset row per article (text shortened below). Real sample from a production run:

{
"articleId": "62edea66ffa4",
"url": "https://medium.com/blog/updating-our-rules-june-2023-62edea66ffa4",
"canonicalUrl": "https://medium.com/blog/updating-our-rules-june-2023-62edea66ffa4",
"title": "Updating Our Rules — June 2023",
"subtitle": "This month, we are updating our Rules. As the world evolves, so do the ways in which people use Medium…",
"authorName": "Medium",
"authorUsername": "Medium",
"authorUrl": "https://medium.com/@Medium",
"publicationName": "The Medium Blog",
"publicationSlug": "blog",
"publicationDomain": null,
"publishedAt": "2023-06-28T18:01:22.039Z",
"updatedAt": "2023-06-28T18:01:22.039Z",
"readingTimeMinutes": 1,
"claps": 5130,
"responses": 69,
"tags": ["medium", "rules"],
"isMemberOnly": false,
"imageUrl": null,
"text": "Updating Our Rules — June 2023\n\nThis month, we are updating our Rules…",
"markdown": "## Updating Our Rules — June 2023\n\nThis month, we are updating our Rules…",
"wordCount": 264,
"textIsPreviewOnly": false,
"sourceType": "author",
"sourceInput": "@medium",
"scrapedAt": "2026-10-03T22:32:31.485Z"
}

Output fields & fill rates

Measured on a production run of 41 articles (mixed authors, publications and tags, full text on):

FieldFill rateNote
articleId, url, canonicalUrl, title, publishedAt, updatedAt100%
authorName, authorUsername, authorUrl100%
claps, responses, readingTimeMinutes100%
text, markdown, wordCount100%Preview only for member-only stories
isMemberOnly, textIsPreviewOnly100%
sourceType, sourceInput, scrapedAt100%
subtitle, tags92.7%Some articles have none
imageUrl70.7%Not every article has a cover image
publicationName, publicationSlug29.3%Only for articles published in a publication
publicationDomain22%Only for publications on a custom domain

Empty fields mean the article does not have that data, not that extraction failed.

How to use via API

Replace YOUR_APIFY_TOKEN with your token and use the Actor ID shown on this page (<username>~medium-article-scraper).

curl

curl -X POST "https://api.apify.com/v2/acts/<username>~medium-article-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"tags": ["machine-learning"], "maxResults": 20}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('<username>/medium-article-scraper').call({
authors: ['@medium'],
maxResults: 20,
includeFullText: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items[0].title);

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("<username>/medium-article-scraper").call(run_input={
"publications": ["better-programming"],
"maxResults": 20,
"includeFullText": True,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(len(items), items[0]["title"])

Pricing

Pay per result: you are charged for each article delivered in the dataset. The price per 1,000 results depends on your Apify plan:

PlanPrice per 1,000 results
Free$1.50
Bronze$1.30
Silver$1.15
Gold and above$1.00

Platform usage (compute and proxy) is billed by Apify on top; in the production test, a 41-article run used about $0.0007 of platform usage. Use maxResults to cap spending.

Troubleshooting

  • "Invalid input: Provide at least one author, publication, tag or article URL." – fill at least one of the four source fields.
  • No articles for a source – check the spelling of the username, slug or tag; the log shows a warning per source with no results.
  • Short text and textIsPreviewOnly: true – the story is member-only; only the public preview is available.
  • Fewer rows than maxResults – the source has fewer articles, duplicates across sources are removed, or publishedAfter filtered them out.
  • Slow run – turn off includeFullText for metadata-only extraction.

FAQ

Do I need a Medium account or API key? No. Only public pages are read.

Does it return emails or private data? No. Only publicly displayed article data and public author names/usernames.

Can it read paywalled stories? No. Member-only stories return the public preview only, flagged in the output.

Can I export to CSV or Excel? Yes, from the dataset view or via the API (JSON, CSV, Excel, XML, HTML).

Is scraping Medium allowed? The Actor collects publicly visible data only. You are responsible for using it in line with Medium's Terms of Service, copyright law and applicable data-protection rules such as GDPR.

Keywords

medium scraper, medium article scraper, medium publication scraper, scrape medium articles, medium author articles, medium tag scraper, medium blog scraper, medium posts export, medium to csv, medium content extractor, medium api alternative

Hashtags

#medium #mediumscraper #webscraping #articles #blogscraper #contentresearch #dataextraction #apify #json #csv