Google Ads Transparency Center Scraper - Competitor Ads avatar

Google Ads Transparency Center Scraper - Competitor Ads

Pricing

from $0.90 / 1,000 ad (creative row)s

Go to Apify Store
Google Ads Transparency Center Scraper - Competitor Ads

Google Ads Transparency Center Scraper - Competitor Ads

Every ad an advertiser runs on Google Search, YouTube, Display, Shopping and Maps, from the Ads Transparency Center: previews, format, first and last shown dates, days active, per-country activity. Search by brand, domain or advertiser ID. No login. From $0.005/run + $0.0015/ad.

Pricing

from $0.90 / 1,000 ad (creative row)s

Rating

0.0

(0)

Developer

Orbots

Orbots

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Unofficial tool. Orbots is not affiliated with, sponsored by, or endorsed by Google. "Google", "Google Ads" and "Ads Transparency Center" are trademarks of Google LLC, used here only to describe the public data this Actor collects.

See every ad an advertiser is running on Google: Search, YouTube, Display, Shopping and Maps, straight from the public Ads Transparency Center. Give it a brand name, a domain or an advertiser ID and get one clean row per ad: format, preview asset, first and last shown date, days active, and (optionally) the countries each ad ran in. No login, no browser, no cookies. You only pay for rows that are actually delivered.

Why this Actor

  • Three ways to target. A brand name (Nike), a domain (nike.com) or a Google advertiser ID (AR18378488041124659201). A Transparency Center URL works too. Names are resolved to the advertiser with the most ads among the matches (verified in your requested region when possible); if that advertiser runs nothing in your regions, the next match is tried. Domains return every advertiser using the domain.
  • Region filter that reduces what you pay. Pass ISO country codes (US, GB, BR) and only ads shown there come back, so you are not charged for creatives you filtered out afterwards.
  • Dates and lifetime on every row. first_shown, last_shown and days_shown come straight from the Center, so you can tell a campaign that has run for 300 days from one launched yesterday.
  • Per-country activity on demand. Turn on includeDetails to get, for each creative, the list of countries it ran in with first and last dates per country, plus every preview variation. One extra request per ad, priced as its own event.
  • Advertiser check mode. Screen a list of domains or brands in one run: one row per query saying whether the advertiser runs Google ads at all, with Google's own estimated range of active ads (for example 70,000 to 80,000 for shopify.com) and every verified advertiser found behind the domain.
  • Built for schedules. Turn on onlyNew and each run returns only creatives you have not received before, per query and region set. A daily run reports new campaigns instead of handing you the same list twice and charging for it again.
  • Fast and cheap to run. Pure HTTP against the Center's own JSON endpoints. In our benchmark, 100 ads across three advertisers took 10 seconds and cost half a cent of platform usage. 150 consecutive searches from one Apify server returned 150 successes with no throttling.
  • Honest billing. maxAdsPerQuery is respected exactly. A run that delivers nothing is not charged at all, not even the start fee.

What you get

Creatives (default)

{
"type": "creative",
"query": "nike.com",
"advertiser_id": "AR16735076323512287233",
"advertiser_name": "Nike, Inc.",
"domain": "nike.com",
"creative_id": "CR02394569508766351361",
"format": "image",
"preview_url": "https://tpc.googlesyndication.com/archive/simgad/16786811858631500832",
"image_url": "https://tpc.googlesyndication.com/archive/simgad/16786811858631500832",
"video_url": null,
"youtube_id": null,
"first_shown": "2025-10-22T15:06:43Z",
"last_shown": "2026-09-03T00:32:17Z",
"days_shown": 308,
"transparency_url": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR02394569508766351361?region=anywhere",
"scraped_at": "2026-09-03T01:00:09Z"
}

format is image, text (text and responsive ads, delivered as a rendered preview link) or video. With includeDetails each row also carries regions (one entry per country with first_shown and last_shown), regions_count, variants and variants_count.

Advertiser check (outputMode: "advertisers")

{
"type": "advertiser",
"query": "shopify.com",
"advertiser_id": "AR01625195283841286145",
"advertiser_name": "Shopify Inc.",
"domain": "shopify.com",
"has_ads": true,
"total_ads_min": 70000,
"total_ads_max": 80000,
"advertisers_found": [{"advertiser_id": "AR01625195283841286145", "advertiser_name": "Shopify Inc.", "domain": "shopify.com"}],
"regions": [],
"transparency_url": "https://adstransparency.google.com/advertiser/AR01625195283841286145?region=anywhere",
"scraped_at": "2026-09-03T01:00:01Z"
}

total_ads_min and total_ads_max are the range Google itself reports for the advertiser, not a count of rows this Actor fetched.

Input

FieldWhat it does
queriesBrand names, domains or advertiser IDs, one per line. Required.
regionsISO country codes. Empty = ads shown anywhere. Default ["US"].
maxAdsPerQueryHard cap per query. Default 100. Empty = no cap (large advertisers run tens of thousands of creatives).
formatsKeep only image, text and/or video. Filtered rows are not charged.
includeDetailsAdds per-country dates and preview variations to every creative. One extra request per ad, charged as ad-detail.
outputModecreatives (one row per ad) or advertisers (one row per query).
onlyNewOnly creatives not delivered by earlier runs of the same query and regions. History is kept for 180 days in your own account.
proxyConfigurationOff by default. The Center answers Apify servers directly; enable a proxy only if your runs start getting throttled.

A minimal run:

{ "queries": ["nike.com"], "regions": ["US"], "maxAdsPerQuery": 100 }

When a run returns nothing

The Actor separates "something broke" from "there was nothing to return":

  • Every query refused by the Center even after retries: the run fails with a message, so a schedule notices.
  • No advertiser matched a name, or the advertiser has no ads in the requested regions, or onlyNew found nothing new: the run succeeds with a status message explaining why, and nothing is charged.

Brand names are ambiguous in the Center (dozens of verified advertisers can share a name). For precision, prefer the domain or the advertiser ID; both are shown on the public Transparency Center page.

Notes and limits

  • Ad text is not extracted. Text and responsive ads are delivered as a rendered preview link (preview_url), which the Center serves as a script, not as data. Image ads carry a direct image URL; video ads carry the video preview and the YouTube ID when the video is hosted there.
  • The Center rate-limits by IP. From Apify servers we measured 150 consecutive searches without a single refusal; a residential IP hitting the same endpoints from a laptop got throttled after a few dozen requests. The Actor backs off and retries on throttling, and rotates IPs when a proxy is configured.
  • Data comes from Google's public Transparency Center as it is at run time. Google's estimated ad counts are ranges, not exact numbers.

Pricing: what a run actually costs

Pay per event. A run that delivers nothing costs nothing.

EventPriceWhen
Actor start$0.005Once per run, on the first delivered row
Ad (ad)$0.0015 per creative on the free plan, down to $0.0008 on higher plansEvery creative row delivered
Ad detail (ad-detail)$0.002Every creative enriched with includeDetails
Advertiser check (advertiser)$0.002Every advertiser row delivered

Example: 100 ads for one advertiser, no details, costs $0.005 + 100 x $0.0015 = $0.155 on the free plan. The same 100 ads with details cost $0.355. Platform usage on top of that was half a cent in our benchmark run.

Changelog

  • 0.1 (2026-09-03): first release. Creatives by name, domain or advertiser ID; region and format filters; per-country details; advertiser check mode; onlyNew for schedules.