Name | browser-use JSON |
Version |
0.5.4
JSON |
| download |
home_page | None |
Summary | Make websites accessible for AI agents |
upload_time | 2025-07-11 06:36:24 |
maintainer | None |
docs_url | None |
author | Gregor Zunic |
requires_python | <4.0,>=3.11 |
license | None |
keywords |
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
<picture>
<source media="(prefers-color-scheme: dark)" srcset="./static/browser-use-dark.png">
<source media="(prefers-color-scheme: light)" srcset="./static/browser-use.png">
<img alt="Shows a black Browser Use Logo in light color mode and a white one in dark color mode." src="./static/browser-use.png" width="full">
</picture>
<h1 align="center">Enable AI to control your browser 🤖</h1>
[](https://github.com/gregpr07/browser-use/stargazers)
[](https://link.browser-use.com/discord)
[](https://cloud.browser-use.com)
[](https://docs.browser-use.com)
[](https://x.com/intent/user?screen_name=gregpr07)
[](https://x.com/intent/user?screen_name=mamagnus00)
[](https://app.workweave.ai/reports/repository/org_T5Pvn3UBswTHIsN1dWS3voPg/881458615)
🌐 Browser-use is the easiest way to connect your AI agents with the browser.
💡 See what others are building and share your projects in our [Discord](https://link.browser-use.com/discord)! Want Swag? Check out our [Merch store](https://browsermerch.com).
🌤️ Skip the setup - try our <b>hosted version</b> for instant browser automation! <b>[Try the cloud ☁︎](https://cloud.browser-use.com)</b>.
# Quick start
With pip (Python>=3.11):
```bash
pip install browser-use
```
Install the browser:
```bash
playwright install chromium --with-deps --no-shell
```
Spin up your agent:
```python
import asyncio
from dotenv import load_dotenv
load_dotenv()
from browser_use import Agent
from browser_use.llm import ChatOpenAI
async def main():
agent = Agent(
task="Compare the price of gpt-4o and DeepSeek-V3",
llm=ChatOpenAI(model="o4-mini", temperature=1.0),
)
await agent.run()
asyncio.run(main())
```
Add your API keys for the provider you want to use to your `.env` file.
```bash
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
AZURE_OPENAI_ENDPOINT=
AZURE_OPENAI_KEY=
GOOGLE_API_KEY=
DEEPSEEK_API_KEY=
GROK_API_KEY=
NOVITA_API_KEY=
```
For other settings, models, and more, check out the [documentation 📕](https://docs.browser-use.com).
### Test with UI
You can test browser-use using its [Web UI](https://github.com/browser-use/web-ui) or [Desktop App](https://github.com/browser-use/desktop).
### Test with an interactive CLI
You can also use our `browser-use` interactive CLI (similar to `claude` code):
```bash
pip install "browser-use[cli]"
browser-use
```
## MCP Integration
Browser-use supports the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/), enabling integration with Claude Desktop and other MCP-compatible clients.
### Use as MCP Server with Claude Desktop
Add browser-use to your Claude Desktop configuration:
```json
{
"mcpServers": {
"browser-use": {
"command": "uvx",
"args": ["browser-use", "--mcp"],
"env": {
"OPENAI_API_KEY": "sk-..."
}
}
}
}
```
This gives Claude Desktop access to browser automation tools for web scraping, form filling, and more.
### Connect External MCP Servers to Browser-Use Agent
Browser-use agents can connect to multiple external MCP servers to extend their capabilities:
```python
import asyncio
from browser_use import Agent, Controller
from browser_use.mcp.client import MCPClient
from browser_use.llm import ChatOpenAI
async def main():
# Initialize controller
controller = Controller()
# Connect to multiple MCP servers
filesystem_client = MCPClient(
server_name="filesystem",
command="npx",
args=["-y", "@modelcontextprotocol/server-filesystem", "/Users/me/documents"]
)
github_client = MCPClient(
server_name="github",
command="npx",
args=["-y", "@modelcontextprotocol/server-github"],
env={"GITHUB_TOKEN": "your-github-token"}
)
# Connect and register tools from both servers
await filesystem_client.connect()
await filesystem_client.register_to_controller(controller)
await github_client.connect()
await github_client.register_to_controller(controller)
# Create agent with MCP-enabled controller
agent = Agent(
task="Find the latest report.pdf in my documents and create a GitHub issue about it",
llm=ChatOpenAI(model="gpt-4o"),
controller=controller # Controller has tools from both MCP servers
)
# Run the agent
await agent.run()
# Cleanup
await filesystem_client.disconnect()
await github_client.disconnect()
asyncio.run(main())
```
See the [MCP documentation](https://docs.browser-use.com/customize/mcp-server) for more details.
# Demos
<br/><br/>
[Task](https://github.com/browser-use/browser-use/blob/main/examples/use-cases/shopping.py): Add grocery items to cart, and checkout.
[](https://www.youtube.com/watch?v=L2Ya9PYNns8)
<br/><br/>
Prompt: Add my latest LinkedIn follower to my leads in Salesforce.

<br/><br/>
[Prompt](https://github.com/browser-use/browser-use/blob/main/examples/use-cases/find_and_apply_to_jobs.py): Read my CV & find ML jobs, save them to a file, and then start applying for them in new tabs, if you need help, ask me.'
https://github.com/user-attachments/assets/171fb4d6-0355-46f2-863e-edb04a828d04
<br/><br/>
[Prompt](https://github.com/browser-use/browser-use/blob/main/examples/browser/real_browser.py): Write a letter in Google Docs to my Papa, thanking him for everything, and save the document as a PDF.

<br/><br/>
[Prompt](https://github.com/browser-use/browser-use/blob/main/examples/custom-functions/save_to_file_hugging_face.py): Look up models with a license of cc-by-sa-4.0 and sort by most likes on Hugging face, save top 5 to file.
https://github.com/user-attachments/assets/de73ee39-432c-4b97-b4e8-939fd7f323b3
<br/><br/>
## More examples
For more examples see the [examples](examples) folder or join the [Discord](https://link.browser-use.com/discord) and show off your project. You can also see our [`awesome-prompts`](https://github.com/browser-use/awesome-prompts) repo for prompting inspiration.
# Vision
Tell your computer what to do, and it gets it done.
## Roadmap
### Agent
- [ ] Improve agent memory to handle +100 steps
- [ ] Enhance planning capabilities (load website specific context)
- [ ] Reduce token consumption (system prompt, DOM state)
### DOM Extraction
- [ ] Enable detection for all possible UI elements
- [ ] Improve state representation for UI elements so that all LLMs can understand what's on the page
### Workflows
- [ ] Let user record a workflow - which we can rerun with browser-use as a fallback
- [ ] Make rerunning of workflows work, even if pages change
### User Experience
- [ ] Create various templates for tutorial execution, job application, QA testing, social media, etc. which users can just copy & paste.
- [ ] Improve docs
- [ ] Make it faster
### Parallelization
- [ ] Human work is sequential. The real power of a browser agent comes into reality if we can parallelize similar tasks. For example, if you want to find contact information for 100 companies, this can all be done in parallel and reported back to a main agent, which processes the results and kicks off parallel subtasks again.
## Contributing
We love contributions! Feel free to open issues for bugs or feature requests. To contribute to the docs, check out the `/docs` folder.
## 🧪 How to make your agents robust?
We offer to run your tasks in our CI—automatically, on every update!
- **Add your task:** Add a YAML file in `tests/agent_tasks/` (see the [`README there`](tests/agent_tasks/README.md) for details).
- **Automatic validation:** Every time we push updates, your task will be run by the agent and evaluated using your criteria.
## Local Setup
To learn more about the library, check out the [local setup 📕](https://docs.browser-use.com/development/local-setup).
`main` is the primary development branch with frequent changes. For production use, install a stable [versioned release](https://github.com/browser-use/browser-use/releases) instead.
---
## Swag
Want to show off your Browser-use swag? Check out our [Merch store](https://browsermerch.com). Good contributors will receive swag for free 👀.
## Citation
If you use Browser Use in your research or project, please cite:
```bibtex
@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}
}
```
<div align="center"> <img src="https://github.com/user-attachments/assets/06fa3078-8461-4560-b434-445510c1766f" width="400"/>
[](https://x.com/intent/user?screen_name=gregpr07)
[](https://x.com/intent/user?screen_name=mamagnus00)
</div>
<div align="center">
Made with ❤️ in Zurich and San Francisco
</div>
Raw data
{
"_id": null,
"home_page": null,
"name": "browser-use",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.11",
"maintainer_email": null,
"keywords": null,
"author": "Gregor Zunic",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/97/f8/624d7ac5c02e8ae859e28d7ebce77c7754a52324c1dc0f768787d329b2dd/browser_use-0.5.4.tar.gz",
"platform": null,
"description": "<picture>\n <source media=\"(prefers-color-scheme: dark)\" srcset=\"./static/browser-use-dark.png\">\n <source media=\"(prefers-color-scheme: light)\" srcset=\"./static/browser-use.png\">\n <img alt=\"Shows a black Browser Use Logo in light color mode and a white one in dark color mode.\" src=\"./static/browser-use.png\" width=\"full\">\n</picture>\n\n<h1 align=\"center\">Enable AI to control your browser \ud83e\udd16</h1>\n\n[](https://github.com/gregpr07/browser-use/stargazers)\n[](https://link.browser-use.com/discord)\n[](https://cloud.browser-use.com)\n[](https://docs.browser-use.com)\n[](https://x.com/intent/user?screen_name=gregpr07)\n[](https://x.com/intent/user?screen_name=mamagnus00)\n[](https://app.workweave.ai/reports/repository/org_T5Pvn3UBswTHIsN1dWS3voPg/881458615)\n\n\ud83c\udf10 Browser-use is the easiest way to connect your AI agents with the browser.\n\n\ud83d\udca1 See what others are building and share your projects in our [Discord](https://link.browser-use.com/discord)! Want Swag? Check out our [Merch store](https://browsermerch.com).\n\n\ud83c\udf24\ufe0f Skip the setup - try our <b>hosted version</b> for instant browser automation! <b>[Try the cloud \u2601\ufe0e](https://cloud.browser-use.com)</b>.\n\n# Quick start\n\nWith pip (Python>=3.11):\n\n```bash\npip install browser-use\n```\n\nInstall the browser:\n\n```bash\nplaywright install chromium --with-deps --no-shell\n```\n\nSpin up your agent:\n\n```python\nimport asyncio\nfrom dotenv import load_dotenv\nload_dotenv()\nfrom browser_use import Agent\nfrom browser_use.llm import ChatOpenAI\n\nasync def main():\n agent = Agent(\n task=\"Compare the price of gpt-4o and DeepSeek-V3\",\n llm=ChatOpenAI(model=\"o4-mini\", temperature=1.0),\n )\n await agent.run()\n\nasyncio.run(main())\n```\n\nAdd your API keys for the provider you want to use to your `.env` file.\n\n```bash\nOPENAI_API_KEY=\nANTHROPIC_API_KEY=\nAZURE_OPENAI_ENDPOINT=\nAZURE_OPENAI_KEY=\nGOOGLE_API_KEY=\nDEEPSEEK_API_KEY=\nGROK_API_KEY=\nNOVITA_API_KEY=\n```\n\nFor other settings, models, and more, check out the [documentation \ud83d\udcd5](https://docs.browser-use.com).\n\n### Test with UI\n\nYou can test browser-use using its [Web UI](https://github.com/browser-use/web-ui) or [Desktop App](https://github.com/browser-use/desktop).\n\n### Test with an interactive CLI\n\nYou can also use our `browser-use` interactive CLI (similar to `claude` code):\n\n```bash\npip install \"browser-use[cli]\"\nbrowser-use\n```\n\n## MCP Integration\n\nBrowser-use supports the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/), enabling integration with Claude Desktop and other MCP-compatible clients.\n\n### Use as MCP Server with Claude Desktop\n\nAdd browser-use to your Claude Desktop configuration:\n\n```json\n{\n \"mcpServers\": {\n \"browser-use\": {\n \"command\": \"uvx\",\n \"args\": [\"browser-use\", \"--mcp\"],\n \"env\": {\n \"OPENAI_API_KEY\": \"sk-...\"\n }\n }\n }\n}\n```\n\nThis gives Claude Desktop access to browser automation tools for web scraping, form filling, and more.\n\n### Connect External MCP Servers to Browser-Use Agent\n\nBrowser-use agents can connect to multiple external MCP servers to extend their capabilities:\n\n```python\nimport asyncio\nfrom browser_use import Agent, Controller\nfrom browser_use.mcp.client import MCPClient\nfrom browser_use.llm import ChatOpenAI\n\nasync def main():\n # Initialize controller\n controller = Controller()\n \n # Connect to multiple MCP servers\n filesystem_client = MCPClient(\n server_name=\"filesystem\",\n command=\"npx\",\n args=[\"-y\", \"@modelcontextprotocol/server-filesystem\", \"/Users/me/documents\"]\n )\n \n github_client = MCPClient(\n server_name=\"github\", \n command=\"npx\",\n args=[\"-y\", \"@modelcontextprotocol/server-github\"],\n env={\"GITHUB_TOKEN\": \"your-github-token\"}\n )\n \n # Connect and register tools from both servers\n await filesystem_client.connect()\n await filesystem_client.register_to_controller(controller)\n \n await github_client.connect()\n await github_client.register_to_controller(controller)\n \n # Create agent with MCP-enabled controller\n agent = Agent(\n task=\"Find the latest report.pdf in my documents and create a GitHub issue about it\",\n llm=ChatOpenAI(model=\"gpt-4o\"),\n controller=controller # Controller has tools from both MCP servers\n )\n \n # Run the agent\n await agent.run()\n \n # Cleanup\n await filesystem_client.disconnect()\n await github_client.disconnect()\n\nasyncio.run(main())\n```\n\nSee the [MCP documentation](https://docs.browser-use.com/customize/mcp-server) for more details.\n\n# Demos\n\n<br/><br/>\n\n[Task](https://github.com/browser-use/browser-use/blob/main/examples/use-cases/shopping.py): Add grocery items to cart, and checkout.\n\n[](https://www.youtube.com/watch?v=L2Ya9PYNns8)\n\n<br/><br/>\n\nPrompt: Add my latest LinkedIn follower to my leads in Salesforce.\n\n\n\n<br/><br/>\n\n[Prompt](https://github.com/browser-use/browser-use/blob/main/examples/use-cases/find_and_apply_to_jobs.py): Read my CV & find ML jobs, save them to a file, and then start applying for them in new tabs, if you need help, ask me.'\n\nhttps://github.com/user-attachments/assets/171fb4d6-0355-46f2-863e-edb04a828d04\n\n<br/><br/>\n\n[Prompt](https://github.com/browser-use/browser-use/blob/main/examples/browser/real_browser.py): Write a letter in Google Docs to my Papa, thanking him for everything, and save the document as a PDF.\n\n\n\n<br/><br/>\n\n[Prompt](https://github.com/browser-use/browser-use/blob/main/examples/custom-functions/save_to_file_hugging_face.py): Look up models with a license of cc-by-sa-4.0 and sort by most likes on Hugging face, save top 5 to file.\n\nhttps://github.com/user-attachments/assets/de73ee39-432c-4b97-b4e8-939fd7f323b3\n\n<br/><br/>\n\n## More examples\n\nFor more examples see the [examples](examples) folder or join the [Discord](https://link.browser-use.com/discord) and show off your project. You can also see our [`awesome-prompts`](https://github.com/browser-use/awesome-prompts) repo for prompting inspiration.\n\n# Vision\n\nTell your computer what to do, and it gets it done.\n\n## Roadmap\n\n### Agent\n\n- [ ] Improve agent memory to handle +100 steps\n- [ ] Enhance planning capabilities (load website specific context)\n- [ ] Reduce token consumption (system prompt, DOM state)\n\n### DOM Extraction\n\n- [ ] Enable detection for all possible UI elements\n- [ ] Improve state representation for UI elements so that all LLMs can understand what's on the page\n\n### Workflows\n\n- [ ] Let user record a workflow - which we can rerun with browser-use as a fallback\n- [ ] Make rerunning of workflows work, even if pages change\n\n### User Experience\n\n- [ ] Create various templates for tutorial execution, job application, QA testing, social media, etc. which users can just copy & paste.\n- [ ] Improve docs\n- [ ] Make it faster\n\n### Parallelization\n\n- [ ] Human work is sequential. The real power of a browser agent comes into reality if we can parallelize similar tasks. For example, if you want to find contact information for 100 companies, this can all be done in parallel and reported back to a main agent, which processes the results and kicks off parallel subtasks again.\n\n## Contributing\n\nWe love contributions! Feel free to open issues for bugs or feature requests. To contribute to the docs, check out the `/docs` folder.\n\n## \ud83e\uddea How to make your agents robust?\n\nWe offer to run your tasks in our CI\u2014automatically, on every update!\n\n- **Add your task:** Add a YAML file in `tests/agent_tasks/` (see the [`README there`](tests/agent_tasks/README.md) for details).\n- **Automatic validation:** Every time we push updates, your task will be run by the agent and evaluated using your criteria.\n\n## Local Setup\n\nTo learn more about the library, check out the [local setup \ud83d\udcd5](https://docs.browser-use.com/development/local-setup).\n\n`main` is the primary development branch with frequent changes. For production use, install a stable [versioned release](https://github.com/browser-use/browser-use/releases) instead.\n\n---\n\n## Swag\n\nWant to show off your Browser-use swag? Check out our [Merch store](https://browsermerch.com). Good contributors will receive swag for free \ud83d\udc40.\n\n## Citation\n\nIf you use Browser Use in your research or project, please cite:\n\n```bibtex\n@software{browser_use2024,\n author = {M\u00fcller, Magnus and \u017duni\u010d, Gregor},\n title = {Browser Use: Enable AI to control your browser},\n year = {2024},\n publisher = {GitHub},\n url = {https://github.com/browser-use/browser-use}\n}\n```\n\n <div align=\"center\"> <img src=\"https://github.com/user-attachments/assets/06fa3078-8461-4560-b434-445510c1766f\" width=\"400\"/> \n \n[](https://x.com/intent/user?screen_name=gregpr07)\n[](https://x.com/intent/user?screen_name=mamagnus00)\n \n </div>\n\n<div align=\"center\">\nMade with \u2764\ufe0f in Zurich and San Francisco\n </div>\n",
"bugtrack_url": null,
"license": null,
"summary": "Make websites accessible for AI agents",
"version": "0.5.4",
"project_urls": {
"Repository": "https://github.com/browser-use/browser-use"
},
"split_keywords": [],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "b2cbeed53ee8f07fd5dbacd61d4a2b95064c527986f49c253e8c1ddaab738533",
"md5": "351bdfe4e2cca3934eb7776cc4584953",
"sha256": "af4f784901a5095400f84ed7e0fdc822ca1a90e0fc288c81b863db9f5ba2b246"
},
"downloads": -1,
"filename": "browser_use-0.5.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "351bdfe4e2cca3934eb7776cc4584953",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.11",
"size": 288501,
"upload_time": "2025-07-11T06:36:23",
"upload_time_iso_8601": "2025-07-11T06:36:23.170719Z",
"url": "https://files.pythonhosted.org/packages/b2/cb/eed53ee8f07fd5dbacd61d4a2b95064c527986f49c253e8c1ddaab738533/browser_use-0.5.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "97f8624d7ac5c02e8ae859e28d7ebce77c7754a52324c1dc0f768787d329b2dd",
"md5": "c3e487ef8af71197cab9e244d8341fe8",
"sha256": "dbe64c7f70ea1868fc00bca1dfdb0b900c2a890c7b75034ba1a12b409f8da1b1"
},
"downloads": -1,
"filename": "browser_use-0.5.4.tar.gz",
"has_sig": false,
"md5_digest": "c3e487ef8af71197cab9e244d8341fe8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.11",
"size": 237897,
"upload_time": "2025-07-11T06:36:24",
"upload_time_iso_8601": "2025-07-11T06:36:24.295332Z",
"url": "https://files.pythonhosted.org/packages/97/f8/624d7ac5c02e8ae859e28d7ebce77c7754a52324c1dc0f768787d329b2dd/browser_use-0.5.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-11 06:36:24",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "browser-use",
"github_project": "browser-use",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "browser-use"
}