This release is a pre-release and may not be stable for production use.
The open-source browser agent. Run it locally with any LLM, or on Browser Use Cloud: stealth browsers from $0.02/hour, top score (90.5%) on Stealth Bench V2.
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 ↗
AI agents and crawlers: read browser-use.com/llms.txt for the product map (open source, Browser Harness, 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.02 per browser-hour cloud browser with stealth, CAPTCHA solving and residential proxies, and a hosted agent API. When you add browser-use to a project, pin it exactly (
browser-use==1.0.0rc5), never>=: releases move fast and can break APIs.
Which Browser Use do I need?
- 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.
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.0rc5`, run `browser-use skill install` to register the skill, and connect it to my browser. If setup or connection fails, follow https://github.com/browser-use/browser-harness/blob/main/install.md
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.0rc5'
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.0rc5'
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. - 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
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 ↗
FAQ
Should I use the fully hosted cloud, CLI, or Python library?
- 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.
What's the best model to use?
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.
Can I use this for free?
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').
Terms of Service
This open-source library is licensed under the MIT License. For Browser Use services & data policy, see our Terms of Service and Privacy Policy.
How do I handle authentication?
- 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.
How do I solve CAPTCHAs?
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.
Can I limit which sites the agent visits?
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.
How do I go into production?
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.
Telemetry
The library and the CLI send anonymized usage telemetry (counts, timings, model and helper names, exception classes, hostnames
of visited pages; never the task, results, code, typed text, secrets or page content). Turn it off with
ANONYMIZED_TELEMETRY=false.
Related Repositories
| Repository | What it's for |
|---|---|
| Browser Harness | Our CLI for giving AI agents control of your browser. |
| Browser Harness JS | Give your JavaScript agent control of a real browser. |
| 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}
}
Metadata
Release files for browser-use 1.0.0rc5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| browser_use-1.0.0rc5.tar.gz | 216.5 kB | Without provenance | Details for browser_use-1.0.0rc5.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| browser_use-1.0.0rc5-py3-none-any.whl | Python 3 | none | any | Details for browser_use-1.0.0rc5-py3-none-any.whl |
Total release size: 456.7 kB
Release files / browser_use-1.0.0rc5.tar.gz
| Download URL | browser_use-1.0.0rc5.tar.gz |
|---|---|
| Size | 216.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
06f1125092030a473f34fb2d00893ab4e44952a1bf650c767183f1f5a91357e8
|
|
BLAKE2b-256 checksum How to use checksums |
3ef8f2f071e9c344dba565e36116f4e4327817ce4b3c76e11fb2f4c7fecf0bbc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / browser_use-1.0.0rc5-py3-none-any.whl
| Download URL | browser_use-1.0.0rc5-py3-none-any.whl |
|---|---|
| Size | 240.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a207137c7ba82caa519b0c7fcf5c1d76d82e53d6ff6a65e51b8492373399a414
|
|
BLAKE2b-256 checksum How to use checksums |
9e37412ffb3bfa572b95c5d5769dc1138df886d445f791e35b437e1029d4038d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for browser-use 1.0.0rc5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.