Google Ads Transparency Scraper avatar

Google Ads Transparency Scraper

Pricing

from $1.99 / 1,000 ads

Go to Apify Store
Google Ads Transparency Scraper

Google Ads Transparency Scraper

Google Ads Transparency Center scraper, no API key. See every ad a brand or domain runs on Google: text, image and video creatives, first and last shown dates, variations, impressions and regions. Only-new mode to track competitors. $1.99 per 1,000 ads.

Pricing

from $1.99 / 1,000 ads

Rating

0.0

(0)

Developer

Quiet Harvest

Quiet Harvest

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

See every ad a brand or domain runs on Google — text, image and video — straight from Google's Ads Transparency Center. No API key, no login. Search by brand name, domain, advertiser ID or Transparency Center URL, filter by country, format and date, and get first and last shown dates, every creative variation, impressions and a per-country breakdown.

$1.99 per 1,000 ads. Details add $1.00 per 1,000.


Why this one

It keeps going when Google pushes back. Google shows a captcha to an IP after a few dozen requests. Each page and each retry here goes out on a fresh residential IP, so a large domain does not stop halfway.

It shows where an ad ran, not just that it ran. With details on, each ad gets a regions list: every country it ran in, with an impressions range and the first and last day it was shown there — sorted by reach.

It can watch competitors for you. Turn on Only new ads and put the Actor on a Schedule: each run returns only creatives that were not in the previous runs.


Quick start

{
"queries": ["nike.com"],
"region": "US",
"adFormat": "ALL",
"maxAdsPerSearch": 200
}

Other ways in:

{ "queries": ["Nike"], "maxAdvertisersPerQuery": 3 }
{ "advertiserIds": ["AR18378488041124659201"] }
{ "startUrls": ["https://adstransparency.google.com/?region=US&domain=nike.com"] }

A brand name is matched to advertiser accounts (a big brand often has several — per country or per agency); the best matches come first. Anything that looks like a domain is searched as a domain.

Output

FieldNotes
advertiser_idStarts with AR
advertiser_name
creative_idStarts with CR
formatTEXT, IMAGE or VIDEO
first_shown / last_shownISO 8601, UTC
domainThe domain the ad points to
image_urlSnapshot of the ad (Google also stores text ads as images)
preview_urlGoogle's own preview renderer for the ad
ad_urlThe ad's page in the Transparency Center

With Include details on:

FieldNotes
variation_count, variationsEvery version of the creative (A/B variants)
impressions_min, impressions_maxGoogle's impressions range for the ad (published for ads shown in the EU)
region_count, regionsPer country: region, impressions_min, impressions_max, first_shown, last_shown — largest first

Sample row

{
"advertiser_id": "AR18378488041124659201",
"advertiser_name": "Nike Retail BV",
"creative_id": "CR04918732594763268097",
"format": "TEXT",
"first_shown": "2025-10-24T10:57:39Z",
"last_shown": "2026-09-24T06:29:44Z",
"domain": "nike.com",
"image_url": "https://tpc.googlesyndication.com/archive/simgad/4025281590245195688",
"ad_url": "https://adstransparency.google.com/advertiser/AR18378488041124659201/creative/CR04918732594763268097?region=anywhere",
"impressions_min": 300000,
"impressions_max": 350000,
"region_count": 17,
"regions": [{ "region": "PL", "impressions_min": 300000, "impressions_max": 350000, "first_shown": "2025-10-24", "last_shown": "2026-09-23" }]
}

Use it from code

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("reportable_broth/google-ads-transparency-scraper").call(run_input={
"queries": ["competitor.com"],
"region": "US",
"onlyNewAds": True,
})
for ad in client.dataset(run.default_dataset_id).iterate_items():
print(ad["format"], ad["last_shown"], ad["ad_url"])

Works the same from JavaScript, n8n, Make, Zapier, or an AI agent through Apify's MCP server. Export as JSON, CSV or Excel from the dataset tab.

FAQ

Do I need a Google Ads account or API key? No. The Transparency Center is public.

Why does a brand name return several advertisers? Large brands run ads through several accounts — per country, per agency. Raise Max advertiser accounts per brand name to cover more of them, or search the domain instead to get all of them at once.

How does the date filter work? An ad is kept if it was running at any point in the range: last shown on or after the start date, and first shown on or before the end date.

Are impressions exact? No — Google publishes ranges, and so do we.

Why are impressions empty for some ads? Google only publishes impressions for ads shown in the European Union (a Digital Services Act requirement). An ad that ran only in the US has regions and dates but no impressions — that is Google's data, not a failed request. In a 120-ad sample for nike.com in the US, 10 had impressions.

Our other Actors

Disclaimer

This Actor collects publicly available information from Google's Ads Transparency Center. You are responsible for how you use it, including compliance with Google's terms and applicable law.