Skip to main content
Want a ready-made UI? See the Chat UI tutorial.
liveUrl is returned on session creation.
from browser_use_sdk.v3 import AsyncBrowserUse

client = AsyncBrowserUse()
session = await client.sessions.create(task="Check how many GitHub stars browser-use has")
print(session.live_url)
liveUrl is also returned when creating a standalone browser session:
browser = await client.browsers.create()
print(browser.live_url)

Embed live browser into your app

Useful for human interaction or to see live what’s happening.
<iframe
  src="{LIVE_URL}"
  width="1280"
  height="720"
  allow="autoplay"
  style="border: none; border-radius: 8px;"
></iframe>
The live URL is hosted on live.browser-use.com. If your app sets a Content Security Policy, add it to your frame-src directive:
Content-Security-Policy: frame-src 'self' https://live.browser-use.com;
For responsive sizing, use CSS instead of fixed dimensions:
<iframe
  src="{LIVE_URL}"
  style="width: 100%; aspect-ratio: 16/9; border: none; border-radius: 8px;"
  allow="autoplay"
></iframe>

Customize

Append query parameters to the liveUrl:
ParameterValuesDescription
themelight, dark (default)Light or dark mode
uifalseHide the browser chrome (URL bar, tabs)
https://live.browser-use.com?wss=...&theme=light
https://live.browser-use.com?wss=...&ui=false

Recording

waitForRecording / wait_for_recording requires the v3 SDK (from browser_use_sdk.v3 import AsyncBrowserUse / import { BrowserUse } from "browser-use-sdk/v3").
Enable recording to get an MP4 video of the browser session. Only available when the agent actually opens a browser — tasks answered without browsing produce no recording. If you run multiple tasks in the same session (with keep_alive), you may get multiple recordings.
from browser_use_sdk.v3 import AsyncBrowserUse

client = AsyncBrowserUse()
result = await client.run(
    "Check how many GitHub stars browser-use has",
    enable_recording=True,
)

# Waits up to 15s for recording to be ready. Returns [] if no browser was opened.
urls = await client.sessions.wait_for_recording(result.id)
for url in urls:
    print(url)  # presigned MP4 download URL
For standalone browser sessions, pass enable_recording when creating the browser and retrieve the URL after stopping it:
browser = await client.browsers.create(enable_recording=True)
# ... use the browser via CDP ...
stopped = await client.browsers.stop(browser.id)
print(stopped.recording_url)  # presigned MP4 download URL
Recording URLs are presigned and expire after 1 hour. Download or serve the recording promptly. If you need to access it later, save the MP4 to your own storage.
  • Live messages — stream the agent’s messages alongside the live browser view
  • Follow-up tasks — chain tasks in one session while watching live