brightdata-hello-world

'Create a minimal working Bright Data example.

5 Tools
brightdata-pack Plugin
saas packs Category

Allowed Tools

ReadWriteEditBash(npm:*)Bash(node:*)

Provided by Plugin

brightdata-pack

Claude Code skill pack for Bright Data (18 skills)

saas packs v1.0.0
View Plugin

Installation

This skill is included in the brightdata-pack plugin:

/plugin install brightdata-pack@claude-code-plugins-plus

Click to copy

Instructions

Bright Data Hello World

Overview

Scrape a real webpage through Bright Data's Web Unlocker proxy. Web Unlocker handles CAPTCHAs, fingerprinting, and retries automatically — you send a normal HTTP request through the proxy endpoint at brd.superproxy.io:33335.

Prerequisites

  • Completed brightdata-install-auth setup
  • Web Unlocker zone active in Bright Data control panel
  • brd-ca.crt SSL certificate downloaded

Instructions

Step 1: Scrape via Web Unlocker Proxy (Node.js)


// hello-brightdata.ts
import axios from 'axios';
import https from 'https';
import 'dotenv/config';

const { BRIGHTDATA_CUSTOMER_ID, BRIGHTDATA_ZONE, BRIGHTDATA_ZONE_PASSWORD } = process.env;

const proxy = {
  host: 'brd.superproxy.io',
  port: 33335,
  auth: {
    username: `brd-customer-${BRIGHTDATA_CUSTOMER_ID}-zone-${BRIGHTDATA_ZONE}`,
    password: BRIGHTDATA_ZONE_PASSWORD!,
  },
};

async function scrape(url: string) {
  const response = await axios.get(url, {
    proxy,
    httpsAgent: new https.Agent({ rejectUnauthorized: false }),
    timeout: 60000,
  });
  console.log(`Status: ${response.status}`);
  console.log(`Content length: ${response.data.length} chars`);
  console.log(response.data.substring(0, 500));
  return response.data;
}

scrape('https://example.com').catch(console.error);

Step 2: Scrape via REST API


// hello-brightdata-api.ts
import 'dotenv/config';

async function scrapeViaAPI(url: string) {
  const response = await fetch('https://api.brightdata.com/request', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.BRIGHTDATA_API_TOKEN}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      zone: process.env.BRIGHTDATA_ZONE,
      url,
      format: 'raw',
    }),
  });
  const html = await response.text();
  console.log(`Status: ${response.status}, Length: ${html.length}`);
  return html;
}

scrapeViaAPI('https://example.com').catch(console.error);

Step 3: Python Version


# hello_brightdata.py
import os, requests
from dotenv import load_dotenv

load_dotenv()
proxy_url = (
    f"http://brd-customer-{os.environ['BRIGHTDATA_CUSTOMER_ID']}"
    f"-zone-{os.environ['BRIGHTDATA_ZONE']}"
    f":{os.environ['BRIGHTDATA_ZONE_PASSWORD']}"
    f"@brd.superproxy.io:33335"
)
response = requests.get(
    'https://example.com',
    proxies={'http': proxy_url, 'https': proxy_url},
    verify='./brd-ca.crt',
    timeout=60,
)
print(f"Status: {response.status_code}, Length: {len(response.text)}")

Geo-Targeting

Add country or city targeting to the proxy username:


// Country-level
const username = `brd-customer-${ID}-zone-${ZONE}-country-us`;
// City-level
const username2 = `brd-customer-${ID}-zone-${ZONE}-country-us-city-newyork`;

Output

  • Successful HTTP response through Bright Data proxy
  • HTML content of the target page
  • Rotated IP address per request

Error Handling

Error Cause Solution
407 Proxy Auth Required Bad credentials Check brd-customer-{ID}-zone-{ZONE} format
502 Bad Gateway Target site blocked Web Unlocker retries; increase timeout
ETIMEDOUT CAPTCHA solving delay Set timeout to 60-120s
Empty response Zone inactive Verify zone in control panel

Resources

Next Steps

Proceed to brightdata-local-dev-loop for development workflow setup.

Ready to use brightdata-pack?