# Medium Scraper (`agentx/medium-scraper`) Actor

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.

- **URL**: https://apify.com/agentx/medium-scraper.md
- **Developed by:** [AgentX](https://apify.com/agentx) (community)
- **Categories:** News, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

**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](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.apify.com%2Fv2%2Facts%2Fagentx~medium-scraper\&query=%24.data.stats.totalUsers\&style=for-the-badge\&label=Apify%20Users\&color=ff9013)](https://apify.com/agentx/medium-scraper) [![Apify Runs](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.apify.com%2Fv2%2Facts%2Fagentx~medium-scraper\&query=%24.data.stats.totalRuns\&style=for-the-badge\&label=Apify%20Runs\&color=ff9013)](https://apify.com/agentx/medium-scraper) [![$0.0040 / article](https://img.shields.io/badge/%240.0040%20%2F%20article-4285f4?style=for-the-badge)](https://apify.com/agentx/medium-scraper/pricing) [![Up to 800 articles](https://img.shields.io/badge/Up%20to%20800%20articles-34a853?style=for-the-badge)](https://console.apify.com/actors/agentx~medium-scraper/input) [![API + MCP ready](https://img.shields.io/badge/API%20%2B%20MCP%20ready-fbbc05?style=for-the-badge)](https://apify.com/agentx/medium-scraper/api)

- **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](https://console.apify.com/actors/agentx~medium-scraper/input). 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` |

```json
{
  "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.

```json
{
  "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

```text
csD52ZiLidYzEWjHt
```

#### HTTP

```bash
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

```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

```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](https://apify.com/agentx/medium-scraper/pricing).

### 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](https://github.com/Medium/medium-api-docs). 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](https://apify.com/agentx/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](https://apify.com/agentx/medium-scraper/issues) 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**](https://apify.com/agentx/medium-profile-scraper) — resolve a known writer into profile, audience, social, book, and homepage activity fields.
- [**Reddit Viral Scraper**](https://apify.com/agentx/reddit-viral-scraper) — find fast-moving community content when the research topic extends beyond long-form articles.
- [**Subreddit Posts Scraper**](https://apify.com/agentx/subreddit-posts-scraper) — collect posts from a known community for a narrower discussion corpus.

#### Business and Market Intelligence

- **[Google Keyword Trends](https://apify.com/agentx/google-keyword-trends)** — Google Trends keyword interest, compared five at a time
- **[Google Trends Scraper](https://apify.com/agentx/google-trends-scraper)** — Google Trends trending searches
- **[Google Maps Store Scraper](https://apify.com/agentx/google-maps-store-scraper)** — Google Maps business listings
- **[LinkedIn Company Lookup](https://apify.com/agentx/linkedin-company-lookup)** — LinkedIn company records
- **[LinkedIn Profile Lookup](https://apify.com/agentx/linkedin-profile-lookup)** — LinkedIn profile records
- **[Weather Forecast API](https://apify.com/agentx/weather-forecast-api)** — forecast and historical weather data

#### Jobs and Hiring

- **[All Jobs Scraper](https://apify.com/agentx/all-jobs-scraper)** — multi-platform job listings
- **[Bayt Jobs Scraper](https://apify.com/agentx/bayt-jobs-scraper)** — Bayt job listings
- **[Glassdoor Jobs Scraper](https://apify.com/agentx/glassdoor-jobs-scraper)** — Glassdoor job listings
- **[Indeed Jobs Scraper](https://apify.com/agentx/indeed-jobs-scraper)** — Indeed job listings
- **[JobStreet Company Profile](https://apify.com/agentx/jobstreet-company-profile)** — JobStreet employer records
- **[Jooble Jobs Scraper](https://apify.com/agentx/jooble-jobs-scraper)** — Jooble job listings
- **[LinkedIn Jobs Scraper](https://apify.com/agentx/linkedin-jobs-scraper)** — LinkedIn job listings
- **[Naukri Jobs Scraper](https://apify.com/agentx/naukri-jobs-scraper)** — Naukri job listings
- **[Talent Jobs Scraper](https://apify.com/agentx/talent-jobs-scraper)** — Talent.com job listings
- **[ZipRecruiter Jobs Scraper](https://apify.com/agentx/ziprecruiter-jobs-scraper)** — ZipRecruiter job listings

#### Social Media

- **[Instagram Creator Scraper](https://apify.com/agentx/instagram-creator-scraper)** — Instagram creator profiles
- **[Instagram Reels Scraper](https://apify.com/agentx/instagram-reels-scraper)** — Instagram Reels metadata
- **[Instagram Trending Scraper](https://apify.com/agentx/instagram-trending-scraper)** — Instagram trending content
- **[Medium Profile Scraper](https://apify.com/agentx/medium-profile-scraper)** — Medium author profiles
- **[Reddit Profile Scraper](https://apify.com/agentx/reddit-profile-scraper)** — Reddit user profiles
- **[Reddit Viral Scraper](https://apify.com/agentx/reddit-viral-scraper)** — Reddit viral posts
- **[SubReddit Info Scraper](https://apify.com/agentx/subreddit-info-scraper)** — subreddit metadata
- **[Subreddit Members Scraper](https://apify.com/agentx/subreddit-members-scraper)** — subreddit member lists
- **[Subreddit Posts Scraper](https://apify.com/agentx/subreddit-posts-scraper)** — subreddit post feeds
- **[Telegram Chat Scraper](https://apify.com/agentx/telegram-chat-scraper)** — Telegram chat messages
- **[Telegram Info Scraper](https://apify.com/agentx/telegram-info-scraper)** — Telegram channel metadata
- **[Telegram Member Adder](https://apify.com/agentx/telegram-member-adder)** — Telegram group membership management
- **[Telegram Member Scraper](https://apify.com/agentx/telegram-member-scraper)** — Telegram group members
- **[Telegram Private Group Scraper](https://apify.com/agentx/telegram-private-group-scraper)** — private Telegram group data
- **[TikTok Creator API](https://apify.com/agentx/tiktok-creator-api)** — TikTok creator profiles
- **[TikTok User Lookup](https://apify.com/agentx/tiktok-user-lookup)** — TikTok account records
- **[X Twitter Community API](https://apify.com/agentx/x-twitter-community-api)** — X community data
- **[X Twitter Profile Lookup](https://apify.com/agentx/x-twitter-profile-lookup)** — X profile records
- **[YouTube Creator Email Scraper](https://apify.com/agentx/youtube-creator-email-scraper)** — YouTube creator contact data

#### Video, Transcripts and Downloads

- **[All Video Scraper](https://apify.com/agentx/all-video-scraper)** — multi-platform video metadata
- **[Video Transcript](https://apify.com/agentx/video-transcript)** — multi-platform transcripts
- **[Video Captions Downloader](https://apify.com/agentx/video-captions-downloader)** — caption files
- **[Video to Social Post](https://apify.com/agentx/video-to-social-post)** — video repurposed into social copy
- **[YouTube Transcript](https://apify.com/agentx/youtube-transcript)** — YouTube transcripts
- **[TikTok Transcript](https://apify.com/agentx/tiktok-transcript)** — TikTok transcripts
- **[X Twitter Transcript](https://apify.com/agentx/x-twitter-transcript)** — X video transcripts
- **[Facebook Transcript](https://apify.com/agentx/facebook-transcript)** — Facebook video transcripts
- **[Bilibili Transcript](https://apify.com/agentx/bilibili-transcript)** — Bilibili transcripts
- **[Dailymotion Transcript](https://apify.com/agentx/dailymotion-transcript)** — Dailymotion transcripts
- **[Rutube Transcript](https://apify.com/agentx/rutube-transcript)** — Rutube transcripts
- **[Loom Transcript](https://apify.com/agentx/loom-transcript)** — Loom transcripts
- **[Wistia Transcript](https://apify.com/agentx/wistia-transcript)** — Wistia transcripts
- **[Instagram Reels Downloader](https://apify.com/agentx/instagram-reels-downloader)** — Reels downloads
- **[Kick Clip Downloader](https://apify.com/agentx/kick-clip-downloader)** — Kick clip downloads
- **[Linkedin Video Downloader](https://apify.com/agentx/linkedin-video-downloader)** — LinkedIn video downloads
- **[Pinterest Video Downloader](https://apify.com/agentx/pinterest-video-downloader)** — Pinterest video downloads
- **[Reddit Video Downloader](https://apify.com/agentx/reddit-video-downloader)** — Reddit video downloads
- **[Snapchat Video Downloader](https://apify.com/agentx/snapchat-video-downloader)** — Snapchat video downloads
- **[TED Talk Downloader](https://apify.com/agentx/ted-talk-downloader)** — TED talk downloads
- **[TikTok Live Downloader](https://apify.com/agentx/tiktok-live-downloader)** — TikTok live downloads
- **[Twitch VOD Downloader](https://apify.com/agentx/twitch-vod-downloader)** — Twitch VOD downloads
- **[Zoom Recording Downloader](https://apify.com/agentx/zoom-recording-downloader)** — Zoom recording downloads

#### E-Commerce and Retail

- **[All Shopping Scraper](https://apify.com/agentx/all-shopping-scraper)** — multi-platform product data
- **[AliExpress Product Scraper](https://apify.com/agentx/aliexpress-product-scraper)** — AliExpress products
- **[Amazon Storefront Scraper](https://apify.com/agentx/amazon-storefront-scraper)** — Amazon Brand Store pages
- **[Bol Product Scraper](https://apify.com/agentx/bol-product-scraper)** — Bol.com products
- **[eBay Seller Leads API](https://apify.com/agentx/ebay-seller-leads-api)** — eBay seller records
- **[Hepsiburada Product Scraper](https://apify.com/agentx/hepsiburada-product-scraper)** — Hepsiburada products
- **[Kakaku Product Scraper](https://apify.com/agentx/kakaku-product-scraper)** — Kakaku.com products
- **[Rakuten Product Scraper](https://apify.com/agentx/rakuten-product-scraper)** — Rakuten products

#### Classifieds and Automotive

- **[All Vehicle Scraper](https://apify.com/agentx/all-vehicle-scraper)** — multi-platform vehicle listings
- **[AutoTrader Vehicle Search](https://apify.com/agentx/autotrader-vehicle-search)** — AutoTrader US listings
- **[AutoTrader UK Vehicle Search](https://apify.com/agentx/autotrader-uk-vehicle-search)** — AutoTrader UK listings

#### Real Estate

- **[All Property Scraper](https://apify.com/agentx/all-property-scraper)** — multi-platform property listings
- **[Homes Property Scraper](https://apify.com/agentx/homes-property-scraper)** — Homes.com listings
- **[MagicBricks Property Scraper](https://apify.com/agentx/magicbricks-property-scraper)** — MagicBricks listings
- **[NoBroker Property Scraper](https://apify.com/agentx/nobroker-property-scraper)** — NoBroker listings
- **[Property24 Property Scraper](https://apify.com/agentx/property24-property-scraper)** — Property24 listings
- **[Realtor Property Scraper](https://apify.com/agentx/realtor-property-scraper)** — Realtor.com listings
- **[Zillow Property Scraper](https://apify.com/agentx/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](https://t.me/Apify_Actor); for a reproducible bug, open an [Issue](https://apify.com/agentx/medium-scraper/issues) with the run ID and exact input.

AgentX is an Arcyton brand — [arcyton.com](https://arcyton.com).

**Last Updated:** August 12, 2026

# Actor input Schema

## `keyword` (type: `string`):

Topic, phrase, or search term, up to 500 characters. Sent to Medium search exactly as typed, including quoted phrases and non-English text.

## `max_results` (type: `integer`):

Maximum complete public articles to save, from 1 to 800. Member-only previews are skipped and do not count toward the requested total.

## Actor input object example

```json
{
  "keyword": "machine learning",
  "max_results": 1
}
```

# Actor output Schema

## `results` (type: `string`):

Open the default Dataset. Each row uses the 27-field contract; unavailable optional values are omitted.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keyword": "machine learning",
    "max_results": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("agentx/medium-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keyword": "machine learning",
    "max_results": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("agentx/medium-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keyword": "machine learning",
  "max_results": 1
}' |
apify call agentx/medium-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,agentx/medium-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/csD52ZiLidYzEWjHt/builds/Sgh04heYu80UdpaVX/openapi.json
