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.
No credit card required · PAYG credits never expire
# 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",
){
"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
}Structured JSON responses with normalized data models. No HTML parsing. No proxy management. No Google Ads account.
/v1/google/ads/search/v1/google/ads/creative/v1/google/ads/advertisers/v1/google/ads/advertisernike.com resolves, Nike does not. Autocomplete the brand with /ads/advertisers, then pass the returned advertiser_id to /ads/search.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.
creative_idstringIdentifier for one creative — pass it to the creative endpoint for the full assetadvertiser_idstringThe advertiser running this ad — the key every endpoint here sharesadvertiser_namestringVerified advertiser name as Google displays itformatstringTEXT, IMAGE or VIDEOplatformstringWhere it ran — SEARCH, MAPS, PLAY, SHOPPING or YOUTUBEfirst_shown / last_shownstringThe run window Google discloses for this creativeregionsarrayRegions the creative was served inpreview_urlstringDirect link to the creative as the Transparency Center renders itis_politicalbooleanWhether Google classifies the ad as politicalcursorstringContinuation cursor — pass it back to page deeper into an advertiser’s libraryadvertiser_idstringStable Google advertiser identifiernamestringVerified advertiser namelegal_namestringLegal entity behind the account, where Google verifies onelocationstringVerified advertiser countrydomainsarrayDomains associated with the advertisertotal_adsintegerHow many creatives are in the advertiser’s libraryspend_rangeobjectDisclosed political spend as a lower/upper band, not a point valueimpression_rangeobjectDisclosed political impressions as a lower/upper bandAds 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.
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.
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.
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.
Pull the spend and impression ranges Google discloses on political advertisers for journalism, election monitoring and civic-accountability research.
Sweep the advertisers in a vertical, count creatives per platform and region, and size who is actually buying attention in a market.
Find who is bidding on your brand name or running ads pointed at your domain, including affiliates and resellers you never authorised.
Collect structured ad creatives — copy, format, platform, region and run windows — for creative-analysis, classification and generative-ad models.
You only pay for successful responses — failed requests are always free. PAYG credits never expire; volume subscription tiers reduce per-credit cost further.
| Endpoint | Credits / request | PAYG | Subscription |
|---|---|---|---|
Search Ads /ads/search | 10 credits | — | — |
Creative Detail /ads/creative | 5 credits | — | — |
Advertiser Lookup /ads/advertisers | 5 credits | — | — |
Advertiser Profile /ads/advertiser | 5 credits | — | — |
See the full plan comparison on the pricing page — subscription tiers step down per-credit cost beyond the cheapest column shown above.
ScrapeBadger's Ads Transparency API handles everything Google throws at automated requests — so your pipeline keeps running.
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.
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.
Large advertisers run thousands of creatives. Responses carry a cursor so you can walk the whole library consistently instead of guessing at offsets.
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 login, no MCC access, no upstream quota. One ScrapeBadger API key covers every endpoint on this page.
Credits are deducted for successful responses. Blocks and timeouts return a 422 and cost nothing, so you never pay for a retry.
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.
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)
}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)Common questions about the Google Ads Transparency API — Python, Node.js, or REST.
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.
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.
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.
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.
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.
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.
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