bright-data-best-practices

Build production-ready Bright Data integrations with best practices baked in. Reference documentation for developers using coding assistants (Claude Code, Cursor, etc.) to implement web scraping, search, browser automation, and structured data extraction. Covers Web Unlocker API, SERP API, Web Scrap

By brightdata · 1,702 installs

npx skills add brightdata/skills --skill bright-data-best-practices

Source repository · Upstream listing

CLI Setup Reference Install, authentication, and troubleshooting for the Bright Data CLI ( bdata ) are documented in a single canonical place: → [ references/cli setup.md ](references/cli setup.md) Consult it before any task that shells out to bdata . Bright Data APIs Bright Data provides infrastructure for web data extraction at scale. Four primary APIs cover different use cases — always pick the most specific tool for the job. Choosing the Right API Use Case API Why Scrape any webpage by URL (no interaction) Web Unlocker HTTP based, auto bypasses bot detection, cheapest Google / Bing / Yandex search results SERP API Specialized for SERP extraction, returns structured data Structured data from Amazon, LinkedIn, Instagram, TikTok, etc. Web Scraper API Pre built scrapers, no parsing needed Click, scroll, fill forms, run JS, intercept XHR Browser API Full browser automation Puppeteer / Playwright / Selenium automation Browser API Connects via CDP/WebDriver Route your own HTTP client through a raw proxy (DC/ISP/Residential/Mobile) Proxy networks When you need direct proxy access with your own request logic instead of a managed API — see the proxy.md skill Authentication Pattern (All APIs) All APIs share the same authentication model. The env vars below apply to direct REST API integrations — if you are using the bdata CLI, bdata login handles all of these automatically (see [ references/cli setup.md ](references/cli setup.md)). REST API authentication header for Web Unlocker and SERP API: Web Unlocker API HTTP based scraping proxy. Best for simple page fetches without browser interaction. Endpoint: POST https://api.brightdata.com/request Key Parameters Parameter Type Description zone string Zone name (required) url string Target URL with http:// or https:// (required) format string "raw" (HTML) or "json" (structured wrapper) (required) method string HTTP verb, default "GET" country string 2 letter ISO for geo targeting (e.g., "us" , "de" ) data format string Transform: "markdown" or "screenshot" async boolean true for async mode Quick Patterns Critical rule: Never use Web Unlocker with Puppeteer, Playwright, Selenium, or anti detect browsers. Use Browser API instead. See [references/web unlocker.md](references/web unlocker.md) for complete reference including proxy interface, special headers, async flow, features, and billing. SERP API Structured search engine result extraction for Google, Bing, Yandex, DuckDuckGo. Endpoint: POST https://api.brightdata.com/request (same as Web Unlocker) Essential Google URL Parameters Parameter Description Example q Search query q=python+web+scraping brd json Parsed JSON output brd json=1 (always use for data pipelines) gl Country for search gl=us hl Language hl=en start Pagination offset start=10 (page 2), start=20 (page 3) tbm Search type tbm=nws (news), tbm=isch (images), tbm=vid (videos) brd mobile Device brd mobile=1 (mobile), brd mobile=ios brd browser Browser brd browser=chrome brd ai overview Trigger AI Overview brd ai overview=2 uule Encoded geo location for precise location targeting Note: num parameter is deprecated as of September 2025. Use start for pagination. Parsed JSON Response Structure Bing Key Parameters Parameter Description q Search query setLang Language (prefer 4 letter: en US ) cc Country code first Pagination (increment by 10: 1, 11, 21...) safesearch off , moderate , strict brd mobile Device type Async for Bulk SERP Billing: Pay per 1,000 successful requests only. Async retrieve calls are not billed. See [references/serp api.md](references/serp api.md) for complete reference including Maps, Trends, Reviews, Lens, Hotels, Flights parameters. Web Scraper API Pre built scrapers for structured data extraction from 100+ platforms. No parsing logic needed. Sync Endpoint: POST https://api.brightdata.com/datasets/v3/scrape Async Endpoint: POST https://api.brightdata.com/datasets/v3/trigger Parameters Parameter Type Description dataset id string Scraper identifier from the Scraper Library (required) format string json (default), ndjson , jsonl , csv custom output fields string Pipe separated fields: url\ title\ price include errors boolean Include error info in results Request Body Poll for Async Results Progress status values: starting → running → ready failed Data retention: 30 days. Billing: Per delivered record. Invalid input URLs that fail are still billable. See [references/web scraper api.md](references/web scraper api.md) for complete reference including scraper types, output formats, delivery options, and billing details. Browser API (Scraping Browser) Full browser automation via CDP/WebDriver. Handles CAPTCHA, fingerprinting, and anti bot detection automatically. Connection: Playwright/Puppeteer: wss://${AUTH}@brd.superproxy.io:9222 Selenium: https://${AUTH}@brd.superproxy.io:9515 Custom CDP Functions Function Purpose Captcha.solve Manually trigger CAPTCHA solving Captcha.setAutoSolve Enable/disable auto CAPTCHA solving Proxy.setLocation Set precise geo location (call BEFORE goto) Proxy.useSession Maintain same IP across sessions Emulation.setDevice Apply device profile (iPhone 14, etc.) Emulation.getSupportedDevices List available device profiles Unblocker.enableAdBlock Block ads to save bandwidth Unblocker.disableAdBlock Re enable ads Input.type Fast text input for bulk form filling Browser.addCertificate Install client SSL cert for session Page.inspect Get DevTools debug URL for live session Session Rules One initial navigation per session — new URL = new session Idle timeout: 5 minutes Max duration: 30 minutes Geolocation Country level: append country us to credentials username EU wide: append country eu (routes through 29+ European countries) Precise: use Proxy.setLocation CDP command (before navigation) Error Codes Code Issue Fix 407 Wrong port Playwright/Puppeteer → 9222 , Selenium → 9515 403 Bad auth Check credentials format and zone type 503 Service scaling Wait 1 minute, reconnect Billing: Traffic based only. Block images/CSS/fonts to reduce costs. See [references/browser api.md](references/browser api.md) for complete reference including all CDP functions, bandwidth optimization, CAPTCHA patterns, and debugging. Detailed References [references/web unlocker.md](references/web unlocker.md) — Web Unlocker: full parameter list, proxy interface, special headers, async flow, features, billing, anti patterns [references/serp api.md](references/serp api.md) — SERP API: all Google params (Maps, Trends, Reviews, Lens, Hotels, Flights), Bing params, parsed JSON structure, async, billing [references/web scraper api.md](references/web scraper api.md) — Web Scraper API: sync vs async, all parameters, polling, scraper types, output formats, billing [references/browser api.md](references/browser api.md) — Browser API: connection strings, session rules, all CDP functions, geo targeting, bandwidth optimization, CAPTCHA, debugging, error codes Related Skills brightdata proxy — For routing requests through Bright Data's raw proxy networks (Datacenter, ISP, Residential, Mobile) with your own HTTP client instead of a managed API. Covers network/IP pool selection, the brd customer ... username format, targeting & sticky session params, SSL CA setup for Residential/Mobile, and integrations for cURL, Python (requests/httpx/aiohttp/Scrapy), Node (fetch/axios), Playwright, Puppeteer, and Selenium. Hand off to it whenever the task is raw proxy access rather than Web Unlocker / SERP / Web Scraper / Browser API. Escalation order when proxies hit consistent blocks: raw proxy → Web Unlocker → Browser API → Web Scraper API.