Google Ads Transparency Scraper: Competitor Ads by Brand
Pricing
from $1.00 / 1,000 ads
Google Ads Transparency Scraper: Competitor Ads by Brand
Google Ads Transparency Center scraper for competitor ads: every ad a brand runs on Google Search, YouTube, Maps, Play and Shopping, with creatives, format, first and last shown, and EU impressions and targeting. Pay per ad.
Pricing
from $1.00 / 1,000 ads
Rating
0.0
(0)
Developer
DTK Foundry
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
A Google Ads Transparency Center scraper for competitor ads: every ad a brand runs on Google Search, YouTube, Google Maps, Google Play and Google Shopping, from Google's public Ads Transparency Center: the creative, its format, when it was first and last shown, and the advertiser behind it. Turn on details to add each ad's variations and topic, the countries it ran in, and for EU countries how many times it was shown (overall and per platform) and how its audience was selected.
- Search the way you think: a brand name ("Nike"), a website ("temu.com") or an advertiser account ID. Brand names are matched to the brand's own website when Google knows it, so "Temu" finds Temu's ads even though they run under the name Elementary Innovation Pte. Ltd. Every row says what your search matched.
- Filters that match the site: country (or anywhere), format, platform, and a date range.
- Reliable. Tested on 200 varied searches (50 brands, 20 websites, 10 countries, random format, platform and date filters, details on 30%): all 200 answered, none failed, median 2.6 seconds per search.
- Pay per ad: $0.001. Searches that fail or find nothing are never charged.
Input
| Field | Type | Default | Description |
|---|---|---|---|
advertisers | array | [] | One per line: brand name, website, or account ID (AR...). Empty = a free format example. |
region | string | US | 2-letter country code where the ads were shown, or anywhere. |
format | string | all | all, text, image, video. |
platform | string | all | all, search, youtube, maps, play, shopping. |
shownFrom / shownTo | date | any time | Only ads shown in this date range. |
maxAdsPerAdvertiser | integer | 100 | 1-5,000, newest first. |
includeDetails | boolean | false | Variations, topic, countries, and EU reach and targeting. One more request per ad. |
{"advertisers": ["Nike", "temu.com"],"region": "DE","format": "all","platform": "youtube","shownFrom": "2026-07-01","maxAdsPerAdvertiser": 100,"includeDetails": true}
Output (one record per ad)
A real record from a run on 2026-10-20 (searched nike.com in Germany with details on; lists shortened):
{"searchedFor": "nike.com","searchType": "website","region": "DE","scrapedAt": "2026-10-20T20:31:54+00:00","advertiserIds": null,"estimatedAdsMin": 2000,"estimatedAdsMax": 3000,"status": "ok","rank": 2,"advertiserId": "AR18378488041124659201","advertiserName": "Nike Retail BV","creativeId": "CR02281612109399719937","website": "nike.com","format": "text","firstShown": "2021-10-25","lastShown": "2026-10-20","imageUrl": "https://tpc.googlesyndication.com/archive/simgad/8919616364878071","imageWidth": 364,"imageHeight": 305,"previewUrl": null,"adUrl": "https://adstransparency.google.com/advertiser/AR18378488041124659201/creative/CR02281612109399719937?region=DE","topic": null,"variations": [{"imageUrl": "https://tpc.googlesyndication.com/archive/simgad/8919616364878071","imageHeight": 305,"imageWidth": 364}],"variationCount": 4,"regions": [{"countryCode": "US","region": "United States","firstShown": null,"lastShown": "2026-10-19","timesShownMin": null,"timesShownMax": null,"timesShownByPlatform": []},{"countryCode": "DE","region": "Germany","firstShown": "2023-03-01","lastShown": "2026-10-20","timesShownMin": 60000,"timesShownMax": 70000,"timesShownByPlatform": [{"platform": "Google Search","timesShownMin": 45000,"timesShownMax": 50000},{"platform": "Google Shopping","timesShownMin": 0,"timesShownMax": 1000}]}],"timesShownEuMin": 175000,"timesShownEuMax": 200000,"audienceSelection": {"demographicInfo": "included","geographicLocations": "included","contextualSignals": "included"}}
The detail fields (topic to audienceSelection) appear only with includeDetails. Times shown and audience
selection are published by Google for EU countries only (EU Digital Services Act); elsewhere the regions list
has dates only.
imageUrlis the archived creative image. Text ads are archived by Google as images too, so their wording is in the image, not in a text field. Ads Google renders on the fly (most video and some image ads) have apreviewUrlinstead: Google's own preview script for that ad.estimatedAdsMin/Maxis Google's estimate of how many ads match the whole search.resolvedTo(brand-name searches) says what the name matched:website nike.comoradvertiser Nike, Inc..- A search with no ads gives one record with
status: "no-results"; a search that could not be completed givesstatus: "failed"and anerror. Neither is charged.
Pricing
Pay per event, no subscription.
| Event | Price | When it is charged |
|---|---|---|
| Ad | $0.001 | Once per ad delivered. 100 ads = $0.10. |
| Ad details | $0.001 | Once per ad whose details were delivered (only with includeDetails). |
Set a maximum charge in the run options and the actor stops before it would go over. Apify's standard run-start event adds $0.00005 per run.
Limits, stated plainly
- Brand names are matched as well as Google's own suggestions allow. For an exact search use the website or
the advertiser ID from the advertiser's Transparency Center page (
adstransparency.google.com/advertiser/AR...). - Google limits how fast this site can be read. The actor spreads requests over fresh connections and waits when told to; very large runs (thousands of ads with details) take minutes, not seconds.
- Political ads (Google's separate political ads report) are not covered.
- Public data only: no login, no personal data.
Privacy
Only your search terms are sent to Google. Results are stored only in your run's dataset. The actor runs with limited permissions and reads nothing else in your account.