Log in once. Run authenticated sessions at scale.
Stop rebuilding login flows for every automation run. Authenticated Profiles capture your browser’s authentication state once, so every session after starts already signed in.
What you can do with Authenticated Profiles
Authenticated Profiles move login state out of your scripts and into the session launch layer. Your authentication process stays clean. User identity is verified once. Workers can scale without credential sprawl.
?profile=<name> at launch so every session starts from the same saved state. No repeated login flows, no coordination between workers.Three ways to create a profile
How you create a profile depends on how you log in. Each way works over the API and CLI for automation, or from the dashboard if you’d rather click through it. The result is the same portable profile you reuse with ?profile=<name>.
Sign in via remote browser
Browserless opens a remote browser you drive through a live URL. Log in by hand – including MFA, CAPTCHA, or magic-link steps – then save. Prefer to script it? Drive the same flow with Puppeteer, Playwright, or raw CDP and call Browserless.saveProfile. Best when the login needs a human or a custom flow.
// scripted form – the dashboard does this for you, no code
const cdp = await page.createCDPSession();
await cdp.send('Browserless.saveProfile', { name: 'vendor-dashboard' });Sync from local browser
The Browserless CLI captures cookies, localStorage, and IndexedDB from a Chrome, Edge, or Brave already running on your machine and uploads them as a cloud profile. Extraction runs locally, so you can filter sensitive domains before anything leaves your machine.
CLI docsnpm install -g @browserless.io/cli
browserless auth login --region sfo YOUR_TOKEN
browserless profile upload \
--browser "chrome" \
--profile "Default" \
--name "vendor-dashboard"Autologin with 1Password
Connect a 1Password service account and Autologin signs in to your sites server-side, then saves the profile for you. No login steps to write, and secret values never reach your code. Best when you want a hands-off, credentials-never-in-code profile.
Autologin docscurl -X POST "https://production-sfo.browserless.io/integrations/onepassword/profile?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "name": "vendor-dashboard",
"integrationId": "op_int_...",
"allowedDomains": ["https://app.example.com"] }'What changes in your automation workflow
Unlike most authenticated browser automation, Authenticated Profiles doesn’t force you to repeat the authentication process on every run or keep a fragile live session alive.
The old pattern
Authenticated Profiles
?profile=vendor-dashboard?profile=vendor-dashboard?profile=vendor-dashboardOne session never scales
A long-running session might feel like the easier option, but it creates a ceiling on concurrency and makes strong authentication harder to maintain.
Before
- Login state is tied to one live session or machine
- Parallel work needs multiple logins or fragile session sharing
- Routing and concurrency get harder as you scale
- Session changes can mutate the auth state you depend on
- Login logic ends up inside every script
Authenticated Profiles
- Login state saved as a portable, reusable profile
- One profile fans out to many isolated authenticated sessions
- Any eligible worker can hydrate the same profile
- Each session gets a clean copy – changes stay isolated
- Authentication becomes a launch-time option
Get started with Authenticated Profiles
Prefer to script the remote-browser sign-in instead of clicking through the dashboard? These four steps drive that same login flow in code. You create a session, complete the login, save the state with Browserless.saveProfile, then reuse it on any session with ?profile=<name>.
Launch a creation session
Call POST /profile with a name for the profile. You’ll get back a WebSocket URL to connect to and a stop URL to terminate the session early. The creation session expires after 10 minutes if you don’t save before then.
curl -X POST "https://production-sfo.browserless.io/profile?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "name": "vendor-dashboard" }'Connect and authenticate
Connect to the returned WebSocket URL and complete the login with a CDP-capable client. For CAPTCHAs, two-factor authentication, or login flows that are hard to script, hand off the creation session to a human via a live URL.
const browser = await puppeteer.connect({ browserWSEndpoint: session.connect });
const page = await browser.newPage();
await page.goto('https://app.example.com/login');
await page.type('#email', process.env.APP_EMAIL);
await page.type('#password', process.env.APP_PASSWORD);
await page.click('button[type="submit"]');
await page.waitForNavigation();Save the profile
Once the browser holds the authenticated state, send the Browserless.saveProfile CDP method. Browserless captures cookies, localStorage, and IndexedDB from the live browser and stores it under the profile name.
const cdp = await page.target().createCDPSession();
const result = await cdp.send('Browserless.saveProfile', { name: 'vendor-dashboard' });
await browser.close();
// { ok: true, profileId: '...', name: 'vendor-dashboard', cookieCount: 15, originCount: 1 }Use the profile in any session
Pass ?profile=<name> on any browser-launching request and Browserless loads the captured state before your code runs. It works across WebSocket connections, REST endpoints, BrowserQL, and Persisted Sessions.
const browser = await puppeteer.connect({
browserWSEndpoint: `wss://production-sfo.browserless.io?token=${TOKEN}&profile=vendor-dashboard`,
});
const page = await browser.newPage();
await page.goto('https://app.example.com/dashboard'); // already logged inHow to get the most out of Authenticated Profiles
Wherever a browser needs to access a secure web application behind a login, Authenticated Profiles remove the overhead of getting it there. Here are the most common patterns.
Use Authenticated Profiles with AI agents
Browserless’s MCP integration and Authenticated Profiles give AI agents access to the real, logged-in web without handling user credentials on every call. Create the agent’s starting profile automatically with Autologin, so no login flow or secret ever lives in the agent.
Start with one login, scale to many sessions
Authenticated Profiles are available on Browserless today.
Sign up free – no credit card required.