Browsa is a real web browser built to look like a normal person, not a bot. Use it yourself to run many accounts without getting banned, or call it by API so your code and AI agents can browse without getting blocked.
# Provision a 5-minute burner identity. Returns a CDP URL you # drop straight into Playwright / Puppeteer / your own CDP client. curl -X POST https://browsa.io/v1/agents \ -H "X-API-Key: $AGENTS_KEY" \ -H "Content-Type: application/json" \ -d '{"ttl":"5m","country":"us"}' # → 201 Created { "id": "agt_01HXYZ...", "cdp_url": "wss://browsa.io/api/v1/cdp/<profile>/ws/page/...", "expires_at": "2026-06-05T09:34:00Z", "ttl_seconds": 300, "trust_score": 760, "cost_credits": 1 }
# pip install browsa from browsa import Client c = Client(api_key="agt_live_...") # Run a browser-driven AI task. Returns when done. # Real Chromium + Claude Opus + 5-second live noVNC stream. job = c.run_task( task="Go to news.ycombinator.com and return the top story title.", llm="claude-opus-4-8", llm_api_key="sk-ant-...", ) print(job.final_result) print("watch live:", job.live_url) # → "Show HN: Self-host…" + live stream URL while it ran
// npm i browsa import { Client } from "browsa"; const c = new Client({ apiKey: "agt_live_..." }); // Same one-shot API. Returns when the agent finishes. const job = await c.runTask({ task: "Go to news.ycombinator.com and return the top story title.", llm: "claude-opus-4-8", llmApiKey: "sk-ant-...", }); console.log(job.finalResult); console.log("watch live:", job.liveUrl); // Returns the actual top-story title as text.
// Claude Desktop config (claude_desktop_config.json) // Once added, ask Claude: "go to news.ycombinator.com and tell me the top story" { "mcpServers": { "browsa": { "command": "npx", "args": ["-y", "@browsa/mcp"], "env": { "BROWSA_API_KEY": "agt_live_...", "BROWSA_LLM_API_KEY": "sk-ant-..." } } } } // Claude Desktop now has 9 tools: run_task, get_job, cancel_job, respond_to_job, // credits, list_webhooks, create_webhook, delete_webhook, list_identities.
Both run on the same real browser. Pick the one that fits how you work, or use both on one account.
Run many accounts without getting banned.
Create as many browser profiles as you need. Each one looks like a different real person, so your accounts stay separate and never get linked. Open them on your computer or in the cloud, and share them with your team.
A real browser your code can control.
Send one request and get a real browser back in about two seconds. Point Playwright or Puppeteer at it, or let your AI agent drive it. It browses like a real person, so it doesn't get blocked.
Click through it yourself, or drive it from code. Either way, you get the same real browser that websites treat as a genuine person.
Most tools hide automation by bolting extra scripts onto a normal browser. Detection sites are built to catch exactly those scripts. Browsa is a real, custom-built browser instead, so there's nothing bolted on to catch.
We rebuilt the browser deep inside, fixing 50+ of the tiny signals websites use to tell a person from a bot. In our own weekly test, detection sites flag a normal automated browser 94% of the time. They flag Browsa only 19%. That gap is why your accounts and agents get through.
Open a single browser or spin up thousands at once. Each one is completely separate and shares nothing with the others, so if one ever gets flagged, the rest keep working. Use them once and throw them away, or keep them for months.
Every browser comes with a simple trust score from our own detection tests, so you know how genuine it looks before you rely on it, and can refresh it if the score ever drops. No other tool shows you this.
Customer decides per-call. Same auth, same SDK, same CDP endpoint, same dashboard, same bill.
Fresh identity in 2 seconds, self-destructs in 5–60 minutes. Pay per call. No correlation history. Perfect for one-shot AI agent tasks: fill a form, scrape a page, run a check.
Long-lived identity with state: cookies, localStorage, login session, browsing history. For agents that need to remember things across runs. Trust score grows as the identity ages, like a real user.
POST /v1/agents/:id/sessionsEverything you need to build with the API. Start where you are.
Mint API keys, watch jobs land, register webhooks, download CSV/NDJSON. Sign in once.
Pick a language, pick a library, copy three blocks. First burner in 90 seconds.
Every endpoint, every field, every error code, with copy-ready curl, Python, and TypeScript snippets.
Ten copy-paste recipes: trust audits, paste-ready Playwright, idempotent retries, webhooks, fingerprint pinning.
Drop into Claude Desktop, Cursor, Continue. 8 tools. Zero code to drive browsers from your AI assistant.
Open-source realism harness on the same detection sites and hardware. Run it yourself. No vendor publishes this.
Every week we run Browsa and a normal automated browser through the same detection sites, on the same hardware. Here's how they compare. The test is open-source, so you can run it yourself. Live leaderboard →
| Detection site | Browsa | Vanilla Playwright same hardware, no realism patches |
|---|---|---|
| CreepJS % like headless (lower = better) |
19% | 94% |
| fingerprint.com BotD | ✓ pass | ✗ bot:true |
| antoinevastel "are you headless" | NOT_HEADLESS | HEADLESS_DETECTED |
| amazon.com search | cards visible | "Sorry, something went wrong" |
| google.com search | results render | /sorry/ interstitial |
Public head-to-head against Hyperbrowser / Browserbase / Browserless rolls out as the harness picks them up. Each one runs against the same 5 detection sites on the same hardware. Source: services/detection-harness on GitHub. Reproduce with one command.
POST /v1/agents to a CDP-ready browser. Provision, attach proxy, warm-up, return. Every region.Pick a language, pick a library, copy three blocks. That's it.
One pip command. The SDK has zero runtime dependencies, pure stdlib.
$ pip install browsa
Five lines. Get back the agent's result + a live noVNC stream URL.
from browsa import Client c = Client(api_key="agt_live_...") job = c.run_task( task="Top HN story title.", llm="claude-opus-4-8", llm_api_key="sk-ant-...", ) print(job.final_result)
Your existing Playwright code works unchanged. Just swap chromium.launch() for chromium.connect_over_cdp(agent.cdp_url).
with sync_playwright() as p: browser = p.chromium.connect_over_cdp(agent.cdp_url) page = browser.new_page() page.goto("https://news.ycombinator.com/") print(page.title()) page.screenshot(path="hn.png")
Credit packs that never expire. Failed provisions auto-refund. No subscription needed for burner.
The questions everyone asks but no real-browser vendor wants to answer publicly.
No. The browser running underneath Browsa is engineered to be indistinguishable from a real user's browser: 50+ patches deep in the engine, not JS injected at page load. Bolt-on scripts are detectable by anyone running their own anti-cheat (they're JS sitting in the global scope). Our changes happen at the layer where fingerprinting actually originates, well before any page script runs. See the realism benchmark.
Because most AI agents have spiky usage: 5 minutes of demand, then nothing for 3 days, then 200 calls in an hour. A flat-rate $50/month subscription either over-charges the slow developer or under-charges the hot startup. Credits map to actual usage cleanly. Persistent identities are subscription-billed instead, because they cost us money every day they exist (not just when you call them).
Functionally similar API surface. The underlying browser is different: ours is a real browser engineered to be indistinguishable from a real user's; theirs are bolt-on scripts on stock browsers. The difference shows on every realism benchmark: Cloudflare, Stripe, Amazon, Booking, and Akamai-protected sites all behave differently. We also publish public benchmarks; they don't.
Yes. Replace chromium.launch() with chromium.connect_over_cdp(agent.cdp_url), drop the headless/proxy/UA flags (we handle those), and your existing scripts run unchanged. Puppeteer, Selenium, and raw CDP also work; anything that speaks the Chrome DevTools Protocol does too.
Default routes through Browsa's US-pooled proxies (no charge). Specify country in the request (e.g. "uk", "de", "fr") for country-targeted routing, which costs +1 credit per call. Country-specific proxies cover 190+ regions via integrated providers.
The agent run continues; we don't crash on a 403. You'll see the bot-wall response in your code and can decide how to handle it (retry with a new burner, route through your own proxy, escalate). The trust score on the response is our best estimate of how real sites' bot systems see it. Flagged-identity webhooks (on the roadmap) will tell you proactively when a persistent identity gets flagged.
Browsa Platform is a real browser for managing many accounts by hand: profiles, fingerprints, proxies, teams. Browsa Agents is the same real-browser engine exposed as a per-call API for AI agents. Different surface (desktop + dashboard vs REST + CDP), different customer (operators vs developers), same undetectable browser underneath.
Unlimited profiles on the platform, or 300 free credits on the agent API. No card required.