Browserbase

--- name: browserbase description: "Browser automation, Fetch API, Search API, Browserbase cloud APIs, Browserbase Functions, templates, diagnostics, and skill installation for AI

company route


name: browserbase description: "Browser automation, Fetch API, Search API, Browserbase cloud APIs, Browserbase Functions, templates, diagnostics, and skill installation for AI agents." compatibility: "Requires the browse CLI (npm install -g browse). Remote Browserbase sessions and cloud API commands require BROWSERBASE_API_KEY. Local mode uses Chrome/Chromium on the machine." license: MIT allowed-tools: Bash metadata: openclaw: requires: bins: - browse install: - kind: node package: browse bins: [browse] homepage: https://github.com/browserbase/cli


Browserbase

The complete guide to using Browserbase with AI agents. This skill uses the unified browse CLI for Browserbase workflows.

Quick Setup

Before running any commands, present the user with a preliminary setup checklist:

Here's what I'll do to get you set up:

- [ ] Install/update prerequisites (Node.js, Browserbase CLI)
- [ ] Configure Browserbase credentials if remote/cloud features are needed
- [ ] Verify the CLI and environment
- [ ] Use the right browse subcommand for the task

Shall I proceed?

Wait for the user to confirm before continuing.

Step 1 — Install the CLI:

npm install -g browse

Step 2 — Install or refresh agent skills:

browse skills install

Step 3 — Set credentials for remote/cloud commands when needed:

Sign up at browserbase.com if you don't have an account. Then get your API key from browserbase.com/settings.

export BROWSERBASE_API_KEY="your_api_key"

Step 4 — Verify the CLI and Browserbase access:

which browse || npm install -g browse
browse cloud projects list

If this returns your project list, you're ready. If this fails or BROWSERBASE_API_KEY is not set, direct the user to browserbase.com/settings to copy their API key, then:

export BROWSERBASE_API_KEY="their_key"

Do not proceed until browse cloud projects list returns successfully.

Use browse --help and browse <topic> --help for exact flags before running unfamiliar commands.

Choosing the Right Tool

Task Tool Why
Browse a website, click, type, scrape JS pages browse CLI Full browser with interaction
Get HTML/JSON from a static page Fetch API Fast, no browser needed
Find URLs for a topic Search API Structured results, no browsing
Manage Browserbase projects, sessions, contexts, extensions browse cloud Unified Browserbase cloud administration
Run automation on a schedule or webhook browse functions Functions development and deployment
Scaffold an example project browse templates Starter templates with optional language selection
Diagnose local or remote setup issues browse doctor Structured environment checks

Browser Automation

Automate browser interactions using the browse CLI.

Setup

which browse || npm install -g browse

Browser Target Selection

Browser driver commands auto-start the browse daemon when needed. Choose the browser target per command with flags:

browse open https://example.com --local
browse open https://example.com --local --headed
browse open https://example.com --remote
browse open https://example.com --auto-connect
browse open https://example.com --cdp 9222
browse open https://example.com --cdp ws://127.0.0.1:9222/devtools/browser/<id>
browse open https://example.com --session research

Use local mode for development, localhost, trusted sites, and fast iteration. Use --auto-connect when the user explicitly wants to reuse an already-running local Chrome session with existing cookies or login state. Use remote mode when Browserbase credentials are available and the site needs hosted browser infrastructure, Verified browser mode, CAPTCHA solving, proxies, or session persistence.

Environment Selection (Local vs Remote)

Local mode

Remote mode (Browserbase)

Core Commands

Navigation

browse open <url>
browse reload
browse back
browse forward
browse wait load
browse wait load networkidle --timeout 45000
browse wait selector "#result" --state visible

Page State

browse snapshot
browse snapshot --compact
browse refs
browse get url
browse get title
browse get text body
browse get markdown body
browse get html "#main"
browse get value "#email"
browse screenshot --path page.png

Use browse snapshot as your default for understanding page state. Only use screenshots when you need visual context.

Interaction

browse click @0-5
browse fill @0-8 "search query" --press-enter
browse type "text for the focused element"
browse press Enter
browse select "select[name=country]" "United States"
browse upload @0-12 ./file.pdf
browse highlight @0-5
browse is visible "#modal"

Mouse and Viewport

browse mouse click 240 320
browse mouse hover 240 320
browse mouse drag 80 80 310 100
browse mouse scroll 500 300 0 600
browse viewport 1280 720

Tabs, Network, and CDP

browse tab list
browse tab new https://example.com
browse tab switch <target-id>
browse tab close <target-id>
browse network on
browse network path
browse network clear
browse cdp 9222 --pretty

Session Management

browse doctor
browse doctor --json
browse status
browse status --session research
browse stop
browse stop --force

Typical Workflow

  1. browse open <url> --local or --remote — navigate to the page
  2. browse snapshot — read the accessibility tree and get element refs
  3. browse click @ref / browse type <text> / browse fill @ref <value> [--press-enter] — interact
  4. browse snapshot — confirm the action worked
  5. Repeat as needed
  6. browse stop — close the browser when done

Mode Comparison

Feature Local Browserbase Remote
Speed Faster Slightly slower
Setup Chrome/Chromium required API key required
Reuse local cookies With --auto-connect N/A
Verified browser mode No Yes
CAPTCHA solving No Yes
Proxies No Yes
Session persistence No Yes
Best for Development/simple pages Protected sites, bot detection, production automation

Troubleshooting

Fetch API

Fetch a page and return its content, headers, and metadata without a browser session.

When to Use

Use Fetch for simple HTTP requests where you do not need JavaScript execution. Use Browser Automation when you need to interact with or render the page.

Using with cURL

curl -X POST "https://api.browserbase.com/v1/fetch" \
  -H "Content-Type: application/json" \
  -H "X-BB-API-Key: $BROWSERBASE_API_KEY" \
  -d '{"url": "https://www.browserbase.com"}'

Using with the CLI

browse cloud fetch https://www.browserbase.com
browse cloud fetch https://www.browserbase.com --allow-redirects
browse cloud fetch https://www.browserbase.com --proxies --output page.html

Request Options

Field Type Default Description
url string required The URL to fetch
allowRedirects boolean false Follow HTTP redirects
allowInsecureSsl boolean false Bypass TLS verification
proxies boolean false Enable proxy support

Using with SDKs

Node.js / TypeScript:

npm install @browserbasehq/sdk
import { Browserbase } from "@browserbasehq/sdk";

const bb = new Browserbase({ apiKey: process.env.BROWSERBASE_API_KEY });

const response = await bb.fetchAPI.create({
  url: "https://www.browserbase.com",
  allowRedirects: true,
});

console.log(response.statusCode);
console.log(response.content);

Python:

pip install browserbase
from browserbase import Browserbase
import os

bb = Browserbase(api_key=os.environ["BROWSERBASE_API_KEY"])

response = bb.fetch_api.create(
    url="https://www.browserbase.com",
    allow_redirects=True,
)

print(response.status_code)
print(response.content)

Response

Field Type Description
id string Request identifier
statusCode integer HTTP status code
headers object Response headers
content string Response body
contentType string MIME type
encoding string Character encoding

Error Handling

Status Meaning
400 Invalid request body
429 Concurrent request limit exceeded
502 Response too large or TLS verification failed
504 Request timed out

Search API

Search the web and return structured results without a browser session.

When to Use

Use Search to find URLs and metadata. Use Fetch to retrieve content from those URLs. Use Browser Automation when you need to interact with the pages.

Using with cURL

curl -X POST "https://api.browserbase.com/v1/search" \
  -H "Content-Type: application/json" \
  -H "X-BB-API-Key: $BROWSERBASE_API_KEY" \
  -d '{"query": "browser automation", "numResults": 5}'

Using with the CLI

browse cloud search "browser automation"
browse cloud search "web scraping" --num-results 5
browse cloud search "AI agents" --output results.json

Request Options

Field Type Default Description
query string required The search query
numResults integer 10 Number of results (1-25)

Response

Field Type Description
requestId string Unique identifier for the search request
query string The search query that was executed
results array List of search result objects

Error Handling

Status Meaning
400 Invalid query or parameters
403 Invalid or missing API key
429 Rate limit exceeded
500 Internal server error

Cloud APIs

Use browse cloud for Browserbase platform APIs.

Projects

browse cloud projects list
browse cloud projects get <project-id>
browse cloud projects usage <project-id>

Sessions

browse cloud sessions create
browse cloud sessions create --proxies --verified
browse cloud sessions create --solve-captchas --context-id <context-id> --persist
browse cloud sessions list
browse cloud sessions get <session-id>
browse cloud sessions update <session-id>
browse cloud sessions debug <session-id>
browse cloud sessions logs <session-id>
browse cloud sessions downloads get <session-id> --output ./downloads.zip
browse cloud sessions uploads create <session-id> ./file.pdf

Contexts

browse cloud contexts create
browse cloud contexts get <context-id>
browse cloud contexts update <context-id>
browse cloud contexts delete <context-id>

Extensions

browse cloud extensions upload ./extension.zip
browse cloud extensions get <extension-id>
browse cloud extensions delete <extension-id>

Cloud Fetch and Search

browse cloud fetch https://example.com
browse cloud search "browser automation"

Use --verified when the task needs Browserbase Verified browser mode.

Functions

Use browse functions to create, develop, publish, and invoke Browserbase Functions.

Prerequisites

export BROWSERBASE_API_KEY="your_api_key"

Create a Function

browse functions init my-function
browse functions init my-function --package-manager npm
cd my-function
pnpm install

Generated projects import defineFn from @browserbasehq/sdk-functions.

Development

browse functions dev index.ts

Deploy

browse functions publish index.ts
browse functions publish index.ts --dry-run

Invoke Deployed Functions

browse functions invoke <function-id> --params '{"url":"https://example.com"}'
browse functions invoke --check-status <invocation-id>

Templates

Use browse templates to discover and scaffold Browserbase starter templates.

browse templates list
browse templates list --tag Python --source Browserbase
browse templates find google-trends-keywords
browse templates find amazon --json
browse templates clone google-trends-keywords
browse templates clone amazon-product-scraping --language python ./my-scraper
browse templates clone dynamic-form-filling ./form-bot --language typescript

Use browse templates find before cloning when the exact slug is uncertain. Use --language typescript or --language python to choose the generated project runtime when a template supports both.

Skills

Install or refresh this bundled CLI skill:

browse skills install
browse skills add <domain>/<task>

Safety Notes

Best Practices

  1. Start simple: use Search to find URLs, Fetch to get content, Browser Automation only when interaction is needed.
  2. Run the real command and inspect its output instead of guessing.
  3. Use browse snapshot before interacting so you have current refs.
  4. Re-run browse snapshot after navigation or DOM-changing actions because refs can change.
  5. Prefer refs from snapshots for clicks and uploads; use selectors or XPath when refs are unavailable.
  6. Use --local for localhost and repeatable development; use --remote for protected sites or Browserbase-specific behavior.
  7. Use --auto-connect only when reusing a local logged-in Chrome session is intended.
  8. Use browse doctor when session startup, browser discovery, CDP attach, or Browserbase auth looks wrong.
  9. Set credentials via env vars rather than inline flags.
  10. Use browse stop when finished to clean up daemon state.
  11. For unfamiliar command details, run browse <topic> --help and follow the exact dash-case flags.

Troubleshooting