Medium Scraper
Pricing
from $3.00 / 1,000 results
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
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
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.
- 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.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
keyword | string | Yes | Non-empty topic, phrase, or term up to 500 characters; passed to Medium search as typed | machine learning |
max_results | integer | Yes | Maximum saved complete public articles, from 1 through 800 | 1 |
{"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.
| Group | Fields | Meaning |
|---|---|---|
| Article | platform, id, url, title, subtitle, content | Source, canonical identity, visible headings, and full body text |
| Images | images, cover_image | Successfully stored inline images and cover image |
| Writer | author_id, author_username, author_name, author_url | Stable author identity and profile URL |
| Publication | publication_id, publication_name, publication_url | Publication context when present |
| Time | published_at, updated_at | ISO 8601 first-published and latest-revision timestamps |
| Taxonomy | tags, topics, language, license | Writer tags, source topics, detected language, and license |
| Activity | reading_time, word_count, clap_count, response_count | Source size, reading estimate, and engagement snapshot |
| Processing | processor, processed_at | Producing 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 ApifyClientclient = 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.
| Event | Billing unit | FREE | BRONZE | SILVER | GOLD | PLATINUM | DIAMOND |
|---|---|---|---|---|---|---|---|
| Actor Start | Run start; one event per GB of memory, minimum one | $0.01000 | $0.01000 | $0.01000 | $0.01000 | $0.01000 | $0.01000 |
| Result | One 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, andtopicsfor classification, embeddings, or qualitative review. - Technology monitoring. Schedule a recurring keyword and compare
published_at,clap_count,response_count, andprocessed_atacross 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.
Legal and Compliance
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.
Related AgentX Actors
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
- Google Keyword Trends — Google Trends keyword interest, compared five at a time
- Google Trends Scraper — Google Trends trending searches
- Google Maps Store Scraper — Google Maps business listings
- LinkedIn Company Lookup — LinkedIn company records
- LinkedIn Profile Lookup — LinkedIn profile records
- Weather Forecast API — forecast and historical weather data
Jobs and Hiring
- All Jobs Scraper — multi-platform job listings
- Bayt Jobs Scraper — Bayt job listings
- Glassdoor Jobs Scraper — Glassdoor job listings
- Indeed Jobs Scraper — Indeed job listings
- JobStreet Company Profile — JobStreet employer records
- Jooble Jobs Scraper — Jooble job listings
- LinkedIn Jobs Scraper — LinkedIn job listings
- Naukri Jobs Scraper — Naukri job listings
- Talent Jobs Scraper — Talent.com job listings
- ZipRecruiter Jobs Scraper — ZipRecruiter job listings
Social Media
- Instagram Creator Scraper — Instagram creator profiles
- Instagram Reels Scraper — Instagram Reels metadata
- Instagram Trending Scraper — Instagram trending content
- Medium Profile Scraper — Medium author profiles
- Reddit Profile Scraper — Reddit user profiles
- Reddit Viral Scraper — Reddit viral posts
- SubReddit Info Scraper — subreddit metadata
- Subreddit Members Scraper — subreddit member lists
- Subreddit Posts Scraper — subreddit post feeds
- Telegram Chat Scraper — Telegram chat messages
- Telegram Info Scraper — Telegram channel metadata
- Telegram Member Adder — Telegram group membership management
- Telegram Member Scraper — Telegram group members
- Telegram Private Group Scraper — private Telegram group data
- TikTok Creator API — TikTok creator profiles
- TikTok User Lookup — TikTok account records
- X Twitter Community API — X community data
- X Twitter Profile Lookup — X profile records
- YouTube Creator Email Scraper — YouTube creator contact data
Video, Transcripts and Downloads
- All Video Scraper — multi-platform video metadata
- Video Transcript — multi-platform transcripts
- Video Captions Downloader — caption files
- Video to Social Post — video repurposed into social copy
- YouTube Transcript — YouTube transcripts
- TikTok Transcript — TikTok transcripts
- X Twitter Transcript — X video transcripts
- Facebook Transcript — Facebook video transcripts
- Bilibili Transcript — Bilibili transcripts
- Dailymotion Transcript — Dailymotion transcripts
- Rutube Transcript — Rutube transcripts
- Loom Transcript — Loom transcripts
- Wistia Transcript — Wistia transcripts
- Instagram Reels Downloader — Reels downloads
- Kick Clip Downloader — Kick clip downloads
- Linkedin Video Downloader — LinkedIn video downloads
- Pinterest Video Downloader — Pinterest video downloads
- Reddit Video Downloader — Reddit video downloads
- Snapchat Video Downloader — Snapchat video downloads
- TED Talk Downloader — TED talk downloads
- TikTok Live Downloader — TikTok live downloads
- Twitch VOD Downloader — Twitch VOD downloads
- Zoom Recording Downloader — Zoom recording downloads
E-Commerce and Retail
- All Shopping Scraper — multi-platform product data
- AliExpress Product Scraper — AliExpress products
- Amazon Storefront Scraper — Amazon Brand Store pages
- Bol Product Scraper — Bol.com products
- eBay Seller Leads API — eBay seller records
- Hepsiburada Product Scraper — Hepsiburada products
- Kakaku Product Scraper — Kakaku.com products
- Rakuten Product Scraper — Rakuten products
Classifieds and Automotive
- All Vehicle Scraper — multi-platform vehicle listings
- AutoTrader Vehicle Search — AutoTrader US listings
- AutoTrader UK Vehicle Search — AutoTrader UK listings
Real Estate
- All Property Scraper — multi-platform property listings
- Homes Property Scraper — Homes.com listings
- MagicBricks Property Scraper — MagicBricks listings
- NoBroker Property Scraper — NoBroker listings
- Property24 Property Scraper — Property24 listings
- Realtor Property Scraper — Realtor.com listings
- Zillow Property Scraper — Zillow listings
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