Tutorial

How to Set Up Bright Data SERP API vs a Lightweight Alternative

Compare setting up Bright Data SERP API ($499 min, proxy zones, complex auth) vs a lightweight search API. Side-by-side code, latency, and cost breakdown.

Bright Data's SERP API requires a $499/month minimum commitment, zone configuration, proxy management, and IP whitelisting before you can run a single query. For teams that need structured search results without enterprise proxy infrastructure, a lightweight API like Scavio delivers the same organic results, featured snippets, and PAA data through a single POST endpoint at $0.005/credit with no minimum spend. This tutorial walks through both setups side by side so you can evaluate the trade-offs in under 15 minutes.

Prerequisites

  • Python 3.8+ installed
  • requests library installed (pip install requests)
  • A Bright Data account (for the Bright Data path)
  • A Scavio API key from scavio.dev (for the lightweight path)

Walkthrough

Step 1: Set up Bright Data SERP zone

Bright Data requires creating a SERP API zone in the dashboard, configuring proxy credentials, whitelisting your server IP, and choosing a billing plan ($499/month minimum for SERP API). You receive a zone username, password, and host.

Python
# Bright Data setup (after dashboard configuration)
import requests

BD_HOST = 'brd.superproxy.io'
BD_PORT = 33335
BD_USER = 'brd-customer-CUST_ID-zone-ZONE_NAME'
BD_PASS = 'your_zone_password'

proxies = {
    'http': f'http://{BD_USER}:{BD_PASS}@{BD_HOST}:{BD_PORT}',
    'https': f'http://{BD_USER}:{BD_PASS}@{BD_HOST}:{BD_PORT}'
}

# Bright Data SERP request
resp = requests.get(
    'https://www.google.com/search?q=best+crm+2026&gl=us',
    proxies=proxies,
    verify=False  # Required for BD proxy
)
print(f'Status: {resp.status_code}, Length: {len(resp.text)}')
# You still need to parse raw HTML yourself

Step 2: Set up the lightweight API alternative

With a lightweight search API, there is no zone configuration, no proxy management, and no IP whitelisting. You get an API key and start querying immediately. The response is structured JSON, not raw HTML.

Python
import requests, os

API_KEY = os.environ.get('SCAVIO_API_KEY', 'your_scavio_api_key')

resp = requests.post(
    'https://api.scavio.dev/api/v1/search',
    headers={'x-api-key': API_KEY, 'Content-Type': 'application/json'},
    json={'query': 'best crm 2026', 'country_code': 'us'}
)
data = resp.json()
for r in data.get('organic_results', [])[:3]:
    print(f"{r['title']} -> {r['link']}")

Step 3: Compare response formats

Bright Data returns raw Google HTML that you must parse with BeautifulSoup or a custom parser. The lightweight API returns structured JSON with organic_results, featured_snippets, and people_also_ask already extracted.

Python
# Bright Data: you must parse HTML yourself
from bs4 import BeautifulSoup
soup = BeautifulSoup(bd_response.text, 'html.parser')
results = []
for div in soup.select('div.g'):
    title = div.select_one('h3')
    link = div.select_one('a')
    if title and link:
        results.append({'title': title.text, 'link': link['href']})
# Fragile: selector changes break this regularly

# Lightweight API: structured JSON out of the box
organic = data.get('organic_results', [])
snippets = data.get('featured_snippets', [])
paa = data.get('people_also_ask', [])
print(f'{len(organic)} results, {len(snippets)} snippets, {len(paa)} PAA')

Step 4: Compare costs at different volumes

Calculate the monthly cost for both options at common query volumes. Bright Data SERP API starts at $499/month. The lightweight API charges $0.005/credit with a free tier of 250 credits/month and plans starting at $30/7K credits.

Python
volumes = [1000, 5000, 10000, 50000]

print(f'{"Queries/mo":<12} {"Bright Data":<15} {"Scavio":<15} {"Savings"}')
print('-' * 55)
for v in volumes:
    bd_cost = max(499, v * 0.01)  # ~$0.01/query on SERP API
    # Scavio: $0.005/credit, 1 credit per query
    if v <= 250:
        sc_cost = 0
    elif v <= 7000:
        sc_cost = 30
    elif v <= 28000:
        sc_cost = 100
    elif v <= 85000:
        sc_cost = 250
    else:
        sc_cost = 500
    savings = bd_cost - sc_cost
    print(f'{v:<12} ${bd_cost:<14.0f} ${sc_cost:<14} ${savings:.0f}')

Python Example

Python
import requests, os, time

API_KEY = os.environ.get('SCAVIO_API_KEY', 'your_scavio_api_key')
ENDPOINT = 'https://api.scavio.dev/api/v1/search'
HEADERS = {'x-api-key': API_KEY, 'Content-Type': 'application/json'}

def lightweight_search(query: str, country: str = 'us') -> dict:
    start = time.time()
    resp = requests.post(ENDPOINT, headers=HEADERS,
        json={'query': query, 'country_code': country})
    resp.raise_for_status()
    elapsed = time.time() - start
    data = resp.json()
    return {
        'query': query,
        'results': len(data.get('organic_results', [])),
        'snippets': len(data.get('featured_snippets', [])),
        'paa': len(data.get('people_also_ask', [])),
        'latency_ms': round(elapsed * 1000)
    }

queries = ['best crm 2026', 'crm pricing comparison', 'hubspot vs salesforce']
for q in queries:
    stats = lightweight_search(q)
    print(f"{stats['query']}: {stats['results']} results in {stats['latency_ms']}ms")
    print(f"  Snippets: {stats['snippets']}, PAA: {stats['paa']}")

JavaScript Example

JavaScript
const API_KEY = process.env.SCAVIO_API_KEY || 'your_scavio_api_key';
const ENDPOINT = 'https://api.scavio.dev/api/v1/search';
const HEADERS = { 'x-api-key': API_KEY, 'Content-Type': 'application/json' };

async function lightweightSearch(query, country = 'us') {
  const start = Date.now();
  const resp = await fetch(ENDPOINT, {
    method: 'POST',
    headers: HEADERS,
    body: JSON.stringify({ query, country_code: country })
  });
  if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
  const data = await resp.json();
  return {
    query,
    results: (data.organic_results || []).length,
    snippets: (data.featured_snippets || []).length,
    paa: (data.people_also_ask || []).length,
    latencyMs: Date.now() - start
  };
}

async function main() {
  const queries = ['best crm 2026', 'crm pricing comparison', 'hubspot vs salesforce'];
  for (const q of queries) {
    const stats = await lightweightSearch(q);
    console.log(`${stats.query}: ${stats.results} results in ${stats.latencyMs}ms`);
    console.log(`  Snippets: ${stats.snippets}, PAA: ${stats.paa}`);
  }
}

main().catch(console.error);

Expected Output

JSON
Queries/mo   Bright Data     Scavio          Savings
-------------------------------------------------------
1000         $499            $30             $469
5000         $499            $30             $469
10000        $499            $100            $399
50000        $500            $250            $250

best crm 2026: 10 results in 820ms
  Snippets: 1, PAA: 4
crm pricing comparison: 10 results in 750ms
  Snippets: 0, PAA: 3
hubspot vs salesforce: 10 results in 680ms
  Snippets: 1, PAA: 5

Related Tutorials

Frequently Asked Questions

Most developers complete this tutorial in 15 to 30 minutes. You will need a Scavio API key (free tier works) and a working Python or JavaScript environment.

Python 3.8+ installed. requests library installed (pip install requests). A Bright Data account (for the Bright Data path). A Scavio API key from scavio.dev (for the lightweight path). A Scavio API key gives you 250 free credits per month.

Yes. The free tier includes 250 credits per month, which is more than enough to complete this tutorial and prototype a working solution.

Scavio has a native LangChain package (langchain-scavio), an MCP server, and a plain REST API that works with any HTTP client. This tutorial uses the raw REST API, but you can adapt to your framework of choice.

Start Building

Compare setting up Bright Data SERP API ($499 min, proxy zones, complex auth) vs a lightweight search API. Side-by-side code, latency, and cost breakdown.