Crawl4ai
đđ€ Crawl4AI: Open-source LLM Friendly Web Crawler & Scraper. Don't be shy, join here: https://discord.gg/jP8KfhDhyN
đ Make websites accessible for AI agents. Automate tasks online with ease.
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.
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.
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.
Paste this prompt into Claude Code, Codex, Hermes, OpenClaw, or your favorite agent.
Install or upgrade browser-use to the latest stable version with uv using Python 3.12, 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.
Run the Browser Use agent locally from Python, with your choice of model and a local or cloud browser:
1. Install Browser Use (Python >= 3.11):
With uv installed, run uv init --python 3.12 first if you're starting a new project.
uv add browser-use
2. Add your OpenAI API key to .env:
# .env OPENAI_API_KEY=your-key # BROWSER_USE_API_KEY=your-key # Optional: BU2 model or cloud browser
For either optional Browser Use service, get a Browser Use API key.
3. Save this as agent.py:
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())
To use BU2, replace the ChatOpenAI line with the commented ChatBrowserUse line. The cloud-browser option works with either model.
4. Run it:
uv run agent.py
The agent opens a browser, looks up the repository, and prints its answer.
5. Run the same agent on a cloud browser (no Chrome to install; works in Docker, CI, and serverless):
Set BROWSER_USE_API_KEY (get a key), then uncomment the browser= line in agent.py and run it again:
agent = Agent( task="Find the number of stars of the browser-use repo", llm=llm, browser=Browser(use_cloud=True), )
Cloud browsers cost $0.02 per browser-hour plus network traffic (pricing), and add stealth, residential proxies, CAPTCHA solving, and a live view URL. Same code, no other changes.
Maintained by Browser Use. Compatible with Claude.
Use Claude's browser toolset with Browser Use as the driver. Browser Use implements all 31 browser actions and can control a local browser, a Browser Use Cloud browser, or an existing remote browser over CDP. Bash is included in the Browser Use integration for processing data and writing files.
Requires an Anthropic SDK version that includes anthropic.tools.browser.
Bash requires a Linux or macOS host with /bin/bash; use WSL on Windows.
The snippet below runs inside an async function; see the quickstart for a complete script.
import os from anthropic import AsyncAnthropic from browser_use.integrations.toolsets_for_claude import Bash, BrowserUse task = 'Open example.com and report its page title.' driver = BrowserUse() # Or BrowserUse(use_cloud=True) bash = Bash(output_dir='outputs') async with driver, AsyncAnthropic() as client: runner = client.beta.messages.tool_runner( model=os.environ['ANTHROPIC_MODEL'], max_tokens=32_768, max_iterations=100, tools=[driver, bash], messages=[{'role': 'user', 'content': task}], ) result = await runner.until_done()
Quickstart â · Integration docs â
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.
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.
We recommend BU2, our model optimized for browser automation: ChatBrowserUse(model='bu-2-0'). It uses BROWSER_USE_API_KEY; ChatBrowserUse() currently selects the same model.
The best choice depends on your tasks, latency, and budget. See the BU2 model card, benchmark, and supported models and pricing to compare options.
Yes. ChatBrowserUse accepts provider-prefixed model IDs through the Browser Use gateway, using BROWSER_USE_API_KEY:
from browser_use import Agent, ChatBrowserUse llm = ChatBrowserUse(model='anthropic/claude-sonnet-4-6') # or 'google/gemini-3-pro' agent = Agent(task='...', llm=llm)
You can also use providers directly through wrappers such as ChatOpenAI, ChatAnthropic, and ChatGoogle, with each provider's own API key. See supported models.
No. Agent(...) supplies the Browser Use system prompt automatically, including when you change models. Put your task in task=. Use extend_system_message to add instructions or override_system_message to replace the default prompt when you need custom behavior.
See the custom system prompt example.
Yes. Register a function with Tools and pass it to the agent. This example adds a tool for the current UTC time and uses BROWSER_USE_API_KEY from .env:
import asyncio from datetime import datetime, timezone from browser_use import ActionResult, Agent, ChatBrowserUse, Tools from dotenv import load_dotenv load_dotenv() tools = Tools() @tools.action(description='Get the current date and time in UTC.') def get_current_time() -> ActionResult: return ActionResult(extracted_content=datetime.now(timezone.utc).isoformat()) async def main(): agent = Agent( task="What is the current UTC time?", llm=ChatBrowserUse(model='bu-2-0'), tools=tools, ) history = await agent.run() print(history.final_result()) if __name__ == "__main__": asyncio.run(main())
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 a local browser and a local model through Ollama, subject to your hardware and model requirements.
This open-source library is licensed under the MIT License. For Browser Use services & data policy, see our Terms of Service and Privacy Policy.
Browser.from_system_chrome() to reuse a Chrome profile. See the real-browser guide and example.Browser(use_cloud=True, cloud_profile_id='your-profile-id').Profile sync transfers cookies, not local storage, IndexedDB, or extensions. Some sites may require you to sign in again.
Browser Use Cloud provides stealth browsers and proxies designed to reduce bot detection and CAPTCHA challenges. With the Python library, enable a cloud browser with Browser(use_cloud=True) and set BROWSER_USE_API_KEY.
Results depend on the site and challenge; no browser configuration guarantees that every CAPTCHA can be avoided or solved.
Choose how much you want to manage:
You can also host the Python library and browsers on your own infrastructure.
Yes. Save a successful run, then replay its clicks and typing with new values. The snippet below runs inside an async function:
from browser_use import Agent, ChatBrowserUse llm = ChatBrowserUse() agent = Agent(task='Open https://example.com/billing and request an invoice copy for Ada Lovelace, ada@example.com', llm=llm) await agent.run() agent.save_history('invoice_run.json') print(agent.detect_variables()) # names come from the form's fields, e.g. 'name' and 'email' # Later: the same clicks and typing with new values, no model call per step results = await Agent(task='', llm=llm).load_and_rerun( 'invoice_run.json', variables={'name': 'Grace Hopper', 'email': 'grace@example.com'}, skip_failures=False )
detect_variables() prints. An unknown name is skipped with a warning, and the recorded value is typed instead.RuntimeError at the first step it cannot match. The steps before it already ran, so check whether the form was sent before you run the agent again.sensitive_data, typed secrets are saved as <secret>key</secret> placeholders, but page snapshots and results are saved as they were and can still contain them. Give the replaying agent the same sensitive_data; without it, the placeholder text is typed.| 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. |
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}
}
đđ€ Crawl4AI: Open-source LLM Friendly Web Crawler & Scraper. Don't be shy, join here: https://discord.gg/jP8KfhDhyN
The open-source app everyone uses to manage agents at work
An open-source long-horizon SuperAgent harness that researches, codes, and creates. With the help of sandboxes, memories, tools, skill, subagents and message gateway, it handles different levels of tasks that could take minutes to hours.
The headless browser for AI agents and web scraping
Nouvelle version disponible.