Apify MCP: I Gave Claude 5,000 Web Scrapers for Under $0.50

I asked Claude for three coffee shops in Valencia with their ratings and websites. A minute later I had them from Google Maps, and the run cost me under two cents.

I never wrote a scraper. Claude read the request, ran a maintained one on cloud servers, and returned clean data.

That marketplace is Apify, and the Apify MCP server connects it to Claude. One API token turns Claude Code into an agent that can pull real data from Google Maps, search engines, Instagram, or almost any site, using scrapers other people maintain. It reads public data in batches, and won't log in or click.

How the Apify MCP server works

The marketing says 5,000 scrapers, and that number worried me, since five thousand tools would overload the context.

It doesn't work that way. By default the server gives Claude about ten tools. Apify calls each scraper an Actor, and the rest sit in the store until a request goes looking for one.

In my Google Maps test the search returned five candidate Actors. Claude weighed them by user count and rating, then picked the most-used one because it can cap results at the source with maxCrawledPlacesPerSearch. I never told it to weigh cost. It did anyway.

Setup took one line and connected first try.

claude mcp add --transport http apify https://mcp.apify.com/ \
  --header "Authorization: Bearer $APIFY_TOKEN"

# then, in Claude:
# "Scrape Google Maps for 3 coffee shops in Valencia, Spain.
#  Return name, address, rating, and website. Cap it at 3 results."

The Apify MCP run loop, from Claude searching the store to running an Actor on Apify's cloud and reading the dataset back

Lead lists and live web data

I use it for two jobs. The first is lead generation. Ask for coffee shops, dentists, or gyms in a city and Claude hands back a real sales list of names, addresses, phones, and websites, though not emails. A hundred places cost about forty cents on the free tier.

The second is fresh web data. Claude's own knowledge stops at its training cutoff, so I point it at Apify's default RAG Web Browser, which searches Google, reads the top results, and returns clean Markdown.

I asked it for the cheapest hourly price to rent an NVIDIA H100 right now. It found $0.61 an hour on Vast.ai, with on-demand rates near two dollars elsewhere, scraped live for under half a cent. The catch is that the first response came back empty while the dataset was still writing, so Claude fetched again.

Those are the two I use most, but Apify's store covers far more. The same setup can scrape Instagram or TikTok profiles for social research, track prices across online shops, collect Google or Amazon reviews, or gather news for a daily brief. If a site has a scraper in the store, it is one request away.

The cost problem

Then I tried to break it with one lazy prompt. Research this company as thoroughly as you can.

It made twenty-eight tool calls, ran the web browser eleven times, pulled social profiles and funding history, and ran until my timeout stopped it. That request cost seven cents, more than every careful test combined.

That's nothing here, but point the same prompt at an Instagram scraper that charges about 2.70 dollars per thousand results, running unattended in a loop, and the meter climbs fast.

You can price one run, but not the chain. Claude reads exactly what a single run costs from fetch-actor-details before it fires, yet nothing stops it from firing thirty in a row, and it stays quiet about cost unless you ask.

A scoped run stays cheap while a vague prompt runs up the meter, a short SCOPED receipt next to a long RUNAWAY one

When I asked it to log into LinkedIn, it refused, correctly, because Actors are batch jobs, not live sessions.

The verdict

For small, scoped scraping jobs, this beat writing my own scraper. One I build myself breaks every time the site changes. The Actor Claude chose has 500,000 users keeping it working.

I'd use it today, but I wouldn't run it unattended in a loop without a cap, either a per-run result limit like maxCrawledPlacesPerSearch or a spend limit on your account.

Takeaways

  • One token, thousands of scrapers. Claude finds and runs the right Actor from a plain request.
  • Scoped is cheap, vague is not. My careful runs cost cents. One lazy prompt cost more than all of them together.
  • It reads data, it doesn't drive browsers. Ask it to sign into a site and it stops, because Actors run batch jobs, not live sessions.
  • Claude can read what a run will cost before running it, but only if you ask.
  • The RAG Web Browser's first response comes back empty while the dataset writes, so Claude fetches again to read it.