Claude-skill-registry browserbase
Cloud browser infrastructure for AI agents - create sessions, persist contexts, and automate browsers
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/browserbase" ~/.claude/skills/majiayu000-claude-skill-registry-browserbase && rm -rf "$T"
skills/data/browserbase/SKILL.mdBrowserbase
Cloud browser infrastructure for AI agents and automation. Create browser sessions, persist authentication with contexts, debug live sessions, and retrieve session recordings.
Official docs: https://docs.browserbase.com/
When to Use
Use this skill when you need to:
- Create cloud browser sessions for Playwright/Puppeteer automation
- Persist login state and cookies across sessions using Contexts
- Debug browser sessions in real-time with live URLs
- Retrieve session recordings and logs for debugging
- Manage browser sessions programmatically (list, get, update)
- Run browser automation with proxy and stealth support
Prerequisites
- Create an account at https://www.browserbase.com/
- Get your API Key from the dashboard Settings page
- Get your Project ID from the dashboard Settings page
Set environment variables:
export BROWSERBASE_API_KEY="your-api-key-here" export BROWSERBASE_PROJECT_ID="your-project-id-here"
Note: Free plans have a concurrent session limit of 1. You'll receive a 429 error if you exceed this limit. Check your plan details in the Browserbase dashboard.
Important: When using
in a command that pipes to another command, wrap the command containing$VARin$VAR. Due to a Claude Code bug, environment variables are silently cleared when pipes are used directly.bash -c '...'bash -c 'curl -s "https://api.example.com" --header "X-BB-API-Key: $BROWSERBASE_API_KEY"'
How to Use
1. Create a Session
Create a new browser session:
Write
/tmp/request.json:
{ "projectId": "<your-project-id>" }
bash -c 'curl -s -X POST "https://api.browserbase.com/v1/sessions" --header "Content-Type: application/json" --header "X-BB-API-Key: $BROWSERBASE_API_KEY" -d @/tmp/request.json'
With timeout and keepAlive:
Write
/tmp/request.json:
{ "projectId": "<your-project-id>", "timeout": 300, "keepAlive": true }
bash -c 'curl -s -X POST "https://api.browserbase.com/v1/sessions" --header "Content-Type: application/json" --header "X-BB-API-Key: $BROWSERBASE_API_KEY" -d @/tmp/request.json'
With proxy enabled (requires paid plan):
Write
/tmp/request.json:
{ "projectId": "<your-project-id>", "proxies": true }
bash -c 'curl -s -X POST "https://api.browserbase.com/v1/sessions" --header "Content-Type: application/json" --header "X-BB-API-Key: $BROWSERBASE_API_KEY" -d @/tmp/request.json'
Note: Proxies are not available on the free plan. You'll receive a 402 error if you try to use this feature without upgrading.
With specific region (us-west-2, us-east-1, eu-central-1, ap-southeast-1):
Write
/tmp/request.json:
{ "projectId": "<your-project-id>", "region": "us-west-2" }
bash -c 'curl -s -X POST "https://api.browserbase.com/v1/sessions" --header "Content-Type: application/json" --header "X-BB-API-Key: $BROWSERBASE_API_KEY" -d @/tmp/request.json'
Response includes:
- Session ID to use for connectionsid
- WebSocket URL for Playwright/PuppeteerconnectUrl
- URL for Selenium connectionsseleniumRemoteUrl
- Key for HTTP connectionssigningKey
2. List Sessions
List all sessions with optional filters:
bash -c 'curl -s -X GET "https://api.browserbase.com/v1/sessions" --header "X-BB-API-Key: $BROWSERBASE_API_KEY"'
Filter by status (RUNNING, ERROR, TIMED_OUT, COMPLETED):
bash -c 'curl -s -X GET "https://api.browserbase.com/v1/sessions?status=RUNNING" --header "X-BB-API-Key: $BROWSERBASE_API_KEY"'
Query by user metadata:
Note: The query syntax for user metadata filtering uses single quotes:
. To avoid complex shell escaping, write the query to a file and useuser_metadata['key']:'value'.--data-urlencode "q@filename"
Write
/tmp/query.txt with content:
user_metadata['test']:'true'
Then query sessions:
bash -c 'curl -s -X GET -G "https://api.browserbase.com/v1/sessions" --data-urlencode "q@/tmp/query.txt" --header "X-BB-API-Key: $BROWSERBASE_API_KEY"'
More examples:
Query by stagehand metadata - write
/tmp/query.txt:
user_metadata['stagehand']:'true'
Query by environment - write
/tmp/query.txt:
user_metadata['env']:'production'
Then run:
bash -c 'curl -s -X GET -G "https://api.browserbase.com/v1/sessions" --data-urlencode "q@/tmp/query.txt" --header "X-BB-API-Key: $BROWSERBASE_API_KEY"'
3. Get Session Details
Get details of a specific session. Replace
<your-session-id> with the actual session ID:
bash -c 'curl -s -X GET "https://api.browserbase.com/v1/sessions/<your-session-id>" --header "X-BB-API-Key: $BROWSERBASE_API_KEY"'
4. Update Session (Release)
Request to release a session before its timeout to avoid additional charges. Replace
<your-session-id> with the actual session ID:
Write
/tmp/request.json:
{ "status": "REQUEST_RELEASE" }
bash -c 'curl -s -X POST "https://api.browserbase.com/v1/sessions/<your-session-id>" --header "Content-Type: application/json" --header "X-BB-API-Key: $BROWSERBASE_API_KEY" -d @/tmp/request.json'
The session status will change to
COMPLETED and endedAt timestamp will be set.
5. Get Debug/Live URLs
Get live debugging URLs for a running session. Replace
<your-session-id> with the actual session ID:
bash -c 'curl -s -X GET "https://api.browserbase.com/v1/sessions/<your-session-id>/debug" --header "X-BB-API-Key: $BROWSERBASE_API_KEY"'
Note: Debug URLs may only be available after a browser client has connected to the session via WebSocket.
Response includes:
- Chrome DevTools debugger URLdebuggerUrl
- Fullscreen debugger viewdebuggerFullscreenUrl
- WebSocket URLwsUrl
- Array of open pages with their debugger URLspages
6. Get Session Logs
Retrieve logs from a session. Replace
<your-session-id> with the actual session ID:
bash -c 'curl -s -X GET "https://api.browserbase.com/v1/sessions/<your-session-id>/logs" --header "X-BB-API-Key: $BROWSERBASE_API_KEY"'
7. Get Session Recording
Get the rrweb recording of a session. Replace
<your-session-id> with the actual session ID:
bash -c 'curl -s -X GET "https://api.browserbase.com/v1/sessions/<your-session-id>/recording" --header "X-BB-API-Key: $BROWSERBASE_API_KEY"'
8. Get Session Downloads
Retrieve files downloaded during a session (returns ZIP file). Replace
<your-session-id> with the actual session ID:
bash -c 'curl -s -X GET "https://api.browserbase.com/v1/sessions/<your-session-id>/downloads" --header "X-BB-API-Key: $BROWSERBASE_API_KEY"' --output downloads.zip
9. Upload Files to Session
Upload files to use in a browser session. Replace
<your-session-id> with the actual session ID:
bash -c 'curl -s -X POST "https://api.browserbase.com/v1/sessions/<your-session-id>/uploads" --header "X-BB-API-Key: $BROWSERBASE_API_KEY" -F "file=@/path/to/file.pdf"'
Contexts API
Contexts allow you to persist cookies, cache, and session storage across multiple browser sessions.
Create a Context
Write
/tmp/request.json:
{ "projectId": "<your-project-id>" }
bash -c 'curl -s -X POST "https://api.browserbase.com/v1/contexts" --header "Content-Type: application/json" --header "X-BB-API-Key: $BROWSERBASE_API_KEY" -d @/tmp/request.json'
Save the returned
id to use in sessions.
Get Context Details
Retrieve details of a specific context. Replace
<your-context-id> with the actual context ID:
bash -c 'curl -s -X GET "https://api.browserbase.com/v1/contexts/<your-context-id>" --header "X-BB-API-Key: $BROWSERBASE_API_KEY"'
Response includes:
- Context identifierid
- Creation timestampcreatedAt
- Last update timestampupdatedAt
- The Project ID linked to the contextprojectId
Create Session with Context
Use an existing context to restore cookies and login state. Replace
<your-context-id> with the actual context ID:
Write
/tmp/request.json:
{ "projectId": "<your-project-id>", "browserSettings": { "context": { "id": "<your-context-id>", "persist": true } } }
bash -c 'curl -s -X POST "https://api.browserbase.com/v1/sessions" --header "Content-Type: application/json" --header "X-BB-API-Key: $BROWSERBASE_API_KEY" -d @/tmp/request.json'
Set
persist: true to save updates back to the context after the session ends.
Delete Context
Delete a context when it's no longer needed. Replace
<your-context-id> with the actual context ID:
bash -c 'curl -s -X DELETE "https://api.browserbase.com/v1/contexts/<your-context-id>" --header "X-BB-API-Key: $BROWSERBASE_API_KEY" -w "\nHTTP Status: %{http_code}"'
Successful deletion returns HTTP 204 (No Content).
Projects API
Get Project Usage
Retrieve project-wide usage statistics (browser minutes and proxy bytes). Replace
<your-project-id> with your actual project ID:
bash -c 'curl -s -X GET "https://api.browserbase.com/v1/projects/<your-project-id>/usage" --header "X-BB-API-Key: $BROWSERBASE_API_KEY"'
API Endpoints Reference
| Endpoint | Method | Description |
|---|---|---|
| POST | Create a new browser session |
| GET | List all sessions |
| GET | Get session details (returns array) |
| POST | Update session (release) |
| GET | Get live debug URLs |
| GET | Get session logs |
| GET | Get session recording (rrweb) |
| GET | Get downloaded files (ZIP) |
| POST | Upload files to session |
| POST | Create a new context |
| GET | Get context details |
| DELETE | Delete a context |
| GET | Get project usage stats |
Session Status Values
| Status | Description |
|---|---|
| Session is currently active |
| Session ended successfully |
| Session ended with an error |
| Session exceeded timeout |
| Request to end session |
Guidelines
- Session Lifecycle: Sessions auto-terminate after timeout (default 5 minutes). Use
for longer sessions.keepAlive: true - Contexts: Use contexts to persist login state and avoid repeated authentication.
- Proxies: Enable proxies for geo-restricted content or to avoid rate limiting.
- Regions: Choose a region close to your target websites for better performance.
- Debug URLs: Use debug URLs for real-time human-in-the-loop debugging.
- Recordings: Session replays use rrweb DOM reconstruction, not video files.
- Rate Limits: Check your plan limits in the Browserbase dashboard.