Collect search results from Google, Bing, DuckDuckGo, Yandex, Baidu, Yahoo, and Naver without managing proxies, CAPTCHAs, or parsing. Choose Markdown, raw HTML or parsed JSON.
You only pay for successful requests.

Quickstart

A minimal request with cURL. Replace <BRIGHT_DATA_API_KEY> and zone with your values:
curl -X POST https://api.brightdata.com/request \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <BRIGHT_DATA_API_KEY>" \
  -d '{
    "zone": "YOUR_SERP_API_ZONE",
    "url": "https://www.google.com/search?q=pizza&hl=en&gl=us",
    "format": "raw"
  }'
Prefer Markdown output? Set “data_format”: “markdown” to receive Markdown SERP structure.
Prefer JSON output? Set query parameter “brd_json=1” to receive JSON SERP structure.

Before you start

  1. Sign in: https://brightdata.com/cp/start
  2. Create a SERP API zone: https://brightdata.com/cp/zones
  3. Get your API key: /api-reference/authentication
New to Bright Data? See the step-by-step guide: /scraping-automation/serp-api/quickstart

What you’ll get (parsed JSON preview)

A compact look at the parsed structure you can expect:
{
  "engine": "google",
  "query": "pizza",
  "results": [
    { 
      "type": "organic", 
      "position": 1, 
      "title": "Best Pizza Near Me", 
      "url": "https://example.com" 
    }
  ]
}
See the full schema and examples: /scraping-automation/serp-api/parsing-search-results

Supported engines and parameters

When to use asynchronous requests

Use async for large volumes, slower pages, or long-running queries. This improves reliability and throughput.
Targeting non-SERP pages? Use the Unlocker API: /scraping-automation/web-unlocker

Troubleshooting quick hits

Next steps