SERP API — Google Search Scraper with JSON Results (2026)

The SERP API trusted by the top SEO teams

The Google search scraper that returns the real SERP via one API, without proxies or parsers of your own. Extract organic results, sponsored ads, People Also Ask, related searches, and optional AI Overview with cited sources. Supports multi-page, desktop/mobile, and city-level geo. Pay only for what you scrape.

4.7 · 53 reviews

The complete Google SERP API

cloro returns organic, ads, PAA, related searches, and AI Overview in one call, not a separate scraper per surface. The same key works for ChatGPT, Perplexity, Gemini, AI Mode, Copilot, and Google News, so a team tracking Google rank can add AI-answer-engine visibility without a second integration.

Why one Google SERP request needs a real scraper

Google has no public Search API for the rich SERP, and the legacy Custom Search API misses most of what users see. To monitor real organic positions, ad placements, AI Overview citations, and PAA expansion at scale, you have to render and parse google.com.

Direct scraping gets you blocked

Google's anti-automation is the most aggressive on the public web. DIY pipelines break within hours of a SERP UI update, and sustained sampling at production volume burns through residential proxies fast. cloro handles the access layer so your SERP tracking keeps running through every Google revision.

Organic positions re-rank by the hour

Google's index updates continuously. Organic positions for the same query can shift between morning and afternoon, and personalization adds another layer of variability. A single sample tells you nothing about real ranking; you need repeated runs across regions, devices, and time. cloro's pay-per-call pricing makes high-cadence sampling viable at scale, so you report an average position, not one lucky snapshot.

Custom Search API is not Google

Google's Custom Search JSON API returns a small subset of what users see. No ads, no AI Overview, capped at 100 free daily queries, and the index is its own restricted version. Surfer's analysis measured ~20% overlap between AI APIs and the rendered UI across LLMs. The Custom Search gap for Google SERP is comparable. cloro returns the rendered google.com surface, so what you record is what a user would have seen.

Special objects only render in the UI

Sponsored ads (with position, blockPosition top/bottom, sitelinks), AI Overview (with text, sources, videos, injected ads), People Also Ask (with snippet, markdown, sources), and related-search suggestions are all rendered surfaces. None live in any official Google API. cloro returns each as structured JSON in a single SERP call, so you can track ad placements, AI Overview citations, and PAA answers the same way you already track organic rank, instead of building and maintaining a separate scraper for each surface.

Pull a complete Google SERP in 30 lines of code

One POST with your query, country, and device. cloro loads google.com, parses the page, and hands back JSON: organic results, ads, People Also Ask, People Also Search For, featured snippets, knowledge panels, related searches, and optional AI Overview from one endpoint.

Request example

Python

from cloro import Cloro

client = Cloro(api_key="sk_live_your_api_key_here")

response = client.monitor.google(
    query="best laptops for programming",
    country="US",
    device="desktop",
    pages=1,
    include={"aioverview": {"markdown": True}},
)

print(response["result"]["organicResults"])

TypeScript

import { Cloro } from "@cloro-dev/cloro";

const client = new Cloro({ apiKey: "sk_live_your_api_key_here" });

const response = await client.monitor.google({
  query: "best laptops for programming",
  country: "US",
  device: "desktop",
  pages: 1,
  include: { aioverview: { markdown: true } },
});

console.log(response.result.organicResults);

cURL

curl -X POST https://api.cloro.dev/v1/monitor/google \
  -H "Authorization: Bearer sk_live_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "best laptops for programming",
    "country": "US",
    "device": "desktop",
    "pages": 1,
    "include": {
      "aioverview": { "markdown": true }
    }
  }'

Response example

{
  "success": true,
  "result": {
    "organicResults": [
      {
        "position": 1,
        "title": "Best Laptops for Programming in 2026",
        "link": "https://example.com/best-programming-laptops",
        "snippet": "Looking for the best programming laptops? Our 2026 guide ranks the top picks for Python, JS, ML, and mobile dev...",
        "page": 1
      }
    ],
    "peopleAlsoAsk": [
      {
        "question": "What specs should I look for in a programming laptop?",
        "type": "LINK",
        "snippet": "Key specifications include 16GB+ RAM, an M-series or recent Intel/AMD chip, and a high-resolution display..."
      }
    ],
    "relatedSearches": [
      {
        "query": "best budget laptop for coding 2026"
      },
      {
        "query": "macbook pro vs thinkpad for development"
      }
    ],
    "aioverview": {
      "text": "For programming in 2026, the top picks are the MacBook Pro M4, Dell XPS 15, and Lenovo ThinkPad X1 Carbon...",
      "markdown": "## Best Laptops for Programming\n\nFor programming in 2026, the top picks are...",
      "sources": [
        {
          "position": 1,
          "url": "https://wirecutter.com/laptops",
          "label": "Wirecutter — Best Laptops",
          "description": "Independent testing of 25+ laptops for software development workflows"
        }
      ]
    }
  }
}

SERP API, answered

Why not just use Google's Custom Search JSON API for SERP scraping?

Custom Search returns organic results from a curated index, not the full Google SERP a real user sees. No sponsored ads, no AI Overview, no People Also Ask, no related searches, no knowledge graph. It's also rate-limited to 100 free daily queries with paid extension capped at 10k/day. cloro's SERP API returns the rendered google.com surface with no daily caps.

Does cloro return the full ad block, or just organic?

Full ad block, both top and bottom. Each ad entry includes position, blockPosition (top or bottom), title, url, domain, description, and sitelinks. Useful for competitive intelligence: you can measure when competitors run ads on your branded queries and which sitelinks they bid on.

Can I include AI Overview in the same SERP call?

Yes. Pass include.aioverview: { markdown: true } in the request and the response adds a result.aioverview block with text, markdown, parsed sources, inline videos, and any injected ads. Costs +2 credits per request. One call gives you both your organic rank and whether the AI answer cites you. There's also include.paaAioverview (+2 credits) to hydrate PAA entries with their AI Overview content.

Can I sample mobile and desktop SERPs separately?

Yes. Pass device: "mobile" or "desktop". Mobile SERP often shows a different ad block layout, more aggressive PAA expansion, and different organic ordering. For global e-commerce or local-services brands, sampling both is essential.

How fine-grained is the geo targeting?

Country-level via country (any ISO-3166 code), or city-level via location (Google's canonical location name, e.g. "New York,New York,United States") or pre-encoded uule. Local-pack and ad placements diverge sharply by city, so country-only sampling will miss most of the local-search reality.

How does pagination work, and how deep should I go?

Pass pages: N (1–10) to fetch up to N SERP pages in a single call. Each result entry carries its own page field. For brand-monitoring or rank-tracking, page 1 covers ~95% of meaningful position changes; pages 2–3 are useful for thin-content competition tracking. Beyond page 3, click-through drops below 1% (diminishing returns).

What does in-house Google SERP scraping cost?

Google's anti-automation is the hardest sustained engineering problem on the public web. Realistic in-house costs at production volume run $5–10k/month on residential proxies and browser farms before engineer time, with a fragile success rate. cloro bills 3 credits per Google SERP call, and credits run from $0.40 per 1,000 on Hobby down to $0.31 at the largest self-serve tier, so a team running roughly 930,000 SERP calls/month pays $1,000 with no maintenance overhead.