Medium Scraper avatar

Medium Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Medium Scraper

Medium Scraper

Medium scraper that searches by keyword and saves up to 800 full-content articles as 27-field rows: full body text, inline and cover images, author and publication context, dates, tags, topics, language, license, clap and response counts. Member-only articles Medium truncates are skipped.

Pricing

from $3.00 / 1,000 results

Rating

5.0

(1)

Developer

AgentX

AgentX

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Share

Medium Scraper is a medium scraper that searches one keyword and returns up to 800 complete public articles as 27-field rows with full text, images, authors, publications, taxonomy, and engagement. It is designed for topic research, monitoring, enrichment, and text-analysis pipelines that need more than result-page snippets.

Apify Users Apify Runs $0.0040 / article Up to 800 articles API + MCP ready

  • One query returns from 1 to 800 complete public article rows.
  • Every saved row follows a documented 27-field Dataset contract.
  • Member-only previews are skipped before Dataset push and Result billing.
  • Keyword input supports phrases up to 500 characters, including quotes and non-English text.

The smallest successful FREE-tier run uses max_results: 1 and costs $0.01 for Actor Start plus $0.00400 for one saved Result, or $0.01400 total.

Why Choose Medium Scraper

Complete public body text. Each accepted row includes content as plain text with paragraphs joined by newlines, allowing classification, summarization, search indexing, or review without a second article request.

Article context in the same record. Author identity, publication identity, dates, tags, topics, detected language, license, reading time, word count, claps, and responses travel with the text that produced them.

Honest locked-content handling. A result marked by Medium as a member-only preview is excluded. The Actor neither presents truncated text as complete nor charges a Result event for a skipped candidate.

Bounded image preservation. Successfully downloaded inline and cover images are stored in the run Key-Value Store and replaced with output URLs. An individual image failure removes only that image field, not the article.

Predictable volume control. max_results counts unique publishable articles, so duplicates and locked previews do not consume the requested row limit.

Quick Start Guide

Step 1: Configure

Open the Medium Scraper input form. The form is prefilled with keyword: machine learning and max_results: 1, a small working example. Replace the phrase or increase the row maximum as needed.

Step 2: Run

Click Start. The Actor walks Medium search pages until it reaches the requested number of complete public articles, the source ends naturally, or the source becomes unavailable after retries.

Step 3: Collect

Open the default Dataset to inspect article rows or export JSON, CSV, Excel, XML, or RSS. Read the terminal status for saved-row and skipped-preview totals.

Input Parameters

Medium Scraper has two required inputs: keyword selects the search and max_results caps the number of saved complete articles.

ParameterTypeRequiredDescriptionExample
keywordstringYesNon-empty topic, phrase, or term up to 500 characters; passed to Medium search as typedmachine learning
max_resultsintegerYesMaximum saved complete public articles, from 1 through 8001
{
"keyword": "machine learning",
"max_results": 1
}

Quoted phrases remain quoted, and non-English text is not translated. There are no date, language, author, publication, country, sort, credential, cookie, or proxy inputs. max_results is a ceiling rather than a guarantee because search depth and locked-content frequency remain source-dependent.

Output Data Schema

Each Dataset item represents one unique complete public article and uses a 27-field top-level contract.

GroupFieldsMeaning
Articleplatform, id, url, title, subtitle, contentSource, canonical identity, visible headings, and full body text
Imagesimages, cover_imageSuccessfully stored inline images and cover image
Writerauthor_id, author_username, author_name, author_urlStable author identity and profile URL
Publicationpublication_id, publication_name, publication_urlPublication context when present
Timepublished_at, updated_atISO 8601 first-published and latest-revision timestamps
Taxonomytags, topics, language, licenseWriter tags, source topics, detected language, and license
Activityreading_time, word_count, clap_count, response_countSource size, reading estimate, and engagement snapshot
Processingprocessor, processed_atProducing Actor and retrieval time

The following illustrative JSON is abbreviated; every live row still conforms to the 27-field schema, with unavailable optionals omitted.

{
"platform": "Medium",
"id": "article-example-id",
"url": "https://medium.com/@example/a-machine-learning-guide-article-example-id",
"title": "A Machine Learning Guide",
"subtitle": "Practical concepts for engineering teams.",
"content": "Machine learning systems use examples to produce predictions...",
"author_id": "author-example-id",
"author_username": "example",
"author_name": "Example Writer",
"author_url": "https://medium.com/@example",
"published_at": "2026-08-01T12:00:00+00:00",
"updated_at": "2026-08-02T12:00:00+00:00",
"tags": ["machine-learning", "engineering"],
"topics": ["machine-learning"],
"language": "en",
"license": "ALL_RIGHTS_RESERVED",
"reading_time": 5.2,
"word_count": 1093,
"clap_count": 10,
"response_count": 0,
"processor": "https://apify.com/agentx/medium-scraper",
"processed_at": "2026-08-12T18:00:00+00:00"
}

Integration Examples

Use Actor ID csD52ZiLidYzEWjHt or the name form agentx/medium-scraper to search the same machine learning scenario through HTTP, SDKs, workflow tools, or MCP.

Actor ID

csD52ZiLidYzEWjHt

HTTP

$curl -X POST "https://api.apify.com/v2/acts/csD52ZiLidYzEWjHt/run-sync-get-dataset-items?token=$APIFY_TOKEN" -H "Content-Type: application/json" -d '{"keyword":"machine learning","max_results":1}'

Python

from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("csD52ZiLidYzEWjHt").call(
run_input={"keyword": "machine learning", "max_results": 1}
)
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<APIFY_TOKEN>' });
const run = await client.actor('csD52ZiLidYzEWjHt').call({
keyword: 'machine learning',
max_results: 1,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Make.com

Use the Apify Run an Actor module, paste csD52ZiLidYzEWjHt, and map keyword and max_results. Send returned rows to a database, spreadsheet, or language-processing step.

n8n

Use an HTTP Request node with Actor ID csD52ZiLidYzEWjHt, store the token as an n8n credential, and submit {"keyword":"machine learning","max_results":1} as JSON.

MCP

Connect to Apify's hosted MCP server, discover agentx/medium-scraper, and pass the same two input fields. The MCP path returns the same Dataset contract as direct API execution.

Pricing

Medium Scraper costs $0.00400 per saved complete article on the FREE tier plus $0.01 for Actor Start, so the smallest successful run costs $0.01400.

EventBilling unitFREEBRONZESILVERGOLDPLATINUMDIAMOND
Actor StartRun start; one event per GB of memory, minimum one$0.01000$0.01000$0.01000$0.01000$0.01000$0.01000
ResultOne saved complete public article$0.00400$0.00360$0.00320$0.00300$0.00300$0.00300

At the default 256 MB memory, Apify bills the minimum one Start event. One successful FREE-tier row is $0.01 + $0.00400 = $0.01400. A typical 25-row FREE-tier run is $0.01 + 25 × $0.00400 = $0.11000. Combining a topic into one larger search is cheaper than launching separate one-row runs because the Start event occurs once. Locked previews and duplicate IDs do not create Result charges. Prices can change; consult the live pricing page.

Use Cases

  • Topic corpora. Collect content, title, subtitle, tags, and topics for classification, embeddings, or qualitative review.
  • Technology monitoring. Schedule a recurring keyword and compare published_at, clap_count, response_count, and processed_at across snapshots.
  • Author discovery. Use author_name, author_username, author_url, article titles, and engagement to find writers active in a domain.
  • Publication research. Group publication_name, publication_url, dates, and topics to understand which outlets cover a subject.
  • Content enrichment. Join complete text, stored images, taxonomy, language, and license to an existing search or knowledge system.
  • Editorial analysis. Compare reading time, word count, tags, and visible engagement across articles returned for the same phrase.

Alternatives

Manual Medium search is free and works well when a person wants to read a handful of results. It becomes inefficient when every full body, author, publication, date, tag, image, and engagement value must enter a repeatable table.

Medium's official API documentation is archived and states that the API is no longer supported. Historical integrations remain useful for understanding old publishing endpoints, but they do not offer a current keyword-search interface for new applications. Building separate search, validation, parsing, image storage, deduplication, and export components offers more control; this Actor supplies those public outcomes behind two inputs.

An unnamed subscription data category may fit continuous workloads needing negotiated quotas or broader endpoint families. Medium Scraper fits on-demand keyword collections billed by saved complete article. Choose something else for private drafts, paywalled bodies, comments, follower lists, arbitrary URL retrieval, or a guaranteed exhaustive historical archive. Use Medium Profile Scraper when a known writer is the starting point.

Limits and Troubleshooting

  • Fewer rows than requested → search ended, duplicates appeared, or locked previews were skipped → use the Dataset item count as the accepted total.
  • No rows → the phrase may have no complete public matches or Medium may be temporarily unavailable → try a broader phrase once.
  • No publication values → the story is self-published → leave the nullable publication fields empty.
  • No image fields → the story lacked an image or that asset could not be stored → retain the text and other metadata.
  • Changed clap or response totals → engagement is a live snapshot → compare records using processed_at.
  • Keyword rejected → it is empty or exceeds 500 characters → shorten it explicitly rather than expecting silent truncation.
  • Large result request takes longer → more search pages and images require more work → begin with the one-row prefill before increasing max_results.

Open the Issues tab with the run ID, exact input, expected result, and affected field when a known-good query repeatedly fails.

Trust and Reliability

  • Schema-backed output. The Dataset declares 27 top-level fields and nullable source-dependent values.
  • Complete-body gate. A row is saved only when the source marks the returned body as non-preview.
  • Output-based billing. The Result event is attached to successfully pushed article rows.
  • Bounded contract. Keyword length is capped at 500 characters and output at 800 unique complete articles.
  • Source-values-only normalization. Missing publication, image, tag, or topic data remains absent rather than being manufactured.
  • Apify-native delivery. Results use the default Dataset and stored image URLs use the run Key-Value Store.

Data scope. Medium Scraper processes publicly searchable Medium articles and skips bodies that the source exposes only as member previews. It requests no Medium credentials or private-account access.

Responsible use. Establish a lawful purpose, collect only necessary information, respect copyright and privacy obligations, and review the source license field before republishing or redistributing article text.

Platform terms. Use of the Actor and exported data remains subject to Apify's terms and Medium's terms. This independent Actor is not affiliated with, endorsed by, or operated by Medium.

Frequently Asked Questions

What does a medium article scraper return?

A medium article scraper run returns one 27-field row per accepted article, including complete public text, author and publication context, dates, taxonomy, language, license, size, engagement, and optional stored images.

How do I scrape medium articles by keyword?

Pass the phrase in keyword, set max_results from 1 through 800, and run; member-only previews and duplicate IDs are excluded from the saved total.

Is there a free Medium scraper?

Manual Medium search is free. This Actor is pay per event: the smallest successful FREE-tier run costs $0.01400, while skipped locked previews do not incur a Result charge.

Can I schedule runs to monitor Medium topics over time?

Yes. Save the two inputs in an Apify task, schedule it, and compare dates, engagement, and processed_at across Dataset snapshots.

Does it return member-only article bodies?

No. A locked preview is rejected before Dataset push, so neither partial body text nor a Result charge is produced for it.

Are images guaranteed on every article?

No. Text-only articles have no image fields, and an individual download or storage failure removes only that affected URL.

Can I search non-English phrases?

Yes. keyword supports non-English text, and language carries Medium's detected language for each saved article when available.

Why can the same query return different counts later?

Medium search ranking, available articles, lock state, and engagement change over time. Treat each Dataset as a snapshot identified by processed_at.

AgentX publishes 77 Actors; the three closest content and author tools come first, followed by the complete catalog by category.

Closest to this Actor:

  • Medium Profile Scraper — resolve a known writer into profile, audience, social, book, and homepage activity fields.
  • Reddit Viral Scraper — find fast-moving community content when the research topic extends beyond long-form articles.
  • Subreddit Posts Scraper — collect posts from a known community for a narrower discussion corpus.

Business and Market Intelligence

Jobs and Hiring

Social Media

Video, Transcripts and Downloads

E-Commerce and Retail

Classifieds and Automotive

Real Estate

Support and Community

Ask about Medium search, complete article rows, or scheduled topic monitoring in the AgentX community on Telegram; for a reproducible bug, open an Issue with the run ID and exact input.

AgentX is an Arcyton brand — arcyton.com.

Last Updated: August 12, 2026