Browsa
  1. Use cases
  2. Browser automation

Run Playwright in the cloud.

Keep your Playwright code and stop running browsers on your own servers. One API call starts a real Chromium in the cloud and returns its CDP address. Change launch() to connect_over_cdp() and the rest of your script stays the same.

100 free credits. No card, no subscription.

How it works.

  1. Start a browser

    One call to create_agent(ttl="10m") returns the browser's id and its cdp_http address.

  2. Connect Playwright

    Swap chromium.launch() for chromium.connect_over_cdp() with your key in an X-API-Key header, and use the page that is already open.

  3. Clean up

    Call destroy_agent() when the script is done, or let the browser shut down when its TTL ends.

from browsa import Client
from playwright.sync_api import sync_playwright

API_KEY = "agt_live_…"
client = Client(api_key=API_KEY)
agent = client.create_agent(ttl="10m")

try:
    with sync_playwright() as p:
        browser = p.chromium.connect_over_cdp(agent["cdp_http"], headers={"X-API-Key": API_KEY})
        context = browser.contexts[0]
        page = context.pages[0] if context.pages else context.new_page()
        page.goto("https://example.com")
        print(page.title())
        # the rest is plain Playwright
finally:
    client.destroy_agent(agent["id"])

What you get.

No browsers on your servers

Nothing to install, patch or ship in your Docker image. Your workers only need Python or Node.

A browser sites treat like a browser

Browsa runs its own Chromium build: no automation flag, no HeadlessChrome user agent, a real GPU. See the benchmarks.

Saved logins

A persistent identity keeps cookies and local storage between runs, so scripts don't sign in from scratch every time.

Watch it live

Browsers come with a live view link. Open it to see exactly what your script is doing, and step in if a page needs a person.

Pricing.

You pay per browser, based on the TTL you ask for. Credits never expire.

Browser, up to 5 minutes1 credit
Browser, up to 1 hour5 credits
Saved identity, per month50 credits
Session on a saved identity1 credit
Browser that fails to startRefunded

A browser runs for up to 1 hour. Any TTL over 5 minutes, such as 10 minutes, is the 5-credit tier.

Free

$0
100 credits to start

Starter

$20
200 credits

Growth

$100
1,200 credits, 20% bonus

Pro

$500
7,500 credits, 50% bonus
Full pricing Need volume or invoicing? support@browsa.io

Questions.

Do I need to change my Playwright code?

Only the line that starts the browser. Replace chromium.launch() with chromium.connect_over_cdp(agent["cdp_http"], headers={"X-API-Key": API_KEY}), drop your headless and user-agent flags, and use the page that is already open: browser.contexts[0].pages[0]. Everything after that is plain Playwright.

How long can a cloud browser run?

Up to 1 hour. Set ttl when you create it, for example "5m" or "1h". It shuts down when the TTL ends, or earlier when you call destroy_agent().

Can I use my own proxy?

Yes. Browsers connect directly by default, and you can bring any HTTP or SOCKS5 proxy per browser. Browsa doesn't sell proxies. The country option sets the browser's timezone and language; it doesn't change the network route.

What if my connection drops mid-script?

The browser keeps running until its TTL ends. Call get_agent(agent_id) for its cdp_http and connect again with the same X-API-Key header.

Move your Playwright scripts to the cloud.

100 free credits. No card, no subscription.