The Apify MCP server connects an agent to Apify Store, a marketplace of ready-made scrapers and automation programs called Actors. The agent searches the store, reads an Actor's input and price, runs it and reads the results. The server is MIT licensed and hosted at https://mcp.apify.com. Connecting is free, and Actor runs bill to your Apify account. We checked it on 31 October 2026.
Quick facts
| |
|---|
Maintainer | Apify (apify/apify-mcp-server) |
License | MIT |
Language | TypeScript |
Latest release | v0.20.0, 29 Oct 2026 |
Last push we saw | 31 Oct 2026 |
Stars when checked | 13,973 |
Hosted endpoint | https://mcp.apify.com (Streamable HTTP)
|
Local package | @apify/actors-mcp-server, stdio, needs Node.js 22 or later
|
Auth | OAuth, or Authorization: Bearer <APIFY_TOKEN> |
Rate limit | Hosted server accepts up to 20 requests per second per account |
Cost | MCP is free; Actors are billed to your Apify account |
Other listing | Docker MCP catalog |
What it does
Most scraping servers cover one job. Apify's is a front door to a catalog. Apify describes it as "the largest marketplace of tools for AI", and the README lists jobs such as web fetch, SERP monitoring, lead generation and enrichment, and pulling data from e-commerce sites, maps and social media.
An Actor is a serverless program on Apify's platform. One may scrape Google Maps, another crawl a site for retrieval, another collect social posts. The MCP server turns Actors into things an agent can find and call, so you do not install a separate server for each site.
The README describes a four-step flow:
search-actors finds candidates in Apify Store.fetch-actor-details returns the Actor's input schema, README and pricing, and the output schema on request.call-actor starts the run and waits, 30 seconds by default and up to 45. It returns run status and storage IDs, not the scraped items.get-dataset-items reads results from the run's dataset, with limit and offset.
Because call-actor returns before long jobs finish, the server also loads get-actor-run, abort-actor-run, get-dataset-items and get-key-value-store-record whenever it is active, so the agent can check on or stop a run.
You can also expose one Actor as its own tool, for example apify/web-search or apify/instagram-scraper. The server builds the parameters from the Actor's input schema. A third pattern is Actors that are MCP servers themselves, called through fetch-actor-mcp-tool-list and call-actor-mcp-tool.
The tools
The default set loads the actors and docs categories plus two Actor tools, RAG Web Browser and Web Fetch.
Tool | What it does | Default |
|---|
search-actors
| Search Apify Store | Yes |
fetch-actor-details
| Input schema, README, pricing | Yes |
call-actor
| Run an Actor and return status and storage IDs | Yes |
fetch-actor-mcp-tool-list, call-actor-mcp-tool
| Use Actors that run MCP servers | Yes |
search-apify-docs, fetch-apify-docs
| Search and read Apify and Crawlee docs | Yes |
apify--rag-web-browser
| Search the web and return top results' content | Yes |
apify--web-fetch
| Fetch a URL as Markdown, text or HTML | Yes |
get-actor-run, get-dataset-items, get-key-value-store-record, abort-actor-run
| Read and manage runs | Added with call-actor |
report-problem
| Report an issue to Apify | Only with telemetry on and a non-Claude client |
The rest are opt-in by category or name:
Category | Examples |
|---|
Runs and storage | get-actor-run-list, get-actor-run-log, get-dataset, get-dataset-schema, get-key-value-store-keys
|
Tasks | create-actor-task, update-actor-task, publish-actor-task
|
Schedules | create-schedule, update-schedule, delete-schedule
|
Builds and versions | build-actor, create-actor, update-actor-version, delete-actor-version
|
API | apify-api-search, apify-api-details, apify-api-read, apify-api-write
|
Account | get-actor-list, send-server-actor-request, delete-actor
|
That is more than a scraping server needs. It is a way to manage the whole Apify account from an agent, including delete-actor, and apify-api-write, which sends POST, PUT, PATCH or DELETE requests to any Apify API path. Those are off by default, which is the right default.
Pick your tools
The tools parameter takes categories, tool names and Actor names. When you set it, defaults are dropped and only your list loads, plus the run and storage helpers if call-actor or an Actor is included.
https://mcp.apify.com?tools=actors,docs,apify/web-search,apify/web-fetch
For one job, list one Actor:
https://mcp.apify.com?tools=apify/instagram-scraper
The README says plainly: "Pin your tools in production. The default tool set can change between versions."
What it costs
Apify's README separates the two costs. "Connecting to the MCP server is free. Actor runs bill to your Apify account according to each Actor's pricing, which fetch-actor-details shows before a run." The free plan includes $5 of monthly platform usage per the README. The pricing page lists Free ($0), Starter ($19 a month), Scale ($199) and Business ($999) on monthly billing.
To cap a run's price, pass options in callOptions of call-actor:
Option | Applies to | What it limits |
|---|
maxTotalChargeUsd
| Pay-per-event Actors | Total spend on the run |
maxItems
| Pay-per-result Actors | Number of items |
timeout, memory
| All | Duration and memory, not price |
Note the last row. Timeout and memory do not cap cost. Tell your agent to set maxTotalChargeUsd or maxItems on every run, and to read the pricing first.
Search results are filtered. search-actors returns only free and pay-per-event Actors that pass the platform's agent-safety filters, so rental and pay-per-result Actors do not appear in search. Full-permission Actors need your one-time approval.
An experimental route called agentic payments lets an agent pay without an account, through a prepaid, spend-capped token from agi.apify.com, using x402, MPP or Skyfire. The README marks it experimental, and we did not read the terms.
Install it
Hosted, with OAuth
The README's quickstart is to open the configurator at mcp.apify.com, pick your client and tools, copy the config, and sign in to Apify in the browser. The endpoint is https://mcp.apify.com. If your client cannot use OAuth, send an Apify API token as a Bearer header. Treat the token like a password.
Local, with npx
{
"mcpServers": {
"actors-mcp-server": {
"command": "npx",
"args": ["-y", "@apify/actors-mcp-server"],
"env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
}
}
}
If you ran apify login, the server can read the token saved by the Apify CLI. Apify recommends the hosted server. Actors still run and store results on Apify's platform in both modes.
| Hosted | Local |
|---|
Transport | Streamable HTTP | stdio |
Auth | OAuth or Bearer token | APIFY_TOKEN or CLI login
|
Output schemas for Actor results | Yes | No |
Tool selection | tools URL parameter
| --tools flag or TOOLS variable
|
Updates | Always latest | The npm version you install |
Install it in each agent
Apify documents Claude Code, Cursor, Codex, VS Code, ChatGPT and Claude, and its CLI can write config for claude-code, cursor, vscode, codex, kiro and antigravity. Lines marked as ours are adapted from each agent's own docs. See MCP clients.
Claude Code
From the README:
claude mcp add apify "https://mcp.apify.com" -t http
Claude Code opens Apify's sign-in page the first time it uses the server. Apify also offers a plugin that installs the server with Apify agent skills.
Codex
The README says apify mcp install codex writes the configuration, including your token. Our adaptation by hand, in ~/.codex/config.toml:
[mcp_servers.apify]
url = "https://mcp.apify.com"
Then run codex mcp login apify for OAuth. Codex's MCP docs give codex mcp login <server-name> for servers that support OAuth.
Cursor
Use the one-click link from the configurator, or run:
The CLI writes the configuration, including your API token. The generic JSON also works in ~/.cursor/mcp.json:
{
"mcpServers": {
"apify": { "url": "https://mcp.apify.com" }
}
}
Antigravity
The README lists antigravity among the targets for apify mcp install:
apify mcp install antigravity
By hand, our adaptation: in ~/.gemini/config/mcp_config.json under mcpServers, use serverUrl: "https://mcp.apify.com". Antigravity's MCP docs say OAuth works without extra config for servers that support dynamic client registration, and a headers object can carry a Bearer token if sign-in does not complete. Gemini CLI is Code Assist enterprise only now.
OpenCode
OpenCode appears in Apify's configurator diagram. Our adaptation, in opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"apify": {
"type": "remote",
"url": "https://mcp.apify.com",
"headers": { "Authorization": "Bearer {env:APIFY_TOKEN}" }
}
}
}
Telemetry
Telemetry is on by default. With it on, Actor searches send the MCP session ID as _traceId, and tool-call events carry it as trace_id. To opt out, add telemetry-enabled=false to the URL, pass --telemetry-enabled=false locally, or set TELEMETRY_ENABLED=false. That also turns off Sentry reporting, according to the README.
https://mcp.apify.com?telemetry-enabled=false
The report-problem tool is served only when telemetry is on.
Security notes
- Cost is the first risk. A badly written loop can start many paid runs. Use
maxTotalChargeUsd or maxItems, and pin a small tool list. - Actors are third-party code. Anyone can publish to Apify Store. The search filter removes rental and pay-per-result Actors that fail agent-safety checks, but you are still running someone else's program. Prefer Apify-maintained Actors. The server marks
readOnlyHint only for Apify-maintained Actors with limited permissions and no secret inputs. - Full-permission Actors need your approval once. Read what they ask for.
- Account tools.
delete-actor, apify-api-write and version tools can change your account. They are off by default. Leave them off unless you are building Actors. - Scraped content is untrusted. Pages can carry instructions aimed at your agent. Do not let scraped text trigger a write elsewhere.
- Legal use. Scraping has terms of service and legal limits that vary by site and country. The tool does not decide that for you.
- Tokens. If you use a Bearer token, keep it out of repositories.
- Privacy. Requests and Actor inputs go to the Apify API. Apify says it does not share them with third parties beyond what running Actors requires. See its legal documents for retention.
Limits and known issues
call-actor waits at most 45 seconds. Long runs return an ID, and the agent has to poll.- Results stay in the run's dataset until read with
get-dataset-items. - The default tool set can change between versions.
- Client support for dynamic tool lists, OAuth and MCP Apps varies.
- Older settings such as
enableAddingActors were removed and are ignored, and call-actor no longer accepts the actorName:toolName form. If you copied an old config from a blog, check it. - Some tools work without an account, such as
search-actors and search-apify-docs, so you can try discovery first.
Alternatives
Option | Fits when | Notes |
|---|
This server | You want many sites covered and can pay per run | Marketplace model |
Firecrawl MCP | You want clean page content and crawl in one tool | Credit billing |
Fetch MCP | You need to read a known page for free | No rendering |
Browserbase MCP | You need a hosted browser session | Interactive control |
Playwright MCP | You want a local browser | Free, you run it |
Exa MCP and Tavily MCP | You need web search | Search focused |
Example prompts and what to expect
Prompt | Likely flow | Watch for |
|---|
"Find coffee shops in Lisbon with reviews" | Search for a Maps Actor, read its input schema, run it, read the dataset | Cost per place; set maxItems |
"Read this docs page and summarize it" | Web Fetch Actor | Simple, low cost |
"How do I schedule an Actor to run daily?" | search-apify-docs, fetch-apify-docs
| Docs only, no run |
"Run the Instagram scraper on these 3 profiles" | Named Actor tool, then get-dataset-items | Terms of service of the target site |
Expect a few discovery calls before the first result. If you already know which Actor you want, name it in the prompt or pin it in the tools list, and the agent skips the search step.
Our take
Apify is the one to pick when the data you want is on a site that already has a maintained scraper: maps, marketplaces, social profiles. The Actor catalog saves you from writing scrapers, and the price is shown before each run. For a general "read this page" job, a fetch tool or Firecrawl is simpler.
The product is also more powerful than most users need. The default tool list is sensible. We would use the hosted server, pin tools to actors,docs and one or two named Actors, and turn telemetry off if your policy demands it. Teach your agent to set a spend cap on every call.
This is our reading of the documentation, not a hands-on test.
A short setup checklist
- Create an Apify account and note the free plan's monthly usage.
- Open
mcp.apify.com and use the configurator for your client. - Prefer OAuth. Use a Bearer token only when needed.
- Pin the
tools list. - Ask the agent to read
fetch-actor-details pricing before each run. - Require
maxTotalChargeUsd or maxItems. - Decide on telemetry.
- Check run costs in the Apify console after the first task.
See also the MCP server list and best MCP servers.
Frequently asked questions
What does the Apify MCP server do?
It lets an agent find, run and read results from Apify Actors, the scrapers and automation tools in Apify Store.
Is the Apify MCP server free?
Connecting is free and the code is MIT. Actor runs are billed to your Apify account.
How do I stop an agent running up a bill?
Set maxTotalChargeUsd or maxItems in callOptions, and read pricing first.
Should I use the hosted or local server?
Apify recommends hosted with OAuth. Use local for stdio-only clients.
Does it need an Apify account?
For most tools, yes. A few discovery tools work without one.