Google Ads Transparency Scraper & Monitor
Pricing
Pay per event
Google Ads Transparency Scraper & Monitor
Get every ad of any advertiser or domain from the Google Ads Transparency Center: text, image and video ads, first/last shown, impressions by country. Built-in monitoring: schedule it and get only new and stopped competitor ads.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Onkel RoGi
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 hours ago
Last modified
Categories
Share
Get every Google ad of any advertiser or domain from the Google Ads Transparency Center: text, image and video ads, when each ad was first and last shown, and (optionally) impressions by country. Then schedule it and get only what changed: new ads your competitors launched and ads they stopped.
No login, no browser: the Actor talks to the Transparency Center's own data endpoints, so it is fast and cheap — up to 100 ads per request instead of one page load per ad.
What you can do with it
- Competitor ad monitoring — run it daily on your competitors' domains and get a list of new and stopped ads (pairs well with an email/Slack integration).
- Ad creative research — download all image/text ad renders and YouTube video ads of a brand.
- Agency reporting — see how many ads a brand runs, in which countries, since when.
- Lead generation for ad agencies — find out which companies advertise in a country and how actively.
Input
| Field | What it does |
|---|---|
| Advertisers or domains | One per line. A domain (nike.com), an advertiser ID (AR16735076323512287233), an Ads Transparency URL (https://adstransparency.google.com/advertiser/AR… or …/?domain=otto.de), or an advertiser name (Nike → the matching advertiser with the most ads). |
| Region | anywhere, or a two-letter country code (US, DE, GB …) to get only ads shown there. |
| Ad format | All, text, image or video. |
| Shown within the last N days | Skip ads that stopped running long ago. Ads come newest first, so this also makes runs faster. |
| Max ads per advertiser/domain | Default 200. Big brands have tens of thousands of ads; 0 = no limit. |
| Include impressions by country | Adds impression ranges and first/last shown date per country, all image variations, and the YouTube video ID of video ads. |
| Track changes between runs | Monitoring, see below. |
Example:
{"targets": ["zalando.de", "Nike", "AR17568630107302526977"],"region": "DE","maxAdsPerTarget": 200,"includeDetails": true}
Output
One row per ad. Real example (zalando.de, region DE, details on):
{"target": "zalando.de","advertiserId": "AR15589870916631265281","advertiserName": "Zalando SE","creativeId": "CR00057409882952826881","format": "text","domain": "zalando.de","firstShown": "2025-11-08T07:22:53.000Z","lastShown": "2026-10-31T20:54:02.000Z","daysShown": 199,"imageUrl": "https://tpc.googlesyndication.com/archive/simgad/6499575823368687217","imageWidth": 348,"imageHeight": 156,"adUrl": "https://adstransparency.google.com/advertiser/AR15589870916631265281/creative/CR00057409882952826881?region=DE","isActive": true,"variations": ["https://tpc.googlesyndication.com/archive/simgad/6499575823368687217"],"impressionsByRegion": [{ "region": "DE", "impressionsMin": 1000, "impressionsMax": 2000, "firstShownDate": "2025-11-07", "lastShownDate": "2026-10-31" }],"regionsShown": 1,"scrapedAt": "2026-10-31T21:19:39.828Z"}
imageUrl— Google's own render of the ad (text ads are rendered as an image, exactly as shown on Google).isActive— shown within the last 3 days.daysShown— number of days Google reports the ad as served.- Video ads (details on) get
youtubeVideoId,youtubeUrland a thumbnail asimageUrl. - The key-value store record
SUMMARYlists, per target, the resolved advertiser, the size of its ad library and the counts per change type.
Monitoring: only new and stopped ads
Turn on Track changes between runs and schedule the Actor (Apify Console → Schedules, e.g. daily). Every ad gets a change:
change | Meaning |
|---|---|
first_run | First run of this monitor — the baseline. |
new | Ad first shown since the previous run. |
running | Ad that was already known and is still shown. |
stopped | Ad that was running at the previous run and is no longer shown (reported once). |
With Output only changes the running ads are skipped and billed at a much cheaper "checked" rate — your dataset contains only the news. Monitoring runs are fast: Google sorts ads by "last shown", so the Actor stops reading as soon as it reaches ads older than the previous run.
Use Monitor name to keep separate histories (e.g. one per client). Note: stopped needs a complete view of the running ads — set Max ads high enough (or 0) for big advertisers.
Pricing
Pay per result, no subscription:
- Ad — one delivered ad row.
- Ad details — extra per ad when Include impressions by country is on.
- Checked ad — monitoring with Output only changes: an already-known ad that was checked but not output.
Failed targets are free. See the Pricing tab for current prices.
Tips
- Don't know the domain? Enter the brand name — the log shows which advertiser was picked; copy its
AR…ID for exact results. - One brand often has several advertiser accounts (e.g. per country). Searching by domain covers all of them.
- The Actor uses Apify Proxy and switches to residential IPs on its own if Google throttles.
Is it legal?
The Ads Transparency Center is a public library Google publishes so that anyone can see who advertises what. The Actor collects only advertiser-level, business data about ads — no personal data. Check your local rules for how you use the data.