---
title: Browser automation APIs compared (2026)
slug: browser-automation-apis
url: "https://toolweight.dev/compare/browser-automation-apis"
question: Which hosted browser automation API should I use for AI agents and scraping?
tools: 13
fields: 26
last_verified: 2026-07-01
freshness: 33%
verify_cadence: 30d
license: CC-BY-4.0
---

# Browser automation APIs

> **Which hosted browser automation API should I use for AI agents and scraping?**
>
> Browserbase is the safe default for agent work: broadest SDK coverage, a real live-view takeover, and Stagehand. Bright Data's Browser API wins on hard anti-bot targets because the residential network is the product. Cloudflare Browser Rendering is cheapest for benign screenshotting. Self-host Playwright once your targets stop fighting you.

## At a glance

|  |  |
| --- | --- |
| Canonical | https://toolweight.dev/compare/browser-automation-apis |
| Tools compared | 13 |
| Fields compared | 26 |
| Last verified | 2026-07-01 (22d ago) |
| Verify cadence | 30d |
| Freshness | 33% (mean cell confidence) |
| Killer field | antibot_success |
| Scoring | Weighted, re-rankable |
| Licence | CC-BY-4.0 — https://creativecommons.org/licenses/by/4.0/ |

## Ranking — default weights

| # | Tool | Score | Coverage | One-liner |
| --- | --- | --- | --- | --- |
| 1 | [Anchor Browser](https://toolweight.dev/tools/anchor-browser) | 86.1 | 75% | Cloud browsers built around authenticated sessions and human takeover |
| 2 | [Browserbase](https://toolweight.dev/tools/browserbase) | 85.9 | 96% | Managed headless browsers for AI agents, with Stagehand as the SDK |
| 3 | [Hyperbrowser](https://toolweight.dev/tools/hyperbrowser) | 84.5 | 75% | Agent-first browsers with hosted scrape, crawl and CUA endpoints |
| 4 | [Kernel](https://toolweight.dev/tools/kernel) | 83.8 | 75% | Fast-starting browsers plus a runtime for deploying browser agents |
| 5 | [Airtop](https://toolweight.dev/tools/airtop) | 83.4 | 71% | Natural-language browser API — describe the page, skip the selectors |
| 6 | [Steel.dev](https://toolweight.dev/tools/steel-dev) | 81.4 | 79% | Open-source browser API for AI agents, hosted or self-run |
| 7 | [Browserless](https://toolweight.dev/tools/browserless) | 80.5 | 83% | Self-hostable headless Chrome service; BrowserQL for bot-heavy sites |
| 8 | [Bright Data Browser API](https://toolweight.dev/tools/bright-data-browser-api) | 70.7 | 75% | CDP browsers on a 70M+ residential IP network with challenge handling built in |
| 9 | [Apify](https://toolweight.dev/tools/apify) | 64.6 | 83% | Actor platform for scraping and agents, with Crawlee as the open-source core |
| 10 | [ZenRows](https://toolweight.dev/tools/zenrows) | 61.4 | 71% | Scraper API plus a CDP scraping browser on a shared residential pool |
| 11 | [Self-hosted Playwright](https://toolweight.dev/tools/playwright-self-hosted) | 60.3 | 92% | The baseline: run Chromium in your own container and own everything |
| 12 | [Cloudflare Browser Rendering](https://toolweight.dev/tools/cloudflare-browser-rendering) | 41.1 | 88% | Puppeteer and Playwright bindings for Workers, plus REST render endpoints |
| 13 | [ScrapingBee](https://toolweight.dev/tools/scrapingbee) | 34.4 | 79% | One-call HTML API with JavaScript rendering and premium proxy tiers |

Re-rank against your own priorities by appending `?w=field_id:weight,…` to the canonical URL, or call `score_tools` on the MCP server at `https://toolweight.dev/mcp`.

## Comparison

### Reliability & anti-bot

| Tool | Anti-bot pass rate (%) | Stealth mode | CAPTCHA solving | Residential proxy | Cold start |
| --- | --- | --- | --- | --- | --- |
| Anchor Browser | — | ● | ● | metered-extra | — |
| Browserbase | — | ● | ● | metered-extra | 1 s |
| Hyperbrowser | — | ● | ● | metered-extra | — |
| Kernel | — | ● | ◐ | metered-extra | — |
| Airtop | — | ● | ● | included | — |
| Steel.dev | — | ● | ◐ | metered-extra | — |
| Browserless | — | ● | ● | metered-extra | — |
| Bright Data Browser API | — | ● | ● | included | — |
| Apify | — | ● | ◐ | metered-extra | — |
| ZenRows | — | ● | ● | included | — |
| Self-hosted Playwright | — | ○ | ○ | byo-only | 2 s |
| Cloudflare Browser Rendering | — | ○ | ○ | none | — |
| ScrapingBee | — | ● | ◐ | metered-extra | — |

### Features

| Tool | CDP endpoint | Playwright | Puppeteer | Session persistence | Live view | Session replay | Max concurrency (sessions) | File downloads | Chrome extensions | Browser regions |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Anchor Browser | ● | ● | ● | ● | ● | ● | — | ● | ● | — |
| Browserbase | ● | ● | ● | ● | ● | ● | 50 sessions | ● | ● | us-east, us-west, eu-central, ap-southeast |
| Hyperbrowser | ● | ● | ● | ● | ● | ◐ | — | ● | ● | — |
| Kernel | ● | ● | ● | ● | ● | ● | — | ● | ● | — |
| Airtop | ◐ | ● | ● | ● | ● | ◐ | — | ◐ | — | — |
| Steel.dev | ● | ● | ● | ● | ● | ◐ | — | ● | — | us-east |
| Browserless | ● | ● | ● | ◐ | ● | ◐ | — | ● | ◐ | us-west, eu-west, eu-central |
| Bright Data Browser API | ● | ● | ● | ◐ | ● | ◐ | — | ◐ | — | global |
| Apify | ○ | ● | ● | ◐ | ● | ○ | — | ● | ◐ | us-east, eu-central |
| ZenRows | ● | ● | ● | ◐ | ○ | ○ | — | ◐ | — | global |
| Self-hosted Playwright | ● | ● | ● | ● | ○ | ● | — | ● | ● | self-hosted |
| Cloudflare Browser Rendering | ◐ | ● | ● | ◐ | ○ | ○ | 30 sessions | ◐ | ○ | global-edge |
| ScrapingBee | ○ | ○ | ○ | ○ | ○ | ○ | 100 sessions | ○ | ○ | global |

### Agentic

| Tool | Agent API | MCP server | Human handoff |
| --- | --- | --- | --- |
| Anchor Browser | ◐ | ● | ● |
| Browserbase | ◐ | ● | ◐ |
| Hyperbrowser | ● | ● | ◐ |
| Kernel | ◐ | ● | ◐ |
| Airtop | ● | ● | ● |
| Steel.dev | ◐ | ● | ◐ |
| Browserless | ○ | ● | ● |
| Bright Data Browser API | ○ | ● | ○ |
| Apify | ◐ | ● | ○ |
| ZenRows | ○ | — | ○ |
| Self-hosted Playwright | ○ | ● | ○ |
| Cloudflare Browser Rendering | ○ | ● | ○ |
| ScrapingBee | ○ | — | ○ |

### Pricing

| Tool | Pricing model | Per browser-hour (/browser-hour) | Free tier |
| --- | --- | --- | --- |
| Anchor Browser | per-hour | — | ● |
| Browserbase | per-hour | $0.1 /browser-hour | ● |
| Hyperbrowser | per-hour | — | ● |
| Kernel | per-hour | — | ● |
| Airtop | per-hour | — | ● |
| Steel.dev | per-hour | — | ● |
| Browserless | per-hour | — | ◐ |
| Bright Data Browser API | per-gb | — | ◐ |
| Apify | per-credit | — | ● |
| ZenRows | per-credit | — | ◐ |
| Self-hosted Playwright | infrastructure | $0.03 /browser-hour | ● |
| Cloudflare Browser Rendering | per-hour | $0.09 /browser-hour | ● |
| ScrapingBee | per-credit | — | ◐ |

### Traction

| Tool | GitHub stars | Funding stage | Open-source core |
| --- | --- | --- | --- |
| Anchor Browser | — | seed | ○ |
| Browserbase | 15,000 | series-b | ○ |
| Hyperbrowser | — | seed | ○ |
| Kernel | — | seed | ◐ |
| Airtop | — | seed | ○ |
| Steel.dev | 5,000 | seed | ● |
| Browserless | 10,000 | bootstrapped | ● |
| Bright Data Browser API | — | later-stage | ○ |
| Apify | 17,000 | series-a | ◐ |
| ZenRows | — | seed | ○ |
| Self-hosted Playwright | 73,000 | open-source | ● |
| Cloudflare Browser Rendering | — | public | ○ |
| ScrapingBee | — | bootstrapped | ○ |

### Positioning

| Tool | Positioning | Launched |
| --- | --- | --- |
| Anchor Browser | Cloud browser that keeps your agent logged in | 2024 |
| Browserbase | Browser infrastructure for AI agents and automations | 2024 |
| Hyperbrowser | Browser infrastructure and hosted web agents in one API | 2024 |
| Kernel | Browsers and a runtime for deploying browser agents | 2024 |
| Airtop | Give an AI agent a browser it can use in plain English | 2024 |
| Steel.dev | Open-source browser API purpose-built for AI agents | 2024 |
| Browserless | Headless browser automation you can host yourself | 2018 |
| Bright Data Browser API | A CDP browser sitting on the largest residential proxy network | 2023 |
| Apify | Cloud platform for web scraping and browser automation Actors | 2015 |
| ZenRows | Anti-bot scraping API with a CDP browser attached | 2021 |
| Self-hosted Playwright | The reference point every hosted browser is priced against | 2020 |
| Cloudflare Browser Rendering | Headless Chromium as a Workers binding and REST API | 2023 |
| ScrapingBee | Scraping API that handles proxies and headless browsers for you | 2018 |

## Field registry

| Field | id | Group | Type | Unit | Better | Default weight | Definition |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Anti-bot pass rate | `antibot_success` | reliability | number | % | higher | 10 | Measured share of successful loads across a fixed ten-site anti-bot panel (Cloudflare, Akamai, DataDome, HUMAN, Imperva, Kasada, F5 Shape, reCAPTCHA Enterprise plus two controls): 50 cold attempts per site per provider, default stealth settings, success = named DOM assertion reached within 30s. Not yet run — every cell is unknown by design. |
| Stealth mode | `stealth_mode` | reliability | tristate | — | higher | 8 | Ships fingerprint spoofing and patched automation artefacts as a first-class, documented mode. Yes = on by default or one flag; partial = a thin flag or a plugin you configure yourself; no = stock Chromium. |
| CAPTCHA solving | `captcha_solving` | reliability | tristate | — | higher | 7 | Challenges are solved inside the product without you wiring a third-party solver. Yes = automatic for common challenge types; partial = some types, beta, or extra cost; no = bring your own solver. |
| Residential proxy | `residential_proxy` | reliability | enum | — | higher | 8 | How residential egress is supplied. Included = part of the headline price; metered-extra = available from the vendor but billed per GB on top; byo-only = you attach your own provider; none = datacentre IPs only. |
| Cold start | `cold_start` | reliability | duration | — | lower | 5 | Time from session-create call to a usable CDP connection on an unwarmed pool, as claimed by the vendor. Null where no figure is published — we have not timed these ourselves. |
| CDP endpoint | `cdp_endpoint` | features | tristate | — | higher | 8 | Exposes a raw Chrome DevTools Protocol websocket URL any CDP client can connect to. Yes = documented wss:// URL; partial = only through a vendor SDK, platform binding or restricted subset; no = REST endpoints only. |
| Playwright | `playwright_support` | features | tristate | — | higher | 7 | Documented path to drive the hosted browser from Playwright. Yes = official connect/connectOverCDP example in the vendor's docs; partial = works but undocumented or via a fork; no = unsupported. |
| Puppeteer | `puppeteer_support` | features | tristate | — | higher | 5 | Documented path to drive the hosted browser from Puppeteer, including any vendor fork. Same yes/partial/no ladder as the Playwright column. |
| Session persistence | `session_persistence` | features | tristate | — | higher | 8 | Named profiles or contexts that survive session end and restore cookies, localStorage and auth state on the next run. Yes = first-class API; partial = manual cookie export/import; no = every session is fresh. |
| Live view | `live_view` | features | tristate | — | higher | 7 | An embeddable URL or iframe showing the running browser, with input forwarded so a human can click. Yes = interactive and embeddable; partial = read-only stream or dashboard-only debugger; no = none. |
| Session replay | `session_replay` | features | tristate | — | higher | 6 | Post-hoc recording of a finished session — video, rrweb or trace — retrievable via API or dashboard. Yes = retained and retrievable by default; partial = opt-in, short retention or logs only; no = nothing to replay. |
| Max concurrency | `concurrency_ceiling` | features | number | sessions | higher | 4 | Concurrent browser sessions on the highest self-serve plan, before talking to sales. Null where the vendor publishes no cap, or where concurrency is governed by a RAM quota rather than a session count. |
| File downloads | `file_downloads` | features | tristate | — | higher | 5 | Files a page downloads are captured and retrievable afterwards via API or storage. Yes = documented download API; partial = works but you must stream it out yourself; no = downloads are lost with the container. |
| Chrome extensions | `extension_support` | features | tristate | — | higher | 4 | Load an unpacked or uploaded Chrome extension into a hosted session — the usual path for password managers, ad blockers and wallets. Yes = documented upload; partial = self-host only or restricted; no. |
| Browser regions | `regions` | features | region-list | — | n/a | 3 | Geographies where the browser itself runs, not proxy exit countries. Australia is called out where present, because almost nobody offers it. |
| Agent API | `computer_use_api` | agentic | tristate | — | higher | 7 | A vendor-hosted loop that takes a natural-language goal and drives the browser itself (own agent endpoint, or hosted Claude/OpenAI computer-use). Yes = hosted endpoint; partial = open-source framework or templates you run; no = bring your own loop. |
| MCP server | `mcp_server` | agentic | tristate | — | higher | 5 | First-party Model Context Protocol server published and maintained by the vendor. Yes = official and documented; partial = community-maintained or unofficial; no. |
| Human handoff | `human_handoff` | agentic | tristate | — | higher | 6 | A documented pause-for-human path — hand a person a takeover URL for a login or 2FA prompt, then resume the automation in the same session. Yes = explicit primitive; partial = live view exists but no resume semantics; no. |
| Pricing model | `pricing_model` | pricing | enum | — | n/a | 3 | The unit you are actually billed in. Ranked by how predictable it is for long agent sessions, not by cost — per-hour is easy to forecast, per-GB depends entirely on page weight. |
| Per browser-hour | `price_per_hour` | pricing | currency | /browser-hour | lower | 7 | Effective USD cost of one browser running for one hour on the cheapest paid self-serve plan, including bundled hours. Null where the product is not billed by time and a conversion would be fiction. Excludes proxy bandwidth. |
| Free tier | `free_tier` | pricing | tristate | — | higher | 3 | An ongoing free allowance you can build against without a card. Yes = recurring free usage; partial = one-off trial credit or time-limited trial; no. |
| GitHub stars | `github_stars` | traction | number | — | higher | 2 | Stars on the vendor's flagship public repo — the self-hostable core or the official SDK — as a rough mindshare proxy. Null where the vendor has no significant public repo. Figures are approximate. |
| Funding stage | `funding_stage` | traction | enum | — | higher | 2 | Latest publicly known funding stage, as a survival proxy. Ranked by how likely the product is to still exist in three years, which is why bootstrapped-and-profitable ranks alongside Series B. |
| Open-source core | `open_source_core` | traction | tristate | — | higher | 4 | A self-hostable core under a public licence, so you can leave. Yes = the browser service itself is runnable from source; partial = SDK or container images open, platform closed; no. |
| Positioning | `positioning` | marketing | text | — | n/a | 0 | How the vendor positions itself in one line, paraphrased from its own homepage — useful for spotting which of the three sub-categories a product actually belongs to. |
| Launched | `launch_year` | marketing | number | — | n/a | 0 | Year this specific product became publicly usable, not the year the company was founded. Cloudflare Browser Rendering and Bright Data's Browser API are both much younger than their parents. |

## Presets

| Preset | id | What it optimises for | Weights | Ranked URL |
| --- | --- | --- | --- | --- |
| Best for AI agents | `ai-agents` | Weighted for long-running autonomous sessions: persistence, takeover, agent surfaces. | computer_use_api:9, mcp_server:8, human_handoff:8, session_persistence:9, live_view:8, antibot_success:6, cdp_endpoint:6, extension_support:5, cold_start:5, price_per_hour:3, concurrency_ceiling:3 | https://toolweight.dev/compare/browser-automation-apis?w=computer_use_api:9,mcp_server:8,human_handoff:8,session_persistence:9,live_view:8,antibot_success:6,cdp_endpoint:6,extension_support:5,cold_start:5,price_per_hour:3,concurrency_ceiling:3 |
| Best anti-bot | `anti-bot` | Weighted for reaching protected targets at all; everything else is secondary. | antibot_success:10, stealth_mode:9, residential_proxy:9, captcha_solving:8, regions:4, session_persistence:3, price_per_hour:2 | https://toolweight.dev/compare/browser-automation-apis?w=antibot_success:10,stealth_mode:9,residential_proxy:9,captcha_solving:8,regions:4,session_persistence:3,price_per_hour:2 |
| Cheapest per hour | `cheapest` | Weighted for cost per browser-hour on self-serve plans, with free tiers counted. | price_per_hour:10, free_tier:6, pricing_model:5, concurrency_ceiling:4, cold_start:3, antibot_success:2 | https://toolweight.dev/compare/browser-automation-apis?w=price_per_hour:10,free_tier:6,pricing_model:5,concurrency_ceiling:4,cold_start:3,antibot_success:2 |
| Best debugging | `debugging` | Weighted for seeing what the browser actually did when the run failed at 3am. | live_view:9, session_replay:10, cdp_endpoint:7, playwright_support:6, human_handoff:6, file_downloads:4, cold_start:3 | https://toolweight.dev/compare/browser-automation-apis?w=live_view:9,session_replay:10,cdp_endpoint:7,playwright_support:6,human_handoff:6,file_downloads:4,cold_start:3 |

## Verdict

The category has split into three products that share a name. Agent infrastructure (Browserbase, Steel, Hyperbrowser, Anchor, Kernel, Airtop) sells you a browser with a live view, persistent profiles and an MCP server, priced by the browser-hour. Unblocking infrastructure (Bright Data, ZenRows, ScrapingBee) sells you a residential IP pool with a browser bolted on, priced by the gigabyte or the request. Platform infrastructure (Apify, Cloudflare) sells you somewhere to run code that happens to include Chromium. Buying the wrong one is the most common mistake here: teams pick a per-hour agent host, point it at a DataDome-protected site, and conclude that "browser APIs don't work".

For agents, Browserbase is still the one to beat. Not because the browsers are faster — nobody has shown that they are — but because the surface area is finished: contexts that survive a session, an embeddable live view you can hand a human, extension loading, downloads that land somewhere you can fetch them, and Stagehand as a genuinely useful SDK rather than a demo. Anchor Browser is the sharpest alternative if your agent's real problem is logging in: authenticated profiles and human takeover are the whole pitch rather than a feature row. Airtop goes furthest in the other direction, giving you a natural-language extraction API so you never touch a selector, which is excellent until you need to touch a selector. Kernel and Hyperbrowser are both credible and cheaper-feeling, with less track record.

For unblocking, ignore the agent features entirely and buy IP quality. Bright Data's Browser API is expensive per gigabyte and worth it, because CDP-over-residential-proxy with automatic challenge handling is a genuinely hard thing to operate. ZenRows is the value pick and has closed most of the gap. ScrapingBee is not a browser API at all — it is an HTML endpoint with JavaScript rendering, no CDP, no session — and it is priced and documented honestly as such, which makes it a fine choice for one-shot fetches and a terrible one for multi-step flows.

Two structural things are worth watching. First, MCP servers went from differentiator to table stakes in about nine months; by mid-2026 a vendor without one looks abandoned, and the servers themselves are thin wrappers that tell you nothing about the underlying browser. Second, the pricing units are drifting apart on purpose. Per-hour, per-session, per-request, per-gigabyte and per-credit cannot be compared without knowing your traffic shape, and every vendor picks the unit that flatters it. Run a week of your own workload against two providers before signing anything annual.

The honest position on the numbers: nobody in this category will tell you their real block rate, us included — yet. The success-rate column on this page is empty because we have not run the panel, not because the vendors declined to comment. Everything else here is a checkable capability; treat the anti-bot marketing as unfalsifiable until somebody publishes logs.

## The pricing trap: per-hour looks cheap until the proxy bill lands

A browser-hour at ten cents sounds like nothing. A single agent session that idles while an LLM thinks can burn twenty minutes of wall clock to do ninety seconds of work, so the real unit is not the hour, it is the hour times your model latency. Teams routinely find that the browser costs less than the tokens and more than they budgeted, at the same time.

The bigger surprise is traffic. Every agent-oriented provider prices residential proxy bandwidth separately, usually in the same range Bright Data charges directly, because most of them resell the same pools. A scraping workload that pulls images and fonts can move a gigabyte in an afternoon. Once you are paying for proxy gigabytes anyway, the honest comparison is not "Browserbase versus Bright Data", it is "Browserbase plus proxy gigabytes versus Bright Data all-in", and that comparison is much closer than the sticker prices suggest.

Watch for the concurrency cliff too. Several vendors gate concurrency by plan tier, so the constraint that forces an upgrade is not usage but parallelism — three sessions on the entry plan is fine for development and useless for a crawl. Check the concurrency number before the hourly rate.

## Anti-bot is a moving target and every published number is marketing

Bot detection vendors ship changes weekly. A provider that passes Kasada in March can fail it in April because a signal moved, and neither party will announce it. This is why the success-rate figures on vendor sites — "99% success rate", "unblockable" — are unfalsifiable: no date, no target list, no sample size, no definition of success.

It also means a single number is the wrong shape for the truth. Pass rates vary by detection vendor, by target site's configuration of that vendor, by geography, and by whether the session is cold or reusing cookies. A provider can be excellent against Cloudflare and hopeless against DataDome. Our panel reports per-site rates alongside the headline so you can weight the row that matches your target.

Practical advice while the column is empty: shortlist on capability, then run your own two-week bake-off against your actual targets, log every failure with the challenge type, and re-run it quarterly. Nobody's benchmark, ours included, substitutes for testing against the specific site paying your bills.

## How to actually decide

Start with the target. If it is a site you control, an internal tool, or a documentation crawl, use Cloudflare Browser Rendering or self-hosted Playwright and stop reading — you are buying screenshots and PDFs, not evasion, and the agent features are dead weight.

If it is an authenticated third-party site your agent has to log into and stay logged into, buy persistence and takeover: Anchor Browser or Browserbase, with a human-in-the-loop path for the 2FA prompt that will eventually appear. The failure mode here is not blocking, it is a session dying at 2am and nobody being able to see why, which is why session replay should carry as much weight as pass rate.

If it is a protected commercial site you do not control and never will, buy the network: Bright Data or ZenRows, priced per gigabyte, and design for retries rather than perfection. Do not put an agent framework on top until the fetch layer is reliable.

And if you are unsure, connect over raw CDP with Playwright from day one. That single decision keeps every option on this table open for the price of an environment variable.

## Provenance — every cell, every source

### Anchor Browser {#anchor-browser}

Cloud browsers built around authenticated sessions and human takeover

|  |  |
| --- | --- |
| Site | https://anchorbrowser.io |
| Docs | https://docs.anchorbrowser.io |
| Company | Anchor Browser |
| Founded | 2024 |
| Funding | Seed |
| Open source | No |
| Profile | https://toolweight.dev/tools/anchor-browser |
| Score (default weights) | 86.1 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Anti-bot pass rate | — | Unknown | — | — | Panel not yet run. | #anchor-browser-antibot_success |
| Stealth mode | ● | Vendor-claimed | 2026-07-01 | https://docs.anchorbrowser.io/essentials/stealth | — | #anchor-browser-stealth_mode |
| CAPTCHA solving | ● | Inferred | — | — | — | #anchor-browser-captcha_solving |
| Residential proxy | metered-extra | Inferred | — | — | Proxy egress available from the vendor and billed separately. | #anchor-browser-residential_proxy |
| Cold start | — | Unknown | — | — | — | #anchor-browser-cold_start |
| CDP endpoint | ● | Vendor-claimed | 2026-07-01 | https://docs.anchorbrowser.io | — | #anchor-browser-cdp_endpoint |
| Playwright | ● | Vendor-claimed | 2026-07-01 | https://docs.anchorbrowser.io/integrations/open-source/playwright | — | #anchor-browser-playwright_support |
| Puppeteer | ● | Vendor-claimed | 2026-07-01 | https://docs.anchorbrowser.io/integrations/open-source/puppeteer | — | #anchor-browser-puppeteer_support |
| Session persistence | ● | Vendor-claimed | 2026-07-01 | https://docs.anchorbrowser.io/essentials/managed-authentication | Identity profiles are the core product, not a feature flag. | #anchor-browser-session_persistence |
| Live view | ● | Vendor-claimed | 2026-07-01 | https://docs.anchorbrowser.io/advanced/browser-live-view | — | #anchor-browser-live_view |
| Session replay | ● | Inferred | — | — | — | #anchor-browser-session_replay |
| Max concurrency | — | Unknown | — | — | — | #anchor-browser-concurrency_ceiling |
| File downloads | ● | Inferred | — | — | — | #anchor-browser-file_downloads |
| Chrome extensions | ● | Vendor-claimed | 2026-07-01 | https://docs.anchorbrowser.io/advanced/extensions | Explicitly supports password-manager extensions for agent logins. | #anchor-browser-extension_support |
| Browser regions | — | Unknown | — | — | — | #anchor-browser-regions |
| Agent API | ◐ | Inferred | — | — | Task-style endpoints exist but the browser, not the agent loop, is the product. | #anchor-browser-computer_use_api |
| MCP server | ● | Inferred | — | — | — | #anchor-browser-mcp_server |
| Human handoff | ● | Vendor-claimed | 2026-07-01 | https://docs.anchorbrowser.io/agentic-browser-control/human-in-the-loop | Designed around a human clearing 2FA mid-session and handing control back. | #anchor-browser-human_handoff |
| Pricing model | per-hour | Inferred | — | — | — | #anchor-browser-pricing_model |
| Per browser-hour | — | Unknown | — | — | Advertised rates changed during 2025; left null rather than guessed. | #anchor-browser-price_per_hour |
| Free tier | ● | Inferred | — | — | — | #anchor-browser-free_tier |
| GitHub stars | — | Unknown | — | — | — | #anchor-browser-github_stars |
| Funding stage | seed | Community-reported | — | — | — | #anchor-browser-funding_stage |
| Open-source core | ○ | Inferred | — | — | — | #anchor-browser-open_source_core |
| Positioning | Cloud browser that keeps your agent logged in | Inferred | — | — | — | #anchor-browser-positioning |
| Launched | 2024 | Inferred | — | — | — | #anchor-browser-launch_year |

**Verdict.** The best answer if your agent's blocker is a login wall rather than a bot wall. Profiles, extension support and a takeover flow designed for 2FA make it the least painful place to run authenticated automation. Thinner than Browserbase everywhere else, and small enough that vendor risk is real.

**Pick it when**

- Agents operating inside authenticated SaaS dashboards
- Workflows that hit 2FA and need a human for ten seconds
- Running password-manager extensions inside a hosted browser

### Browserbase {#browserbase}

Managed headless browsers for AI agents, with Stagehand as the SDK

|  |  |
| --- | --- |
| Site | https://www.browserbase.com |
| Docs | https://docs.browserbase.com |
| Repo | https://github.com/browserbase/stagehand |
| Company | Browserbase, Inc. |
| Founded | 2024 |
| Funding | Series B |
| Open source | No |
| Profile | https://toolweight.dev/tools/browserbase |
| Score (default weights) | 85.9 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Anti-bot pass rate | — | Unknown | — | — | Panel not yet run. | #browserbase-antibot_success |
| Stealth mode | ● | Vendor-claimed | 2026-07-01 | https://docs.browserbase.com/features/stealth-mode | — | #browserbase-stealth_mode |
| CAPTCHA solving | ● | Vendor-claimed | 2026-07-01 | https://docs.browserbase.com/features/stealth-mode | Automatic solving on advanced stealth; solve events surface in the session log. | #browserbase-captcha_solving |
| Residential proxy | metered-extra | Inferred | — | — | Vendor-managed residential egress billed per GB on top of browser-hours. | #browserbase-residential_proxy |
| Cold start | 1 s | Inferred | — | — | Vendor markets sub-second starts; not independently timed. | #browserbase-cold_start |
| CDP endpoint | ● | Vendor-claimed | 2026-07-01 | https://docs.browserbase.com/introduction | — | #browserbase-cdp_endpoint |
| Playwright | ● | Vendor-claimed | 2026-07-01 | https://docs.browserbase.com/welcome/quickstarts/playwright | — | #browserbase-playwright_support |
| Puppeteer | ● | Vendor-claimed | 2026-07-01 | https://docs.browserbase.com/welcome/quickstarts/puppeteer | — | #browserbase-puppeteer_support |
| Session persistence | ● | Vendor-claimed | 2026-07-01 | https://docs.browserbase.com/features/contexts | Contexts persist cookies and localStorage across sessions. | #browserbase-session_persistence |
| Live view | ● | Vendor-claimed | 2026-07-01 | https://docs.browserbase.com/platform/browser/observability/session-live-view | — | #browserbase-live_view |
| Session replay | ● | Vendor-claimed | 2026-07-01 | https://docs.browserbase.com/platform/browser/observability/session-replay | — | #browserbase-session_replay |
| Max concurrency | 50 sessions | Inferred | — | — | Approximate ceiling on the top self-serve tier; enterprise is higher. | #browserbase-concurrency_ceiling |
| File downloads | ● | Vendor-claimed | 2026-07-01 | https://docs.browserbase.com/platform/browser/files/downloads | — | #browserbase-file_downloads |
| Chrome extensions | ● | Vendor-claimed | 2026-07-01 | https://docs.browserbase.com/platform/browser/core-features/browser-extensions | — | #browserbase-extension_support |
| Browser regions | us-east, us-west, eu-central, ap-southeast | Inferred | — | — | No Australian region; ap-southeast is Singapore. | #browserbase-regions |
| Agent API | ◐ | Inferred | — | — | Stagehand and Director are the agent layer; Stagehand runs in your process, not theirs. | #browserbase-computer_use_api |
| MCP server | ● | Vendor-claimed | 2026-07-01 | https://docs.browserbase.com/integrations/mcp/introduction | — | #browserbase-mcp_server |
| Human handoff | ◐ | Inferred | — | — | Live view supports takeover, but there is no formal pause/resume primitive. | #browserbase-human_handoff |
| Pricing model | per-hour | Inferred | — | — | — | #browserbase-pricing_model |
| Per browser-hour | $0.1 /browser-hour | Inferred | — | — | Approximate blended rate on paid self-serve plans with bundled hours; excludes proxy GB. | #browserbase-price_per_hour |
| Free tier | ● | Vendor-claimed | 2026-07-01 | https://www.browserbase.com/pricing | — | #browserbase-free_tier |
| GitHub stars | 15,000 | Inferred | — | — | Stagehand repo, rounded. | #browserbase-github_stars |
| Funding stage | series-b | Community-reported | — | — | US$40M round reported mid-2025. | #browserbase-funding_stage |
| Open-source core | ○ | Inferred | — | — | Stagehand is open source; the browser infrastructure is not. | #browserbase-open_source_core |
| Positioning | Browser infrastructure for AI agents and automations | Inferred | — | — | — | #browserbase-positioning |
| Launched | 2024 | Inferred | — | — | — | #browserbase-launch_year |

**Verdict.** The most complete developer surface in the category and the one to beat for agent work — contexts, live view, extensions and downloads all exist and all work. You pay a premium for that, and you still buy proxy bandwidth separately, so it is not the cheap option for scraping.

**Pick it when**

- Agents that need to stay logged in across runs
- Teams that want Stagehand's act/extract without losing raw Playwright
- Anyone who will need a human to take over a stuck session

### Hyperbrowser {#hyperbrowser}

Agent-first browsers with hosted scrape, crawl and CUA endpoints

|  |  |
| --- | --- |
| Site | https://www.hyperbrowser.ai |
| Docs | https://docs.hyperbrowser.ai |
| Company | Hyperbrowser |
| Founded | 2024 |
| Funding | Seed |
| Open source | No |
| Profile | https://toolweight.dev/tools/hyperbrowser |
| Score (default weights) | 84.5 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Anti-bot pass rate | — | Unknown | — | — | Panel not yet run. | #hyperbrowser-antibot_success |
| Stealth mode | ● | Vendor-claimed | 2026-07-01 | https://docs.hyperbrowser.ai | — | #hyperbrowser-stealth_mode |
| CAPTCHA solving | ● | Vendor-claimed | 2026-07-01 | https://hyperbrowser.ai/docs/sessions/captcha-solving | — | #hyperbrowser-captcha_solving |
| Residential proxy | metered-extra | Inferred | — | — | — | #hyperbrowser-residential_proxy |
| Cold start | — | Unknown | — | — | — | #hyperbrowser-cold_start |
| CDP endpoint | ● | Vendor-claimed | 2026-07-01 | https://hyperbrowser.ai/docs/sessions/create | — | #hyperbrowser-cdp_endpoint |
| Playwright | ● | Vendor-claimed | 2026-07-01 | https://hyperbrowser.ai/docs/sessions/playwright | — | #hyperbrowser-playwright_support |
| Puppeteer | ● | Vendor-claimed | 2026-07-01 | https://hyperbrowser.ai/docs/sessions/puppeteer | — | #hyperbrowser-puppeteer_support |
| Session persistence | ● | Vendor-claimed | 2026-07-01 | https://hyperbrowser.ai/docs/sessions/profiles | Named profiles carry auth state between sessions. | #hyperbrowser-session_persistence |
| Live view | ● | Vendor-claimed | 2026-07-01 | https://hyperbrowser.ai/docs/sessions/live-view | — | #hyperbrowser-live_view |
| Session replay | ◐ | Inferred | — | — | — | #hyperbrowser-session_replay |
| Max concurrency | — | Unknown | — | — | — | #hyperbrowser-concurrency_ceiling |
| File downloads | ● | Inferred | — | — | — | #hyperbrowser-file_downloads |
| Chrome extensions | ● | Inferred | — | — | — | #hyperbrowser-extension_support |
| Browser regions | — | Unknown | — | — | — | #hyperbrowser-regions |
| Agent API | ● | Vendor-claimed | 2026-07-01 | https://hyperbrowser.ai/docs/agents/overview | Hosted agent endpoints wrapping browser-use and frontier computer-use models. | #hyperbrowser-computer_use_api |
| MCP server | ● | Vendor-claimed | 2026-07-01 | https://github.com/hyperbrowserai/mcp | — | #hyperbrowser-mcp_server |
| Human handoff | ◐ | Inferred | — | — | — | #hyperbrowser-human_handoff |
| Pricing model | per-hour | Inferred | — | — | — | #hyperbrowser-pricing_model |
| Per browser-hour | — | Unknown | — | — | Plans bundle hours, credits and agent calls; a single hourly figure would be invented. | #hyperbrowser-price_per_hour |
| Free tier | ● | Inferred | — | — | — | #hyperbrowser-free_tier |
| GitHub stars | — | Unknown | — | — | SDKs only; no flagship repo. | #hyperbrowser-github_stars |
| Funding stage | seed | Community-reported | — | — | YC-backed. | #hyperbrowser-funding_stage |
| Open-source core | ○ | Inferred | — | — | — | #hyperbrowser-open_source_core |
| Positioning | Browser infrastructure and hosted web agents in one API | Inferred | — | — | — | #hyperbrowser-positioning |
| Launched | 2024 | Inferred | — | — | — | #hyperbrowser-launch_year |

**Verdict.** Does more per API call than anyone else here — sessions, scrape, crawl, extract and hosted agent loops behind one key — which is exactly right for a small team shipping fast and exactly wrong if you want a stable primitive. Young enough that the docs are the changelog.

**Pick it when**

- Shipping an agent this week without wiring five services
- Mixed workloads that need both crawling and interactive sessions
- Trying hosted computer-use loops before building your own

### Kernel {#kernel}

Fast-starting browsers plus a runtime for deploying browser agents

|  |  |
| --- | --- |
| Site | https://www.onkernel.com |
| Docs | https://docs.onkernel.com |
| Repo | https://github.com/onkernel/kernel-images |
| Company | Kernel (onkernel.com) |
| Founded | 2024 |
| Funding | Seed |
| Open source | Yes (Apache-2.0) |
| Profile | https://toolweight.dev/tools/kernel |
| Score (default weights) | 83.8 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Anti-bot pass rate | — | Unknown | — | — | Panel not yet run. | #kernel-antibot_success |
| Stealth mode | ● | Vendor-claimed | 2026-07-01 | https://kernel.sh/docs/browsers/bot-detection/stealth | — | #kernel-stealth_mode |
| CAPTCHA solving | ◐ | Inferred | — | — | — | #kernel-captcha_solving |
| Residential proxy | metered-extra | Inferred | — | — | — | #kernel-residential_proxy |
| Cold start | — | Unknown | — | — | Vendor claims very fast starts but publishes no figure we would repeat. | #kernel-cold_start |
| CDP endpoint | ● | Vendor-claimed | 2026-07-01 | https://docs.onkernel.com | — | #kernel-cdp_endpoint |
| Playwright | ● | Vendor-claimed | 2026-07-01 | https://kernel.sh/docs/introduction/control | — | #kernel-playwright_support |
| Puppeteer | ● | Vendor-claimed | 2026-07-01 | https://kernel.sh/docs/introduction/control | — | #kernel-puppeteer_support |
| Session persistence | ● | Vendor-claimed | 2026-07-01 | https://kernel.sh/docs/auth/profiles | — | #kernel-session_persistence |
| Live view | ● | Vendor-claimed | 2026-07-01 | https://kernel.sh/docs/browsers/live-view | — | #kernel-live_view |
| Session replay | ● | Vendor-claimed | 2026-07-01 | https://kernel.sh/docs/browsers/replays | Replays are a headline feature rather than an afterthought. | #kernel-session_replay |
| Max concurrency | — | Unknown | — | — | — | #kernel-concurrency_ceiling |
| File downloads | ● | Inferred | — | — | — | #kernel-file_downloads |
| Chrome extensions | ● | Inferred | — | — | — | #kernel-extension_support |
| Browser regions | — | Unknown | — | — | — | #kernel-regions |
| Agent API | ◐ | Inferred | — | — | You deploy your agent onto Kernel rather than calling a hosted agent endpoint. | #kernel-computer_use_api |
| MCP server | ● | Inferred | — | — | — | #kernel-mcp_server |
| Human handoff | ◐ | Inferred | — | — | — | #kernel-human_handoff |
| Pricing model | per-hour | Inferred | — | — | — | #kernel-pricing_model |
| Per browser-hour | — | Unknown | — | — | — | #kernel-price_per_hour |
| Free tier | ● | Inferred | — | — | — | #kernel-free_tier |
| GitHub stars | — | Unknown | — | — | kernel-images is public but small; no reliable count. | #kernel-github_stars |
| Funding stage | seed | Community-reported | — | — | — | #kernel-funding_stage |
| Open-source core | ◐ | Inferred | — | — | Browser container images are open; the orchestration platform is not. | #kernel-open_source_core |
| Positioning | Browsers and a runtime for deploying browser agents | Inferred | — | — | — | #kernel-positioning |
| Launched | 2024 | Inferred | — | — | — | #kernel-launch_year |

**Verdict.** Interesting because it collapses the network hop: your agent runs next to the browser instead of driving it over the internet, which removes a whole class of latency and timeout bugs. The trade is that you adopt their deployment model, so it is a bigger commitment than a connection string.

**Pick it when**

- Latency-sensitive agent loops with chatty CDP traffic
- Teams happy to deploy agent code onto the vendor's runtime
- Debugging-heavy workloads that lean on replays

### Airtop {#airtop}

Natural-language browser API — describe the page, skip the selectors

|  |  |
| --- | --- |
| Site | https://www.airtop.ai |
| Docs | https://docs.airtop.ai |
| Company | Airtop |
| Founded | 2024 |
| Funding | Seed |
| Open source | No |
| Profile | https://toolweight.dev/tools/airtop |
| Score (default weights) | 83.4 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Anti-bot pass rate | — | Unknown | — | — | Panel not yet run. | #airtop-antibot_success |
| Stealth mode | ● | Inferred | 2026-07-01 | — | — | #airtop-stealth_mode |
| CAPTCHA solving | ● | Vendor-claimed | 2026-07-01 | https://docs.airtop.ai/guides/how-to/solving-captchas | — | #airtop-captcha_solving |
| Residential proxy | included | Inferred | — | — | Proxy egress is bundled into session pricing rather than sold by the GB. | #airtop-residential_proxy |
| Cold start | — | Unknown | — | — | — | #airtop-cold_start |
| CDP endpoint | ◐ | Inferred | — | — | Playwright/Puppeteer attachment is documented, but the natural-language API is the intended interface. | #airtop-cdp_endpoint |
| Playwright | ● | Vendor-claimed | 2026-07-01 | https://docs.airtop.ai/guides/how-to/automation-frameworks/playwright | — | #airtop-playwright_support |
| Puppeteer | ● | Inferred | — | — | — | #airtop-puppeteer_support |
| Session persistence | ● | Vendor-claimed | 2026-07-01 | https://docs.airtop.ai/guides/how-to/saving-a-profile | — | #airtop-session_persistence |
| Live view | ● | Vendor-claimed | 2026-07-01 | https://docs.airtop.ai/guides/how-to/creating-a-live-view | — | #airtop-live_view |
| Session replay | ◐ | Inferred | — | — | — | #airtop-session_replay |
| Max concurrency | — | Unknown | — | — | — | #airtop-concurrency_ceiling |
| File downloads | ◐ | Inferred | — | — | — | #airtop-file_downloads |
| Chrome extensions | — | Unknown | — | — | — | #airtop-extension_support |
| Browser regions | — | Unknown | — | — | — | #airtop-regions |
| Agent API | ● | Vendor-claimed | 2026-07-01 | https://docs.airtop.ai/guides/how-to/ai/page-interactions | Page-query and act calls are the primary API; you describe intent, not selectors. | #airtop-computer_use_api |
| MCP server | ● | Inferred | — | — | — | #airtop-mcp_server |
| Human handoff | ● | Inferred | 2026-07-01 | — | Live view is explicitly positioned for human sign-in during a run. | #airtop-human_handoff |
| Pricing model | per-hour | Inferred | — | — | Metered per browser-minute in practice. | #airtop-pricing_model |
| Per browser-hour | — | Unknown | — | — | — | #airtop-price_per_hour |
| Free tier | ● | Inferred | — | — | — | #airtop-free_tier |
| GitHub stars | — | Unknown | — | — | — | #airtop-github_stars |
| Funding stage | seed | Community-reported | — | — | — | #airtop-funding_stage |
| Open-source core | ○ | Inferred | — | — | — | #airtop-open_source_core |
| Positioning | Give an AI agent a browser it can use in plain English | Inferred | — | — | — | #airtop-positioning |
| Launched | 2024 | Inferred | — | — | — | #airtop-launch_year |

**Verdict.** The highest-level abstraction here: ask a window a question, get structured data, never write a selector. That is a real productivity gain on messy sites and a real lock-in, because none of it ports. Best treated as an extraction service you can drop into rather than the foundation of your automation layer.

**Pick it when**

- Extraction from sites whose DOM changes constantly
- Teams without Playwright expertise
- Authenticated research and monitoring workflows

### Steel.dev {#steel-dev}

Open-source browser API for AI agents, hosted or self-run

|  |  |
| --- | --- |
| Site | https://steel.dev |
| Docs | https://docs.steel.dev |
| Repo | https://github.com/steel-dev/steel-browser |
| Company | Steel.dev |
| Founded | 2024 |
| Funding | Seed |
| Open source | Yes (Apache-2.0) |
| Profile | https://toolweight.dev/tools/steel-dev |
| Score (default weights) | 81.4 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Anti-bot pass rate | — | Unknown | — | — | Panel not yet run. | #steel-dev-antibot_success |
| Stealth mode | ● | Vendor-claimed | 2026-07-01 | https://docs.steel.dev | — | #steel-dev-stealth_mode |
| CAPTCHA solving | ◐ | Inferred | — | — | Auto-solving offered on hosted sessions; less mature than the unblocking specialists. | #steel-dev-captcha_solving |
| Residential proxy | metered-extra | Inferred | — | — | — | #steel-dev-residential_proxy |
| Cold start | — | Unknown | — | — | — | #steel-dev-cold_start |
| CDP endpoint | ● | Vendor-claimed | 2026-07-01 | https://docs.steel.dev | — | #steel-dev-cdp_endpoint |
| Playwright | ● | Vendor-claimed | 2026-07-01 | https://docs.steel.dev/integrations/playwright | — | #steel-dev-playwright_support |
| Puppeteer | ● | Vendor-claimed | 2026-07-01 | https://docs.steel.dev/integrations/puppeteer | — | #steel-dev-puppeteer_support |
| Session persistence | ● | Vendor-claimed | 2026-07-01 | https://docs.steel.dev/overview/profiles-api/overview | — | #steel-dev-session_persistence |
| Live view | ● | Vendor-claimed | 2026-07-01 | https://docs.steel.dev/overview/sessions-api/embed-sessions/live-sessions | — | #steel-dev-live_view |
| Session replay | ◐ | Inferred | — | — | Session viewer covers live and recent sessions; long retention is unclear. | #steel-dev-session_replay |
| Max concurrency | — | Unknown | — | — | — | #steel-dev-concurrency_ceiling |
| File downloads | ● | Inferred | — | — | — | #steel-dev-file_downloads |
| Chrome extensions | — | Unknown | — | — | — | #steel-dev-extension_support |
| Browser regions | us-east | Inferred | — | — | Hosted service is US-centric; self-host anywhere. | #steel-dev-regions |
| Agent API | ◐ | Inferred | — | — | Cookbook integrations with browser-use and CUA loops, not a hosted agent endpoint. | #steel-dev-computer_use_api |
| MCP server | ● | Inferred | — | — | — | #steel-dev-mcp_server |
| Human handoff | ◐ | Inferred | — | — | Session viewer allows interaction; no documented pause/resume contract. | #steel-dev-human_handoff |
| Pricing model | per-hour | Inferred | — | — | — | #steel-dev-pricing_model |
| Per browser-hour | — | Unknown | — | — | Plan structure changed during 2025; not confident enough to publish a rate. | #steel-dev-price_per_hour |
| Free tier | ● | Inferred | — | — | — | #steel-dev-free_tier |
| GitHub stars | 5,000 | Inferred | — | — | steel-browser repo, rounded. | #steel-dev-github_stars |
| Funding stage | seed | Community-reported | — | — | — | #steel-dev-funding_stage |
| Open-source core | ● | Vendor-claimed | 2026-07-01 | https://github.com/steel-dev/steel-browser | Apache-2.0; the hosted service is the same core plus scaling. | #steel-dev-open_source_core |
| Positioning | Open-source browser API purpose-built for AI agents | Inferred | — | — | — | #steel-dev-positioning |
| Launched | 2024 | Inferred | — | — | — | #steel-dev-launch_year |

**Verdict.** The only option that removes vendor risk entirely — if the company disappears, the Apache-2.0 image keeps running. The hosted product is thinner than Browserbase on polish and the anti-bot stack is less battle-tested, but for agent work on cooperative sites the trade is a good one.

**Pick it when**

- Teams with a hard self-host requirement
- Prototyping agents you may later run on your own hardware
- Avoiding lock-in without writing your own session manager

### Browserless {#browserless}

Self-hostable headless Chrome service; BrowserQL for bot-heavy sites

|  |  |
| --- | --- |
| Site | https://www.browserless.io |
| Docs | https://docs.browserless.io |
| Repo | https://github.com/browserless/browserless |
| Company | Browserless |
| Founded | 2018 |
| Open source | Yes |
| Profile | https://toolweight.dev/tools/browserless |
| Score (default weights) | 80.5 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Anti-bot pass rate | — | Unknown | — | — | Panel not yet run. | #browserless-antibot_success |
| Stealth mode | ● | Vendor-claimed | 2026-07-01 | https://docs.browserless.io/browserql/start | BrowserQL is the stealth-first API; the classic REST endpoints are weaker. | #browserless-stealth_mode |
| CAPTCHA solving | ● | Vendor-claimed | 2026-07-01 | https://docs.browserless.io/browserql/bot-detection/solving-captchas | Verify/solve mutations in BrowserQL. | #browserless-captcha_solving |
| Residential proxy | metered-extra | Inferred | — | — | — | #browserless-residential_proxy |
| Cold start | — | Unknown | — | — | — | #browserless-cold_start |
| CDP endpoint | ● | Vendor-claimed | 2026-07-01 | https://docs.browserless.io | — | #browserless-cdp_endpoint |
| Playwright | ● | Vendor-claimed | 2026-07-01 | https://docs.browserless.io/examples/playwright-connection | — | #browserless-playwright_support |
| Puppeteer | ● | Vendor-claimed | 2026-07-01 | https://docs.browserless.io/examples/puppeteer-connection | — | #browserless-puppeteer_support |
| Session persistence | ◐ | Inferred | — | — | Reconnect and keep-alive hold a session open; durable named profiles are a self-host concern. | #browserless-session_persistence |
| Live view | ● | Inferred | — | — | BrowserQL exposes a live URL you can embed for takeover. | #browserless-live_view |
| Session replay | ◐ | Inferred | — | — | Recording is possible via the function API rather than retained automatically. | #browserless-session_replay |
| Max concurrency | — | Unknown | — | — | — | #browserless-concurrency_ceiling |
| File downloads | ● | Vendor-claimed | 2026-07-01 | https://docs.browserless.io/baas/features/file-transfers | — | #browserless-file_downloads |
| Chrome extensions | ◐ | Inferred | — | — | Straightforward when self-hosting; constrained on the shared cloud. | #browserless-extension_support |
| Browser regions | us-west, eu-west, eu-central | Inferred | — | — | San Francisco, London and Amsterdam production regions; no AU. | #browserless-regions |
| Agent API | ○ | Inferred | — | — | — | #browserless-computer_use_api |
| MCP server | ● | Inferred | — | — | Vendor MCP server exists; confirm the package before relying on it. | #browserless-mcp_server |
| Human handoff | ● | Inferred | — | — | Live URL hands control to a person mid-script and returns it. | #browserless-human_handoff |
| Pricing model | per-hour | Inferred | — | — | Billed in short time units rather than whole hours. | #browserless-pricing_model |
| Per browser-hour | — | Unknown | — | — | Unit-based pricing varies enough by plan that a single hourly figure would mislead. | #browserless-price_per_hour |
| Free tier | ◐ | Inferred | — | — | Time-limited trial rather than an ongoing free allowance. | #browserless-free_tier |
| GitHub stars | 10,000 | Inferred | — | — | Rounded. | #browserless-github_stars |
| Funding stage | bootstrapped | Inferred | — | — | No publicly reported venture round. | #browserless-funding_stage |
| Open-source core | ● | Vendor-claimed | 2026-07-01 | https://github.com/browserless/browserless | Docker image is the same service the cloud runs; check the current licence terms before commercial self-hosting. | #browserless-open_source_core |
| Positioning | Headless browser automation you can host yourself | Inferred | — | — | — | #browserless-positioning |
| Launched | 2018 | Inferred | — | — | — | #browserless-launch_year |

**Verdict.** The pragmatic choice when you want the option to bring everything in-house later: the cloud and the container speak the same protocol. BrowserQL is a genuinely different product bolted alongside the classic API, and the two have diverging capabilities, which makes the docs harder work than they should be.

**Pick it when**

- Teams that expect to self-host eventually
- Screenshot and PDF pipelines at steady volume
- Declarative unblocking without adopting an agent framework

### Bright Data Browser API {#bright-data-browser-api}

CDP browsers on a 70M+ residential IP network with challenge handling built in

|  |  |
| --- | --- |
| Site | https://brightdata.com/products/scraping-browser |
| Docs | https://docs.brightdata.com/scraping-automation/scraping-browser/introduction |
| Company | Bright Data |
| Founded | 2014 |
| Open source | No |
| Profile | https://toolweight.dev/tools/bright-data-browser-api |
| Score (default weights) | 70.7 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Anti-bot pass rate | — | Unknown | — | — | Panel not yet run. | #bright-data-browser-api-antibot_success |
| Stealth mode | ● | Vendor-claimed | 2026-07-01 | https://docs.brightdata.com/scraping-automation/scraping-browser/introduction | Fingerprint rotation and challenge handling are server-side and not configurable. | #bright-data-browser-api-stealth_mode |
| CAPTCHA solving | ● | Vendor-claimed | 2026-07-01 | https://docs.brightdata.com/scraping-automation/scraping-browser/features/captcha-solver | — | #bright-data-browser-api-captcha_solving |
| Residential proxy | included | Inferred | 2026-07-01 | — | Bundled into the per-GB price rather than free — the network is what you are buying. | #bright-data-browser-api-residential_proxy |
| Cold start | — | Unknown | — | — | — | #bright-data-browser-api-cold_start |
| CDP endpoint | ● | Vendor-claimed | 2026-07-01 | https://docs.brightdata.com/scraping-automation/scraping-browser/introduction | — | #bright-data-browser-api-cdp_endpoint |
| Playwright | ● | Vendor-claimed | 2026-07-01 | https://docs.brightdata.com/scraping-automation/scraping-browser/code-examples | — | #bright-data-browser-api-playwright_support |
| Puppeteer | ● | Vendor-claimed | 2026-07-01 | https://docs.brightdata.com/scraping-automation/scraping-browser/code-examples | — | #bright-data-browser-api-puppeteer_support |
| Session persistence | ◐ | Inferred | — | — | Sticky sessions exist for proxy continuity; there is no durable profile store. | #bright-data-browser-api-session_persistence |
| Live view | ● | Inferred | — | — | Debugger shows the live session and attaches DevTools. | #bright-data-browser-api-live_view |
| Session replay | ◐ | Inferred | — | — | Session logs rather than video. | #bright-data-browser-api-session_replay |
| Max concurrency | — | Unknown | — | — | No published session cap; you are limited by spend. | #bright-data-browser-api-concurrency_ceiling |
| File downloads | ◐ | Inferred | — | — | — | #bright-data-browser-api-file_downloads |
| Chrome extensions | — | Unknown | — | — | — | #bright-data-browser-api-extension_support |
| Browser regions | global | Inferred | — | — | Exit geography is selectable across most countries including Australia; browser location is not exposed. | #bright-data-browser-api-regions |
| Agent API | ○ | Inferred | — | — | — | #bright-data-browser-api-computer_use_api |
| MCP server | ● | Vendor-claimed | 2026-07-01 | https://github.com/brightdata/brightdata-mcp | — | #bright-data-browser-api-mcp_server |
| Human handoff | ○ | Inferred | — | — | — | #bright-data-browser-api-human_handoff |
| Pricing model | per-gb | Inferred | 2026-07-01 | — | — | #bright-data-browser-api-pricing_model |
| Per browser-hour | — | Unknown | — | — | Billed per GB of traffic; an hourly equivalent depends entirely on page weight, so we do not convert. | #bright-data-browser-api-price_per_hour |
| Free tier | ◐ | Inferred | — | — | Trial credit, not an ongoing allowance. | #bright-data-browser-api-free_tier |
| GitHub stars | — | Unknown | — | — | — | #bright-data-browser-api-github_stars |
| Funding stage | later-stage | Inferred | — | — | Private-equity owned; not venture-staged. | #bright-data-browser-api-funding_stage |
| Open-source core | ○ | Inferred | — | — | — | #bright-data-browser-api-open_source_core |
| Positioning | A CDP browser sitting on the largest residential proxy network | Inferred | — | — | — | #bright-data-browser-api-positioning |
| Launched | 2023 | Inferred | — | — | — | #bright-data-browser-api-launch_year |

**Verdict.** When the target genuinely fights back, this is the one that keeps working, because IP quality beats fingerprint patching and Bright Data owns the IPs. The developer experience is comparatively bare and the per-GB bill punishes image-heavy pages, so block resources aggressively and do not use it as a general agent host.

**Pick it when**

- Hard commercial targets behind enterprise bot management
- Country-specific access including Australian exits
- Scraping teams that already buy proxy bandwidth

### Apify {#apify}

Actor platform for scraping and agents, with Crawlee as the open-source core

|  |  |
| --- | --- |
| Site | https://apify.com |
| Docs | https://docs.apify.com |
| Repo | https://github.com/apify/crawlee |
| Company | Apify Technologies |
| Founded | 2015 |
| Funding | Series A |
| Open source | Yes (Apache-2.0) |
| Profile | https://toolweight.dev/tools/apify |
| Score (default weights) | 64.6 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Anti-bot pass rate | — | Unknown | — | — | Panel not yet run. | #apify-antibot_success |
| Stealth mode | ● | Vendor-claimed | 2026-07-01 | https://docs.apify.com | Crawlee's fingerprint suite and session pool, plus stealth-oriented Actors. | #apify-stealth_mode |
| CAPTCHA solving | ◐ | Inferred | — | — | Community Actors and third-party integrations rather than a platform primitive. | #apify-captcha_solving |
| Residential proxy | metered-extra | Vendor-claimed | 2026-07-01 | https://docs.apify.com/proxy/residential-proxy | Apify Proxy residential tier billed per GB. | #apify-residential_proxy |
| Cold start | — | Unknown | — | — | — | #apify-cold_start |
| CDP endpoint | ○ | Inferred | — | — | You deploy code that runs browsers inside Actors; there is no external CDP URL to attach to. | #apify-cdp_endpoint |
| Playwright | ● | Vendor-claimed | 2026-07-01 | https://docs.apify.com/sdk/js/docs/guides/playwright-crawler | — | #apify-playwright_support |
| Puppeteer | ● | Vendor-claimed | 2026-07-01 | https://docs.apify.com/sdk/js/docs/guides/puppeteer-crawler | — | #apify-puppeteer_support |
| Session persistence | ◐ | Inferred | — | — | Session pool plus key-value stores; you build the persistence yourself. | #apify-session_persistence |
| Live view | ● | Inferred | — | — | Actor runs expose a live view tab while running. | #apify-live_view |
| Session replay | ○ | Inferred | — | — | Logs and datasets, not replays. | #apify-session_replay |
| Max concurrency | — | Unknown | — | — | Governed by the plan's memory quota rather than a session count. | #apify-concurrency_ceiling |
| File downloads | ● | Inferred | — | — | Land in the key-value store. | #apify-file_downloads |
| Chrome extensions | ◐ | Inferred | — | — | — | #apify-extension_support |
| Browser regions | us-east, eu-central | Inferred | — | — | US and EU platform regions; no AU. | #apify-regions |
| Agent API | ◐ | Inferred | — | — | Agent Actors exist in the store; the platform itself is not an agent loop. | #apify-computer_use_api |
| MCP server | ● | Vendor-claimed | 2026-07-01 | https://github.com/apify/apify-mcp-server | Exposes the Actor store to MCP clients. | #apify-mcp_server |
| Human handoff | ○ | Inferred | — | — | — | #apify-human_handoff |
| Pricing model | per-credit | Inferred | — | — | Monthly plan floor plus compute units; from roughly US$49/mo on the entry tier. | #apify-pricing_model |
| Per browser-hour | — | Unknown | — | — | Compute units bundle CPU and RAM, so an hourly browser rate depends on your Actor's memory setting. | #apify-price_per_hour |
| Free tier | ● | Vendor-claimed | 2026-07-01 | https://apify.com/pricing | Small monthly usage credit. | #apify-free_tier |
| GitHub stars | 17,000 | Inferred | — | — | Crawlee repo, rounded. | #apify-github_stars |
| Funding stage | series-a | Community-reported | — | — | — | #apify-funding_stage |
| Open-source core | ◐ | Inferred | — | — | Crawlee is Apache-2.0; the platform is not self-hostable. | #apify-open_source_core |
| Positioning | Cloud platform for web scraping and browser automation Actors | Inferred | — | — | — | #apify-positioning |
| Launched | 2015 | Inferred | — | — | — | #apify-launch_year |

**Verdict.** Not really a browser API and shouldn't be evaluated as one — it is a place to run scraping code, with a marketplace attached. Crawlee is excellent and free. Choose Apify when the job is a scheduled pipeline with storage and monitoring, not when an agent needs a browser right now.

**Pick it when**

- Scheduled crawls that need storage, queues and monitoring
- Reusing an existing Actor instead of writing a scraper
- Teams standardising on Crawlee

### ZenRows {#zenrows}

Scraper API plus a CDP scraping browser on a shared residential pool

|  |  |
| --- | --- |
| Site | https://www.zenrows.com |
| Docs | https://docs.zenrows.com |
| Company | ZenRows |
| Founded | 2021 |
| Funding | Seed |
| Open source | No |
| Profile | https://toolweight.dev/tools/zenrows |
| Score (default weights) | 61.4 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Anti-bot pass rate | — | Unknown | — | — | Panel not yet run. | #zenrows-antibot_success |
| Stealth mode | ● | Vendor-claimed | 2026-07-01 | https://docs.zenrows.com | — | #zenrows-stealth_mode |
| CAPTCHA solving | ● | Inferred | 2026-07-01 | — | — | #zenrows-captcha_solving |
| Residential proxy | included | Inferred | — | — | Residential rotation is bundled into the scraper tiers; the standalone proxy product is priced separately. | #zenrows-residential_proxy |
| Cold start | — | Unknown | — | — | — | #zenrows-cold_start |
| CDP endpoint | ● | Vendor-claimed | 2026-07-01 | https://docs.zenrows.com/scraping-browser/introduction | Via the Scraping Browser product, not the classic scraper API. | #zenrows-cdp_endpoint |
| Playwright | ● | Vendor-claimed | 2026-07-01 | https://docs.zenrows.com/scraping-browser/get-started/playwright | — | #zenrows-playwright_support |
| Puppeteer | ● | Vendor-claimed | 2026-07-01 | https://docs.zenrows.com/scraping-browser/get-started/puppeteer | — | #zenrows-puppeteer_support |
| Session persistence | ◐ | Inferred | — | — | Sticky sessions, no profile store. | #zenrows-session_persistence |
| Live view | ○ | Inferred | — | — | — | #zenrows-live_view |
| Session replay | ○ | Inferred | — | — | — | #zenrows-session_replay |
| Max concurrency | — | Unknown | — | — | — | #zenrows-concurrency_ceiling |
| File downloads | ◐ | Inferred | — | — | — | #zenrows-file_downloads |
| Chrome extensions | — | Unknown | — | — | — | #zenrows-extension_support |
| Browser regions | global | Inferred | — | — | Country targeting including Australia via proxy geography. | #zenrows-regions |
| Agent API | ○ | Inferred | — | — | — | #zenrows-computer_use_api |
| MCP server | — | Unknown | — | — | — | #zenrows-mcp_server |
| Human handoff | ○ | Inferred | — | — | — | #zenrows-human_handoff |
| Pricing model | per-credit | Inferred | — | — | Scraper API bills credits per request; the Scraping Browser is metered separately. | #zenrows-pricing_model |
| Per browser-hour | — | Unknown | — | — | — | #zenrows-price_per_hour |
| Free tier | ◐ | Inferred | — | — | Trial credits. | #zenrows-free_tier |
| GitHub stars | — | Unknown | — | — | — | #zenrows-github_stars |
| Funding stage | seed | Inferred | — | — | — | #zenrows-funding_stage |
| Open-source core | ○ | Inferred | — | — | — | #zenrows-open_source_core |
| Positioning | Anti-bot scraping API with a CDP browser attached | Inferred | — | — | — | #zenrows-positioning |
| Launched | 2021 | Inferred | — | — | — | #zenrows-launch_year |

**Verdict.** The value pick for unblocking. It does most of what Bright Data does at a visibly lower price, with a simpler console and less enterprise ceremony. You give up the very largest IP pool and the debugging tools, which matters most on the hardest targets and barely at all on the rest.

**Pick it when**

- Cost-sensitive scraping against moderately protected sites
- Teams wanting one vendor for both fetch-and-parse and stateful sessions
- Migrating off a per-request API without changing pricing shape

### Self-hosted Playwright {#playwright-self-hosted}

The baseline: run Chromium in your own container and own everything

|  |  |
| --- | --- |
| Site | https://playwright.dev |
| Docs | https://playwright.dev/docs/docker |
| Repo | https://github.com/microsoft/playwright |
| Company | Self-hosted Playwright |
| Founded | 2020 |
| Open source | Yes (Apache-2.0) |
| Profile | https://toolweight.dev/tools/playwright-self-hosted |
| Score (default weights) | 60.3 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Anti-bot pass rate | — | Unknown | — | — | Panel not yet run. Stock Playwright is trivially detectable; the baseline exists to show the gap. | #playwright-self-hosted-antibot_success |
| Stealth mode | ○ | Inferred | — | — | Community patches exist but you own the maintenance forever. | #playwright-self-hosted-stealth_mode |
| CAPTCHA solving | ○ | Inferred | — | — | — | #playwright-self-hosted-captcha_solving |
| Residential proxy | byo-only | Inferred | — | — | Bring a proxy vendor and wire it yourself. | #playwright-self-hosted-residential_proxy |
| Cold start | 2 s | Inferred | — | — | Rough figure for launching Chromium in a warm container; entirely dependent on your image and host. | #playwright-self-hosted-cold_start |
| CDP endpoint | ● | Inferred | — | — | It is your browser; the protocol is fully exposed. | #playwright-self-hosted-cdp_endpoint |
| Playwright | ● | Inferred | — | — | — | #playwright-self-hosted-playwright_support |
| Puppeteer | ● | Inferred | — | — | You are running the libraries directly, so both work. | #playwright-self-hosted-puppeteer_support |
| Session persistence | ● | Inferred | — | — | Persistent contexts on your own disk — durable as long as you manage the volume. | #playwright-self-hosted-session_persistence |
| Live view | ○ | Inferred | — | — | Trace Viewer is post-hoc; a live view is a project of its own. | #playwright-self-hosted-live_view |
| Session replay | ● | Inferred | — | — | Trace Viewer and video recording are better than any hosted replay here. | #playwright-self-hosted-session_replay |
| Max concurrency | — | Unknown | — | — | Whatever your cluster tolerates — roughly one browser per GB of RAM. | #playwright-self-hosted-concurrency_ceiling |
| File downloads | ● | Inferred | — | — | — | #playwright-self-hosted-file_downloads |
| Chrome extensions | ● | Inferred | — | — | — | #playwright-self-hosted-extension_support |
| Browser regions | self-hosted | Inferred | — | — | Anywhere you can run a container, including ap-southeast-2 — the only reliable way to get an AU browser. | #playwright-self-hosted-regions |
| Agent API | ○ | Inferred | — | — | — | #playwright-self-hosted-computer_use_api |
| MCP server | ● | Vendor-claimed | 2026-07-01 | https://github.com/microsoft/playwright-mcp | Microsoft's official Playwright MCP server runs locally. | #playwright-self-hosted-mcp_server |
| Human handoff | ○ | Inferred | — | — | — | #playwright-self-hosted-human_handoff |
| Pricing model | infrastructure | Inferred | — | — | — | #playwright-self-hosted-pricing_model |
| Per browser-hour | $0.03 /browser-hour | Inferred | — | — | Approximate cost of a 2 vCPU / 4 GB container on a commodity cloud. Excludes proxies, storage and your engineering time. | #playwright-self-hosted-price_per_hour |
| Free tier | ● | Inferred | — | — | The software is free; the servers are not. | #playwright-self-hosted-free_tier |
| GitHub stars | 73,000 | Inferred | — | — | microsoft/playwright, rounded. | #playwright-self-hosted-github_stars |
| Funding stage | open-source | Inferred | — | — | — | #playwright-self-hosted-funding_stage |
| Open-source core | ● | Vendor-claimed | 2026-07-01 | https://github.com/microsoft/playwright | — | #playwright-self-hosted-open_source_core |
| Positioning | The reference point every hosted browser is priced against | Inferred | — | — | — | #playwright-self-hosted-positioning |
| Launched | 2020 | Inferred | — | — | — | #playwright-self-hosted-launch_year |

**Verdict.** Three to five times cheaper on compute than anything hosted, with the best debugging in the category, and completely defenceless against modern bot detection. If your targets do not fight you, everything above is a convenience tax. If they do, the honest comparison is a hosted bill against a full-time engineer.

**Pick it when**

- Internal tools, tests and sites you control
- Steady, predictable volume where compute cost dominates
- Anyone needing a browser physically in Australia

### Cloudflare Browser Rendering {#cloudflare-browser-rendering}

Puppeteer and Playwright bindings for Workers, plus REST render endpoints

|  |  |
| --- | --- |
| Site | https://developers.cloudflare.com/browser-rendering/ |
| Docs | https://developers.cloudflare.com/browser-rendering/ |
| Company | Cloudflare |
| Founded | 2023 |
| Open source | No |
| Profile | https://toolweight.dev/tools/cloudflare-browser-rendering |
| Score (default weights) | 41.1 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Anti-bot pass rate | — | Unknown | — | — | Panel not yet run; expect a low score — this product does not attempt evasion. | #cloudflare-browser-rendering-antibot_success |
| Stealth mode | ○ | Inferred | — | — | Deliberately absent. Cloudflare sells bot detection on the other side of the same fence. | #cloudflare-browser-rendering-stealth_mode |
| CAPTCHA solving | ○ | Inferred | — | — | — | #cloudflare-browser-rendering-captcha_solving |
| Residential proxy | none | Inferred | — | — | Traffic exits Cloudflare's own network. | #cloudflare-browser-rendering-residential_proxy |
| Cold start | — | Unknown | — | — | — | #cloudflare-browser-rendering-cold_start |
| CDP endpoint | ◐ | Inferred | 2026-07-01 | https://developers.cloudflare.com/browser-rendering/ | Sessions are reached through a Workers binding or REST endpoints, not an open wss:// URL. | #cloudflare-browser-rendering-cdp_endpoint |
| Playwright | ● | Vendor-claimed | 2026-07-01 | https://developers.cloudflare.com/browser-rendering/platform/playwright/ | Via the @cloudflare/playwright fork. | #cloudflare-browser-rendering-playwright_support |
| Puppeteer | ● | Vendor-claimed | 2026-07-01 | https://developers.cloudflare.com/browser-rendering/platform/puppeteer/ | — | #cloudflare-browser-rendering-puppeteer_support |
| Session persistence | ◐ | Inferred | — | — | Sessions can be kept alive and reconnected across Worker invocations; no named profile store. | #cloudflare-browser-rendering-session_persistence |
| Live view | ○ | Inferred | — | — | — | #cloudflare-browser-rendering-live_view |
| Session replay | ○ | Inferred | — | — | — | #cloudflare-browser-rendering-session_replay |
| Max concurrency | 30 sessions | Inferred | — | — | Approximate paid-plan default; raisable on request. | #cloudflare-browser-rendering-concurrency_ceiling |
| File downloads | ◐ | Inferred | — | — | Awkward inside the Workers runtime; fine for generated PDFs and screenshots. | #cloudflare-browser-rendering-file_downloads |
| Chrome extensions | ○ | Inferred | — | — | — | #cloudflare-browser-rendering-extension_support |
| Browser regions | global-edge | Inferred | — | — | Runs across Cloudflare's network, which includes Australian PoPs, but exposes no region pinning. | #cloudflare-browser-rendering-regions |
| Agent API | ○ | Inferred | — | — | — | #cloudflare-browser-rendering-computer_use_api |
| MCP server | ● | Vendor-claimed | 2026-07-01 | https://github.com/cloudflare/mcp-server-cloudflare | Part of Cloudflare's first-party MCP server set. | #cloudflare-browser-rendering-mcp_server |
| Human handoff | ○ | Inferred | — | — | — | #cloudflare-browser-rendering-human_handoff |
| Pricing model | per-hour | Vendor-claimed | 2026-07-01 | https://developers.cloudflare.com/browser-run/pricing/ | Dual-metered: browser hours plus request count, on top of the Workers Paid plan. | #cloudflare-browser-rendering-pricing_model |
| Per browser-hour | $0.09 /browser-hour | Inferred | — | — | Approximate per-browser-hour rate after the included allowance; verify against current pricing. | #cloudflare-browser-rendering-price_per_hour |
| Free tier | ● | Vendor-claimed | 2026-07-01 | https://developers.cloudflare.com/browser-run/limits/ | Small daily free allowance on the free plan. | #cloudflare-browser-rendering-free_tier |
| GitHub stars | — | Unknown | — | — | — | #cloudflare-browser-rendering-github_stars |
| Funding stage | public | Inferred | — | — | — | #cloudflare-browser-rendering-funding_stage |
| Open-source core | ○ | Inferred | — | — | — | #cloudflare-browser-rendering-open_source_core |
| Positioning | Headless Chromium as a Workers binding and REST API | Inferred | — | — | — | #cloudflare-browser-rendering-positioning |
| Launched | 2023 | Inferred | — | — | — | #cloudflare-browser-rendering-launch_year |

**Verdict.** Unbeatable for rendering pages that are not fighting you, especially if you already run Workers — the price is a rounding error and the edge footprint is free. It is not an unblocking product and never will be, which makes the missing stealth column a positioning statement rather than a gap.

**Pick it when**

- Screenshots, PDFs and markdown extraction at scale
- Teams already on Workers who want zero new vendors
- Rendering your own properties and public documentation

### ScrapingBee {#scrapingbee}

One-call HTML API with JavaScript rendering and premium proxy tiers

|  |  |
| --- | --- |
| Site | https://www.scrapingbee.com |
| Docs | https://www.scrapingbee.com/documentation/ |
| Company | ScrapingBee |
| Founded | 2018 |
| Open source | No |
| Profile | https://toolweight.dev/tools/scrapingbee |
| Score (default weights) | 34.4 / 100 |

| Field | Value | Confidence | Verified | Source | Note | Anchor |
| --- | --- | --- | --- | --- | --- | --- |
| Anti-bot pass rate | — | Unknown | — | — | Panel not yet run. | #scrapingbee-antibot_success |
| Stealth mode | ● | Vendor-claimed | 2026-07-01 | https://www.scrapingbee.com/documentation/ | Delivered by paying more credits for premium/stealth proxy tiers. | #scrapingbee-stealth_mode |
| CAPTCHA solving | ◐ | Inferred | — | — | Some challenges handled transparently; no general solver. | #scrapingbee-captcha_solving |
| Residential proxy | metered-extra | Inferred | 2026-07-01 | — | Premium proxies cost a multiple of the base credit price per request. | #scrapingbee-residential_proxy |
| Cold start | — | Unknown | — | — | — | #scrapingbee-cold_start |
| CDP endpoint | ○ | Inferred | — | — | There is no session to connect to — it is a request/response API. | #scrapingbee-cdp_endpoint |
| Playwright | ○ | Inferred | — | — | — | #scrapingbee-playwright_support |
| Puppeteer | ○ | Inferred | — | — | — | #scrapingbee-puppeteer_support |
| Session persistence | ○ | Inferred | — | — | — | #scrapingbee-session_persistence |
| Live view | ○ | Inferred | — | — | — | #scrapingbee-live_view |
| Session replay | ○ | Inferred | — | — | — | #scrapingbee-session_replay |
| Max concurrency | 100 sessions | Inferred | — | — | Approximate ceiling on the top self-serve plan; entry plans are much lower. | #scrapingbee-concurrency_ceiling |
| File downloads | ○ | Inferred | — | — | — | #scrapingbee-file_downloads |
| Chrome extensions | ○ | Inferred | — | — | — | #scrapingbee-extension_support |
| Browser regions | global | Inferred | — | — | Country targeting including Australia; you do not choose where the browser runs. | #scrapingbee-regions |
| Agent API | ○ | Inferred | — | — | — | #scrapingbee-computer_use_api |
| MCP server | — | Unknown | — | — | — | #scrapingbee-mcp_server |
| Human handoff | ○ | Inferred | — | — | — | #scrapingbee-human_handoff |
| Pricing model | per-credit | Vendor-claimed | 2026-07-01 | https://www.scrapingbee.com/pricing/ | Credits per request, multiplied by proxy tier and JS rendering. | #scrapingbee-pricing_model |
| Per browser-hour | — | Unknown | — | — | Not time-billed; converting requests to hours would be meaningless. | #scrapingbee-price_per_hour |
| Free tier | ◐ | Inferred | — | — | One-off trial credits. | #scrapingbee-free_tier |
| GitHub stars | — | Unknown | — | — | — | #scrapingbee-github_stars |
| Funding stage | bootstrapped | Community-reported | — | — | Long-running independent product with no reported raise. | #scrapingbee-funding_stage |
| Open-source core | ○ | Inferred | — | — | — | #scrapingbee-open_source_core |
| Positioning | Scraping API that handles proxies and headless browsers for you | Inferred | — | — | — | #scrapingbee-positioning |
| Launched | 2018 | Inferred | — | — | — | #scrapingbee-launch_year |

**Verdict.** Honest, boring and predictable — which in this category is a compliment. Per-request pricing makes forecasting trivial and the docs never pretend it is a browser API. The moment your workflow needs three steps and a cookie jar, you are on the wrong product.

**Pick it when**

- One-shot fetches with rendered JavaScript
- Predictable per-request budgeting
- Teams that want no session state to manage

## Methodology

Capability fields were read off vendor documentation and marked `vendor-claimed` with the doc URL where the docs are unambiguous, `inferred` where a feature exists but the docs hedge, and `unknown` where we could not establish it without an account. Pricing uses the cheapest paid self-serve tier. Where a product is not billed by time — Bright Data by the gigabyte, Apify by compute unit, ScrapingBee by credit — the per-browser-hour column is null rather than converted, because the conversion depends entirely on how heavy your pages are.

The killer field, **anti-bot pass rate**, is deliberately empty. The planned panel is ten publicly reachable sites, one behind each of Cloudflare managed challenge, Akamai Bot Manager, DataDome, HUMAN/PerimeterX, Imperva, Kasada, F5 Shape and reCAPTCHA Enterprise, plus two commodity storefronts as a control. Fifty attempts per provider per site, cold sessions, no cookie reuse, each provider's own default stealth configuration and nothing hand-tuned, from three geographies. Success means reaching a named DOM assertion within 30 seconds; a challenge that resolves itself counts, a challenge that stalls does not. We publish the pass rate with a 95% confidence interval, the raw logs, and the exact commit of the harness, and rerun monthly. Until that runs, every cell reads unknown. We will not print vendor-claimed success rates in the meantime — that number is marketing everywhere it appears, and laundering it through a comparison table would be worse than an empty column.

## FAQ

### Why is the anti-bot success rate column empty?

Because we have not run the panel yet, and every published number in this category is the vendor's own. Filling the column with vendor claims would make the page look complete and be worthless. The methodology is specified above; the results ship when the harness has run fifty attempts per provider per site and we can publish the logs.

### Is a hosted browser API cheaper than self-hosting Playwright?

Rarely on raw compute. A container that runs Chromium costs a few cents an hour; hosted browsers start around ten cents. You are buying the fingerprint maintenance, the proxy pool, the session viewer and the on-call. If your targets do not block you and your volume is steady, self-hosting wins on cost and loses on the week you spend rebuilding a live view.

### Do I need residential proxies, or is stealth mode enough?

Stealth mode fixes the browser fingerprint. It does nothing about your IP reputation, and datacentre ranges are the cheapest signal for a bot vendor to block. Against Cloudflare managed challenge a patched browser on a clean residential IP usually passes; the same browser on an AWS IP usually does not. Budget for gigabytes, not just hours.

### What is the difference between Browserbase and Bright Data's Browser API?

Browserbase sells a developer experience: contexts, live view, extensions, downloads, Stagehand, billed per browser-hour. Bright Data sells network access: seventy-odd million residential IPs with automatic challenge handling, billed per gigabyte of traffic. Agent teams pick Browserbase and add proxies when blocked. Scraping teams pick Bright Data and accept a thinner developer surface.

### Which of these run browsers in Australia?

Almost none pin a browser to an Australian region. Cloudflare Browser Rendering runs across its edge, which includes Sydney and Melbourne, but exposes no region control. Most agent hosts offer US and EU, with Singapore as the nearest Asia-Pacific option. If you need an Australian exit specifically, use an AU residential proxy in front of a US browser, or self-host in ap-southeast-2.

### Does an MCP server actually matter when choosing?

Less than the marketing implies. Nearly every vendor shipped one during 2025 and they are thin wrappers over the same REST API, so an MCP server tells you the vendor is paying attention, not that the browser is good. It matters if your agent framework speaks MCP natively and you want zero glue code; otherwise weight it low.

### Can I move between providers without rewriting?

If you connect over raw CDP with Playwright or Puppeteer, yes — swapping the websocket URL is usually the whole migration. If you built on a vendor's proprietary act/extract API, Airtop's natural-language calls or Apify's Actor model, expect a rewrite. Keeping your automation in plain Playwright and treating the provider as a connection string is cheap insurance.

## Recent changes

| Date | Kind | Event | Tools | Source |
| --- | --- | --- | --- | --- |
| 2025-03-11 | launch | **Hyperbrowser launches out of Y Combinator** — Ships browser sessions alongside scrape/crawl/extract endpoints and hosted agent loops in one API, setting the pattern several competitors followed later in the year. | hyperbrowser | — |
| 2025-04-08 | launch | **Cloudflare adds Playwright support to Browser Rendering** — Browser Rendering gains a Playwright fork alongside the existing Puppeteer binding, plus REST endpoints for screenshots, PDFs and markdown — making it the cheapest credible option for non-adversarial rendering. | cloudflare-browser-rendering | https://developers.cloudflare.com/browser-rendering/platform/playwright/ |
| 2025-04-22 | launch | **Stagehand 2.0** — Browserbase's SDK moves from an experiment to the default way people write agent browsing in TypeScript, mixing model-driven act/extract calls with ordinary Playwright in the same script. | browserbase | https://github.com/browserbase/stagehand |
| 2025-05-20 | launch | **Bright Data publishes a first-party MCP server** — Exposes the Browser API and its scraping products to MCP clients. Within months nearly every vendor in the category had shipped one, turning MCP from a differentiator into a checkbox. | bright-data-browser-api | https://github.com/brightdata/brightdata-mcp |
| 2025-06-24 | funding | **Browserbase raises a US$40M Series B** — The largest round in the category to date, and the clearest signal that agent browser infrastructure is being funded as a platform rather than a feature. Reported terms; not vendor-confirmed here. | browserbase | — |
| 2026-07-23 | other | **toolweight publishes the anti-bot panel methodology** — The ten-site panel, sample size and success criteria are specified above. No provider has been run through it yet, so every cell in the pass-rate column reads unknown until the first monthly run lands. | — | — |

## Sources

| Source | Last verified |
| --- | --- |
| https://docs.browserbase.com/features/stealth-mode | 2026-07-01 |
| https://docs.browserbase.com/introduction | 2026-07-01 |
| https://docs.browserbase.com/welcome/quickstarts/playwright | 2026-07-01 |
| https://docs.browserbase.com/welcome/quickstarts/puppeteer | 2026-07-01 |
| https://docs.browserbase.com/features/contexts | 2026-07-01 |
| https://docs.browserbase.com/platform/browser/observability/session-live-view | 2026-07-01 |
| https://docs.browserbase.com/platform/browser/observability/session-replay | 2026-07-01 |
| https://docs.browserbase.com/platform/browser/files/downloads | 2026-07-01 |
| https://docs.browserbase.com/platform/browser/core-features/browser-extensions | 2026-07-01 |
| https://docs.browserbase.com/integrations/mcp/introduction | 2026-07-01 |
| https://www.browserbase.com/pricing | 2026-07-01 |
| https://docs.browserless.io/browserql/start | 2026-07-01 |
| https://docs.browserless.io/browserql/bot-detection/solving-captchas | 2026-07-01 |
| https://docs.browserless.io | 2026-07-01 |
| https://docs.browserless.io/examples/playwright-connection | 2026-07-01 |
| https://docs.browserless.io/examples/puppeteer-connection | 2026-07-01 |
| https://docs.browserless.io/baas/features/file-transfers | 2026-07-01 |
| https://github.com/browserless/browserless | 2026-07-01 |
| https://docs.steel.dev | 2026-07-01 |
| https://docs.steel.dev/integrations/playwright | 2026-07-01 |
| https://docs.steel.dev/integrations/puppeteer | 2026-07-01 |
| https://docs.steel.dev/overview/profiles-api/overview | 2026-07-01 |
| https://docs.steel.dev/overview/sessions-api/embed-sessions/live-sessions | 2026-07-01 |
| https://github.com/steel-dev/steel-browser | 2026-07-01 |
| https://docs.hyperbrowser.ai | 2026-07-01 |
| https://hyperbrowser.ai/docs/sessions/captcha-solving | 2026-07-01 |
| https://hyperbrowser.ai/docs/sessions/create | 2026-07-01 |
| https://hyperbrowser.ai/docs/sessions/playwright | 2026-07-01 |
| https://hyperbrowser.ai/docs/sessions/puppeteer | 2026-07-01 |
| https://hyperbrowser.ai/docs/sessions/profiles | 2026-07-01 |
| https://hyperbrowser.ai/docs/sessions/live-view | 2026-07-01 |
| https://hyperbrowser.ai/docs/agents/overview | 2026-07-01 |
| https://github.com/hyperbrowserai/mcp | 2026-07-01 |
| https://docs.anchorbrowser.io/essentials/stealth | 2026-07-01 |
| https://docs.anchorbrowser.io | 2026-07-01 |
| https://docs.anchorbrowser.io/integrations/open-source/playwright | 2026-07-01 |
| https://docs.anchorbrowser.io/integrations/open-source/puppeteer | 2026-07-01 |
| https://docs.anchorbrowser.io/essentials/managed-authentication | 2026-07-01 |
| https://docs.anchorbrowser.io/advanced/browser-live-view | 2026-07-01 |
| https://docs.anchorbrowser.io/advanced/extensions | 2026-07-01 |
| https://docs.anchorbrowser.io/agentic-browser-control/human-in-the-loop | 2026-07-01 |
| https://kernel.sh/docs/browsers/bot-detection/stealth | 2026-07-01 |
| https://docs.onkernel.com | 2026-07-01 |
| https://kernel.sh/docs/introduction/control | 2026-07-01 |
| https://kernel.sh/docs/auth/profiles | 2026-07-01 |
| https://kernel.sh/docs/browsers/live-view | 2026-07-01 |
| https://kernel.sh/docs/browsers/replays | 2026-07-01 |
| https://docs.airtop.ai/guides/how-to/solving-captchas | 2026-07-01 |
| https://docs.airtop.ai/guides/how-to/automation-frameworks/playwright | 2026-07-01 |
| https://docs.airtop.ai/guides/how-to/saving-a-profile | 2026-07-01 |
| https://docs.airtop.ai/guides/how-to/creating-a-live-view | 2026-07-01 |
| https://docs.airtop.ai/guides/how-to/ai/page-interactions | 2026-07-01 |
| https://developers.cloudflare.com/browser-rendering/ | 2026-07-01 |
| https://developers.cloudflare.com/browser-rendering/platform/playwright/ | 2026-07-01 |
| https://developers.cloudflare.com/browser-rendering/platform/puppeteer/ | 2026-07-01 |
| https://github.com/cloudflare/mcp-server-cloudflare | 2026-07-01 |
| https://developers.cloudflare.com/browser-run/pricing/ | 2026-07-01 |
| https://developers.cloudflare.com/browser-run/limits/ | 2026-07-01 |
| https://docs.brightdata.com/scraping-automation/scraping-browser/introduction | 2026-07-01 |
| https://docs.brightdata.com/scraping-automation/scraping-browser/features/captcha-solver | 2026-07-01 |
| https://docs.brightdata.com/scraping-automation/scraping-browser/code-examples | 2026-07-01 |
| https://github.com/brightdata/brightdata-mcp | 2026-07-01 |
| https://www.scrapingbee.com/documentation/ | 2026-07-01 |
| https://www.scrapingbee.com/pricing/ | 2026-07-01 |
| https://docs.zenrows.com | 2026-07-01 |
| https://docs.zenrows.com/scraping-browser/introduction | 2026-07-01 |
| https://docs.zenrows.com/scraping-browser/get-started/playwright | 2026-07-01 |
| https://docs.zenrows.com/scraping-browser/get-started/puppeteer | 2026-07-01 |
| https://docs.apify.com | 2026-07-01 |
| https://docs.apify.com/proxy/residential-proxy | 2026-07-01 |
| https://docs.apify.com/sdk/js/docs/guides/playwright-crawler | 2026-07-01 |
| https://docs.apify.com/sdk/js/docs/guides/puppeteer-crawler | 2026-07-01 |
| https://github.com/apify/apify-mcp-server | 2026-07-01 |
| https://apify.com/pricing | 2026-07-01 |
| https://github.com/microsoft/playwright-mcp | 2026-07-01 |
| https://github.com/microsoft/playwright | 2026-07-01 |

## Related comparisons

- [Sandbox providers](https://toolweight.dev/compare/sandbox-providers) — Which sandbox provider should I run untrusted or agent-generated code on?
- [Coding agents](https://toolweight.dev/compare/coding-agents) — Which AI coding agent should I use in 2026?
- [LLM APIs](https://toolweight.dev/compare/llm-apis) — Which frontier LLM API should I build on?

## Licence and attribution

Data from toolweight (https://toolweight.dev), licensed CC-BY-4.0.

- Licence: [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/)
- Canonical HTML: https://toolweight.dev/compare/browser-automation-apis
- Machine-readable: https://toolweight.dev/compare/browser-automation-apis.md · https://toolweight.dev/api/v1 · https://toolweight.dev/mcp
- toolweight takes no affiliate revenue and sells no placements. Corrections: https://toolweight.dev/suggest
