Templates Library
Explore ready-to-use automation workflows from the community.
Browse community workflows at /templates. Clone and run instantly. Contribute your workflows here. We share accepted contributions on X/LinkedIn.
Explore ready-to-use automation workflows from the community.
Browse community workflows at /templates. Clone and run instantly. Contribute your workflows here. We share accepted contributions on X/LinkedIn.
Explore ready-to-use automation workflows from the community.
Browse community workflows at /templates. Clone and run instantly. Contribute your workflows here. We share accepted contributions on X/LinkedIn.
Enterprise-grade security certification now available.
Browser Use is now SOC 2 Type II compliant. Access the trust report at /security/soc2.
Enterprise-grade security certification now available.
Browser Use is now SOC 2 Type II compliant. Access the trust report at /security/soc2.
Cloud agents now access your local Chrome sessions, cookies, and login states.
Sync your local Chrome profile to the cloud. Your agents can now use authenticated sessions, cookies, and preferences from your local browser.
export BROWSER_USE_API_KEY=bu_ab1...
curl -fsSL https://browser-use.com/profile.sh | shCloud agents now access your local Chrome sessions, cookies, and login states.
Sync your local Chrome profile to the cloud. Your agents can now use authenticated sessions, cookies, and preferences from your local browser.
export BROWSER_USE_API_KEY=bu_ab1...
curl -fsSL https://browser-use.com/profile.sh | shGenerate Python/JS code for high-volume data extraction tasks.
CodeAgent writes Python and JavaScript for native browser interaction via CDP. Custom LLM trained for code generation only.
from browser_use import CodeAgent, ChatBrowserUse
agent = CodeAgent(
task=task,
llm=ChatBrowserUse(), # requires our LLM
)
await agent.run()Use cases:
Available in 0.9.0 (OSS). Grab the API key from cloud.
Generate Python/JS code for high-volume data extraction tasks.
CodeAgent writes Python and JavaScript for native browser interaction via CDP. Custom LLM trained for code generation only.
from browser_use import CodeAgent, ChatBrowserUse
agent = CodeAgent(
task=task,
llm=ChatBrowserUse(), # requires our LLM
)
await agent.run()Use cases:
Available in 0.9.0 (OSS). Grab the API key from cloud.
6x faster agents with custom-trained LLM. 20 steps per minute.
We built a special LLM that reduces the latency by 6x while keeping the same performance. The agents can now take 20 steps per minute.
from browser_use import Agent, ChatBrowserUse
# Initialize the model
llm = ChatBrowserUse()
# Create agent with the model
agent = Agent(
task="...", # Your task here
llm=llm
)For more technical deep dive read the blog at /posts/llm-gateway.
6x faster agents with custom-trained LLM. 20 steps per minute.
We built a special LLM that reduces the latency by 6x while keeping the same performance. The agents can now take 20 steps per minute.
from browser_use import Agent, ChatBrowserUse
# Initialize the model
llm = ChatBrowserUse()
# Create agent with the model
agent = Agent(
task="...", # Your task here
llm=llm
)For more technical deep dive read the blog at /posts/llm-gateway.
Bypass Cloudflare and anti-bot protection with our bare metal browser infrastructure
Access raw browser instances via Chrome DevTools Protocol:
from browser_use_sdk import BrowserUse
client = BrowserUse(api_key="bu_...")
# Basic browser session
browser_session = client.browsers.create_browser_session(
timeout=30 # minutes
)
# With profile (inherit login state)
profile_browser = client.browsers.create_browser_session(
profile_id="profile_123",
proxy_country_code="US",
timeout=60
)
print(f"CDP URL: {browser_session.cdp_url}")
print(f"Watch live: {browser_session.live_url}")For more technical details, read the blog at /posts/browser-infra.
Bypass Cloudflare and anti-bot protection with our bare metal browser infrastructure
Access raw browser instances via Chrome DevTools Protocol:
from browser_use_sdk import BrowserUse
client = BrowserUse(api_key="bu_...")
# Basic browser session
browser_session = client.browsers.create_browser_session(
timeout=30 # minutes
)
# With profile (inherit login state)
profile_browser = client.browsers.create_browser_session(
profile_id="profile_123",
proxy_country_code="US",
timeout=60
)
print(f"CDP URL: {browser_session.cdp_url}")
print(f"Watch live: {browser_session.live_url}")For more technical details, read the blog at /posts/browser-infra.
Our CDP-based alternative to Playwright/Puppeteer—built for AI-driven automation
Combine precise element interactions with AI-driven automation in a single workflow.
from browser_use import Browser, Agent
from browser_use.llm.openai import ChatOpenAI
async def main():
llm = ChatOpenAI(api_key="your-api-key")
browser = Browser()
await browser.start()
# 1. Actor: Precise navigation and element interactions
page = await browser.new_page("https://github.com/login")
email_input = await page.must_get_element_by_prompt("username field", llm=llm)
await email_input.fill("your-username")
# 2. Agent: AI-driven complex tasks
agent = Agent(browser=browser, llm=llm)
await agent.run("Complete login and navigate to my repositories")
await browser.stop()Our CDP-based alternative to Playwright/Puppeteer—built for AI-driven automation
Combine precise element interactions with AI-driven automation in a single workflow.
from browser_use import Browser, Agent
from browser_use.llm.openai import ChatOpenAI
async def main():
llm = ChatOpenAI(api_key="your-api-key")
browser = Browser()
await browser.start()
# 1. Actor: Precise navigation and element interactions
page = await browser.new_page("https://github.com/login")
email_input = await page.must_get_element_by_prompt("username field", llm=llm)
await email_input.fill("your-username")
# 2. Agent: AI-driven complex tasks
agent = Agent(browser=browser, llm=llm)
await agent.run("Complete login and navigate to my repositories")
await browser.stop()Agents can now write and execute JavaScript code to interact with websites
In your prompts you can now prompt the agent to write JavaScript code to interact with elements on the website.
This enables more precise control and complex interactions that go beyond standard browser automation—perfect for handling edge cases or custom behaviors.
from browser_use import Agent
agent = Agent(
task="Write JavaScript to extract all product prices from the page",
llm=llm
)
result = await agent.run()The agent will automatically write and execute the necessary JavaScript to complete your task.
Agents can now write and execute JavaScript code to interact with websites
In your prompts you can now prompt the agent to write JavaScript code to interact with elements on the website.
This enables more precise control and complex interactions that go beyond standard browser automation—perfect for handling edge cases or custom behaviors.
from browser_use import Agent
agent = Agent(
task="Write JavaScript to extract all product prices from the page",
llm=llm
)
result = await agent.run()The agent will automatically write and execute the necessary JavaScript to complete your task.
Typesafe Python and TypeScript SDKs for seamless cloud integration.
You can control the cloud API using the typesafe SDK.
from browser_use_sdk import BrowserUse
client = BrowserUse(api_key="bu_...")
task = client.tasks.create_task(
task="Search for the top 10 Hacker News posts and return the title and url.",
llm="browser-use-llm"
)
result = task.complete()
result.outputFor more information, check out the documentation.
Typesafe Python and TypeScript SDKs for seamless cloud integration.
You can control the cloud API using the typesafe SDK.
from browser_use_sdk import BrowserUse
client = BrowserUse(api_key="bu_...")
task = client.tasks.create_task(
task="Search for the top 10 Hacker News posts and return the title and url.",
llm="browser-use-llm"
)
result = task.complete()
result.outputFor more information, check out the documentation.
All interactions are now 100% CDP-based—no more Playwright dependencies. Nothing runs on Playwright anymore.
This means faster execution, lower overhead, and direct control over browser behavior.

Read the full technical breakdown at /posts/playwright-to-cdp.
All interactions are now 100% CDP-based—no more Playwright dependencies. Nothing runs on Playwright anymore.
This means faster execution, lower overhead, and direct control over browser behavior.

Read the full technical breakdown at /posts/playwright-to-cdp.