Bright Data - Browser
The user already wrote the automation. This skill changes the launch line so it runs on Bright Data's cloud browser instead of the local one, wires in the credentials that line needs, and runs it once to prove it connects. Their automation logic does not move.
The one question
Who does the clicking - your code, your AI model, or us?
| Who clicks | Where it goes |
|---|
| Their code: Playwright, Puppeteer, or Selenium | Stay here. Point it at our cloud browser, nothing to rewrite. |
| Their computer-use model, the AI that clicks by itself | Stay here. Same swap, same endpoint. |
| The agent itself, step by step from a terminal | Stay here and drive : , , , , , one command per action, no code to hold. Every subcommand is in , and the skill's has the session options. |
| Us | . Scraper Studio does the clicking, and the user gets fields back instead of a driver to maintain. |
Ask it when the request names a framework, a technique, or an agent but leaves who drives the browser unstated. Ask it once, then act. A user holding working Playwright code and a blocked local browser never needs to hear about Scraper Studio.
What the swap is
The local launch call becomes a remote connect call against a websocket:
wss://brd-customer-<CUSTOMER_ID>-zone-<ZONE>:<PASSWORD>@brd.superproxy.io:9222
Selenium is the one exception. It speaks WebDriver, not CDP, so it uses
on port
with the same credentials. Selectors, waits, navigation, screenshots and page logic all stay exactly as written.
The agent fills the three pieces itself, with free API reads and the key the user already has (
, else the CLI's stored login), never with placeholders left for the user. No key anywhere means the user is not set up: hand off to
, never ask for a key in chat.
references/connect.md has the lookup and the two ways to wire it.
The zone
Find the Browser API zone by type, not by name, before writing the string:
Take the
of the entry whose
is
, and use it wherever the connect string says
. It is
after
,
on an account made by agent registration,
when the MCP server set the account up, and any name at all when a person created it by hand: read the type, then use whatever name it carries. This is one free read and it starts no session. If
is not recognized, the CLI is not installed or npm's global directory is not on PATH; both fixes live in the
skill's Install section.
No entry of that type at all is not a connect string to fix, but it is not an account problem yet either. The remedy, after the user agrees (it changes their account), is one free call,
POST https://api.brightdata.com/zone
with body
{"zone":{"name":"cli_browser","type":"browser_api"},"plan":{"type":"browser_api"}}
.
creates one on demand too, but that starts a billable session, and it uses the name
unless given
or
, so on an account whose browser zone has another name, pass that name or it makes a second zone (with an agent-registration key it cannot create one and fails instead; pass
). Do not reach for
on a machine that is already logged in: it replaces the stored key. Escalate to
when the creation is refused with
or
business_account_required
, or on a permissions refusal (a key from agent registration, or a user without the Admin or Ops role, cannot create zones): the person then makes the zone in the Control Panel.
The boundaries
Building the scraper belongs to
, and so does any ask where the user wants data and does not care what drives the browser. One page as markdown, HTML, or a screenshot belongs to
. Anything starting from a search query belongs to
. This skill is for a driver that already exists.
Logging into sites
Typing passwords through Browser API is blocked by default. It needs KYC plus a compliance exception. Never promise a login flow before that is approved, and never retry into the block. The deep detail lives one skill over: open
and read the
file inside it, which lists what needs KYC, what does not, and the approval path.
Read next
- Read references/connect.md before writing the connect line - the exact string, where the key and each of the three pieces come from, the two designs (endpoint in a secret, or looked up at run time) and when to pick which, and the Playwright edit end to end.
- Read references/errors.md the moment a connect attempt fails - the 407 codes and what each means, the Browser API auth codes, and the retry rule.
Red flags - stop if you catch yourself doing one of these
- Offering Scraper Studio to a user who already has working driver code
- Rewriting their automation instead of changing the endpoint line
- Pointing Selenium at port 9222, or Playwright at 9515
- Printing, logging, or committing the assembled endpoint, which carries the password, or printing a connect error without redacting it
- Running in a terminal: it prints the zone password
- Leaving the user a variable to fill, or asking for a key, when the agent can read the stored key itself
- Retrying a 407 without reading which code came with it
- Sending the user to KYC before an error actually refused the connect
- Hardcoding or guessing a zone name instead of finding the zone by type
- Creating a zone without asking the user first