Google search result data — who ranks where, what snippets look like, which ads appear — is foundational for SEO analysis, lead generation, and market research. Google processes 8.5 billion searches per day and doesn’t offer a public API for organic results. So how do you get the data?

What SERP Data Looks Like

A single Google results page contains multiple data types:

Why Google Is Particularly Hard

Google has some of the best bot detection in the world — they’ve been fighting scrapers for 20+ years:

The Manual Approach

Step 1 — Basic request (works for ~5 queries)

import requests
from bs4 import BeautifulSoup

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)..."}
params  = {"q": "web scraping python", "hl": "en", "gl": "us", "num": "10"}

resp = requests.get("https://www.google.com/search", headers=headers, params=params)
soup = BeautifulSoup(resp.text, "html.parser")

for result in soup.select("div.g"):
    title = result.select_one("h3")
    link  = result.select_one("a")
    desc  = result.select_one("div[data-sncf]")
    if title and link:
        print(title.text, link["href"])

Step 2 — Handle the CAPTCHA wall

After a handful of requests Google returns a CAPTCHA page. Solving this at scale requires:

Step 3 — Maintain the HTML parser

Google changes their SERP HTML structure regularly. A scraper that worked last month often breaks silently — you get data, but it’s wrong. You need monitoring and frequent maintenance.

The Reliable Way — Scrapios Google SERP Scraper

Instead of building and maintaining all of that infrastructure, submit a single API request:

curl -X POST https://api.scrapios.com/api/v1/ext/jobs 
  -H "X-API-Key: scr_live_YOUR_KEY" 
  -H "Content-Type: application/json" 
  -d '{
    "url": "https://www.google.com/search?q=web+scraping+api&gl=us&hl=en",
    "catalog_scraper_id": 2,
    "catalog_version_id": 5
  }'

The response gives you every SERP element as structured JSON:

{
  "organic": [
    { "position": 1, "title": "...", "url": "...", "description": "..." },
    { "position": 2, "title": "...", "url": "...", "description": "..." }
  ],
  "featured_snippet": { "title": "...", "body": "...", "source_url": "..." },
  "people_also_ask": [
    { "question": "What is the best web scraping API?", "answer": "..." }
  ],
  "ads": [
    { "position": "top_1", "title": "...", "url": "...", "description": "..." }
  ],
  "related_searches": ["web scraping python", "web scraping tools", ...]
}

SEO Use Cases

Track Google rankings without the headache

Clean JSON. 500 free credits/month. Works for any country and language.

Start for free →