Launch a cloud browser and connect to it from your code.
Both Cloud paths use API V4. Choose whether Browser Use drives the browser or
your Playwright or Browser Use code connects directly over CDP. For a local agent,
use the open-source library.Get an API key and
export it:
from browser_use_sdk.v4 import BrowserUsewith BrowserUse() as client: run = client.runs.create("Find the top Hacker News story") result = client.runs.wait_for_completion(run.id) print(result.result)
import { BrowserUse } from "browser-use-sdk/v4";const client = new BrowserUse();const run = await client.runs.create({ task: "Find the top Hacker News story",});const result = await client.runs.waitForCompletion(run.id);console.log(result.result);
curl https://api.browser-use.com/api/v4/runs \ -H "X-Browser-Use-API-Key: $BROWSER_USE_API_KEY" \ -H "Content-Type: application/json" \ -d '{"task":"Find the top Hacker News story"}'
These examples connect to the managed browser’s existing context and stop it
in finally, including when connecting or navigating fails.
from browser_use_sdk.v4 import BrowserUsefrom playwright.sync_api import sync_playwrightwith BrowserUse() as client: session = client.browsers.create(proxy_country_code="us") try: if not session.cdp_url: raise RuntimeError("The browser did not return a CDP URL") with sync_playwright() as p: browser = p.chromium.connect_over_cdp(session.cdp_url) context = browser.contexts[0] page = context.pages[0] if context.pages else context.new_page() page.goto("https://example.com") print(page.title()) finally: client.browsers.stop(session.id)
import { BrowserUse } from "browser-use-sdk/v4";import { chromium } from "playwright-core";const client = new BrowserUse();const session = await client.browsers.create({ proxyCountryCode: "us" });try { if (!session.cdpUrl) throw new Error("The browser did not return a CDP URL"); const browser = await chromium.connectOverCDP(session.cdpUrl); try { const context = browser.contexts()[0]; const page = context.pages()[0] ?? await context.newPage(); await page.goto("https://example.com"); console.log(await page.title()); } finally { await browser.close(); }} finally { await client.browsers.stop(session.id);}
Disconnecting CDP does not stop the managed browser. Use
client.browsers.stop(session.id) as above, or call
PATCH /api/v4/browsers/{id} with {"action":"stop"}.