We Killed the Apify Actor. Agents Build Them Now, for Free

· Lewis Tham

Apify's product is a person. Every actor in the Apify Store is a scraper somebody wrote by hand, keeps alive by hand, and charges you for per result. We think that model is finished. Unbrowse gets the same output, a callable API for a website, without anyone writing the scraper: an agent browses the site, compiles the site's own first-party requests into a tool, proves it replays without a browser, and publishes it. During the beta that costs you nothing.

That is what we mean by "killed". Not that Apify went anywhere. That the thing it sells, a hand-built scraper per site, is now something an agent produces as a side effect of using the site once.

What an Apify actor actually is

Credit where it is due. Apify turned scraping into a marketplace. An actor takes inputs, runs a browser or HTTP client on Apify's cloud, and hands back a dataset. The Store is large: on 2026-09-28 its public API listed 67,410 actors. Proxies, scheduling, queues and storage are handled for you, and for a non-developer who needs Amazon listings in a spreadsheet, it works.

But look at where the demand sits. Ranked by 30-day users, the top 100 actors carry 66% of all usage in the Store. Google search, Google Maps, Instagram, Amazon, LinkedIn jobs, YouTube, contact details. The long tail of sixty-thousand-odd actors is mostly noise.

Each of those top actors is code. Somebody reverse-engineered the site, wrote selectors or API calls, handled pagination, wrote a README, and set a price. When the site changes, the actor breaks until that person notices. The Store runs a daily test on every actor for exactly this reason: an actor that fails three days in a row is marked "under maintenance".

So the unit Apify sells is human labour on one site, amortised across buyers. That is the part that no longer needs a human.

How Unbrowse builds the same thing without a person

Unbrowse compiles websites into APIs, and APIs into tools agents call. The loop:

  1. An agent does the task once in Unbrowse's cloud browser (unbrowse.browse.open, act, finish).
  2. finish compiles the first-party requests the page made (the site's own search endpoint, its JSON, its GraphQL) into a capability.
  3. Two sessions with different inputs identify which values are parameters.
  4. Every later call replays over plain HTTP. No browser.

Nobody writes selectors. The site's own frontend already knows how to fetch its data; we record that and keep it.

We also run the loop without a user. unbrowse.index {url} sends Unbrowse's own agent over one site's core read-only capabilities and keeps each one only after a browserless replay proves it. Our registry crawl does the same across the web: it honours robots.txt, refuses sign-in and anything that buys, posts or deletes, and publishes a tool only after a scrubbed copy, with no cookies, answers two probe words plus one word it has never seen, and correctly fails a nonsense query.

That is an actor factory with no workers in it.

What you get: every site is an API and an MCP server

Here is amazon.com, compiled by Unbrowse, as it sits in the public registry right now:

curl https://unbrowse.ai/api/v1/sites/amazon.com

It lists two tools: amazon_com__get_s (Amazon's own search request, parameter k) and amazon_com__read_page (any amazon.com page as title, text and links), both marked browserless. The same site is also an OpenAPI 3.1 document and its own MCP server:

curl https://unbrowse.ai/api/v1/sites/amazon.com/openapi.json
# one operation per tool, POST /api/v1/sites/amazon.com/call/<tool>
claude mcp add --transport http unbrowse https://unbrowse.ai/mcp

From an agent, you do not even need to know the site has been compiled. unbrowse.discover finds the capability for a plain-language task and unbrowse.run calls it. If nothing exists yet, the agent does it in the cloud browser, and that session becomes the tool for the next caller.

Compare the two shapes:

Apify actor Unbrowse site tool
Who builds it A developer, by hand An agent, from one browsing session
What runs on each call The actor's scraper The site's own request, replayed over HTTP
When the site changes Broken until the maintainer fixes it The next browsing session captures the new request
Interface Actor input, dataset output REST, OpenAPI 3.1, MCP, TypeScript SDK
Price Set per actor by its author Free in beta (500 verified calls a month), then $10 per 10,000 verified calls

Metering counts verified successes only. A failed call is not billed.

We tested the "generate actors" idea on Apify first. It earned nothing.

This is the part most posts like this would leave out.

Before Unbrowse worked the way it does now, we tried to beat Apify on its own store by volume. Between May and July 2026 we pushed 501 actors to the Apify Store, 451 of them generated in one batch, one generic actor per domain. None were priced. Almost nobody ran them. Several public ones failed Apify's daily test and were marked under maintenance. We hit the 500-actor account limit and deleted 493 of them on 2026-09-28.

The lesson was sharp: a wrapper per domain is not a product. Buyers want structured fields for the handful of sites they actually need, and they want it to work tomorrow.

So we flipped it. The generation moved into Unbrowse, where it is free and the output is a verified tool rather than a listing. Nobody browses a store to find it; your agent discovers it when it needs it.

Where this does not work yet

We said it would be honest, so here are the gaps.

  • Hard bot walls. Over plain HTTP, Instagram, Reddit, TikTok, Trustpilot, Yelp, and Google Search and Maps still refuse us as of 2026-09-28. Those are some of Apify's biggest actors, backed by heavy proxy infrastructure. Unbrowse does not bypass CAPTCHAs or human verification; a challenge becomes a step handed to the person.
  • IP reputation. Amazon answers some requests and refuses others depending on where they come from. A compiled request is only as good as the IP it leaves from.
  • Not every site compiles. In our 100-site production evaluation on 2026-09-23, warm browserless replay worked on 42 of 100 sites. Client-side and third-party search, rate limits and logins account for most of the misses.
  • Crawling at volume. If you need a whole catalogue walked page by page on a schedule, Apify's queues, schedules and storage do that today, and we do not.
  • Some things stay parked. YouTube transcripts work from our machines but get refused from datacenter IPs.

The strongest counterargument

"Apify has 67,410 actors and years of anti-bot work. You have a registry and a promise."

Fair. But count what those actors are worth. Two-thirds of the demand sits in 100 of them, and the rest mostly do what Unbrowse now does automatically: take a site, find its data, return JSON. For that long tail, a person writing and maintaining a scraper is pure cost, and it is cost passed to you per result. Our public registry health check on 2026-09-26 found 166 of 200 sampled tools answered a fresh input (83%), with zero false successes. That is without a maintainer on any of them.

The top 100 are a different fight, won on proxies and reliability, not on who can write selectors. That is where we are spending our time.

Try it

Add the MCP server, ask your agent for something on a site you care about, and see whether it comes back from the registry or from a browser session that becomes a tool:

claude mcp add --transport http unbrowse https://unbrowse.ai/mcp

Setup and the REST API are in the docs. For the older head-to-head, read Unbrowse vs Apify.

All posts