TL;DR for AI Agents
Browser Use is a Python library (117K+ GitHub stars and release 0.13.11, as of October 8, 2026) that enables AI agents to interact with websites. Key capabilities:
- Natural language browsing: Agent receives task → navigates web → completes actions
- Multi-LLM support: Works with OpenAI, Anthropic, Google, Ollama (local), and their custom ChatBrowserUse
- Built on Playwright: Reliable browser automation under the hood
- CLI included: Quick commands for browser control without code
- Production-ready: Cloud offering with stealth browsers and proxy rotation
Install: uv add browser-use | Docs: https://docs.browser-use.com | GitHub: https://github.com/browser-use/browser-use
What changed as of October 2026
- Latest release: 0.13.11 (October 7, 2026), MIT-licensed, Python 3.11 or newer. The repo had 117,438 stars on October 8, 2026.
- Native model classes, no LangChain. Import
ChatOpenAI,ChatAnthropic,ChatGoogle,ChatOllamaand others directly frombrowser_use. The LangChain imports this post used earlier are wrong for current versions; the examples below are fixed. - The in-house model is BU2 (
ChatBrowserUse(model='bu-2-0'), also the default forChatBrowserUse()). It now costs $0.60 per 1M input tokens, $0.06 cached and $3.50 output. This post used to say $0.20 / $0.02 / $2.00. - Cloud browsers cost $0.02 per browser-hour, plus $5/GB for residential proxies, pay as you go with no subscription. Signup credit is one-time; the amount has changed several times, so check the pricing page.
- The CLI was rebuilt on Browser Harness. You now pass Python to it (
new_tab(...),page_info()) instead of theopen/state/clickcommands shown below. Install the agent skill withbrowser-use skill install. Details are in the CLI section. - Logged-in browsing: use
Browser.from_system_chrome()to reuse your Chrome profile. The oldBrowserConfig(chrome_instance_path=...)example and theprofile.shsync script no longer apply.
Web automation has always been a pain point for developers. Selenium scripts break constantly, CSS selectors become outdated, and maintaining automation code is a full-time job. Browser Use takes a radically different approach: instead of writing brittle automation scripts, you simply tell an AI agent what you want done, and it figures out how to do it.
What Makes Browser Use Different
Traditional web automation looks like this:
# Old way: Fragile selectors that break constantly
driver.find_element(By.CSS_SELECTOR, "#login-form input[name='email']").send_keys(email)
driver.find_element(By.CSS_SELECTOR, "#login-form input[name='password']").send_keys(password)
driver.find_element(By.CSS_SELECTOR, "#login-form button[type='submit']").click()
Browser Use automation looks like this:
# New way: Natural language instructions
agent = Agent(
task="Log into my account with email [email protected] and password secret123",
llm=llm,
browser=browser,
)
await agent.run()
The AI agent sees the page, understands the context, and figures out how to accomplish the task. When the website changes its layout, the agent adapts automatically. No more broken selectors.
Getting Started in 5 Minutes
Browser Use uses uv for package management. Here’s the quickest path to your first automation:
Step 1: Set Up Environment
# Create new project
uv init my-browser-agent
cd my-browser-agent
# Install Browser Use
uv add browser-use
uv sync
# Install Chromium browser
uvx browser-use install
Step 2: Get Your API Key
You’ll need an LLM to power the agent. The easiest option is Browser Use’s own model, optimized for browser tasks:
- Go to cloud.browser-use.com/new-api-key
- Sign up (eligible new accounts get a one-time signup credit; the amount changes, so check the pricing page)
- Add to your
.envfile:
BROWSER_USE_API_KEY=your-key-here
Step 3: Run Your First Agent
from browser_use import Agent, Browser, ChatBrowserUse
import asyncio
async def example():
browser = Browser()
llm = ChatBrowserUse()
agent = Agent(
task="Go to Hacker News and find the top story title",
llm=llm,
browser=browser,
)
history = await agent.run()
print(f"Agent completed. Final result: {history[-1]}")
return history
if __name__ == "__main__":
asyncio.run(example())
That’s it. The agent opens a browser, navigates to Hacker News, reads the page, and returns the top story.
Using Your Preferred LLM
Browser Use isn’t locked to their cloud model. You can use any major LLM provider:
OpenAI
from browser_use import Agent, ChatOpenAI
llm = ChatOpenAI(model="gpt-5")
agent = Agent(task="Your task", llm=llm, browser=browser)
Anthropic Claude
from browser_use import Agent, ChatAnthropic
llm = ChatAnthropic(model="claude-sonnet-4-6")
agent = Agent(task="Your task", llm=llm, browser=browser)
Local Models with Ollama
For privacy-conscious setups or offline use:
from browser_use import Agent, ChatOllama
llm = ChatOllama(model="llama3.2")
agent = Agent(task="Your task", llm=llm, browser=browser)
The CLI: Browser Automation Without Code
Browser Use includes a CLI for quick, interactive automation.
Updated October 2026: the current CLI is backed by Browser Harness and takes Python instead of the commands shown further down. Install it with uv tool install browser-use, then:
uvx browser-use <<'PY'
new_tab("https://example.com")
print(page_info())
PY
It attaches to your running Chrome over CDP by default (browser-use --doctor if it can’t connect), or to a cloud browser after browser-use auth login. The original command-style examples are kept below for older versions:
# Open a browser and navigate
browser-use open https://github.com
# See all clickable elements with indices
browser-use state
# Click element by index
browser-use click 5
# Type text
browser-use type "browser-use"
# Take a screenshot
browser-use screenshot current-page.png
# Close the browser
browser-use close
The browser stays open between commands, making it perfect for exploration and debugging. Chain commands together to build quick automations without writing Python.
Real-World Use Cases
1. Job Application Automation
agent = Agent(
task="""
Fill out the job application on this page using my resume:
- Name: John Smith
- Email: [email protected]
- Phone: 555-0123
- Upload resume from ~/Documents/resume.pdf
- Write a cover letter emphasizing my Python experience
""",
llm=llm,
browser=browser,
)
2. E-commerce Price Monitoring
agent = Agent(
task="""
Go to amazon.com, search for "mechanical keyboard",
find the top 5 results, and record their names and prices.
Return the data as JSON.
""",
llm=llm,
browser=browser,
)
3. Social Media Management
agent = Agent(
task="""
Log into Twitter, go to my notifications,
and summarize any mentions from the last 24 hours.
""",
llm=llm,
browser=browser,
)
Custom Tools: Extending the Agent
You can add custom capabilities to your agent:
from browser_use import Tools
tools = Tools()
@tools.action(description='Save data to a local file')
def save_to_file(filename: str, content: str) -> str:
with open(filename, 'w') as f:
f.write(content)
return f"Saved to {filename}"
@tools.action(description='Send a Slack notification')
def notify_slack(message: str) -> str:
# Your Slack webhook logic here
return "Notification sent"
agent = Agent(
task="Scrape product prices and save to prices.json, then notify Slack",
llm=llm,
browser=browser,
tools=tools,
)
Handling Authentication
For sites requiring login, you have options:
Use Your Existing Browser Profile
browser = Browser.from_system_chrome()
This reuses your existing Chrome profile with all saved logins, cookies, and sessions. You may need to fully close Chrome first. (Older versions used Browser(config=BrowserConfig(chrome_instance_path=...)).)
Cloud Profiles for Production
Follow the profile sync guide, then use Browser(use_cloud=True, cloud_profile_id='your-profile-id'). Profile sync copies cookies, not local storage, IndexedDB or extensions. (The profile.sh script this post linked earlier now returns 404.)
Production Deployment
For production workloads, Browser Use offers cloud infrastructure:
browser = Browser(
use_cloud=True, # Use stealth browsers in the cloud
)
The cloud offering provides:
- Stealth browsers: Avoid detection and CAPTCHA challenges
- Proxy rotation: Prevent IP blocks
- Scalable infrastructure: Run many agents in parallel
- Memory management: Chrome is memory-hungry; they handle it
Sandbox Deployment
For isolated, production-ready runs:
from browser_use import Browser, sandbox, ChatBrowserUse
from browser_use.agent.service import Agent
@sandbox()
async def scrape_task(browser: Browser):
agent = Agent(
task="Find the current Bitcoin price on CoinGecko",
browser=browser,
llm=ChatBrowserUse()
)
return await agent.run()
# Runs in isolated environment
result = asyncio.run(scrape_task())
Integration with AI Coding Tools
Claude Code Skill
Browser Use provides a skill file for Claude Code users. Updated October 2026: the simplest way is now browser-use skill install after installing the CLI. The manual method:
mkdir -p ~/.claude/skills/browser-use
curl -o ~/.claude/skills/browser-use/SKILL.md \
https://raw.githubusercontent.com/browser-use/browser-use/main/skills/browser-use/SKILL.md
Now you can ask Claude Code to “open the browser and check my email” and it knows how.
LLM Context File
For AI agents that support context files:
https://docs.browser-use.com/llms-full.txt
Point your coding agent (Cursor, Continue, etc.) to this URL for full Browser Use documentation in context.
Performance and Pricing
ChatBrowserUse (Their Optimized Model)
- Completes tasks 3-5x faster than generic models
- Optimized specifically for browser automation
- Pricing per 1M tokens (bu-2-0, as of October 2026):
- Input: $0.60
- Cached input: $0.06
- Output: $3.50
- Cloud browsers: $0.02 per browser-hour, residential proxies $5/GB
Using Your Own LLM
Completely free for the Browser Use library itself. You pay only for:
- Your chosen LLM provider’s API costs
- Cloud infrastructure if you use their hosted browsers
Quick Reference
| Task | Command/Code |
|---|---|
| Install (library) | uv add browser-use |
| Install (CLI) | uv tool install browser-use |
| Agent skill | browser-use skill install |
| Install browser | uvx browser-use install |
| Open URL (CLI) | browser-use open https://example.com |
| See elements | browser-use state |
| Click element | browser-use click <index> |
| Screenshot | browser-use screenshot output.png |
| Generate template | uvx browser-use init --template default |
The Bottom Line
Browser Use represents a fundamental shift in how we approach web automation. Instead of brittle scripts that break with every UI change, you describe what you want in natural language and let an AI agent figure out the implementation details.
At 117,000+ GitHub stars and growing (as of October 2026), it’s clearly resonating with developers tired of maintaining Selenium scripts. Whether you’re automating job applications, monitoring prices, or building AI assistants that can interact with the web, Browser Use removes the friction between intent and execution.
The combination of open-source flexibility (use any LLM) with production-ready cloud infrastructure (when you need it) makes it suitable for everything from weekend projects to enterprise automation pipelines.
Links:
- GitHub: browser-use/browser-use
- Documentation: docs.browser-use.com
- Cloud: cloud.browser-use.com
- Examples: docs.browser-use.com/examples
- Supported models and BU2 pricing: docs.browser-use.com/open-source/supported-models
- Cloud pricing: browser-use.com/pricing.md
- CLI docs: docs.browser-use.com/open-source/browser-use-cli