Medium Articles Scraper avatar

Medium Articles Scraper

Pricing

from $4.99 / 1,000 results

Go to Apify Store
Medium Articles Scraper

Medium Articles Scraper

Scrape Medium articles by search query or topic/tag. Extracts title, author, publication, claps, responses, read time, tags, and more.

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

Coding Frontned

Coding Frontned

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

1

Monthly active users

2 days ago

Last modified

Share

Medium Articles RSS Scraper

Collect current article metadata and public excerpts from Medium's public tag RSS feeds. The Actor uses bounded direct HTTP requests: it does not launch a browser, configure a proxy, spoof a user agent, or generate fingerprints.

Input

Provide query, queries, or both. Each value is normalized to one exact tag slug; the Actor does not silently expand it into loosely related tags.

{
"query": "machine learning",
"mode": "tag",
"maxItems": 3
}
  • query: one topic or tag, up to 80 characters.
  • queries: up to 10 additional non-empty topics or tags. Duplicates are removed case-insensitively.
  • mode: tag or search. This is provenance metadata; both values use the normalized tag feed because Medium has no public RSS search endpoint.
  • maxItems: maximum unique rows across all feeds, from 1 to 100. A feed can expose fewer items than requested.

Unknown fields and invalid bounds fail before any request is made.

Dataset

Each row is one valid public RSS item. Core fields include:

{
"recordType": "mediumArticle",
"recordId": "7e5902a33bbf84ca24a1e23b",
"articleTitle": "An example article",
"articleUrl": "https://medium.com/@example/an-example-article-12345678",
"authorName": "Example author",
"summary": "A public RSS excerpt.",
"tags": ["Machine Learning"],
"publishedAt": "2026-08-30T09:00:00.000Z",
"feedUrl": "https://medium.com/feed/tag/machine-learning",
"feedTag": "machine-learning",
"sourceQuery": "machine learning",
"scrapeMode": "tag",
"sourceHttpStatus": 200,
"extractionMethod": "medium-rss-feed",
"proxyConfigured": false,
"scrapedAt": "2026-08-30T10:00:00.000Z"
}

recordId is a deterministic 24-character SHA-256 prefix derived from the cleaned article URL. Optional fields are omitted rather than written as null. Scriptable or embedded elements are removed from excerpt HTML, tracking parameters are stripped from known URLs, and local, private, or credentialed URLs are rejected. Medium RSS generally exposes an excerpt, not the full paywalled article body.

Run summary and failure behavior

OUTPUT contains status, counts, timing, direct-request provenance, and bounded per-feed diagnostics. Diagnostics are never mixed into the article dataset.

The Actor succeeds when at least one valid row is saved. If every feed fails or yields no valid item, it saves zero dataset rows, writes a diagnostic OUTPUT, and fails explicitly. A partially successful run completes with SUCCEEDED_WITH_WARNINGS in OUTPUT.

Limits and responsible use

Medium may change or disable feeds, return fewer items, or omit optional author/publication fields. There is no external API fee, though Apify compute charges apply. Use the data only where you have a lawful basis, and respect Medium's terms, RSS policies, copyright, privacy rules, and applicable law.

Development

npm ci
npm test
npm run lint
npm run validate:schemas
npm audit --omit=dev