Medium API
Pricing
from $4.50 / 1,000 results
Medium API
Medium API that searches any keyword and returns up to 800 complete public articles as 27-field JSON rows with full text, images, authors, publications, dates, taxonomy, and engagement. Member-only previews are excluded.
Pricing
from $4.50 / 1,000 results
Rating
0.0
(0)
Developer
TrueFetch
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Medium API is a medium api that searches one keyword and returns up to 800 complete public articles as normalized 27-field JSON rows for developers and data teams. Each accepted row includes full plain text, stored images, writer and publication context, dates, taxonomy, language, license, and engagement values.
- One query can return from 1 to 800 complete public article rows.
- Every row follows a documented 27-field Dataset contract.
- Member-only previews are excluded before Dataset push and Result billing.
- Keyword input supports phrases up to 500 characters, including quotes and non-English text.
Run a one-result test · View API
The smallest successful FREE-tier test uses max_results: 1 and costs $0.01 for Actor Start plus $0.00600 for one Result, or $0.01600 total.
What does Medium API do?
Medium API searches Medium by a caller-provided phrase, follows the public result pages, verifies that each candidate has a complete public body, and saves one structured Dataset row per accepted article. It is designed for applications that need article text and metadata in the same JSON object instead of search-result snippets.
A row can include the canonical article ID and URL, title, subtitle, full plain-text body, KVS-backed inline and cover images, author identity, publication identity, first and latest publication dates, writer tags, Medium topics, detected language, license, reading time, word count, clap count, response count, and processing metadata.
This Actor is not a paywall bypass. If Medium marks a body as a locked preview, the candidate is skipped and never billed as a Result. It does not fetch comments, follower lists, private drafts, recommendations, or arbitrary article URLs. It is independent and is not affiliated with, endorsed by, or operated by Medium.
How do I run Medium API?
Run Medium API by providing a keyword and the maximum number of complete public articles to return.
- Open the Store input form.
- Enter a topic, phrase, organization, technology, or quoted expression in
keyword. - Set
max_resultsfrom 1 through 800. - Start the Actor and read the default Dataset after the terminal status appears.
The prefilled test searches for two artificial-intelligence articles:
{"keyword": "artificial intelligence","max_results": 2}
max_results is a maximum rather than a guarantee. A narrow query, a naturally ending search, or a high proportion of member-only previews can produce fewer rows.
What data does Medium API return?
Medium API returns one 27-field row per complete public article, omitting unavailable optional source values rather than filling them with guesses or zeros.
| Group | Fields | Meaning |
|---|---|---|
| Article | platform, id, url, title, subtitle, content | Source, canonical identity, visible titles, and full plain-text body |
| Images | images, cover_image | Successfully stored inline images in reading order and the stored cover image |
| Writer | author_id, author_username, author_name, author_url | Stable author identity and profile link |
| Publication | publication_id, publication_name, publication_url | Publication context when the story belongs to one |
| Time | published_at, updated_at | ISO 8601 first-publication and latest-revision timestamps |
| Taxonomy | tags, topics, language, license | Writer tags, Medium topics, detected language, and source license label |
| Activity | reading_time, word_count, clap_count, response_count | Source reading estimate, size, and engagement snapshot |
| Processing | processor, processed_at | Producing Actor and UTC retrieval time |
This illustrative JSON is abbreviated and omits several nullable values; every live Dataset item still uses the full 27-field contract.
{"platform": "Medium","id": "article-example-id","url": "https://medium.com/@example/understanding-artificial-intelligence-article-example-id","title": "Understanding Artificial Intelligence","subtitle": "A practical introduction for product teams.","content": "Artificial intelligence systems turn examples and rules into 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": ["artificial-intelligence", "technology"],"topics": ["artificial-intelligence"],"language": "en","license": "ALL_RIGHTS_RESERVED","reading_time": 6.4,"word_count": 1420,"clap_count": 125,"response_count": 8,"processor": "https://apify.com/truefetch/medium-api","processed_at": "2026-08-12T18:00:00+00:00"}
The values are type examples, not current claims about a real article. Dataset exports are available as JSON, CSV, Excel, XML, and RSS.
What inputs can I configure?
Medium API exposes exactly two required inputs in schema order: the search phrase and the maximum saved row count.
| Input | Type | Required | Range or behavior | Example |
|---|---|---|---|---|
keyword | string | Yes | Non-empty phrase up to 500 characters; sent to Medium search as typed | artificial intelligence |
max_results | integer | Yes | 1–800 complete public article rows; locked previews do not count | 2 |
There are no country, language, date, author, publication, sort, credential, cookie, or proxy inputs. A quoted phrase remains quoted, and non-English text is not translated before search.
What platforms and markets does Medium API cover?
Medium API covers Medium's publicly searchable article index across languages and locations. The Actor has no country or marketplace selector because Medium operates one global search surface; the language field reports the language Medium detected for each accepted article.
Coverage is driven by the query and Medium's current public results. Self-published stories and publication stories are both eligible. Publication fields remain absent on self-published items, while custom publication domains are preserved through publication_url when Medium supplies them.
The content boundary is strict: only complete public bodies enter the Dataset. Member-only preview candidates can appear in search but are filtered out. Medium search controls ranking, depth, and natural termination, so the API does not promise that every matching historical article will appear.
Why use Medium API?
Medium API is useful when a pipeline needs article discovery and complete structured content in the same request.
| Capability | Benefit for developers and data teams |
|---|---|
| Keyword search with up to 800 rows | Build topic datasets without collecting article URLs first |
| Complete-body acceptance gate | Keep truncated member previews out of text analysis and Result billing |
| 27-field contract | Join text, author, publication, taxonomy, and engagement without separate page schemas |
| KVS-backed images | Use successfully stored image URLs instead of depending on every source CDN asset |
| Source timestamps and counts | Analyze recency, reading size, claps, and responses from one snapshot |
| Per-result tier pricing | Pay for saved complete articles rather than a monthly endpoint subscription |
The primary trade-off is source-dependent recall. max_results caps accepted rows, but search relevance and locked-content prevalence can make the actual total smaller.
Who is Medium API for?
Medium API is for developers, analysts, researchers, content teams, and data engineers whose starting point is a subject rather than a known writer. It supports research corpora, brand and technology monitoring, topic intelligence, article discovery, author identification, publication analysis, and content-enrichment workflows.
Natural-language teams can feed content, title, and subtitle into classification, summarization, or embedding systems. Market researchers can combine publication identity, dates, tags, topics, claps, and responses to compare visible activity around a theme. Operations teams can schedule repeat searches and append timestamped Dataset snapshots.
It is not intended for profile enrichment, full follower graphs, comments, private data, or guaranteed exhaustive archives. Use Medium Profile API when the known input is a writer URL or handle.
How can I use Medium API through the API or MCP?
Use the unpublished Actor name form truefetch/medium-api through HTTP or MCP until a public Actor ID exists.
$curl -X POST "https://api.apify.com/v2/acts/truefetch~medium-api/run-sync-get-dataset-items?token=$APIFY_TOKEN" -H "Content-Type: application/json" -d '{"keyword":"artificial intelligence","max_results":2}'
The synchronous Dataset-items endpoint returns a JSON array containing the accepted article rows. For larger searches, start the run asynchronously and poll its Dataset rather than holding one connection open.
Connect an MCP client to Apify's hosted Streamable HTTP endpoint:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com","headers": {"Authorization": "Bearer <APIFY_TOKEN>"}}}}
Discover truefetch/medium-api, then pass keyword: artificial intelligence and max_results: 2. The API page provides generated JavaScript, Python, and OpenAPI examples for the same contract.
How much does Medium API cost?
Medium API costs $0.00600 per saved article Result on the FREE tier plus $0.01 for Actor Start, so the smallest successful test costs $0.01600.
| 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 row | $0.00600 | $0.00540 | $0.00480 | $0.00450 | $0.00450 | $0.00450 |
At the default 256 MB memory, Apify charges the minimum one Actor Start event. The one required calculation is $0.01 Start + $0.00600 Result = $0.01600 for one accepted FREE-tier article. Locked previews and duplicate IDs are not pushed as rows and therefore do not create Result events. Prices can change; verify the live pricing panel before a large recurring workload.
How does Medium API compare with alternatives?
Medium API fits keyword-first article retrieval that needs complete public bodies and normalized metadata. Manual Medium search is free and appropriate for reading a few results, but copying full text, author data, publication context, tags, and engagement into a repeatable schema becomes slow at scale.
Medium's official API documentation is archived and says the API is no longer supported. Historical integrations can still explain older publishing endpoints, but they do not provide a current keyword-search contract for new applications. Building separate search, validation, body parsing, image storage, deduplication, and export steps gives maximum control; this Actor provides those public outcomes through two inputs.
An unnamed subscription data category can make sense for continuous high-volume programs that require broader endpoints or negotiated quotas. This Actor is the run-on-demand alternative with per-result pricing. Choose another approach for full comments, private stories, paywalled bodies, follower lists, arbitrary URL retrieval, or a guaranteed complete historical index.
What are the limits and troubleshooting steps?
Medium API is limited by Medium's current public search and accepts only complete public article bodies.
- Fewer rows than
max_results→ search ended, duplicate IDs appeared, or locked previews were skipped. Treat 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 term once before reporting a defect.
- Missing publication fields → the story is self-published. Keep those nullable fields empty.
- Missing image fields → the article lacked an image or that asset could not be stored. Text and other metadata can remain valid.
- Counts changed across runs → claps and responses are live snapshots. Compare them with
processed_at. - A query exceeds 500 characters → input validation rejects it. Shorten the search phrase rather than splitting it silently.
For a reproducible failure, open the Issues tab with the run ID, exact input, expected rows, and affected field. A minimal input is {"keyword":"artificial intelligence","max_results":1}.
Frequently asked questions
Medium API answers common questions about alternatives, authentication, full text, limits, scheduling, and billing.
What is a medium api alternative for article search?
This Actor is a medium api alternative that searches one keyword and returns complete public article bodies with 27 structured fields through Apify's API and Dataset exports.
Can I use medium search api without api key credentials from Medium?
Yes. You need an Apify token for API execution, but the Actor's input has no Medium API key, account, cookie, or session field.
Is there a free Medium API?
Medium search can be used manually for free. This Actor is pay per event, with a smallest successful FREE-tier run of $0.01600 and no Result charge for locked previews that are not saved.
Can I schedule runs to monitor Medium topics over time?
Yes. Save keyword and max_results in an Apify task, schedule it, and compare published_at, clap_count, response_count, and processed_at across Dataset snapshots.
Does the API return member-only article bodies?
No. A candidate marked as a locked preview is skipped before Dataset push, so the API does not return or charge for a truncated member-only body.
Are the returned article bodies complete HTML?
No. content is complete public plain text with paragraphs joined by newlines. Successfully stored inline images are listed separately in images.
Can I search in languages other than English?
Yes. keyword accepts non-English text, and each row can include Medium's detected language code. Search ranking remains source-dependent.
Why did two searches return different engagement counts?
Claps and responses can change between snapshots. Use processed_at to distinguish retrieval times instead of treating engagement as permanent.
Related TrueFetch Actors
Three TrueFetch Actors extend the keyword-to-content workflow in different directions.
- Medium Profile API — resolve a known Medium writer into profile, audience, social, book, and homepage activity fields.
- Reddit Search API — search community discussions when the research topic extends beyond long-form publishing.
- LinkedIn Job Listing — add hiring-demand signals when a technology or organization keyword drives the research.
Support
Support is available through the Store surfaces and the TrueFetch community. Use the Store page for inputs and pricing, the API reference for integrations, the Issues tab for reproducible defects, and the TrueFetch community for product questions.
Search one Medium topic · Open the API reference
Last Updated: August 12, 2026