tools/integrations/browserbase.md
Headless browser as a service. Spin up real Chromium browsers via API, drive them with Playwright/Puppeteer, get full session recordings. Useful when a target site requires JS rendering, user interaction, or session state that simple HTTP fetches can't handle.
| Integration | Available | Notes |
|---|---|---|
| API | ✓ | REST API for session management |
| MCP | ✓ | Official Browserbase MCP server (Stagehand) |
| CLI | - | None official |
| SDK | ✓ | Node, Python; drives Playwright/Puppeteer |
x-bb-api-key: YOUR_API_KEYBROWSERBASE_API_KEY, BROWSERBASE_PROJECT_IDhttps://api.browserbase.comPOST https://api.browserbase.com/v1/sessions
x-bb-api-key: YOUR_API_KEY
{
"projectId": "YOUR_PROJECT_ID"
}
Returns a session ID and a WebSocket URL (connectUrl) you connect to with Playwright or Puppeteer.
import { chromium } from 'playwright-core';
import { Browserbase } from '@browserbasehq/sdk';
const bb = new Browserbase({ apiKey: process.env.BROWSERBASE_API_KEY });
const session = await bb.sessions.create({ projectId: process.env.BROWSERBASE_PROJECT_ID });
const browser = await chromium.connectOverCDP(session.connectUrl);
const page = await browser.newPage();
await page.goto('https://joescoffeeshop.com');
const html = await page.content();
const title = await page.title();
await browser.close();
GET https://api.browserbase.com/v1/sessions/{sessionId}/logs
Useful for debugging when a scrape doesn't return what you expected — session recordings show exactly what the browser saw.
Browserbase ships Stagehand, a Playwright wrapper with act(), extract(), and observe() methods that take natural-language instructions instead of CSS selectors. Stagehand also publishes an MCP server.
import { Stagehand } from '@browserbasehq/stagehand';
const stagehand = new Stagehand({ env: 'BROWSERBASE' });
await stagehand.init();
await stagehand.page.goto('https://joescoffeeshop.com');
const contact = await stagehand.page.extract({
instruction: "Extract the business phone number, email, and street address",
schema: { phone: 'string', email: 'string', address: 'string' }
});
For simple "scrape a page as markdown," Firecrawl is lower-overhead. Use Browserbase when you actually need the browser-as-a-service model.
Same hard rules as Firecrawl. Browserbase gives you a more powerful browser, which means the temptation to bypass anti-scraping defenses is higher. Don't:
Use Browserbase for: individual public business sites the user has a URL for, where rendering or interaction is required.