Skip to content

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 id for 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/sdk
typescript
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();