cloro

Google Ads Scraper API

Scrape Google ads — the full sponsored surface of the SERP — as structured JSON. Classic text ads and sponsored shopping cards, each with position, blockPosition (top / middle / bottom), advertiser domain, price, and sitelinks. See exactly who bids on your queries — no official Google API exposes this.

4.8 · 33 reviews G2.com software review platform logo
Used by the top SEO and AI SEO companies
1,000,000,000 monthly API calls

The whole ad block, parsed

Ads are included in every Google SERP call — the result.ads array discriminates plain text ads (type: "RESULT") from shopping-style sponsored cards (type: "SHOPPING_CARD").

Request example

python
import requests

response = requests.post(
  "https://api.cloro.dev/v1/monitor/google",
  headers={
    "Authorization": "Bearer sk_live_your_api_key_here",
    "Content-Type": "application/json"
  },
  json={
    "query": "project management software",
    "country": "US",
    "device": "desktop"
  }
)

print(response.json())

Response example

200 OK application/json
{
  "success": true,
  "result": {
    "ads": [
      {
        "position": 1,
        "blockPosition": "top",
        "type": "RESULT",
        "title": "Project Management Tool — Try It Free",
        "url": "https://example.com/landing",
        "displayedUrl": "https://www.example.com",
        "domain": "example.com",
        "description": "Plan, track, and ship work in one place. Trusted by 50,000+ teams. No credit card required.",
        "page": 1,
        "sitelinks": [
          {
            "title": "Pricing",
            "url": "https://example.com/pricing",
            "description": "Plans that scale with your team"
          }
        ]
      },
      {
        "position": 4,
        "blockPosition": "middle",
        "type": "SHOPPING_CARD",
        "title": "PM Software Pro License",
        "url": "https://www.google.com/aclk?...",
        "category": "Popular products",
        "price": {
          "value": 12.99,
          "currency": "$",
          "raw": "$12.99"
        },
        "oldPrice": {
          "value": 19.99,
          "currency": "$",
          "raw": "$19.99"
        },
        "store": "Example Store",
        "imageUrl": "https://encrypted-tbn0.gstatic.com/shopping?q=...",
        "page": 1
      }
    ]
  }
}

Every ad field, documented

Both ad types share position metadata; shopping-card ads add pricing, store, and image fields.

Field Type Description
position number Position within the ad block (1-indexed).
blockPosition string Where the ad appeared on the SERP: top / bottom for text-ad blocks, middle for sponsored shopping carousels.
type string Discriminates plain text ads (RESULT) from shopping-style sponsored cards (SHOPPING_CARD).
title string Ad title.
url string Destination URL. For SHOPPING_CARD items this is a Google aclk redirect URL.
displayedUrl / domain string Formatted URL as displayed, and the advertiser's domain.
description string Ad copy for text ads; product context for shopping cards.
price / oldPrice object Structured price for shopping-card ads — numeric value, currency symbol, and the visible raw text; oldPrice surfaces MSRP / pre-discount pricing.
store string Merchant name attached to a shopping-card ad.
imageUrl string Hero image URL for shopping-card ads.
sitelinks object[] Sitelinks under the ad, each with url, title, and description.
page number SERP page where the ad was found.

Pricing that scales with you

Pick a plan that fits your volume. Price per credit drops as you scale.

Hobby
$0.40
per 1,000 credits
  • $100/mo
  • 250,000 credits
  • 20 concurrent jobs
  • Email support
Starter
$0.39
per 1,000 credits
  • $250/mo
  • 650,000 credits
  • 50 concurrent jobs
  • Email support
Most Popular
Growth
$0.37
per 1,000 credits
  • $500/mo
  • 1,350,000 credits
  • 75 concurrent jobs
  • Priority email support
Business
$0.36
per 1,000 credits
  • $1,000/mo
  • 2,800,000 credits
  • 100 concurrent jobs
  • Priority email support
Enterprise
$0.34
per 1,000 credits
/mo
  • 5,871,025 credits
  • 135 concurrent jobs
  • Priority support
Enterprise$5,000+

Increased concurrency, overages on credits and credit discounts for annual contracts.

Know more

Credit cost per request varies by provider. The figures below are for async/batch requests; sync requests add a +2 credit surcharge.

ChatGPT (full response) 7 credits
ChatGPT (web search) 5 credits
Perplexity 3 credits
Grok 4 credits
Copilot 5 credits
AI Mode 4 credits
AI Overview (incl. SERP) 5 credits
Gemini 4 credits
Google Search 3 credits +2/page
Google News 3 credits +2/page

ChatGPT full response includes query fan-out, ads, and shopping data. Google News uses the same pricing as Google Search.

Estimate your monthly cost and plan

7 credits each
5 credits each
3 credits each
4 credits each
5 credits each
4 credits each
4 credits each
3 credits / 1 page
3 credits / 1 page
Monthly requests
0
Credits needed
0
Recommended plan:

SERP ads scraping, answered

Is this the same as the official Google Ads API?+

No. The official Google Ads API manages your own ad campaigns — it can't show you anyone else's ads. This Google ads scraper returns the sponsored results actually rendered on the SERP for any query: every advertiser, their copy, sitelinks, and shopping cards.

Why scrape SERP ads at all?+

Competitive intelligence. The ads array tells you which competitors bid on your branded queries, what copy and sitelinks they run, which shopping cards undercut your pricing, and whether the paid block pushes your organic listing below the fold. None of this exists in any official Google API.

Do ads cost extra on a Google SERP request?+

No. Ads are parsed and returned in every base Google SERP call alongside organic results — no include flag, no surcharge.

What's the difference between RESULT and SHOPPING_CARD ads?+

RESULT entries are the classic text ads in the top/bottom blocks: title, URL, copy, sitelinks. SHOPPING_CARD entries are the sponsored product carousels (often mid-SERP, blockPosition middle) and carry structured price, oldPrice, store, and imageUrl fields instead of ad copy.

Why do ad results vary between identical requests?+

Ad auctions run per impression: budgets, dayparting, and rotation mean the ad block genuinely differs call to call. For reliable share-of-voice numbers, sample each query repeatedly across the day and aggregate — pay-per-call pricing keeps high-cadence sampling affordable.

Can I see which ads run in a specific city?+

Yes — ad targeting is heavily geo-dependent. Use `location` (canonical Google location name) or `uule` for city-level sampling, and `device: "mobile"` to capture the mobile ad layout, which often differs from desktop.

Does this cover ads inside AI Overview too?+

Ads injected into the AI Overview block are returned separately when you request AI Overview enrichment — see the AI Overview API. The `result.ads` array covers the standard SERP ad blocks.

See every ad on your queries

Track competitors' paid placements from $0.40 per 1,000 calls.