Google Ads Transparency Center Scraper - Competitor Ads
Pricing
from $0.90 / 1,000 ad (creative row)s
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
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_shownanddays_showncome 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
includeDetailsto 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
onlyNewand 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.
maxAdsPerQueryis 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
| Field | What it does |
|---|---|
queries | Brand names, domains or advertiser IDs, one per line. Required. |
regions | ISO country codes. Empty = ads shown anywhere. Default ["US"]. |
maxAdsPerQuery | Hard cap per query. Default 100. Empty = no cap (large advertisers run tens of thousands of creatives). |
formats | Keep only image, text and/or video. Filtered rows are not charged. |
includeDetails | Adds per-country dates and preview variations to every creative. One extra request per ad, charged as ad-detail. |
outputMode | creatives (one row per ad) or advertisers (one row per query). |
onlyNew | Only creatives not delivered by earlier runs of the same query and regions. History is kept for 180 days in your own account. |
proxyConfiguration | Off 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
onlyNewfound 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.
| Event | Price | When |
|---|---|---|
| Actor start | $0.005 | Once per run, on the first delivered row |
Ad (ad) | $0.0015 per creative on the free plan, down to $0.0008 on higher plans | Every creative row delivered |
Ad detail (ad-detail) | $0.002 | Every creative enriched with includeDetails |
Advertiser check (advertiser) | $0.002 | Every 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.