Browser Use
Run AI-driven web tasks through a local or managed cloud browser.
- Source repo
- browser-use/browser-use
- Stars
- ★ 120k
- Last updated
- today
- License
- MIT
- Primary language
- Python
- FA score
- 47/100 · Major gaps
At a glance
- How it runs
- Works with
- Universal · cross-platformCodex · Claude Code · OpenAI API · Claude API
- Cost
- Free tier plus a paid hosted plan
- Setup effort
- Low · running in minutes
- You'll need
- Typical use
- An operations team automating appointment workflows can have the agent find an open slot, select a date and time, and complete browser steps; the showcased example books a driving test.
- Not a fit if
- Teams that need fully offline or on-prem data handling
- Teams unwilling to depend on BROWSER_USE_API_KEY cloud services
- Anyone needing a guarantee that every CAPTCHA is solved
- Source review
- 47/100 · Major gaps 2 safety controls not found
What does this agent do, and when should you use it?
Browser Use is an MIT-licensed browser-agent project delivered as a fully hosted Cloud API, a CLI for existing agents, and an embeddable Python library. The Python interface constructs an Agent from a task and a model wrapper such as ChatOpenAI, ChatBrowserUse, ChatAnthropic, or ChatGoogle, then operates a local or cloud Browser. It performs multi-step web interactions and exposes the outcome through the run history's final_result(); documented examples include retrieving a repository's star count and booking a driving test. Applications can register custom actions with Tools, request structured output, customize the system prompt, and reuse browser profiles. Teams can therefore self-host the agent and browser, retain their agent while outsourcing only the browser, or hand both layers to the hosted service.
In the local Python flow, credentials are loaded from .env, a model wrapper and natural-language task are passed to Agent, and await agent.run() starts or connects to a Browser. The agent navigates the network, performs page interactions, records run history, and makes the final answer available through final_result(). Setting Browser(use_cloud=True) selects a hosted browser, while Browser.from_system_chrome() can reuse a local Chrome profile; a cloud browser can use synchronized cookies through cloud_profile_id. Developers can decorate Python functions with @tools.action, collect them in Tools, and pass them to the agent as additional operations. The CLI route uses browser-use skill install to register browser access for existing agents including Codex and Claude Code, while the fully hosted Cloud API runs the task, agent, browser, and supporting infrastructure.
- An operations team automating appointment workflows can have the agent find an open slot, select a date and time, and complete browser steps; the showcased example books a driving test.
- A developer already working in Codex or Claude Code can install the CLI skill to give that existing agent browser access.
- A Python application team can embed
Agent, choose its model provider, and consume the task result throughfinal_result(). - A team automating authenticated sites can reuse a system Chrome profile locally or synchronize cookies into a cloud profile referenced by
cloud_profile_id. - An organization running browser tasks at scale can use the fully hosted API for managed agents, browsers, recordings, profiles, and data-policy infrastructure.
- A developer with domain-specific requirements can register custom Python actions through
Tools, such as an action that returns the current UTC time.
How do you install or deploy this agent?
The Python library requires Python 3.11 or newer. For a new project, the documented setup uses Python 3.12 and uv:
uv init --python 3.12
uv add browser-useAdd an OpenAI credential to .env. Add the Browser Use credential when using BU2 or a cloud browser:
# .env
OPENAI_API_KEY=your-key
# BROWSER_USE_API_KEY=your-key # Optional: BU2 model or cloud browserFor the CLI route used with Codex, Claude Code, Hermes, OpenClaw, or another existing agent, the documented instruction is to install or upgrade browser-use to the latest stable version with uv on Python 3.12, then run:
browser-use skill installThe CLI must subsequently be connected to a browser; the supplied source does not include more granular connection commands.
How do you use this agent?
Save the following as agent.py. It uses an OpenAI model to run a browser task that retrieves the repository's star count:
import asyncio
from browser_use import Agent, Browser, ChatBrowserUse, ChatOpenAI
from dotenv import load_dotenv
load_dotenv()
async def main():
llm = ChatOpenAI(model='gpt-5.6-luna', reasoning_effort='xhigh')
# llm = ChatBrowserUse(model='bu-2-0') # Use BU2 instead; requires BROWSER_USE_API_KEY
agent = Agent(
task="Find the number of stars of the browser-use repo",
llm=llm,
# browser=Browser(use_cloud=True), # Use a cloud browser; requires BROWSER_USE_API_KEY
)
history = await agent.run()
print(history.final_result())
if __name__ == "__main__":
asyncio.run(main())Run it with:
uv run agent.pyTo use BU2, replace the active ChatOpenAI assignment with the commented ChatBrowserUse(model='bu-2-0') line. To use a hosted browser, enable Browser(use_cloud=True). Both optional services require BROWSER_USE_API_KEY, although the cloud browser can be paired with either model route.
What are this agent's strengths and limitations?
- It offers three concrete adoption paths—hosted API, CLI for an existing agent, and an embeddable Python library—covering different infrastructure ownership needs.
- The model layer is flexible: the project documents BU2, direct OpenAI, Anthropic, and Google wrappers, and provider-prefixed models through the Browser Use gateway.
- Both local and cloud browsers are supported, with documented options for system Chrome reuse, cloud cookie profiles, recordings, stealth browsers, and proxies.
Tools, structured output, and system-message extension or replacement allow applications to add domain-specific operations and output constraints.- The Python library is MIT-licensed and can be deployed with self-managed agents and browsers.
- The Python route requires Python 3.11 or newer, and the documented workflow also needs
uv, environment configuration, model credentials, and an available browser. - A free library does not mean cost-free execution: model providers,
ChatBrowserUse, and Browser Use Cloud may charge for inference or hosted-browser usage. - BU2, cloud browsers, and cloud profiles require
BROWSER_USE_API_KEY, creating a service dependency when those capabilities are adopted. - Profile synchronization transfers cookies but not local storage, IndexedDB, or extensions, so some sites may still require a fresh sign-in.
- Stealth browsers and proxies can reduce detection and CAPTCHA challenges, but the project explicitly does not guarantee that every CAPTCHA can be avoided or solved.
How does this agent compare with similar options?
The fully hosted Cloud path fits teams that want to submit tasks through an API and delegate both the agent and browser infrastructure. The CLI fits users who already work with Codex, Claude Code, Hermes, OpenClaw, Pi, or Cursor and primarily need browser access added to that agent. The Python library is the better fit when an application needs custom tools, structured output, model selection, or direct control of agent code; both the CLI and library can use either local or cloud browsers. For models, the project recommends the browser-optimized BU2 but also documents OpenAI, Anthropic, and Google routes, leaving adopters to balance task performance, latency, and budget.
Key facts side by side with the most closely related agents.
| Agent | Source review | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| Browser Use This agent | 47 · Major gaps | Hosted serviceFreemium | ★ 120k | today | Python | Codex · Claude Code · OpenAI API · Claude API |
| WebArena: Realistic Web Environment for Agents | 39 · Major gaps | CLIFree + model costs | ★ 1.6k | 11mo ago | Python | — |
| Opensteer | 49 · Major gaps | CLIFree | ★ 205 | today | TypeScript | — |
| Obscura Headless Browser | 75 · Good | CLIFree | ★ 30k | 1d ago | Rust | Claude.ai |
How does FollowAgents rate this agent?
Why each dimension lost points
Evidence shows: The project provides CLI and Python library, allows custom tools and LLMs, but does not explicitly implement least privilege; user confirmation mechanism is absent, no user confirmation steps seen; data flow transparency is limited, README mentions telemetry but does not detail data flow; sensitive data handling, README mentions authentication and CAPTCHA handling but not how sensitive data is protected; dependency security, pyproject.toml pins dependency versions but no vulnerability scanning or security audit evidence; external effects, the project can automate browser actions but no explicit restrictions or warnings; rollback mechanism not mentioned; source attribution, README and pyproject.toml provide author info but publisher unverified. Deductions: missing user confirmation, rollback, insufficient data flow and sensitive data handling documentation.
Evidence shows: Internal consistency is good, README, pyproject.toml, and test files correspond; dependency availability, dependency list is complete and pinned but no availability guarantee; failure messages, test files have error handling but no user-friendly failure messages. Deductions: failure message design not fully demonstrated.
Evidence shows: README clearly distinguishes CLI and Python library use cases, suitable for different audiences; capability boundaries, README explains CLI and library scenarios but no explicit limits; trigger precision, CLI triggered by commands but no detailed trigger conditions; environment fit, pyproject.toml supports multiple platforms but no detailed system requirements. Deductions: trigger precision and system requirements insufficient.
Evidence shows: Information architecture is clear, README well-structured; install notes detailed, multiple installation methods; naming stability, multiple CLI aliases provided but no stability statement; examples and FAQ rich, multiple use cases; known limitations, README mentions production memory issues but not comprehensive; license MIT, clear; versioning and changelog, pyproject.toml has version but no changelog; maintenance responsibility, README provides author and community links. Deductions: missing changelog and comprehensive known limitations.
Evidence shows: Output usability, README shows various output formats (e.g., CSV, tables); marginal value, project provides unique browser automation capability; cost-benefit, README mentions free and open source but no detailed cost analysis. Deductions: cost-benefit analysis insufficient.
Evidence shows: Claims in README (e.g., benchmarks) lack specific data sources; cross-source corroboration, README mentions benchmarks and leaderboards but no links; fact-inference separation, README mixes facts and marketing language. Deductions: claims lack traceability, facts and inferences not clearly separated.
- Not found in source: confirmation before actingTurn on (or add) a confirmation step before it acts, and try it in a sandbox or test environment before real data.
- Not found in source: rollback or recovery pathBack up first, or work on a git branch or snapshot, so its changes can be undone.
- Publisher identity unverified, proceed with caution.
- Lack of user confirmation mechanism, automated actions may pose risks.
- Insufficient documentation on data flow and sensitive data handling, further review needed.
- Dependencies pinned but no security audit, watch for dependency vulnerabilities.
Recent releases
Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.
-
0.13.14 0.13.14: Python agent and integration updates
Release notes excerpt
This release keeps the Python agent and its existing models. The Pi migration remains separate. Changes since the last PyPI release: - Add OpenAI browser tools and the shared Bash helper. - Improve bounded page observations, form state, file access, and browser recovery. - Fix temporary empty Cloud tab URLs. - Keep screenshots, crops, and clicks aligned on scaled displays. - Clean up failed browser reconnect initialization. - Improve missing-key errors for Cloud browsers. - Support Browser Use Cloud SDK V4 imports. - Update aiohttp from 3.14.3 to 3.14.5. …View on GitHub ↗ -
0.13.13 0.13.13: OpenAI browser tools and Cloud fixes
Release notes excerpt
This release includes the OpenAI browser-tool driver and fixes two integration issues. - Handle temporary empty Cloud tab URLs during navigation. - Keep screenshots, crops, and pointer coordinates aligned on scaled displays. - Provide 18 default browser tools and six optional actions through Browser Use Actor. - Support local browsers, Browser Use Cloud, and borrowed browser sessions. Install the openai-tools extra with OpenAI Python 3.31+. OpenAI 3.x uses httpx2; use its DefaultAsyncHttpxClient for custom HTTP clients. …View on GitHub ↗ -
0.13.12 0.13.12: OpenAI browser tools
Release notes excerpt
Add OpenAI browser tools backed by Browser Use Actor. - Import BrowserUse from browser_use.integrations.openai. - Install browser-use[openai-tools] to enable OpenAI Python 3.31+. - Use local browsers, Browser Use Cloud, or an existing connected BrowserSession. - Support the 18 default browser tools and six optional actions. - Preserve borrowed browser ownership and check Cloud browser cleanup. - Preserve URL and timeout settings across OpenAI 2.x and 3.x model wrappers. OpenAI 3.x uses httpx2. For custom HTTP clients, use OpenAI's DefaultAsyncHttpxClient. …View on GitHub ↗
FAQ
Can I use it for free?
ChatBrowserUse, and Browser Use Cloud can incur usage charges. A local browser and an Ollama-hosted local model are also documented options, subject to hardware and model requirements.Must I use Browser Use's model or cloud service?
ChatOpenAI, ChatAnthropic, and ChatGoogle, and it can control a local browser. BU2 and the hosted browser are optional paths requiring BROWSER_USE_API_KEY.How does it handle authenticated websites?
Browser.from_system_chrome() can reuse a Chrome profile. For cloud execution, a synchronized profile can be selected with Browser(use_cloud=True, cloud_profile_id='your-profile-id'). Only cookies are synchronized, so some sites may require another sign-in.