Medium Articles Scraper avatar

Medium Articles Scraper

Pricing

from $0.50 / 1,000 article rows

Go to Apify Store
Medium Articles Scraper

Medium Articles Scraper

Scrape public Medium article metadata from RSS feeds by tag, author, publication, or feed URL.

Pricing

from $0.50 / 1,000 article rows

Rating

0.0

(0)

Developer

Fetch Cat

Fetch Cat

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

16 days ago

Last modified

Features

Limited permissions

Share

Collect recent public Medium article metadata from tags, author handles, publications, or Medium feed URLs. Export titles, links, authors, dates, tags, snippets and available images to JSON, CSV or Excel. This Medium Articles Scraper reads feeds, not full article archives or engagement counters.

Quick start

  1. Open the Actor's Input tab and choose a tag, author, publication or feed URL. Remove unwanted example sources.
  2. Set a small article limit and start the run.
  3. Open the dataset and export results. Filter itemType to article when you only want articles, not source diagnostics.
{
"tags": ["artificial-intelligence"],
"maxItems": 10,
"maxItemsPerSource": 10,
"includeSnippetHtml": true
}

Feeds expose recent items only. A higher limit does not unlock historical articles, paywalled text or keyword search.

Prefer a video guide? This short Apify walkthrough shows you how to set up and run an Actor. It uses a different Actor, but the setup steps are the same.

Ready-to-run examples

Choose a public example to see its settings before starting a run:

What you get

Article rows contain feed-derived titles, source links, available authors, dates, tags, snippets and images. Diagnostic rows separately describe source outcomes. Feed fragments are not a guaranteed full article, and estimated reading time and membership hints retain their uncertainty.

Who is it for?

  • Editorial researchers preparing source-linked recent reading lists.
  • Publication analysts reviewing items exposed by selected public feeds.
  • Topic researchers examining available article metadata and snippets.
  • AI and data developers using feed fragments as input to a separate analysis workflow.

How you can use the data

  • Prepare an artificial-intelligence reading sample. Use the existing tag with ten total articles and ten considered items per source. Keep title, URL, author and publication date for editorial review without claiming every article mentioning AI is included.
  • Compare your own publication or author exports. Supply supported publication slugs, author handles or feed URLs and retain article IDs with collection times. Duplicate articles are saved once, but sourceInputs is not an exhaustive map of every overlapping feed.
  • Choose feed snippets for your own analysis. Enable snippet HTML when formatting is useful or keep plain snippetText. Do not present feed text as a full article corpus, verified paywall status or Medium's native reading time.
  • Separate source diagnostics from reading material. Filter itemType to article for a reading list and inspect status and errorCode on diagnostic rows. Dataset row count can exceed the article cap, and a succeeded run can contain no articles.

Input settings

Supply at least one of startUrls, tags, authors or publications. You may combine them. Sources are processed in that order. Results retain feed order, not a global date or popularity sort.

SettingJSON keyPurpose
Medium feed or page URLsstartUrlsFeed URLs or supported Medium tag, author and publication pages.
TagstagsTopic names such as data science.
AuthorsauthorsHandles such as @ev or Medium profile URLs.
PublicationspublicationsSlugs such as the-generator or Medium publication URLs.
Maximum article rowsmaxItemsTotal article-row cap. Diagnostics may add rows.
Maximum articles per sourcemaxItemsPerSourceFeed items considered per source, before duplicate removal.
Include snippet HTMLincludeSnippetHtmlInclude snippetHtml. Plain-text snippetText remains available.
Include article details (reserved)includeArticleDetailsAccepted but currently has no effect, even when true.

See each input field's help for defaults and limits. Use explicit limits for predictable API requests.

Example inputs

Use the Quick start input as a small first run. Adjust the fields described above for your own data.

Output data

The following abbreviated, synthetic example illustrates the shape, not an observed article:

{
"itemType": "article",
"input": "data-science",
"inputType": "tag",
"feedUrl": "https://medium.com/feed/tag/data-science",
"title": "Illustrative article title",
"url": "https://medium.com/example/illustrative-article-abc123def456",
"authorName": null,
"publishedAt": null,
"tags": ["Data Science"],
"snippetText": "Illustrative feed snippet.",
"readingTime": 1,
"readingTimeMethod": "estimated_from_feed_words",
"isMemberOnly": null,
"status": "ok",
"errorCode": null
}
FieldsMeaning
itemType, status, errorCode, errorMessage, httpStatusArticle or diagnostic row and available source outcome.
input, inputType, feedUrl, feedTitle, sourceInputsSource provenance. Do not rely on sourceInputs as an exhaustive cross-feed overlap report.
articleId, guid, url, canonicalUrlFeed-derived identifiers and article links.
title, authorName, publicationNameAvailable metadata. publicationName may be the feed title rather than a verified publication identity.
publishedAt, updatedAt, rawPublishedAt, rawUpdatedAtParsed and original dates when supplied.
tags, tagsNormalizedOriginal categories and normalized tags.
snippetHtml, snippetText, imageUrlFeed fragment, plain text and available first image. Not guaranteed full text.
readingTime, readingTimeMethodMinutes estimated from feed text, not Medium's native reading-time value.
isMemberOnly, subtitleMembership is a best-effort text hint (true or null), not a verified paywall flag. subtitle is currently always null.
source, scrapedAtSource label and collection timestamp.

Missing values remain null or empty arrays. snippetHtml is omitted when disabled. Repeated articles across sources are saved once. A per-source cap is applied before duplicates are removed, so fewer articles may be returned than requested.

Download your results

Open your run's dataset, choose Export and select JSON, CSV or Excel. JSON keeps nested fields together. CSV and Excel are useful when you want to review the records in a spreadsheet.

See Apify's download and export guide for the available formats and field options.

Pricing

The start event is charged once after source validation. The item event applies to each saved article row. Diagnostic rows are not charged as articles.

Use explicit small total and per-source limits. See the live Pricing tab for current rates.

Tips for best results

  • Remove unwanted example sources. URLs, tags, authors and publications can all contribute work.
  • Filter article rows explicitly. Diagnostic rows describe source outcomes rather than reading material.
  • Retain raw dates and feed links. They help check metadata before reusing it in a brief.
  • Keep per-source limits small deliberately. The cap applies before duplicate removal and can produce fewer saved articles.
  • Use snippets as excerpts. The reserved article-details option does not add full text.

Limits and caveats

Only recent public Medium feed metadata and exposed snippets are supported. Full bodies, claps, responses, historical pagination, keyword search and native ranking are not provided. No login, cookies or member-only bypass is supported. Custom-domain feeds and arbitrary websites are outside the supported URL contract.

At least one supported source is required. URL sources are processed before tags, authors and publications, in that order. Feed order is retained rather than globally sorting dates or popularity. Total limits count article rows while diagnostics may add dataset rows. Per-source limits count considered feed items before duplicate removal, and feeds may contain fewer recent entries than either limit.

Missing values remain null or empty, and snippetHtml is omitted when disabled. Reading time is estimated from feed words, publicationName can be the feed title rather than verified identity, and member-only status is a best-effort text hint rather than a verified access flag. Subtitle is always null. Include article details is accepted but has no effect.

Unsupported URLs, non-feed responses, empty feeds and source fetch failures produce diagnostic rows. A succeeded run can contain no article rows, so inspect itemType, status and errorCode rather than counting every row as an article or treating a fetch failure as privacy or deletion. In your destination, compare successive datasets or send alerts yourself: the Actor does not detect new-article changes or send notifications.

Automation and integrations

Save your settings for next time

Once you have an input that works for you, save it as an Apify task. This keeps your settings together so you can use them again without filling in the form from scratch.

Run on a schedule

Need fresh results regularly? You can schedule the Actor or a saved task to run at a time that suits you.

Each scheduled run collects the data again. If you want to compare results or highlight changes, add that step in your own workflow.

Send results to your other tools

Use n8n, Make or Zapier to connect this scraper to the rest of your workflow. For example, you could pass its results to an AI assistant or add records to a spreadsheet. Follow the Apify integration guides for your chosen tool.

For a custom connection, an Apify webhook can notify your app when a run finishes or fails. Your app can then fetch the results or handle the failure.

API usage

Want to collect this data from your own app or automation? The examples below send input to the scraper and show how to collect its results.

The Node.js and Python examples wait for the run to finish before reading its results. The cURL example starts the run and returns its details. Wait for that run to finish, then use its defaultDatasetId to fetch the results.

For setup instructions, see Apify's JavaScript client guide, Python client guide and Actor runs API reference.

cURL

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~medium-articles-scraper/runs' \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H 'Content-Type: application/json' \
--data @- <<'JSON'
{
"tags": [
"artificial-intelligence"
],
"maxItems": 10,
"maxItemsPerSource": 10,
"includeSnippetHtml": true
}
JSON

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/medium-articles-scraper').call({
"tags": [
"artificial-intelligence"
],
"maxItems": 10,
"maxItemsPerSource": 10,
"includeSnippetHtml": true
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/medium-articles-scraper').call(run_input={'tags': ['artificial-intelligence'], 'maxItems': 10, 'maxItemsPerSource': 10, 'includeSnippetHtml': True})
print(client.dataset(run['defaultDatasetId']).list_items().items)

MCP and AI agents

You can ask your AI assistant to collect data with Medium Articles Scraper and help you work with the results. The scraper returns the data, and your assistant can then summarize it, compare records or prepare notes.

Connect your assistant through the Apify MCP server. MCP gives your assistant a way to find this scraper, run it and read the results. Follow the official setup and sign-in guide for your app.

Easier setup with an Apify plugin

If you use a supported coding assistant, the official Apify plugin can set up the connection for you. It connects your assistant to Apify and includes instructions for common tasks. Follow the guide for your particular app.

Use Apify AI in Console

Prefer to keep everything in Apify? Open Apify AI in Console and ask it to find Fetch Cat's Medium Articles Scraper. You can describe the data you want and ask questions about the results.

Apify AI is currently in beta. It asks for confirmation before starting an Actor, and normal run charges apply.

Choose your assistant

Connect just this scraper

To keep your setup focused on this scraper, add this server configuration to a compatible MCP client:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/medium-articles-scraper"
}
}
}

Sign in to Apify when your client asks. If your client uses a Bearer token instead, follow its setup guide and keep the token in its secure configuration. Configuration formats vary by app, so use the linked guide if your client needs a different format.

Use Apify's general server

Already connected to the general Apify MCP server at https://mcp.apify.com? You can use it to find this scraper without adding another server. Ask your assistant to use Medium Articles Scraper by Fetch Cat, or give it the identifier fetch_cat/medium-articles-scraper.

Your assistant can check the available settings and retrieve the results from the returned run. If the run is still working, it should follow that run rather than start it again. Both connection options use Apify's hosted service.

Example requests

  • “Use Fetch Cat’s Medium Articles Scraper to collect up to 5 artificial-intelligence tag articles, considering at most 5 items from that source with snippet HTML enabled. Keep article links, titles, dates and available authors for my reading list.”
  • “Collect up to 5 recent Medium feed articles from publication the-generator, considering at most 5 items from that source with snippet HTML off. Keep plain snippets and source diagnostics separate, without retrieving full article bodies.”
  • “Retrieve up to 5 recent Medium feed articles from author @ev, considering at most 5 items from that source. Keep source IDs, dates and collection time for comparison with my own export, and report diagnostic outcomes without counting them as paid articles.”

Normal Apify charges apply. Check the live Pricing tab before asking your assistant to run a larger batch.

Pay with x402

If your AI agent has a funded wallet, it can pay for Apify usage through x402. This experimental option lets an agent use Apify without a conventional account.

Apify AGI provides a prepaid API token with a spending cap after payment. Your agent can use that token to run this scraper through the Apify API or an authenticated MCP connection.

Some MCP setups also support paying for each request directly. That is a different payment option, so check the official guide for its availability.

Follow the official guide for wallet setup, supported payment options and current terms. Apify handles the payments. Keep wallet keys and payment tokens in your agent's secure configuration.

Other ways for agents to pay

Apify also supports MPP for prepaid access through AGI and Skyfire for eligible Actors. If your agent already uses one of these, see the agentic payment guide to choose the right setup.

FAQ

Can I read Medium articles for free or unlock member-only stories?

This Actor exports public feed metadata and available snippets. It does not unlock member-only stories or provide a full-text reader.

Can I find Medium articles about AI or AI agents?

Use relevant tags such as artificial-intelligence. These are topic feeds, not keyword search. They do not guarantee every article mentioning a phrase.

Why are there fewer articles than requested?

Feeds contain limited recent items, duplicate articles are skipped, and a source may be unavailable. Check diagnostic rows for the actual source outcome. An inaccessible response alone does not prove a source is private or deleted.

Can I export or automate the results?

Export the dataset as CSV, JSON or Excel, or retrieve it through the API. External workflows can compare successive datasets. This Actor does not itself detect changes or send new-article alerts.

Support and feedback

For custom additions or integrations, email hello@fetchcat.dev.

Found an error or have a feature request? Open an issue with the run URL, a non-sensitive input example and what you expected.

Need help sharing it? See Apify’s guide to sharing a run when reporting an issue. Sharing a run can give the developer access to its input, logs and results, so use a run that contains no sensitive data. Please leave out API tokens, passwords, cookies, private documents and personal data. Use a public sample URL or a redacted example instead.

Tried this scraper? We'd love to hear how it worked for you. Leave a review to help others choose the right tool and help us improve it. Your feedback means a lot to us.

Made with care for curious people, AI agents and the possibilities in data. ♥

⌂ 换网址