| name | browser-use |
| description | Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, or extract information from web pages. |
| allowed-tools | Bash(browser-use:*) |
Browser Automation with browser-use CLI
The browser-use command provides fast, persistent browser automation. It maintains browser sessions across commands, enabling complex multi-step workflows.
Installation
uvx "browser-use[cli]" open https://example.com
uv pip install "browser-use[cli]"
browser-use install
Quick Start
browser-use open https://example.com
browser-use state
browser-use click 5
browser-use type "Hello World"
browser-use screenshot
browser-use close
Core Workflow
- Navigate:
browser-use open <url> - Opens URL (starts browser if needed)
- Inspect:
browser-use state - Returns clickable elements with indices
- Interact: Use indices from state to interact (
browser-use click 5, browser-use input 3 "text")
- Verify:
browser-use state or browser-use screenshot to confirm actions
- Repeat: Browser stays open between commands
Browser Modes
browser-use --browser chromium open <url>
browser-use --browser chromium --headed open <url>
browser-use --browser real open <url>
browser-use --browser remote open <url>
- chromium: Fast, isolated, headless by default
- real: Uses your Chrome with cookies, extensions, logged-in sessions
- remote: Cloud-hosted browser with proxy support (requires BROWSER_USE_API_KEY)
Commands
Navigation
browser-use open <url>
browser-use back
browser-use scroll down
browser-use scroll up
Page State
browser-use state
browser-use screenshot
browser-use screenshot path.png
browser-use screenshot --full path.png
Interactions (use indices from browser-use state)
browser-use click <index>
browser-use type "text"
browser-use input <index> "text"
browser-use keys "Enter"
browser-use keys "Control+a"
browser-use select <index> "option"
Tab Management
browser-use switch <tab>
browser-use close-tab
browser-use close-tab <tab>
JavaScript & Data
browser-use eval "document.title"
browser-use extract "all product prices"
Cookies
browser-use cookies get
browser-use cookies get --url <url>
browser-use cookies set <name> <value>
browser-use cookies set name val --domain .example.com --secure --http-only
browser-use cookies clear
browser-use cookies clear --url <url>
browser-use cookies export <file>
browser-use cookies export <file> --url <url>
browser-use cookies import <file>
Wait Conditions
browser-use wait selector "h1"
browser-use wait selector ".loading" --state hidden
browser-use wait selector "#btn" --state attached
browser-use wait text "Success"
browser-use wait selector "h1" --timeout 5000
Additional Interactions
browser-use hover <index>
browser-use dblclick <index>
browser-use rightclick <index>
Information Retrieval
browser-use get title
browser-use get html
browser-use get html --selector "h1"
browser-use get text <index>
browser-use get value <index>
browser-use get attributes <index>
browser-use get bbox <index>
Python Execution (Persistent Session)
browser-use python "x = 42"
browser-use python "print(x)"
browser-use python "print(browser.url)"
browser-use python --vars
browser-use python --reset
browser-use python --file script.py
The Python session maintains state across commands. The browser object provides:
browser.url - Current page URL
browser.title - Page title
browser.goto(url) - Navigate
browser.click(index) - Click element
browser.type(text) - Type text
browser.screenshot(path) - Take screenshot
browser.scroll() - Scroll page
browser.html - Get page HTML
Agent Tasks (Requires API Key)
browser-use run "Fill the contact form with test data"
browser-use run "Extract all product prices" --max-steps 50
Agent tasks use an LLM to autonomously complete complex browser tasks. Requires BROWSER_USE_API_KEY or configured LLM API key (OPENAI_API_KEY, ANTHROPIC_API_KEY, etc).
Session Management
browser-use sessions
browser-use close
browser-use close --all
Profile Management
browser-use profile list-local
Before opening a real browser (--browser real), always ask the user if they want to use a specific Chrome profile or no profile. Use profile list-local to show available profiles:
browser-use profile list-local
browser-use --browser real --profile "Profile 1" open https://gmail.com
browser-use --browser real open https://gmail.com
browser-use --browser real --profile "Default" cookies export /tmp/cookies.json
Each Chrome profile has its own cookies, history, and logged-in sessions. Choosing the right profile determines whether sites will be pre-authenticated.
Cloud Profiles
Cloud profiles store browser state (cookies) in Browser-Use Cloud, persisting across sessions. Requires BROWSER_USE_API_KEY.
browser-use profile list
browser-use profile get <id>
browser-use profile update <id> --name "New"
browser-use profile delete <id>
Use a cloud profile with --browser remote --profile <id>:
browser-use --browser remote --profile abc-123 open https://example.com
Syncing Cookies to Cloud
⚠️ IMPORTANT: Before syncing cookies from a local browser to the cloud, the agent MUST:
- Ask the user which local Chrome profile to use (
browser-use profile list-local)
- Ask which domain(s) to sync - do NOT default to syncing the full profile
- Confirm before proceeding
Default behavior: Create a NEW cloud profile for each domain sync. This ensures clear separation of concerns for cookies. Users can add cookies to existing profiles if needed.
Step 1: List available profiles and cookies
browser-use profile list-local
browser-use profile cookies "Default"
Step 2: Sync cookies (three levels of control)
1. Domain-specific sync (recommended default)
browser-use profile sync --from "Default" --domain youtube.com
This is the recommended approach - sync only the cookies you need.
2. Full profile sync (use with caution)
browser-use profile sync --from "Default"
⚠️ Warning: This syncs ALL cookies including sensitive data, tracking cookies, session tokens for every site, etc. Only use when the user explicitly needs their entire browser state.
3. Fine-grained control (advanced)
browser-use --browser real --profile "Default" cookies export /tmp/cookies.json
browser-use --browser remote --profile <id> cookies import /tmp/cookies.json
For users who need individual cookie-level control.
Step 3: Use the synced profile
browser-use --browser remote --profile <id> open https://youtube.com
Adding cookies to existing profiles:
browser-use --browser real --profile "Default" cookies export /tmp/cookies.json
browser-use --browser remote --profile <existing-id> cookies import /tmp/cookies.json
Managing profiles:
browser-use profile update <id> --name "New Name"
browser-use profile delete <id>
Server Control
browser-use server status
browser-use server stop
browser-use server logs
Setup
browser-use install
Global Options
| Option | Description |
|---|
--session NAME | Use named session (default: "default") |
--browser MODE | Browser mode: chromium, real, remote |
--headed | Show browser window (chromium mode) |
--profile NAME | Chrome profile (real mode only) |
--json | Output as JSON |
--api-key KEY | Override API key |
Session behavior: All commands without --session use the same "default" session. The browser stays open and is reused across commands. Use --session NAME to run multiple browsers in parallel.
API Key Configuration
Some features (run, extract, --browser remote) require an API key. The CLI checks these locations in order:
--api-key command line flag
BROWSER_USE_API_KEY environment variable
~/.config/browser-use/config.json file
To configure permanently:
mkdir -p ~/.config/browser-use
echo '{"api_key": "your-key-here"}' > ~/.config/browser-use/config.json
Examples
Form Submission
browser-use open https://example.com/contact
browser-use state
browser-use input 0 "John Doe"
browser-use input 1 "john@example.com"
browser-use input 2 "Hello, this is a test message."
browser-use click 3
browser-use state
Multi-Session Workflows
browser-use --session work open https://work.example.com
browser-use --session personal open https://personal.example.com
browser-use --session work state
browser-use --session personal state
browser-use close --all
Data Extraction with Python
browser-use open https://example.com/products
browser-use python "
products = []
for i in range(20):
browser.scroll('down')
browser.screenshot('products.png')
"
browser-use python "print(f'Captured {len(products)} products')"
Using Real Browser (Logged-In Sessions)
browser-use --browser real open https://gmail.com
browser-use state
Tips
- Always run
browser-use state first to see available elements and their indices
- Use
--headed for debugging to see what the browser is doing
- Sessions persist - the browser stays open between commands
- Use
--json for parsing output programmatically
- Python variables persist across
browser-use python commands within a session
- Real browser mode preserves your login sessions and extensions
- CLI aliases:
bu, browser, and browseruse all work identically to browser-use
Troubleshooting
Browser won't start?
browser-use install
browser-use server stop
browser-use --headed open <url>
Element not found?
browser-use state
browser-use scroll down
browser-use state
Session issues?
browser-use sessions
browser-use close --all
browser-use open <url>
Cleanup
Always close the browser when done. Run this after completing browser automation:
browser-use close
Technique Map
- Identify scope — Determine what the skill applies to before executing.
- Follow workflow — Use documented steps; avoid ad-hoc shortcuts.
- Verify outputs — Check results match expected contract.
- Handle errors — Graceful degradation when dependencies missing.
- Reference docs — Load references/ when detail needed.
- Preserve state — Don't overwrite user config or artifacts.
Technique Notes
Skill-specific technique rationale. Apply patterns from the skill body. Progressive disclosure: metadata first, body on trigger, references on demand.
Prompt Architect Overlay
Role Definition: Specialist for browser-use domain. Executes workflows, produces artifacts, routes to related skills when needed.
Input Contract: Context, optional config, artifacts from prior steps. Depends on skill.
Output Contract: Artifacts, status, next-step recommendations. Format per skill.
Edge Cases & Fallbacks: Missing context—ask or infer from workspace. Dependency missing—degrade gracefully; note in output. Ambiguous request—clarify before proceeding.