Google Ads Transparency Scraper - Competitor Ads & Spend avatar

Google Ads Transparency Scraper - Competitor Ads & Spend

Pricing

Pay per event

Go to Apify Store
Google Ads Transparency Scraper - Competitor Ads & Spend

Google Ads Transparency Scraper - Competitor Ads & Spend

See every ad a competitor runs, from Google's Ads Transparency Center: creatives, formats, first/last shown dates and ad vertical. EU/UK markets also return per-region impression ranges and targeting signals. Search by advertiser domain or name. No API key.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Santhej Kallada

Santhej Kallada

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Google Ads Transparency Scraper — Competitor Ads & Spend

See every ad a competitor is running on Google. Creatives, formats, first and last shown dates, per-region impression ranges, targeting signals and ad vertical — searchable by advertiser domain or by name. No API key, no login, no ad account.

Google publishes every ad every verified advertiser runs, in its Ads Transparency Center. It is a goldmine and it is almost unusable by hand: no bulk export, no filtering across advertisers, one creative at a time. This Actor turns it into a clean table you can sort, diff and feed into a spreadsheet or a workflow.

Point it at competitor.com and get back their live ad library.

What you get per ad

FieldWhat it tells you
advertiser_nameThe advertising entity, as Google verified it (often the legal entity, e.g. "Nike Retail BV")
advertiser_domainThe advertiser's website
advertiser_idGoogle's stable advertiser identifier
creative_idStable identifier for this specific ad
creative_urlDirect link to the ad in Google's Ads Transparency Center
formattext, image or video
first_shownThe day this ad first ran
last_shownThe day it most recently ran — still today means it is live
impressions_range_low / _highThe impression band Google reports for the ad
ad_verticalGoogle's own category for the ad, e.g. "Apparel", "Travel & Tourism", "Autos & Vehicles"
ad_typeCommercial, Political, Shopping, Travel and hotel or Local services
targeting_demographicsWhether demographic criteria were used to pick who saw it
targeting_geoWhether location targeting was used
targeting_contextualWhether contextual signals were used
targeting_topicsWhether topic-of-interest audiences were used
targeting_customer_listWhether a customer list was used
targeting_excludedWhich of those criteria were used to exclude people
regionsPer-country delivery: country, impression band, first and last shown per region
variant_countHow many creative variants sit under this ad
preview_url / preview_htmlThe renderable ad preview
region_codeThe market this run read
scraped_atWhen the row was collected

Plus one advertiser_summary row per advertiser — total_ads_bucket_low/_high (how many ads they are running in total), advertiser_country, advertiser_legal_name, advertiser_url, and duns_number for joining to business records — and a run_summary row with counts and the billing breakdown.

Important: what Google publishes where

Read this before you plan a run, because it decides which fields you get.

Everywhere: advertiser, creative, format, first/last shown, variants, previews, per-region last-shown.

European markets only: impressions_range_low/_high, every targeting_* field, ad_vertical, and the impression bands inside regions. Those disclosures exist because the EU Digital Services Act compels them. Choose Germany or France and a global brand's ads come back with impressions and targeting attached. Choose United States and those fields are null — not because the scrape failed, but because Google does not publish them there.

The practical trick: most global advertisers run the same campaigns worldwide, so query a European market to read the impression and targeting data, even for a brand you care about in the US.

duns_number is populated for advertisers Google has business-verified — good coverage on large US advertisers (State Farm, Expedia), sparse elsewhere. It is null when Google has no mapping.

Worked example

Input:

{
"advertiserDomains": ["nike.com", "zalando.de"],
"advertiserNames": ["Booking.com"],
"regionCode": "2276",
"maxCreativesPerAdvertiser": 60
}

One output row:

{
"record_type": "ad_creative",
"advertiser_id": "AR18378488041124659201",
"advertiser_name": "Nike Retail BV",
"advertiser_domain": "nike.com",
"creative_id": "CR13736597046712860673",
"creative_url": "https://adstransparency.google.com/advertiser/AR18378488041124659201/creative/CR13736597046712860673?region=DE",
"format": "text",
"first_shown": "2025-10-22",
"last_shown": "2026-08-29",
"impressions_range_low": 600000,
"impressions_range_high": 700000,
"ad_vertical": "Apparel",
"ad_type": "Commercial",
"targeting_demographics": true,
"targeting_geo": true,
"targeting_contextual": true,
"targeting_topics": false,
"targeting_customer_list": false,
"targeting_excluded": [],
"regions": [
{ "region_code": 2724, "region": "ES", "impressions_low": 600000, "impressions_high": 700000, "first_shown": "2025-10-22", "last_shown": "2026-08-28" },
{ "region_code": 2276, "region": "DE", "impressions_low": null, "impressions_high": 1000, "first_shown": "2025-10-24", "last_shown": "2026-08-25" },
{ "region_code": 2250, "region": "FR", "impressions_low": null, "impressions_high": 1000, "first_shown": "2025-10-23", "last_shown": "2026-08-28" }
],
"variant_count": 1,
"region_code": 2276,
"scraped_at": "2026-08-29T06:51:55.876Z"
}

That single row says: Nike has been running this text ad for ten months, it is still live today, it did 600–700k impressions in Spain, and it is targeted on demographics, location and context but not on customer lists.

Use cases

  • Competitive ad intelligence — pull a competitor's entire live ad library and see exactly what they are saying, in which formats, and for how long.
  • Creative research — sort by first_shown and last_shown: ads that have run for a year are the ones that work. Ads that ran for a week were killed.
  • Spend and scale estimation — impression bands per country tell you where the budget is actually going, not where the marketing page says it goes.
  • Market-entry checks — the regions array shows every country an advertiser is buying in, so you can see who is already in your market.
  • Agency pitches — walk into a meeting with the prospect's own ad library and their competitors' side by side.
  • Ad-copy and landing-page inspirationpreview_html and preview_url give you the actual creative.
  • Compliance and brand monitoring — catch resellers, affiliates or impostors bidding on your brand.

Pricing

Pay per event. No monthly fee, no setup fee, no minimum.

EventPrice
Actor start$0.001 per run
Ad creative$0.0003 per ad — $0.30 per 1,000

You are charged only for ad creatives actually returned. An advertiser with no ads in the selected market costs nothing, and failed lookups cost nothing.

Worked cost: 3 competitors × 100 ads each = 300 ads = $0.001 + 300 × $0.0003 = $0.091. A full 1,000-ad deep dive on a single advertiser is $0.301.

FAQ

Do I need an API key or a Google Ads account? No. Add a domain and run. The data comes from Google's public Ads Transparency Center.

Domain or name — which should I use? Domain, whenever you know it. It is unambiguous. Names are matched against Google's advertiser directory and the largest matching advertiser is chosen, which is right for big brands but can be ambiguous for small ones.

Why is the advertiser name not the brand name? Google verifies the legal entity that pays for the ads, so nike.com comes back as "Nike Retail BV". The domain is the reliable identifier.

Why are impressions and targeting empty? You queried a non-European market. See the section above — run the same advertiser against Germany or France to get them.

Why did an advertiser return fewer ads than total_ads_bucket_low? That bucket is the advertiser's total across all time and markets; a run returns the most recent ads for the market you selected, up to your limit.

Can one brand have several advertiser IDs? Yes — large companies register separate entities per region. Searching by domain returns the entity serving the market you selected.

How many advertisers per run? Up to 25, and up to 1,000 ads for each of them.

Do I need a proxy? No. It is off by default and that is the fastest, cheapest setting.

Can I export it? JSON, CSV, Excel, or straight into n8n, Make or Zapier via the Apify API.


Tags: google ads transparency, ads transparency center, competitor ads, ad library, ad spy tool, google ad library, competitive intelligence, ad intelligence, creative research, ad monitoring, competitor analysis, ppc research, paid search intelligence, display ads, video ads, advertiser lookup, ad impressions, ad targeting, marketing research, adtech