Google Ads Transparency Scraper: Competitor Ads by Domain
Pricing
from $0.92 / 1,000 ad delivereds
Google Ads Transparency Scraper: Competitor Ads by Domain
Scrape Google Ads Transparency Center ads by domain or advertiser: format, first and last shown, days running, image and preview, plus countries with details. Search, YouTube, Shopping, Maps and Play. No login. Pay per ad.
Pricing
from $0.92 / 1,000 ad delivereds
Rating
0.0
(0)
Developer
Scrapewise Data
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 minutes ago
Last modified
Categories
Features
Share
Google Ads Transparency Scraper: competitor ads by domain or advertiser
This Google Ads Transparency scraper lets you see competitor ads from the Ads Transparency Center. Search by domain, advertiser, brand or keyword and get every ad on Google Search, YouTube, Shopping, Maps and Play, with format, first and last shown, days running, countries, image and preview.
Filter by country, platform, format and date. Example: domain nike.com, United States, last 90 days.
At a glance
| Apify plan | Per 1,000 ads |
|---|---|
| Free | US$ 1.08 |
| Bronze | US$ 1.03 |
| Silver | US$ 0.97 |
| Gold and above | US$ 0.92 |
One charge per ad creative saved to the dataset, with or without country details and creative variations. Resolving a brand name into advertiser accounts is included. No monthly fee, no start fee; proxy and compute included. A creative is delivered once per run, so duplicates are not charged. One domain at the default settings (30 ads) costs US$ 0.032.
What it fixes
- Four kinds of input, detected for you. A domain, an advertiser id, a Transparency Center URL or a brand name, which is resolved to its top matching advertiser accounts.
- Filters run at Google, not afterwards. Country, platform, format and dates are sent inside the request, so a narrow filter is a cheaper run.
- Country by country detail. With
includeDetails, every country an ad ran in and the last date it was seen there, plus the number of variations, at the same price. - Failed requests retried for you. They are tried again on their own at no extra price, so you get ads, not empty rows.
- New ads only, for alerts.
onlyNewskips creatives already delivered and the evergreen ads that started before your first run.
Input examples
The input form describes each field. Minimal input (30 ads of one domain, worldwide):
{ "searchQuery": "nike.com", "maxItems": 30 }
Video creatives of three competitors in the US:
{"queries": ["nike.com", "adidas.com", "newbalance.com"],"region": "US","format": "video","maxItems": 300}
A daily alert for a competitor's newly launched ads (save as a Task with a daily Schedule):
{ "searchQuery": "nike.com", "region": "US", "maxItems": 100, "onlyNew": true }
The first run delivers up to maxItems and starts the watch. Later runs deliver, and charge, only creatives never delivered before that started running after the first run. A day with nothing new ends green with nothing charged. The memory is the Key-Value Store google-ads-transparency-only-new in your account, one record per target and filter set.
You type in searchQuery | What the Actor does |
|---|---|
a domain, nike.com | every advertiser account whose ads point to that domain |
an advertiser id, AR16735076323512287233 | that account only |
| a Transparency Center URL | reads the advertiser id or domain from the URL |
a brand name, Nike | resolves it to its top matching accounts (maxAdvertisersPerQuery, default 3) |
Switching from another Google Ads Transparency actor? Your existing input works
| Your field | Read as |
|---|---|
domains, advertiserIds, startUrls (strings or {"url": ...}) | queries |
advertiser, domain | searchQuery |
maxResults | maxItems |
adFormat | format |
startDate, endDate | dateFrom, dateTo |
platforms (list) | platform (the first one) |
onlyNewAds | onlyNew |
The output keeps the usual names (creativeId, advertiserId, advertiserName, adFormat, firstShown, lastShown, approxDaysShown, imageUrl, previewUrl, adUrl), so most field mappings keep working.
Output example
A real row from a run on 2026-09-11 (nike.com, 300 ads, includeDetails: true, 58 seconds):
{"creativeId": "CR00221530049440907265","advertiserId": "AR03005330488370921473","advertiserName": "NIKE GLOBAL TRADING B.V. SINGAPORE BRANCH","domain": "nike.com","adFormat": "IMAGE","firstShown": "2023-11-11","lastShown": "2026-09-11","approxDaysShown": 1007,"regions": ["DE", "TH", "JP", "FR"],"regionsDetail": [{ "region": "DE", "lastShown": "2026-09-04" },{ "region": "TH", "lastShown": "2026-09-11" },{ "region": "JP", "lastShown": "2026-09-10" },{ "region": "FR", "lastShown": "2026-09-11" }],"variations": 3,"imageUrl": "https://tpc.googlesyndication.com/archive/simgad/16608621179754630885","previewUrl": null,"adUrl": "https://adstransparency.google.com/advertiser/AR03005330488370921473/creative/CR00221530049440907265","platform": null,"searchTarget": "nike.com","scrapedAt": "2026-09-11T18:47:47.174474+00:00","sourceUrl": "https://adstransparency.google.com/?region=anywhere&domain=nike.com"}
Output fields
Fill rates from a real run of 1,000 ads for nike.com (2026-09-11, 13 advertiser accounts: 920 text, 58 image and 22 video ads).
| Field | What it holds | Filled |
|---|---|---|
creativeId, advertiserId, advertiserName | the creative and its advertiser account | 100% |
domain | destination domain | when you search by domain |
adFormat | TEXT, IMAGE or VIDEO | 100% |
firstShown, lastShown | first and last day Google saw the ad | 100% |
approxDaysShown | Google's own count of days running | 100% |
regions | countries, as ISO codes | with includeDetails; otherwise the requested country |
regionsDetail | {region, lastShown} per country | with includeDetails |
variations | number of creative variations | with includeDetails |
imageUrl | archived image file | 72% |
previewUrl | the script Google uses to render HTML5 and video ads | 28% (69% with details) |
adUrl | the ad's page in the Transparency Center | 100% |
platform | the platform filter used, else null | when filtered |
searchTarget, sourceUrl, scrapedAt | what you sent, the source page, collection time | 100% |
The Console shows two views: Ads overview and Ad details.
Speed
Cloud runs on 2026-09-11: 30 ads in 6 s, 1,000 ads in 35 s, 300 ads with country details in 58 s, a brand name with video only and details (20 ads) in 22 s.
Use it from code and AI agents
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("scrapewise/google-ads-transparency").call(run_input={"searchQuery": "nike.com", "region": "US", "dateRange": "last_30_days"})for ad in client.dataset(run["defaultDatasetId"]).iterate_items():print(ad["adFormat"], ad["firstShown"], ad["approxDaysShown"], ad["adUrl"])
The same works from Node.js, the HTTP API (run-sync-get-dataset-items), n8n, Make and Zapier. For AI agents: https://mcp.apify.com/?tools=scrapewise/google-ads-transparency.
Requests an agent can pass straight through:
- "Show the video ads openai.com is running in the US" ->
{"searchQuery": "openai.com", "region": "US", "format": "video", "maxItems": 50} - "Which YouTube ads did Temu run in the UK in the last 30 days?" ->
{"searchQuery": "Temu", "region": "GB", "platform": "youtube", "dateRange": "last_30_days", "maxItems": 100} - "Tell me every day which new Search ads shein.com launched in Germany" ->
{"searchQuery": "shein.com", "region": "DE", "platform": "google_search", "onlyNew": true, "maxItems": 100}
FAQ
Does it show how much a competitor spends? No. Google publishes spend and impressions only for political ads. You get the creative, format, countries and dates.
Domain or advertiser? A domain returns every account pointing to it (13 for nike.com: global, regional and agency accounts). An advertiser id returns one account.
How far back does it go? As far as the Transparency Center keeps the creative; ads running since 2021 came back in tests.
Why is regions empty? includeDetails is off, so only the country you filtered by is known.
Why is a country a number like "2175"? A few Google region codes are grouped or sub-national regions with no ISO equivalent and are returned raw.
Can I download the creatives? imageUrl is a direct image file. Video ads expose no MP4, only previewUrl.
Is it legal? It reads a public Google page without login and collects business information about advertisers, not personal data. You are responsible for how you use it.
Limitations
- No spend, impressions or clicks for commercial ads.
domainis filled only when you search by domain.- The platform filter applies only to ads shown from 2023-09-04 onwards, by Google's rule.
- No landing page URL: the click goes through Google's redirect, which is not followed.
includeDetailsadds one request per ad, so runs with details are several times slower.
Errors
- Every retry refused for a call: the run fails with a clear message instead of saving a half-empty dataset.
- Google changes the Transparency Center: the run fails naming the part that changed.
- Something missing or broken? Open an issue on the Issues tab with the input you used.
Changelog
- 2026-11-10: lower price: US$ 1.08 per 1,000 ads on Free, less on paid plans.
- 2026-10-23: clearer Store description.
- 2026-10-19: examples for AI agents (Apify MCP server).
- 2026-10-04:
onlyNewfor scheduled runs;approxDaysShownis always a whole number. - 2026-09-14: discounts by plan.
- 2026-09-11: faster details; a 300-ad run with details went from over 10 minutes to 58 seconds.
Independent tool, not affiliated with Google.