Appearance
Usage
Minimal Example: Node.js (Playwright + Browserbase SDK)
This creates a cloud browser session, navigates to a URL, takes a screenshot, and closes the session.
typescript
import { chromium } from "playwright-core";
import Browserbase from "@browserbasehq/sdk";
const bb = new Browserbase({
apiKey: process.env.BROWSERBASE_API_KEY,
});
(async () => {
// Create a new cloud browser session
const session = await bb.sessions.create();
// Connect Playwright to the cloud browser via CDP
const browser = await chromium.connectOverCDP(session.connectUrl);
const page = browser.contexts()[0].pages()[0];
// Navigate and capture
await page.goto("https://www.browserbase.com/");
await page.screenshot({ path: "screenshot.png", fullPage: true });
console.log(`Session recording: https://www.browserbase.com/sessions/${session.id}`);
await browser.close();
})();Minimal Example: Python (Playwright + Browserbase SDK)
python
import os
from playwright.sync_api import sync_playwright
from browserbase import Browserbase
bb = Browserbase(api_key=os.environ["BROWSERBASE_API_KEY"])
# Create a new cloud browser session
session = bb.sessions.create()
with sync_playwright() as playwright:
browser = playwright.chromium.connect_over_cdp(session.connect_url)
page = browser.contexts[0].pages[0]
page.goto("https://browserbase.com/")
page.screenshot(path="screenshot.png")
print(f"Session recording: https://www.browserbase.com/sessions/{session.id}")
browser.close()Key Concepts
Sessions are cloud Chromium instances you connect to over CDP. Each session has:
- A
connectUrl(CDP WebSocket endpoint your Playwright/Puppeteer connects to) - A session
idfor looking up recordings in the Browserbase dashboard - Configurable options: proxy, stealth mode, CAPTCHA solving, geolocation
Contexts (optional) let you reuse cookies and browser state across sessions. Pass a contextId when creating a session to persist login state.
Fetch API (no full browser needed):
typescript
const bb = new Browserbase({ apiKey: process.env.BROWSERBASE_API_KEY });
const result = await bb.fetch("https://example.com", { format: "markdown" });
console.log(result.content);Running with Puppeteer
bash
npm i puppeteer-core @browserbasehq/sdktypescript
import puppeteer from "puppeteer-core";
import Browserbase from "@browserbasehq/sdk";
const bb = new Browserbase({ apiKey: process.env.BROWSERBASE_API_KEY });
const session = await bb.sessions.create();
const browser = await puppeteer.connect({ browserWSEndpoint: session.connectUrl });
const page = await browser.newPage();
await page.goto("https://browserbase.com/");
await browser.close();