Bright Data — Agent Onboarding Bright Data gives agents reliable access to the open web: SERP results that look like a real browser, clean markdown from any URL (with CAPTCHA + JS handled), structured datasets for 40+ platforms (Amazon, LinkedIn, Instagram, TikTok, YouTube, Reddit, Crunchbase, …), and a Browser API for pages that need real interaction. This skill is the entry point. Read it once, pick a path, then hand off to the narrower skill that owns that path. Install One command installs the CLI and the agent skills, and walks the human through OAuth in the browser:
macOS / Linux — fastest install
curl -fsSL https://cli.brightdata.com/install.sh | bash
Cross-platform (or if you don't want the install script)
npm install -g @brightdata/cli
One-off, no install
npx --yes --package @brightdata/cli brightdata < command
Requires Node.js >= 20. After install, both brightdata and bdata (shorthand) are available. Then authenticate once : bdata login This single command: Opens the browser for OAuth (or use bdata login --device on headless / SSH machines) Saves the API key locally — you never need to paste a token again Auto-creates the required proxy zones ( cli_unlocker , cli_browser ) Sets sensible default configuration For non-interactive setups you can pass the key directly: bdata login --api-key < key
or
export BRIGHTDATA_API_KEY = < key
Verify the install before doing real work: bdata version bdata config
confirms auth + zones
bdata zones
should list cli_unlocker, cli_browser
bdata budget
confirms account + balance
If any of these fail, route to Path C (auth) before continuing. Install agent skills (optional, recommended) The CLI ships an installer that drops Bright Data skills directly into your coding agent's skill directory:
Interactive picker — choose skills + target agent
bdata skill add
Install a specific skill
bdata skill add scrape bdata skill add data-feeds bdata skill add competitive-intel
See everything available
bdata skill list
These are the skills you'll hand off to from the paths below
(
scrape
,
search
,
data-feeds
,
scraper-builder
,
brightdata-cli
,
bright-data-mcp
, …).
Choose your path
All paths share the same install + auth above. The difference is what
you do next.
Situation
Path
Need web data
during this session
Path A
— live CLI tools
Need to
add Bright Data to app code
Path B
— SDK / REST integration
Want a
drop-in tool layer for an LLM agent
Path M
— MCP server
Need an
API key first
Path C
— auth only
Don't want to install anything
Path D
— REST API directly
If your task spans paths, do them in order: auth → live tools to
explore → app integration once the shape is known.
Path A — Live web tools (CLI)
Use this when the agent itself needs web data right now: discovering
URLs, fetching clean content, pulling structured records from a known
platform, or running a quick competitive scan.
After install + login, hand off to the narrower skills:
brightdata-cli
— overall command surface (
scrape
,
search
,
pipelines
,
status
,
zones
,
budget
,
config
)
search
— discovery via
bdata search
(Google / Bing / Yandex
SERP, structured JSON)
scrape
— clean content from a known URL via
bdata scrape
(markdown / HTML / JSON / screenshot)
data-feeds
— structured records from 40+ supported platforms via
bdata pipelines bdata login
BRIGHTDATA_SERP_ZONE=cli_unlocker # or a dedicated SERP zone
If you don't have a key yet, do Path C first.
Smoke test before writing real code
Always run one real Bright Data request before scaling up integration
work — catches auth, zone, and quota issues before they hide inside
your app's error paths.
Web Unlocker via REST
curl
-sS
https://api.brightdata.com/request
\
-H
"Authorization: Bearer
$BRIGHTDATA_API_KEY
"
\
-H
"Content-Type: application/json"
\
-d
'{
"url": "https://example.com",
"zone": "'
"
$BRIGHTDATA_UNLOCKER_ZONE
"'"
,
"format"
:
"raw"
,
"data_format"
:
"markdown"
}
'
|
head
-40
If this prints clean markdown, you're wired up. If not, check the
zone name and key.
Path M — MCP server (LLM tool layer)
Use this when the consumer is an LLM agent that should call Bright
Data as tools (e.g., Claude Code, ChatGPT desktop, custom agent
loops). The MCP server exposes 60+ tools — search, scrape, structured
data per platform, browser automation — over a single URL.
Connect with:
https://mcp.brightdata.com/mcp?token=YOUR_BRIGHTDATA_API_TOKEN
Optional URL parameters:
Parameter
Effect
pro=1
Enable all 60+ Pro tools
groups=
browser-based OAuth
bdata login --device
headless / SSH (device-code flow)
This handles signup-or-signin, key generation, zone creation, and local config in one step. Prefer this over manual flows. Manual: dashboard If the human prefers the web UI: Go to https://brightdata.com/cp (sign up if needed) Create a Web Unlocker zone ("Add" → "Unlocker zone") Copy the API key from the dashboard Save it where the rest of the app reads secrets: echo "BRIGHTDATA_API_KEY=..."
.env echo "BRIGHTDATA_UNLOCKER_ZONE=
" .env Verify bdata budget
any successful response means the key works
If verification fails, the key is wrong, the zone is wrong, or the account has no active subscription — surface the error to the human rather than guessing. Path D — Use Bright Data without installing anything Use this when the environment can't run npm / curl | bash , or when you only need one or two requests and don't want the CLI / SDK. Works for both live agent work and app integration. You still need an API key and a zone. Two ways to get them: Human pastes it in — if a key already exists, set BRIGHTDATA_API_KEY=... and BRIGHTDATA_UNLOCKER_ZONE=... in the environment Browser flow — do Path C; the dashboard issues both Base URL: https://api.brightdata.com Auth header: Authorization: Bearer $BRIGHTDATA_API_KEY Core endpoints
Web Unlocker — clean content from any URL
POST /request
{
"url": "https://target.com",
"zone": "
SERP API — structured search results
Use the same /request endpoint with a SERP zone and a search URL,
adding brd_json=1 to receive parsed JSON instead of raw HTML.
POST /request
{
"url": "https://www.google.com/search?q=web+scraping&brd_json=1",
"zone": "
Web Scraper API — structured data for 40+ platforms (async)
POST /datasets/v3/trigger?dataset_id=
then poll
GET /datasets/v3/snapshot/