Google APIsAds Transparency API
Google Ads Transparency logoGoogle Ads Transparency API

Google Ads Transparency API — Every Ad a Competitor Runs

Structured JSON straight from the Google Ads Transparency Center. Search an advertiser's entire live creative library across Search, Maps, Play, Shopping and YouTube, fetch the full asset behind any creative, resolve a brand name to its advertiser id, and read the political spend and impression ranges Google discloses. No Google Ads account.

4Endpoints
5Ad platforms
TEXT/IMG/VIDCreative formats
GlobalRegion filter

No credit card required · PAYG credits never expire

GET /v1/google/ads/search
# Every YouTube video ad a brand is running
import scrapebadger

client = scrapebadger.ScrapeBadger("sb_live_...")

ads = client.google.ads_search(
    query="nike.com",
    region="US",
    platform="YOUTUBE",
    format="VIDEO",
)
200 OK2.4s · 10 credits
{
  "advertiser_id": "AR01614014...",
  "advertiser_name": "Nike, Inc.",
  "creative_id": "CR10932871...",
  "format": "VIDEO",
  "platform": "YOUTUBE",
  "first_shown": "2026-05-14",
  "last_shown": "2026-08-11",
  "is_political": false
}
API Reference

Ads Transparency — 4 Dedicated Endpoints

Structured JSON responses with normalized data models. No HTML parsing. No proxy management. No Google Ads account.

GET
/v1/google/ads/search
Every ad an advertiser is running, by advertiser_id or domain query — filter by region, platform, creative format and political status
10 cr / req
GET
/v1/google/ads/creative
One creative in full — the rendered text, image or video asset behind a single ad
5 cr / req
GET
/v1/google/ads/advertisers
Autocomplete a brand name to its advertiser_id — the id every other endpoint keys on
5 cr / req
GET
/v1/google/ads/advertiser
Verified advertiser identity, plus the political spend and impression ranges Google discloses
5 cr / req
Brand names need two steps: free-text ad search matches on the advertiser's domain nike.com resolves, Nike does not. Autocomplete the brand with /ads/advertisers, then pass the returned advertiser_id to /ads/search.
Response Schema

Every Field You Need, Ready to Use

All fields are normalized from the Transparency Center's own data — no HTML for you to parse. Political spend and impressions come back as the ranges Google actually discloses, never as an invented point estimate.

Ad Creative

creative_idstringIdentifier for one creative — pass it to the creative endpoint for the full asset
advertiser_idstringThe advertiser running this ad — the key every endpoint here shares
advertiser_namestringVerified advertiser name as Google displays it
formatstringTEXT, IMAGE or VIDEO
platformstringWhere it ran — SEARCH, MAPS, PLAY, SHOPPING or YOUTUBE
first_shown / last_shownstringThe run window Google discloses for this creative
regionsarrayRegions the creative was served in
preview_urlstringDirect link to the creative as the Transparency Center renders it
is_politicalbooleanWhether Google classifies the ad as political
cursorstringContinuation cursor — pass it back to page deeper into an advertiser’s library

Advertiser

advertiser_idstringStable Google advertiser identifier
namestringVerified advertiser name
legal_namestringLegal entity behind the account, where Google verifies one
locationstringVerified advertiser country
domainsarrayDomains associated with the advertiser
total_adsintegerHow many creatives are in the advertiser’s library
spend_rangeobjectDisclosed political spend as a lower/upper band, not a point value
impression_rangeobjectDisclosed political impressions as a lower/upper band
Coverage

Global regions, five ad platforms

Ads are served differently in every country. Pass a region to see what an advertiser runs there, and narrow further by the surface it ran on and the creative format.

🇺🇸US
🇬🇧GB
🇩🇪DE
🇫🇷FR
🇪🇸ES
🇮🇹IT
🇳🇱NL
🇵🇱PL
🇸🇪SE
🇧🇷BR
🇨🇦CA
🇮🇳IN
🇯🇵JP
🇦🇺AU
🇲🇽MX
🇹🇷TR
🇿🇦ZA
🇦🇪AE
platform
SEARCHMAPSPLAYSHOPPINGYOUTUBE
format
TEXTIMAGEVIDEO
Use Cases

What Developers Build with Ad Transparency Data

The Transparency Center is the only public record of what Google advertisers are actually running — live creatives, the surfaces they run on, and how long each one has survived.

Competitor ad monitoring

Pull every creative a rival is running right now, across Search, YouTube, Shopping, Maps and Play. Their live messaging, in one call, without waiting to be served the ad yourself.

Creative & messaging trends

Track first-shown and last-shown dates to see which creatives a brand keeps alive and which get killed after a week — the fastest read on what is working for them.

Political ad transparency

Pull the spend and impression ranges Google discloses on political advertisers for journalism, election monitoring and civic-accountability research.

Category & market intelligence

Sweep the advertisers in a vertical, count creatives per platform and region, and size who is actually buying attention in a market.

Brand-protection & affiliate audits

Find who is bidding on your brand name or running ads pointed at your domain, including affiliates and resellers you never authorised.

AI training datasets

Collect structured ad creatives — copy, format, platform, region and run windows — for creative-analysis, classification and generative-ad models.

Pricing

Pay Per Request. Credits Never Expire.

You only pay for successful responses — failed requests are always free. PAYG credits never expire; volume subscription tiers reduce per-credit cost further.

EndpointCredits / requestPAYGSubscription
Search Ads /ads/search10 credits
Creative Detail /ads/creative5 credits
Advertiser Lookup /ads/advertisers5 credits
Advertiser Profile /ads/advertiser5 credits

See the full plan comparison on the pricing page — subscription tiers step down per-credit cost beyond the cheapest column shown above.

Free trial
1,000 credits free
= 100 ad-search requests
Credits expire
Never
Buy once, use anytime
Failed requests
Always free
Pay for success only
Live cost estimator
Credits per request10
Total credits needed10,000
Loading plans…
Why ScrapeBadger

Built for Reliability at Scale

ScrapeBadger's Ads Transparency API handles everything Google throws at automated requests — so your pipeline keeps running.

Advertiser id is the real key

Free-text search matches on domain — nike.com, not “Nike”. Resolve a brand name to its advertiser_id with the advertisers endpoint first, then everything else keys off that id reliably.

Five platforms in one library

Search, Maps, Play, Shopping and YouTube creatives all come back from the same endpoint, filterable by platform, so a cross-surface view is one request rather than five scrapers.

Cursor paging over deep libraries

Large advertisers run thousands of creatives. Responses carry a cursor so you can walk the whole library consistently instead of guessing at offsets.

Political disclosures as structured ranges

Google publishes political spend and impressions as bands, not exact numbers. We return them as bands — lower and upper — rather than inventing a midpoint that was never disclosed.

No Google Ads account

No Google Ads login, no MCC access, no upstream quota. One ScrapeBadger API key covers every endpoint on this page.

Pay per success only

Credits are deducted for successful responses. Blocks and timeouts return a 422 and cost nothing, so you never pay for a retry.

Code Examples

Simple Integration. Any Language.

Get started in minutes with Python, Node.js, or plain HTTP requests.

The scrapebadger Node.js library wraps the Ads Transparency API with typed methods. Install with npm install scrapebadger, then start pulling competitor creatives in a few lines of code.

Node.js — Brand → advertiser → ads
import ScrapeBadger from 'scrapebadger'

const client = new ScrapeBadger({ apiKey: 'sb_live_...' })

// Free-text search matches DOMAINS, so resolve the brand first
const { advertisers } = await client.google.adsAdvertisers({
  query: 'Nike',
})

const { ads } = await client.google.adsSearch({
  advertiserId: advertisers[0].advertiser_id,
  region: 'US',
  platform: 'YOUTUBE',
  format: 'VIDEO',
  num: 50,
})

for (const ad of ads) {
  console.log(ad.creative_id, ad.first_shown, ad.last_shown)
}
Node.js — Political disclosures
import ScrapeBadger from 'scrapebadger'

const client = new ScrapeBadger({ apiKey: 'sb_live_...' })

// Google discloses political spend as a RANGE, not a number
const advertiser = await client.google.adsAdvertiser({
  advertiserId: 'AR01614014...',
})

console.log(advertiser.name, advertiser.legal_name)
console.log(advertiser.spend_range)       // { min, max, currency }
console.log(advertiser.impression_range)  // { min, max }

// Then walk the political creatives themselves
let cursor = undefined

do {
  const res = await client.google.adsSearch({
    advertiserId: advertiser.advertiser_id,
    political: true,
    cursor,
  })
  console.log(res.ads.length)
  cursor = res.cursor
} while (cursor)
FAQ

Frequently Asked Questions

Common questions about the Google Ads Transparency API — Python, Node.js, or REST.

Do I need a Google Ads account?

No. You only need a ScrapeBadger API key. The Ads Transparency Center is public data — there is no Google Ads login, no MCC access and no upstream quota involved.

How do I search by brand name instead of domain?

Free-text ad search matches on the advertiser’s domain, so “nike.com” works and “Nike” does not. Call the advertisers endpoint first — it autocompletes a brand name to an advertiser_id — then pass that id to ad search. That two-step flow is the reliable path for any brand.

Which platforms and formats can I filter by?

Platform is one of SEARCH, MAPS, PLAY, SHOPPING or YOUTUBE, and format is TEXT, IMAGE or VIDEO. Both are optional; leave them off to get an advertiser’s whole library across every surface.

What political data is available?

For advertisers Google classifies as political, the advertiser endpoint returns disclosed spend and impression ranges. Google publishes these as bands rather than exact figures, and the API returns them the same way — a lower and upper bound, never a fabricated point estimate.

How far back does ad history go?

Each creative carries the first-shown and last-shown dates Google discloses, so you can see how long a creative has been live. Coverage depth is whatever the Transparency Center itself publishes for that advertiser and region — the API does not extrapolate beyond it.

Plans & subscriptions

Bigger volume? Save up to 64%

Per-request credit costs are listed above. For higher monthly volume, subscription tiers reduce the per-credit rate substantially. All Ads Transparency endpoints — ad search, creative detail, advertiser lookup and advertiser profile — are included on every plan, alongside every other Google API.

Get started

Start Pulling Competitor Ads Today

1,000 free credits. No credit card. Get your API key in under a minute.

PAYG credits never expire · Pay only for successful requests · Global regions