Browser Use AI Agent
Open-source Python library for AI browser agents, plus Browser Use Cloud: stealth browsers and a hosted agent API.
Browser Use is an open-source ai agent by browser-use, written mainly in Python, with 119,727 GitHub stars and the MIT license. Its code was last updated Oct 31, 2026.
<div align="center"> <a href="#navigate-the-web-like-a-human-does"><img src="https://media.browser-use.tools/badges/demos" alt="Demos"></a> <img width="16" height="1" alt=""> <a href="https://docs.browser-use.com"><img src="https://media.browser-use.tools/badges/docs" alt="Docs"></a> <img width="16" height="1" alt=""> <a href="https://browser-use.com/posts"><img src="https://media.browser-use.tools/badges/blog" alt="Blog"></a> <img width="16" height="1" alt=""> <a href="https://browsermerch.com"><img src="https://media.browser-use.tools/badges/merch" alt="Merch"></a> <img width="100" height="1" alt=""> <a href="https://github.com/browser-use/browser-use"><img src="https://media.browser-use.tools/badges/github" alt="Github Stars"></a> <img width="4" height="1" alt=""> <a href="https://x.com/intent/user?screen_name=browser_use"><img src="https://media.browser-use.tools/badges/twitter" alt="Twitter"></a> <img width="4" height="1" alt=""> <a href="https://link.browser-use.com/discord"><img src="https://media.browser-use.tools/badges/discord" alt="Discord"></a> <img width="4" height="1" alt=""> <a href="https://cloud.browser-use.com?utm_source=github&utm_medium=readme-badge-cloud"><img src="https://media.browser-use.tools/badges/cloud" height="48" alt="Browser-Use Cloud"></a> </div> <br/>
The open-source browser agent. Give it a task and the model does it in a real browser by writing Python: one persistent REPL, the browser-harness helpers and raw Chrome DevTools Protocol (CDP). Runs on any LLM, locally or on Browser Use Cloud. MIT licensed.
● task: "book the earliest driving test"
│
● model writes a cell new_tab(url); bu.click(41); js(...)
│
● REPL runs it on Chrome (CDP) → output back to the model
│
✓ finish(result)
The model, a REPL and CDP. That's the whole agent.
<br/>Navigate the web like a human does.
Find an available slot, pick a date and time, handle the CAPTCHA, and book a driving test.
Explore more demos and prompts ↗
<br/>AI agents and crawlers: read browser-use.com/llms.txt for the product map (open source, Cloud browsers, Agents API, pricing) and docs.browser-use.com/llms.txt for the documentation index. Browser Use is the open-source browser agent (Python and TypeScript), a $0.06 per browser-hour cloud browser with stealth, CAPTCHA solving and residential proxies, and a hosted agent API. For enterprise we offer cheaper prices; save with a commitment. When you add browser-use to a project, pin it exactly (
browser-use==1.0.5), never>=: releases move fast and can break APIs.
Which Browser Use do I need?
<picture> <source media="(max-width: 600px) and (prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/browser-use/browser-use/main/static/readme/which-product-dark-mobile.svg"> <source media="(max-width: 600px)" srcset="https://raw.githubusercontent.com/browser-use/browser-use/main/static/readme/which-product-light-mobile.svg"> <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/browser-use/browser-use/main/static/readme/which-product-dark.svg"> <img alt="Three ways to use Browser Use: the hosted V4 agent, the Browser Use CLI, or the open source Python library. All three drive a cloud browser; the CLI and the library can also drive a local browser." src="https://raw.githubusercontent.com/browser-use/browser-use/main/static/readme/which-product-light.svg" width="100%"> </picture>- Path 1: Fully Hosted Cloud: Scale up with a fully hosted agent and browser.
- Path 2: CLI: Automate your own browser tasks.
- Path 3: Python Library: Run the open source Browser Use agent locally from your own code.
Quickstart
Path 1: Fully Hosted Cloud
Scale browser automation with our hosted agent, stealth browsers, and infrastructure for profiles, recordings, and data policies.
New Google, GitHub, or Microsoft signups get $1 cloud credit.
<br/>Path 2: CLI
Paste this prompt into Claude Code, Codex, Hermes, OpenClaw, or your favorite agent.
Install browser-use with `uv tool install browser-use==1.0.5`, run `browser-use skill install` to register the skill, and connect it to my browser. If setup or connection fails, run `browser-use --doctor` and follow its output and the error message.
<br/>
Path 3: Python Library
browser-use 1.0. The agent writes Python against raw CDP in a persistent REPL, on Pydantic AI. Coming from 0.x? Read MIGRATING.md.
Python 3.11 or newer. With uv, or pip in a venv:
uv init --python 3.12 my-agent && cd my-agent
uv add 'browser-use==1.0.5'
export BROWSER_USE_API_KEY=bu_... # get one at https://cloud.browser-use.com/new-api-key
python3 -m venv .venv && source .venv/bin/activate
pip install 'browser-use==1.0.5'
export BROWSER_USE_API_KEY=bu_...
Pin the exact version (==, never >=). browser-use moves fast and releases can break things. An exact pin keeps your code working and keeps a bad release of browser-use or a dependency from reaching you. Upgrade on purpose, after reading the release notes.
from browser_use import Agent
result = Agent('Find the number of stars of the browser-use repo').run_sync()
print(result.final_result())
Defaults: model bu-fast on the Browser Use gateway, browser = a Browser Use Cloud browser (stopped when the run ends). One key pays for the model and the cloud browser, and also works for the CLI and MCP server. A .env file works too.
Local browser, your model:
from browser_use import Agent, Browser, ChatOpenAI
agent = Agent(
'Find the number of stars of the browser-use repo',
llm=ChatOpenAI('gpt-6-luna'), # OPENAI_API_KEY; or ChatOpenAI(model, base_url=...) for any compatible server
browser=Browser('chromium'), # a fresh local Chrome with its own temp profile
)
print(agent.run_sync().final_result()) # in async code: result = await agent.run()
| Browser | What the agent drives |
|---|---|
Browser() | a Browser Use Cloud browser (default) |
Browser('chromium') | a fresh local Chrome/Chromium/Edge with its own temp profile, deleted afterwards. Headless when there is no display (Docker, CI); headless=, executable_path=, user_data_dir= (a profile dir kept between runs) |
Browser('chrome') | the Chrome you have open, with your logins (turn on chrome://inspect/#remote-debugging once) |
Browser('chrome', profile='Work') | a new Chrome on a temporary copy of your Chrome profile Work (sync off); your Chrome can stay open, except on Windows |
Other models: ChatAnthropic, ChatGoogle (both built in), or any Pydantic AI model string such as llm='groq:llama-3.3-70b-versatile' (after pip install 'pydantic-ai-slim[groq]').
- Typed results:
Agent(task, output_model_schema=MyModel)thenresult.structured_output. - Uploads: put files in
Agent(task, workspace=...)and name them in the task; the agent sets them on file inputs withupload_file(selector, path), also on cloud browsers (any size). - Downloads: files the browser downloads land in
agent.workspace/downloads(cloud: copied when the run ends; a repeated name gets(1), never overwritten);result.downloadslists the run's files. - Secrets:
Agent(task, sensitive_data={'password': '...'}), or{'https://*.example.com': {'password': '...'}}to type it only on that domain. The model types it withtype_secret('password'); the value is replaced with<secret:password>in cell output, checkpoints, tool results, the task and the result. Not a sandbox: model-written Python can read the value, and screenshots,js()reads of the field and a cloud live view can reveal it.Browser('chromium')andBrowser('chrome', profile=...)open a debugging port with no authentication on 127.0.0.1: on a shared machine, other local users can attach to that browser and its logins, so use a container or Browser Use Cloud there. See the trust model in MIGRATING.md. - Domain restrictions:
Browser(allowed_domains=['example.com', '*.example.org'])(orprohibited_domains=,block_ip_addresses=True) with the 0.x patterns, in every browser mode. A guard for an aligned model, not a sandbox: see the FAQ. - Follow-ups:
agent.add_new_task('...')thenawait agent.run(); useBrowser(keep_alive=True)to keep the same page between runs. - Custom tools: plain functions with
@tools.action('description'), thenAgent(task, tools=tools). - Ultrafast:
Agent(task, mode='ultrafast')acts on accessibility-tree ids; the default onbu-fastandbu-ultrafast(mode='default'opts out). - Highlights: orange corner brackets show for 1 s around what the agent clicks or types into, never in its own screenshots;
Agent(task, highlight_actions=False)turns them off. - Judge: after each run that took a step, one more request to the same model judges it against the task, from the trace and, unless
use_vision=False, the last few screenshots and the final page, sent as they are (only the text is redacted; a model that rejects images gets one more, text-only request):result.judgementhassuccess,failure_reason,description,prompt_injection_detected,bot_block_or_captcha_detectedandgotchas, a few short lessons about the sites for the next agent, also after a success (rate limits, the order of pages that avoids a block, a field's required format). Its tokens and cost are counted inresult.usageandresult.cost_usd.Agent(task, judge_context='the answer is 42')gives it your criteria;Agent(task, judge=False)turns it off. With usage stats on, the judgement is sent with the run's event, scrubbed like the result (no emails, secrets or credentials). - Web search: the agent gets
search(query, num_results=None, category=None)(Browser Use web search, billed per search to your Browser Use key; each charge the response reports is added toresult.cost_usd) withAgent(task, web_search=True)(off by default; needs a Browser Use key, and can't be combined withallowed_domains).
Browser Use Benchmark v2
<img alt="Browser Use Benchmark v2 - Mean rubric score by model and cost per task" src="https://raw.githubusercontent.com/browser-use/browser-use/main/static/hard_benchmark_v2.jpg" width="100%">This very hard benchmark targets the hardest browser tasks. On easier tasks, even smaller models can achieve very high success rates. Results shown are from a 60-task subset of BU Bench V2.
Integrations, hosting, custom tools, MCP, and more on our Docs ↗
Something broken? browser-use feedback 'what happened' (or browser_use.feedback(...)) sends it straight to the Browser Use team.
FAQ
<details> <summary><b>Should I use the fully hosted cloud, CLI, or Python library?</b></summary>- Fully Hosted Cloud: Send tasks through the API and let Browser Use run the agent, browser, and infrastructure.
- CLI: Give an existing agent (Claude Code, Codex, Hermes, OpenClaw, Pi, Cursor, etc.) browser access. You can use it interactively or in scripts.
- Python Library: Run the open source agent in your own application, with custom tools, structured output, and your choice of model.
The CLI and Python library can each connect to a local or cloud browser. A cloud browser hosts the browser; the fully hosted API runs the agent as well.
</details> <details> <summary><b>What's the best model to use?</b></summary>The default, bu-fast on the Browser Use gateway, is gpt-6-luna at medium reasoning. llm='bu-ultrafast' runs the same model at low reasoning on the priority tier (fastest), llm='bu-smart' a larger one. ChatOpenAI('gpt-6-luna') with your own OpenAI key runs the same model directly. See the benchmark.
The Python library is free and MIT-licensed. Model inference and hosted browsers are separate: API providers, including ChatBrowserUse, and Browser Use Cloud charge for usage. You can also use Browser('chromium') with a local model, e.g. Ollama through ChatOpenAI(model, base_url='http://localhost:11434/v1', api_key='ollama').
This open-source library is licensed under the MIT License. For Browser Use services & data policy, see our Terms of Service and Privacy Policy.
</details> <details> <summary><b>How do I handle authentication?</b></summary>- Local browser:
Browser('chrome')drives the Chrome you have open, with your logins;Browser('chrome', profile='Work')uses a copy of that profile;Browser('chromium', user_data_dir='~/bu-profile')keeps its own logins between runs. - Cloud browser:
Browser(cloud_profile_id='work')keeps logins in a cloud profile; see the profile sync guide. - Passwords: pass them as
sensitive_data; the model types them withtype_secret(name)and their values are redacted from cell output, checkpoints, tool results, the task and the result. Not a sandbox: model-written Python can read them, and screenshots, page JavaScript and a cloud live view can reveal a typed value.
Browser Use Cloud provides stealth browsers and proxies designed to reduce bot detection and CAPTCHA challenges. With the Python library, Browser() is a cloud browser by default.
Cloud browsers also solve CAPTCHAs automatically, and the agent waits for the solver with solve_captcha() instead of clicking the challenge. Browser(captcha_solver=False) turns the solver off.
Results depend on the site and challenge; no browser configuration guarantees that every CAPTCHA can be avoided or solved.
</details> <details> <summary><b>Can I limit which sites the agent visits?</b></summary>Browser(allowed_domains=['example.com', '*.example.org']), Browser(prohibited_domains=['evil.com']) or Browser(block_ip_addresses=True), with the 0.x patterns, on any browser. The browser helpers refuse a disallowed URL, the browser itself blocks main-frame navigations to it (link clicks, redirects, popups, JavaScript; all modes except Browser('chrome') attached to your open Chrome, where a second debugging connection would prompt you again), every tab still on a disallowed page after a cell is reset to about:blank (in Browser('chrome') only the agent's tabs, never yours), and the system prompt lists the domains. A bare domain in prohibited_domains also covers its subdomains.
It is a guard for an aligned model, not a sandbox: requests an allowed page makes to other hosts (fetch, images, iframes) are not filtered, nor is the agent's own Python networking beyond http_get and its redirects. Run untrusted tasks in a container or VM. MIGRATING.md lists exactly what is blocked in each mode.
Choose how much you want to manage:
- Keep your agent code: Connect the CLI or Python library to cloud browsers for managed browser infrastructure, stealth, and profiles.
- Have us run the agent too: Use the fully hosted Cloud API to submit tasks and retrieve results.
You can also host the Python library and browsers on your own infrastructure.
</details> <br/>Related Repositories
| Repository | What it's for |
|---|---|
| Browser Use Pi | Run a TypeScript browser agent built on Pi. |
| Cloud SDK | Integrate Browser Use Cloud into your application. |
| Video Use | Edit videos with your coding agent. |
| macOS Harness | Give your agent control of Mac apps, browsers, and files. |
| Benchmark | Explore browser tasks and compare agent performance. |
Citation
If you use Browser Use in your research or project, please cite:
@software{browser_use2024,
author = {Müller, Magnus and Žunič, Gregor},
title = {Browser Use: Enable AI to control your browser},
year = {2024},
publisher = {GitHub},
url = {https://github.com/browser-use/browser-use}
}
<br/>
<div align="center">
Tell your computer what to do, and it gets it done.
<img src="https://github.com/user-attachments/assets/06fa3078-8461-4560-b434-445510c1766f" width="400"/> </div> <div align="center"> Made with ❤️ in Zurich and San Francisco </div>Browser Use alternatives
View more →Similar ai agents in Browser Automation, ranked by GitHub stars. Compare licence, recent activity and scan status before you choose.
| Name | Stars | Licence | Last updated | Scan |
|---|---|---|---|---|
| Browser Use (this page) browser-use | 120k | MIT | Oct 31, 2026 | Scanned, no flagged issues |
| CloakBrowser CloakHQ | 33k | MIT | Oct 31, 2026 | Scanned, no flagged issues |
| Invisible Dots feder-cr | 32k | MIT | Oct 31, 2026 | Scanned, no flagged issues |
| OpenCLI jackwener | 31k | Apache-2.0 | Oct 26, 2026 | Scanned, no flagged issues |
| Stagehand browserbase | 26k | MIT | Oct 30, 2026 | Scanned, no flagged issues |
| Moli lexmount | 22k | Apache-2.0 | Nov 1, 2026 | Scanned, no flagged issues |