Browserbase Python SDK
Python SDK for Browserbase, a serverless headless browser platform. Provides remote browser sessions accessible via Playwright/Selenium CDP connections. Has undergone a complete SDK rewrite at v1.0.0 (October 2024) — the old high-level API (browserbase.load(), browserbase.screenshot()) is gone. Current SDK is a low-level Stainless-generated client focused on session lifecycle management.
Warnings
- breaking v1.0.0 (October 2024) is a complete rewrite. The old python-sdk (GitHub: browserbase/python-sdk) is archived as deprecated. All old high-level methods — browserbase.load(), browserbase.screenshot() — no longer exist. Calling them on v1.x raises AttributeError.
- breaking Old SDK constructor accepted API key as positional argument: Browserbase(os.environ['BROWSERBASE_API_KEY']). New SDK requires keyword argument: Browserbase(api_key=...).
- gotcha The browserbase package only manages session lifecycle (create, list, stop). It does NOT include Playwright or Selenium. You must install playwright separately and call playwright install chromium before CDP connections work.
- gotcha Sessions are billed per second of runtime. Forgetting to close the browser (browser.close()) or not setting a timeout leaves sessions running and accumulates charges. Default timeout is 60 seconds but can be set up to 21600 (6 hours).
- gotcha browser_settings.viewport is ignored when advancedStealth=True. Stealth mode overrides viewport to match the spoofed OS fingerprint.
- gotcha Stagehand (pip install stagehand) is a separate AI-native automation framework built on top of Browserbase. It is not part of the browserbase package. Tutorials mixing stagehand and browserbase imports are using two different packages.
Install
-
pip install browserbase -
pip install browserbase playwright && playwright install chromium -
pip install stagehand
Imports
- Browserbase (current)
from browserbase import Browserbase bb = Browserbase(api_key=os.environ['BROWSERBASE_API_KEY']) session = bb.sessions.create(project_id=os.environ['BROWSERBASE_PROJECT_ID']) browser.connect_over_cdp(session.connect_url)
Quickstart
import os
from playwright.sync_api import sync_playwright
from browserbase import Browserbase
bb = Browserbase(api_key=os.environ["BROWSERBASE_API_KEY"])
# Create a remote browser session
session = bb.sessions.create(
project_id=os.environ["BROWSERBASE_PROJECT_ID"],
browser_settings={
"blockAds": True,
"recordSession": True,
}
)
# Connect via CDP and use Playwright normally
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(session.connect_url)
context = browser.contexts[0]
page = context.pages[0]
page.goto("https://news.ycombinator.com/")
print(page.title())
page.screenshot(path="screenshot.png")
browser.close()
print(f"Replay: https://browserbase.com/sessions/{session.id}")