Appearance
Usage
How it works
- Call the
/api/v1/Browser/Openendpoint with your token. The API spins up a remote cloud browser and returns a WebSocket DevTools address. - Connect your local Puppeteer (or PuppeteerSharp) client to that address via
browserWSEndpoint. - Drive the browser exactly as you would a local Puppeteer session. CloudBrowser AI handles stealth, proxies, and CAPTCHA at the infrastructure level.
- The browser auto-closes after
keepOpenseconds (default 300).
cURL - open a browser
bash
curl -X POST https://production.cloudbrowser.ai/api/v1/Browser/Open \
-H "Authorization: Bearer $CLOUDBROWSER_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"headless": false, "keepOpen": 300}'On success you receive a JSON object containing the address field. Pass that address to your Puppeteer client.
Node.js minimal example
javascript
import { BrowserService } from 'cloudbrowserai';
import puppeteer from 'puppeteer-core';
const token = process.env.CLOUDBROWSER_API_TOKEN;
const browserService = new BrowserService(token);
// Open a remote browser
const rp = await browserService.open({ headless: false, keepOpen: 300 });
// Connect Puppeteer to the remote endpoint
const browser = await puppeteer.connect({
browserWSEndpoint: rp.address,
});
const page = await browser.newPage();
await page.goto('https://example.com');
const title = await page.title();
console.log('Page title:', title);
// Always close the browser when done
await browser.close();.NET minimal example
csharp
using CloudBrowserAi;
using PuppeteerSharp;
using BrowserService svc = new("YOUR_TOKEN");
var rp = await svc.Open();
var browser = await Puppeteer.ConnectAsync(new ConnectOptions {
BrowserWSEndpoint = rp.Address
});
var page = await browser.NewPageAsync();
await page.GoToAsync("https://example.com");
Console.WriteLine(await page.GetTitleAsync());
await browser.CloseAsync();Error codes
| HTTP status | Meaning |
|---|---|
| 200 | Browser opened successfully |
| 401 | Invalid or missing API token |
| 402 | No active subscription |
| 403 | Unit quota exhausted for billing period |
| 404 | Plan concurrent browser limit reached |
| 406 | Session label already in use |
Navigation timeout
The default navigation timeout is 30 seconds. Override it per call:
javascript
await page.goto('https://example.com', { timeout: 60000 });