Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Shows a black Browser Use Logo in light color mode and a white one in dark color mode.
The AI browser agent.
Browser-Use Package Download Statistics

Demos Docs Blog Merch Github Stars Twitter Discord Browser-Use Cloud

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.

Browser Use V4 booking 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?

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.

Quickstart

Path 1: Fully Hosted Cloud

Scale browser automation with our hosted agent, stealth browsers, and infrastructure for profiles, recordings, and data policies.

Get started with the API ↗

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) then result.structured_output.
  • Uploads: put files in Agent(task, workspace=...) and name them in the task; the agent sets them on file inputs with upload_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.downloads lists 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 with type_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') and Browser('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']) (or prohibited_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('...') then await agent.run(); use Browser(keep_alive=True) to keep the same page between runs.
  • Custom tools: plain functions with @tools.action('description'), then Agent(task, tools=tools).
  • Ultrafast: Agent(task, mode='ultrafast') acts on accessibility-tree ids; the default on bu-fast and bu-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 to result.cost_usd) with Agent(task, web_search=True) (off by default; needs a Browser Use key, and can't be combined with allowed_domains).

Browser Use Benchmark v2

Browser Use Benchmark v2 - Mean rubric score by model and cost per task

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 with type_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.


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}
}

Tell your computer what to do, and it gets it done.

Twitter Follow     Twitter Follow

Made with ❤️ in Zurich and San Francisco

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)

Source distribution for browser-use 1.0.0rc5
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)

Table of built distributions (wheels) for browser-use 1.0.0rc5
File Interpreter ABI Platform Actions
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.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page