Chromium at scale
Run thousands of concurrent browser sessions on globally distributed infrastructure. 2 vCPUs per browser, isolated environments, and no shared state between sessions.
Browserbase gives your agents full, real browser sessions that handle the web as it actually is: JavaScript-heavy, bot-resistant, and always changing.
Production-grade Chromium at scale. Every session is isolated, fully configurable, and ready in seconds.
Run thousands of concurrent browser sessions on globally distributed infrastructure. 2 vCPUs per browser, isolated environments, and no shared state between sessions.
Control every aspect of the browser. Set cookies, install extensions, configure proxies, manage uploads and downloads. Your agent gets the exact browser environment it needs.
Sessions launch on demand with no cold starts. Scale from one browser to thousands without provisioning clusters or managing infrastructure.
SOC-2 Type II compliant. Every session runs in full isolation with encrypted connections, credential management through 1Password, and no data persistence between runs.
Persistent sessions, cookies and file download support.
Handle files like a human would: Your agent can upload documents, download reports, and move files between browser sessions.
Stay logged in across runs: Persist cookies and session state between runs so your agent never starts from scratch. Re-authenticate once, then pick up exactly where it left off.
Bring your own extensions: Load Chrome extensions into any session. Ad blockers, custom auth plugins, accessibility tools. Whatever your agent workflow requires, the browser supports it natively.
Fine-grained network control: Route traffic through residential or datacenter proxies. Set custom headers, intercept requests, and shape network behavior to match your agent's access requirements.
Debug in minutes, not hours.
Every browser session is fully observable. Watch sessions live, replay them later, and trace every action your agent took. Rich logs, network traces, and console output in one place. No more guessing why your agent failed on step 47.
The web is full of CAPTCHAs, anti-bot systems, and login walls that stop agents cold. Agent Identity combines strategic partnerships with Cloudflare, Stytch, Fingerprint, and Vercel with automated credential management to get your agents through, every time.
Automated CAPTCHA resolution built into every session. Your agent moves through verification challenges without custom integrations or third-party CAPTCHA services.
Residential and datacenter proxy rotation handled automatically. Geo-target requests, rotate IPs on each session, and avoid rate limits without managing proxy infrastructure yourself.
Securely store and inject login credentials through 1Password integration. Your agent authenticates into gated sites without hardcoding secrets or building custom auth flows.
SDKs, CLIs, and framework integrations to get your agents browsing in minutes.
import { Stagehand } from "@browserbasehq/stagehand";
const stagehand = new Stagehand({
env: "BROWSERBASE",
model: {
modelName: "google/gemini-3-flash-preview",
apiKey: process.env.MODEL_API_KEY,
}
});
await stagehand.init();
const page = stagehand.context.pages()[0];
await page.goto("https://news.ycombinator.com");
// Let AI click
await stagehand.act("click on the comments link for the top story");
// Extract structured data
const data = await stagehand.extract("extract the title and points of the top story");
console.log(data);
await stagehand.close();
import asyncio
from stagehand import AsyncStagehand
async def main() -> None:
# Create client using environment variables:
# BROWSERBASE_API_KEY, BROWSERBASE_PROJECT_ID, MODEL_API_KEY
client = AsyncStagehand()
# Start a new browser session (returns a session helper bound to a session_id)
session = await client.sessions.create(model_name="openai/gpt-5-nano")
try:
await session.navigate(
url="https://news.ycombinator.com",
options={"wait_until": "domcontentloaded"},
)
stream = await session.execute(
agent_config={"model": model_name},
execute_options={
"instruction": "Go to Hacker News and return the titles of the first 3 articles.",
"max_steps": 5,
},
stream_response=True,
x_stream_response="true",
)
result = await _stream_to_result(stream, "execute")
message = result.get("message") if isinstance(result, dict) else result
print("Agent message:", message)
print("\nFull result:")
print(json.dumps(result, indent=2, default=str))
finally:
await session.end()
if __name__ == "__main__":
asyncio.run(main())
Monthly Browser Sessions
36,925,870