Skip to content
Sandbox beta. Payments are simulated and nothing is charged — the browsers are real.

DOCUMENTATION

Ottobrowse API

Three things to know: you ask for a browser, you connect to it, and you give it back. Everything below is detail on those three.

Base URL https://ottobrowse.com/api/browser/v1. Every request carries Authorization: Bearer <key>. Keys are stored only as SHA-256 hashes and are never read from a query string. The machine-readable spec is at /ottobrowse.openapi.json.

Create a browser

curl https://ottobrowse.com/api/browser/v1/sessions \
  -H "Authorization: Bearer $OTTOBROWSE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: nightly-scrape-2026-09-12' \
  -d '{"timeoutSeconds": 900}'

A 201 carries id, status, expiresAt, connectUrl and liveViewUrl. The connect URL grants control of that browser — keep it on your server and share only the live view, and only with whoever should be driving. Both are omitted from lists and from ended sessions.

Endpoints

POST/sessionsCreate a browser. Requires an Idempotency-Key of 8–128 letters, digits, _ or -.
GET/sessions?offset=0Up to 50 of your sessions, newest first. Never includes connection secrets.
GET/sessions/:idOne session, with connectUrl and liveViewUrl while it is running.
DELETE/sessions/:idStop and release. Safe to retry; 202 while a startup is still being cancelled.
GET/usageBrowser-hours this period, active sessions, and your plan's limits.

Retries and idempotency

Reuse the same idempotency key and options after a network error: a duplicate returns the existing session (202 while it is still starting, otherwise 200), even if it has since ended. Changing the options under a used key returns 409 — a genuinely new job needs a new key. This is what stops a timeout from quietly leaving you paying for two browsers.

400The options were not valid — usually timeoutSeconds outside the plan's range.
401The key is missing, wrong, revoked, or its project is disabled.
402No active plan. Pick one on the dashboard.
404No such session — also the answer for another project's session.
409That idempotency key was already used with different options.
429A limit was hit: concurrency, sessions per day, or included hours with no overage.
503Capacity or a provider failure. Carries Retry-After.

Errors are { "error": { "code", "message", "requestId" } }. Quote the request id — it is in X-Request-Id on every response — when asking for help.

Ottobrowse compared with Browserbase

Written to be useful rather than flattering. If a row matters to you and the answer is “No”, take the other product — we would rather lose the signup than a month of your time.

CAPABILITYOTTOBROWSEBROWSERBASE
Sessions API, create/list/get/releaseYesYes
Connect over CDP (Playwright, Puppeteer)YesYes
Selenium / WebDriverNo — CDP onlyYes
Live view of a running sessionYes, noVNC, token-gatedYes
Human takeover through the live viewYes, typing includedYes
IsolationOne Firecracker microVM per sessionIsolated sessions
Egress restrictions (no private/metadata ranges, HTTPS only)Yes, enforced by the VM firewallNot offered as a guarantee
Idempotent session creationYes, requiredNo
Max session length6 hoursVaries by plan
ConcurrencyUp to 50 on ScaleUp to 100 on Startup
Persistent contexts / saved loginsInternal to Dispatch only — not in the public APIYes
Residential and datacenter proxiesNoYes
Stealth mode / fingerprint spoofingNoYes
CAPTCHA solvingNoYes on paid plans
Session recording and replayNoYes
Session logs APINoYes
Official SDK packagesA TypeScript client to copy; no published packageNode and Python
RegionsOne (iad1)Multiple
Uptime SLANoOn Enterprise

The short version: if you are driving ordinary sites with Playwright and sometimes need a person to step in, Ottobrowse does that, cheaper, with stronger isolation guarantees. If your target actively fights automation, you want proxies, stealth and CAPTCHA solving — and we do not have them.

Pricing · Get a key