Skip to content
CloudBrowser API · REST + Chrome DevTools Protocol

Real Chrome in the cloud, one API call away.

POST /Browser/Open returns the WebSocket address of a fresh, isolated Chrome. Connect with Puppeteer or Playwright and automate it like a local browser — with stealth, proxies, saved sessions and a live remote desktop built in.

  • No Chrome to install or scale
  • Works with Puppeteer and Playwright
  • Up to 25 browsers at once

Request POST

/api/v1/Browser/Open
Authorization: Bearer ••••••••
Content-Type: application/json

{
  "label": "price-check",
  "keepOpen": 300,
  "saveSession": true
}

Response 200

{
  "status": 200,
  "address": "wss://browser.cloudbrowser.ai
    /…/devtools/browser/…"
}

Isolated Chrome · stealth on · premium proxy

Then connect:puppeteer.connect({ browserWSEndpoint: address })orchromium.connect_over_cdp(address)

How it works

Open. Connect. Automate. Close.

The API manages browsers; the Chrome DevTools Protocol drives them. Any library that speaks CDP works — no proprietary scripting language to learn.

  1. Open

    Ask for a browser with the options you need — a label, a proxy, a saved session.

    POST /Browser/Open
  2. Connect

    Point Puppeteer or Playwright at the address in the response.

    puppeteer.connect({ browserWSEndpoint })
  3. Automate

    Navigate, click, type, extract and screenshot. Watch live on the remote desktop.

    page.goto(url)
  4. Close

    Close the browser when you’re done — or let keepOpen close it once nothing is connected.

    POST /Browser/Close

Quickstart

Your first cloud browser, in minutes.

Grab your API token from the dashboard, set it as CLOUDBROWSER_API_TOKEN and run any of these.

  • Node.js — fetch plus puppeteer-core; no SDK required.
  • Python — requests plus Playwright over CDP.
  • C# — the official .NET SDK opens and connects in one call.
import puppeteer from 'puppeteer-core';

const API = 'https://production.cloudbrowser.ai/api/v1';
const headers = {
  Authorization: `Bearer ${process.env.CLOUDBROWSER_API_TOKEN}`,
  'Content-Type': 'application/json',
};

// 1. Open a stealth Chrome in the cloud
const { status, address } = await fetch(`${API}/Browser/Open`, {
  method: 'POST',
  headers,
  body: JSON.stringify({ label: 'price-check', keepOpen: 300 }),
}).then(res => res.json());
if (status !== 200) throw new Error(`CloudBrowser status ${status}`);

// 2. Drive it with Puppeteer over CDP
const browser = await puppeteer.connect({ browserWSEndpoint: address });
const [page] = await browser.pages();
await page.goto('https://example.com');
console.log(await page.title());

// 3. Close it so usage stops
await browser.close();
open.mjs

Endpoints

A small API that does a lot.

Seven endpoints cover the whole browser lifecycle, plus eight optional AI helpers. Everything else happens over CDP, in the library you already use.

Base URLhttps://production.cloudbrowser.ai/api/v1AuthAuthorization: Bearer <API token>

Browsers

Open, list and close isolated Chrome instances.

  • POST/Browser/OpenOpen a browser and get its CDP WebSocket address.
  • GET/Browser/GetList running browsers with their labels, start times and addresses.
  • POST/Browser/CloseClose a browser by its address.

Remote desktop

Watch a browser live and take over when a human is needed.

  • POST/Browser/StartRemoteDesktopStart a live view of a browser and receive its password.
  • POST/Browser/StopRemoteDesktopStop the live view.

Saved sessions

Keep cookies and localStorage under a label and bring them back later.

  • GET/Session/ListList saved sessions with their creation and update times.
  • POST/Session/RemoveDelete a saved session by label.

AI helpers

Turn page HTML into answers and structured data with your own OpenAI key.

  • POST/AI/QueryAsk a question about a page’s HTML.
  • POST/AI/SummarizeSummarize a page in the language you choose.
  • POST/AI/ToJSON · ToCSV · ToMarkdownConvert HTML into JSON, CSV or Markdown.
  • POST/AI/Translate · Optimize · DescribeTranslate or rewrite text, or describe an image.

Open options

Every browser, configured per call.

Send these fields in the JSON body of POST /Browser/Open. All of them are optional.

FieldTypeDefaultWhat it does
labelstring—Names the browser so you can find it in the dashboard and the API, and keys its saved session. Must be unique among open browsers.
keepOpennumber300Seconds the browser stays open with nothing connected. 0 keeps it open until you close it.
browsernumber00 = Chrome, 2 = Chromium, 3 = Chrome Headless Shell. Chrome gives the best stealth.
headlessbooleanfalseRun the browser without a window.
stealthbooleantrueHuman-like fingerprints that keep bot-detection flags down.
proxyobjectauto{ host, port, username, password } to use your own proxy. Omit it to use the automatically assigned premium proxy.
saveSessionbooleanfalseSave cookies and localStorage under the label — periodically and when the browser closes. Tabs are not saved.
recoverSessionbooleanfalseRestore the saved session for this label when the browser starts.
argsstring[]—Extra Chrome command-line flags.
ignoredDefaultArgsstring[]—Default Chrome flags to leave out.

Responses

Errors you can act on.

Every response is JSON. A successful open returns the browser’s WebSocket address; anything else tells you exactly what to fix.

{
  "status": 200,
  "address": "wss://browser.cloudbrowser.ai/…/devtools/browser/…"
}

CloudBrowser reports errors in the JSON body — status on Open and the AI endpoints, success and error elsewhere — so check the body, not only the HTTP code.

StatusMeaningWhat to do
200SuccessUse the returned address or result.
401Missing or invalid API tokenCheck the Authorization: Bearer header.
402No active subscriptionStart the free trial or choose a plan.
403No usage units leftUpgrade your plan or wait for next month’s units.
404Concurrent browser limit reachedClose a browser, or upgrade to run more at once.
405AI provider errorCheck the OpenAI key and model you sent to an AI endpoint.
406Label already in usePick another label, or close the browser that uses it.

Built in

Everything a scraper or agent needs, out of the box.

Stealth by default

Fingerprints match real devices — timezone, locale, WebGL and screen — so JavaScript-heavy sites behave the way they do for people.

Premium proxy included

Every browser gets an automatically assigned premium proxy on every plan. Pass your own when you need a specific network.

Saved sessions

saveSession and recoverSession keep logins alive between runs under a label — cookies and localStorage, not tabs.

Live remote desktop

Watch any browser live from the dashboard or the API, and take over for logins, one-time codes or CAPTCHAs.

Three browser engines

Chrome by default, plus Chromium and Chrome Headless Shell — each in its own isolated container.

Idle browsers close themselves

keepOpen shuts a browser down when nothing is connected, so a crashed script doesn’t keep using your units.

AI helpers

From HTML to clean data.

Send the HTML you collected and get Markdown, JSON, CSV, a summary or an answer back. The AI endpoints use your own OpenAI API key, so there is no AI markup from us.

  • Query — ask a question about a page.
  • ToJSON, ToCSV, ToMarkdown — structure any page.
  • Summarize and Translate — in the language you choose.
  • Optimize and Describe — rewrite text or describe an image.
AI helpers in the docs
curl -X POST https://production.cloudbrowser.ai/api/v1/AI/ToMarkdown \
  -H "Authorization: Bearer $CLOUDBROWSER_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "html": "<html>…the page you collected…</html>",
    "openAIConfiguration": {
      "apiKey": "<your OpenAI API key>",
      "model": "<OpenAI model>"
    }
  }'

# → { "status": 200, "response": "# Page title\n\n…" }
terminal

Why a cloud browser

Skip the browser infrastructure.

Running headless Chrome yourself works on a laptop. In production, CloudBrowser takes care of the parts that break.

TopicRun Chrome yourselfCloudBrowser
SetupInstall Chrome, fonts and drivers, then keep them patchedOne HTTP call — nothing to install
ScaleProvision servers, queues and autoscalingUp to 25 browsers at once, more on Custom plans
Bot detectionTune flags and fingerprints yourselfStealth fingerprints on by default
ProxiesBuy, rotate and wire up separatelyPremium proxy included, or bring your own
LoginsScript cookie storage yourselfSaved sessions by label
DebuggingLogs and screenshots after the factLive remote desktop on every plan
AI assistantsBuild your own tool layerHosted MCP server and ChatGPT plugin

Limits & usage

Clear limits. Predictable bills.

Plans include a monthly allowance of usage units. One unit is 30 seconds of browser time per tab.

10 / 25 browsers at once

Concurrent browsers on Basic and Premium, with up to 3 tabs each. Custom plans go higher.

300 s idle timeout

The default keepOpen: a browser closes after five minutes with nothing connected. Change it per call.

250 h / 1,000 h a month

Browser time included on Basic ($25/mo, 7-day free trial) and Premium ($90/mo).

FAQ

Questions, answered.

Explore the documentation
What is a cloud browser API?

An API that starts real web browsers on remote servers for you. With CloudBrowser, POST /Browser/Open returns the WebSocket address of an isolated Chrome instance that you drive over the Chrome DevTools Protocol with Puppeteer, Playwright or any other CDP client.

Does it work with Playwright?

Yes. Pass the address returned by /Browser/Open to Playwright’s connectOverCDP in Node.js or connect_over_cdp in Python. Disconnecting Playwright does not close the cloud browser, so call /Browser/Close when you finish.

How do I authenticate?

Send your API token in the Authorization header as Bearer <token>. You find the token in the CloudBrowser dashboard. Keep it on the server — never ship it in browser or mobile code.

How long does a browser stay open?

Until you close it, or until keepOpen seconds pass with nothing connected — 300 by default. Set keepOpen to 0 to keep the browser open until you call /Browser/Close.

How many browsers can I run at once?

10 concurrent browsers on Basic and 25 on Premium, each with up to 3 tabs. Custom plans go higher. Opening one more than your plan allows returns status 404 (browser limit).

Can I use my own proxy?

Yes. Pass proxy with host, port, username and password. Without it, every browser uses an automatically assigned premium proxy.

How do I stay logged in between runs?

Open the browser with a label and saveSession: true, then sign in once — yourself on the remote desktop or with your script. Next time, open with the same label and recoverSession: true: cookies and localStorage come back. Open tabs do not.

Can I watch or debug a browser?

Yes. Call /Browser/StartRemoteDesktop to start a live view and receive its password, or open the browser from your dashboard. Stop the view with /Browser/StopRemoteDesktop.

Do I need the AI endpoints?

No — they are optional helpers. They work on HTML you send and use your own OpenAI API key, so AI usage is billed by OpenAI, not CloudBrowser.

Is there an SDK?

Yes. There are official SDKs for .NET and Node.js, and drop-in MCP toolkits for agent frameworks such as the OpenAI Agents SDK and the Claude Agent SDK. See the SDK page for install commands and examples.

How is API usage billed?

Browser time is counted in usage units: one unit is 30 seconds of browser time per tab. Each plan includes a monthly allowance, and Basic starts with a 7-day free trial.

Open your first cloud browser in one call.

Start a 7-day free trial, copy your API token from the dashboard and run the quickstart.