cdpfleet Pre-launch Get early access

cdpfleet / Profiles

Persistent profiles

Log in once. Stay logged in.

Launch with "profile": "name" and the browser restores that profile's cookies, localStorage and IndexedDB, then saves them again when the session ends — so the next launch starts signed in.

  • 20–30profiles per thread
  • 50 MBper profile
  • 10browsers

How it works

  • The first launch with a new name creates the profile; every later launch restores it.
  • Work in browser.contexts()[0] — that context is the profile. A context you create with newContext() is a throwaway one and isn't saved.
  • When the session ends and the browser has exited cleanly, the profile is saved: cookies (session cookies included), localStorage and IndexedDB.
  • "profile": {"id": "shop-login", "mode": "readonly"} restores without saving, so many sessions can share one login in parallel; a second writer gets 409 profile_in_use.
Chrome that stays logged in between sessions
// 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/chrome/session', {
  method: 'POST',
  headers: { 'x-api-key': KEY, 'content-type': 'application/json' },
  body: JSON.stringify({
    proxy: 'http://user:[email protected]:8080',
    headless: 'new',
    profile: 'shop-login',
  }),
});
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 context = browser.contexts()[0]; // the saved profile — a new context isn't saved
const page = context.pages()[0] ?? await context.newPage();
await page.goto('https://example.com');
console.log(await page.title());
await browser.close(); // ends the session and stops billing

Browsers and limits

  • Profiles work on Google Chrome, Microsoft Edge, Brave, Opera, Yandex Browser, Chromium, Patchright, Camoufox, Firefox, WebKit.
  • A Camoufox profile also keeps its device: the fingerprint generated on the first launch is saved and reused, so a site sees the same computer every time.
  • 20 profiles per shared thread and 30 per dedicated thread (at least 100 per account), 50 MB per saved profile, included in every paid plan (not on Community). List and delete them with GET / DELETE /v1/me/profiles.
  • Each profile is encrypted with its own key and stored privately in Germany.

Without profiles

Playwright's storageState still works for carrying cookies and storage between sessions in your own code, and keep_alive on dedicated threads keeps the same browser across reconnects.