Browser Infrastructure

Hosted Chrome for your Puppeteer scripts.

One API call creates a browser. Pass its CDP URL to puppeteer.connect(). No Chromium to install, patch or scale, at $0.02 per browser-hour with no subscription.

import puppeteer from "puppeteer-core";import { BrowserUse } from "browser-use-sdk/v4"; const client = new BrowserUse();const session = await client.browsers.create({ proxyCountryCode: "us" }); const browser = await puppeteer.connect({ browserWSEndpoint: session.cdpUrl! });const [page] = await browser.pages();await page.goto("https://example.com");console.log(await page.title()); // Disconnecting does not stop the meter. This does.await browser.disconnect();await client.browsers.stop(session.id);
main.tsCDP compatible · puppeteer-core
$0.02 / hour
pay as you go, no subscription, credits never expire
90.5%
of visits got through on 100 bot-protected sites, the best of every provider tested; Anchor next at 82%
Live view
on every browser, plus mp4 recordings when you ask for them

Three steps

  1. 1

    Create a browser

    POST /api/v4/browsers, or client.browsers.create() in the TypeScript or Python SDK. The response carries id, cdpUrl and liveUrl.
  2. 2

    Connect Puppeteer

    puppeteer.connect({ browserWSEndpoint: cdpUrl }). Pages, selectors, downloads and screenshots work as they do locally, because it is a real Chromium on the other end.
  3. 3

    Stop it

    client.browsers.stop(id) or PATCH /api/v4/browsers/{id} with {"action":"stop"}. Disconnecting alone leaves the browser running until its timeout.

No Chromium in your deploy.

puppeteer-core ships without a browser, so a serverless function or container only needs an outbound WebSocket. Chrome versions, fonts, crashes and memory limits are on our side. Need the same browser for Playwright too? Same CDP URL.

See what the script saw.

Open the liveUrl to watch a run, or embed it read-only in your own dashboard. Turn on recording and every failed job leaves an mp4 behind. Live view and recordings.

What comes with every browser

Protocol
Chrome DevTools Protocol over WebSocket. Puppeteer, Playwright, or any CDP client.
Stealth
Our own hardened Chromium build, fingerprints randomized per session, on by default. The numbers.
CAPTCHAs
Solved automatically. Set solveCaptchas to false to handle them yourself. How it works.
Proxies
Residential in 195+ countries at $5/GB, chosen per browser with proxyCountryCode. Or bring your own with customProxy.
Profiles
Cookies, localStorage and login state persist across browsers with profileId.
Live view and recording
A liveUrl for every browser; an mp4 with enableRecording.
Session length
60 minutes by default, up to 240 with timeout.

Questions people ask

Do I need puppeteer or puppeteer-core?

puppeteer-core. The browser runs on our side, so you do not need the Chromium download that the full puppeteer package installs. Connect with puppeteer.connect({ browserWSEndpoint: cdpUrl }) and the rest of your script stays the same.

What does it cost?

$0.02 per browser-hour, plus $5/GB when traffic goes through the residential proxies. No subscription. Credits never expire.

How long can a browser stay open?

60 minutes by default. Set timeout when you create it, up to 240 minutes. The browser stops at the timeout or when you stop it, whichever comes first.

How do I stop paying for a browser?

client.browsers.stop(id) in the SDK, or PATCH /api/v4/browsers/{id} with {"action":"stop"}. browser.disconnect() only closes your connection; the managed browser keeps running until the API stop or the timeout.

Can I watch what Puppeteer is doing?

Yes. Every browser returns a liveUrl you can open in a tab or embed in an iframe. Pass enableRecording: true when you create it to get an mp4 after it stops.

How many browsers can I run at once?

10 on a new project, rising to 1,000 with what the project has paid. Enterprise agreements go higher.