cdpfleet documentation
cdpfleet runs real browsers for you. One HTTPS call launches a browser and returns a WebSocket URL; you connect to it with Playwright from Node.js, Python, Java, C# or Go and drive it like a local browser.
How it works
- Launch.
POST https://starter.cdpfleet.com/<browser>/sessionwith your API key and launch options — including your proxy (without one, the free, shared Community proxy is used; on dedicated plans you can use your own VPN instead). You get back{ sessionId, wsUrl }. - Connect. Open
wsUrlwith Playwright'sconnect()for the browser's family (chromium,firefoxorwebkit), sending your API key again. - Drive. Create pages, navigate, intercept requests, take screenshots — anything Playwright does.
- Close.
browser.close()ends the session immediately and stops billing.
Playwright protocol by default, CDP when you ask. Sessions speak Playwright's own protocol: use
browserType.connect(wsUrl) with a Playwright client of the same minor version as the server — 1.60 (1.52 for Rebrowser). Every example on this site pins the right version. Want Puppeteer, connectOverCDP() or a raw CDP client instead? Launch with "cdp": true and connect to the cdpUrl it returns — see CDP & Puppeteer.Start here
- Start hereNew account? From sign-up to a first result, the dashboard, and when to upgrade.
- QuickstartYour first session in five minutes, in five languages.
- Code builderPick a browser, version and options; get ready-to-run code.
- BrowsersAll 12 browsers, their versions and every launch option.
- FunctionsScreenshot, PDF, Markdown or raw page in one HTTP call — no browser to manage.
- Launch optionsEvery option on its own page: what it does, what it's for, which browsers take it.
- ProxiesYour own proxies, pools, per-host rules and live swapping — or the residential proxy by tier and country.
- Residential proxyOne token instead of a proxy account: pick the tier, exit country, device OS and sticky sessions.
- Live view & Launch interactiveWatch or take over a session, or open a browser in the dashboard with no code.
- RecordingsA video of every session, replayed from the dashboard or fetched over the API.
- DownloadsKeep the files a session downloads and fetch them for 2 days after.
- CDP & PuppeteerConnect with Puppeteer or
connectOverCDP, and send raw CDP commands. - MCP serverGive Claude, ChatGPT, Gemini or Cursor a real browser: one URL, sign in with OAuth.
- SDKsNode, Python and Go: launch and connect in one call, waiting when your threads are busy.
- DashboardPlan and usage, live sessions, proxies, traffic per host, sessions and keys.
- Persistent profilesSave a browser session — cookies, storage, logins — and reuse it on the next launch.
- CasesHard problems solved end to end, with code in five languages and real output.
- For AI agentsOne page an AI coding agent reads to use cdpfleet: launch, browsers, proxies, limits, errors. Also
/llms.txt. - Comparecdpfleet vs other services, browser vs browser, version vs version — measured on the fleet.
- UpdatesNew features, and what each new browser version on the fleet changes for scraping — with an RSS feed.
- Plans & pricingShared and dedicated threads, pools, leases and prices.
- Sessions & billingThreads, thread-seconds, leases and timeouts.
- Errors & limitsEvery status code and how to handle it.
Authentication
Every request carries your API key (cdpf_…) in the x-api-key header. Create and revoke keys in the dashboard; to try code at once or hand it to an AI assistant, the dashboard's code builder can copy it with a temporary key that expires after an hour. Connect to a session with the same key that launched it: send it as the x-api-key header of connect(), as the examples do, or append ?api_key=… to wsUrl (or cdpUrl) if your client can't set headers.
Keep keys out of source code — the examples read CDPFLEET_API_KEY from the environment.