Skip to content

Extensions

Upload a Chrome extension once, then name it when you create a browser. It is installed before the browser is handed to you.

Zip the extension’s folder so that manifest.json is at the root of the zip, then upload it on the dashboard’s Extensions page or with the API:

Terminal window
curl -X POST https://api.datum.org/api/v4/extensions \
-H "X-Browser-Use-API-Key: $BROWSER_USE_API_KEY" \
-F file=@my-extension.zip
# → { "id": "…", "name": "My extension", "version": "1.2.0", … }

The name and version come from the manifest.

  • Manifest V3.
  • 100 MB zipped, 256 MB and 10,000 files unzipped, at most. 100 extensions an organization.
  • Refused (422): a key in the manifest, and the permissions debugger, proxy, processes, dns, experimental and enterprise.*, which would let an extension get around the browser’s controls.
browser = client.browsers.create(extension_ids=[extension.id])
for each in browser.extensions:
print(each.id, each.runtime_id) # chrome-extension://<runtime_id>/

Up to three extensions a browser. runtimeId is Chrome’s own id for the extension, for opening its pages.

Deleting an extension leaves the browsers already running with it untouched.