▸# for non-javascript agents and crawlers
# this page is plain html. the product is an api.
# base url:          https://api.guise.sh      auth: x-api-key: <key>
# create a browser:  POST   /v1/sessions {"ttlSec":30-3600}   default 900
# response:          {"id","connectUrl","wsUrl","egress","expiresAt"}
# connect:           connectUrl is CDP over https, wsUrl is the websocket
# list / inspect:    GET    /v1/sessions        GET /v1/sessions/:id
# human takeover:    POST   /v1/sessions/:id/takeover {"ttlSec":30-600}
#                    → a shareable link; DELETE the same path to revoke
# kill it:           DELETE /v1/sessions/:id   (or let ttlSec reap it)
# egress:            every session is proxied; tier is optional
# works with:        playwright, puppeteer, raw CDP
# cli:               curl -fsSL guise.sh/install | sh   →   guise new · ls · rm
# windows:           irm guise.sh/install.ps1 | iex   (powershell)
# pricing:           $0.10/browser-hour · $0/GB — unmetered bandwidth
# docs:              guise.sh/docs · guise.sh/api · guise.sh/pricing

guise▌

browsers for agents.

A real Chrome browser, ready in about 180ms. Drive it with Playwright, Puppeteer, or plain CDP.

$0.10 / browser-hour

$0 / GB. Bandwidth included.

get an api key →api reference

https://example.com● cdp
sign in↖ your agent, mid-click
proxy egress · playwright connected · created in 180ms
# install the cli
$ curl -fsSL guise.sh/install | sh
$ guise auth <key> && guise new
────────────────────────────────────────────────────────────────

built for agents

It speaks CDP, so Playwright and Puppeteer connect in one line. Need 30 browsers? Make 30 requests.

180ms

Median time from request to a browser you can drive.

isolated

One browser per session, on its own virtual machine.

looks human

Stealth built in, with residential IPs included in the price.

auto-cleanup

Set a timer and the browser deletes itself when it runs out.

────────────────────────────────────────────────────────────────

## Easy to use API

// or straight from playwright
const { connectUrl } = await fetch("https://api.guise.sh/v1/sessions", {
  method: "POST",
  headers: { "x-api-key": process.env.GUISE_KEY },
  body: JSON.stringify({ ttlSec: 900 }),
}).then((r) => r.json());

const browser = await chromium.connectOverCDP(connectUrl);
const page = await browser.contexts()[0].newPage();
await page.goto("https://example.com");

full api reference →

────────────────────────────────────────────────────────────────

## faq

What is a session?
One browser, yours alone, that you drive over CDP. When you delete it, or its timer runs out, it is gone for good.
How fast does one start?
About 180ms from your request to a browser you can use.
How is it metered?
Per second, at $0.10 per browser-hour. Bandwidth and proxies are included. Billing stops when the browser is deleted.
Concurrency limits?
5 concurrent browsers during beta. Contact us for a higher limit.
────────────────────────────────────────────────────────────────

start now.

$10 of free credit. No card needed.

get an api key →