cdpfleet Docs Sign up free

Quickstart

Just want your AI assistant to use a browser? Add https://cdpfleet.com/mcp to Claude, ChatGPT, Cursor or Claude Code as a connector (MCP server) and sign in when it asks — no API key, no code. Step by step for each app: MCP setup.

From code

The examples below run as they are: set your API key and nothing else. No proxy and no local browsers are needed.

  1. Create an API key in the dashboard and export it:
    export CDPFLEET_API_KEY=cdpf_...
  2. Install the packages listed at the top of your language's example.
  3. Run it. It launches a headless Chromium on the fleet, opens example.com through the proxy included with your plan and prints Example Domain.

With the SDK

The cdpfleet SDK (npm and PyPI cdpfleet, a Go module) launches with the right retries when the fleet is busy and closes the session for you; you bring your own Playwright. The C# and Java SDKs aren't published yet — use With Playwright only.

// npm install cdpfleet [email protected]
// Browsers run on cdpfleet, so no `npx playwright install` is needed.
import { chromium } from 'playwright';
import { Cdpfleet } from 'cdpfleet';

const fleet = new Cdpfleet(); // reads CDPFLEET_API_KEY
const options = {
  headless: 'new',
};

const session = await fleet.launch('chromium', options);
const browser = await session.connect(chromium);
const page = await browser.newPage();
await page.goto('https://example.com');
console.log(await page.title());
await session.close(); // ends the session and stops billing

With Playwright only

No SDK: one HTTP request launches the browser, then Playwright connects to the wsUrl it returns. Works in all five languages.

// npm install [email protected]
// Browsers run on cdpfleet, so no `npx playwright install` is needed.
import { chromium } from 'playwright';

const KEY = process.env.CDPFLEET_API_KEY;

// 1. Launch the browser
const res = await fetch('https://starter.cdpfleet.com/chromium/session', {
  method: 'POST',
  headers: { 'x-api-key': KEY, 'content-type': 'application/json' },
  body: JSON.stringify({
    headless: 'new',
  }),
});
if (!res.ok) throw new Error(`launch failed: ${res.status} ${await res.text()}`);
const { wsUrl } = await res.json();

// 2. Connect and drive it
const browser = await chromium.connect(wsUrl, { headers: { 'x-api-key': KEY } });
const page = await browser.newPage();
await page.goto('https://example.com');
console.log(await page.title());
await browser.close(); // ends the session and stops billing

Use your own proxy (optional)

Without proxy, sessions use the Community proxy, free on every plan: shared by everyone who uses it, so slower at peak times, and a launch can be refused with 503 community_capacity_full when it's full. Our three test launches on 2026-11-04 each got a different US IP. For your own proxy, add it to the launch options — the same key in every language and in the SDK:

{
  "headless": "new",
  "proxy": "http://user:[email protected]:8080"
}

Formats (HTTP, SOCKS5), pools, per-host rules and countries: Proxies.

Next: pick another browser, build a custom configuration in the code builder, or browse the examples and benchmarks.

What the launch returns

{
  "sessionId": "46903d7c-87d2-4320-b85b-cf109c0ec984",
  "wsUrl": "wss://router01.cdpfleet.com/session/46903d7c-87d2-4320-b85b-cf109c0ec984",
  "browser": "chromium",
  "resource_class": "linux_headless",
  "weight": 1,
  "memory_mb": 4096,
  "expires_at": "2026-09-30T13:00:00.000Z"
}