Google Ads Transparency Scraper - Ads by Advertiser or Domain
Pricing
from $0.84 / 1,000 ads
Google Ads Transparency Scraper - Ads by Advertiser or Domain
Google Ads Transparency Center scraper and ad library API alternative: every ad of an advertiser by name, domain or AR ID with format, first and last shown dates, countries, image, YouTube video and preview URLs. Competitor ad research, no login.
Scrape the Google Ads Transparency Center: every ad (creative) of an advertiser, found by advertiser name, website domain or advertiser ID, with its format, first and last shown dates, countries where it ran, image, YouTube video and preview URLs, and a link to the ad page. Filter by country, ad format and date range. One flat JSON record per ad.
What it does
- Takes one main input,
advertiser, in any of three forms:- a domain or URL (
nike.com): ads that lead to this domain, from every advertiser that runs them; - an advertiser ID (
AR16735076323512287233) or a Transparency Center advertiser URL: the most precise option; - an advertiser name (
Nike): matched against Google's own advertiser suggestions, ignoring case, punctuation and legal suffixes (Inc.,Ltd,GmbH...); when several advertisers share the name, the one with the most ads is used and named in the run log.
- a domain or URL (
- Reads the same JSON endpoints that the Transparency Center web page uses (search, advertiser lookup, ad details), over plain HTTP. No browser, no login, no Google account.
- Optional filters:
region(country where the ad was shown),format(text, image, video) anddateRange(last 7, 30, 90 or 365 days). - For each ad, by default, opens its detail record (countries where it ran, number of variations) and, for image and video ads that Google only shows through a preview script, reads that script to get the image URL and the YouTube video URL.
- Deduplicates ads by
creativeIdand stops atmaxItems.
Typical uses: competitor ad research, creative monitoring, checking which countries and formats a brand advertises in, building a swipe file of ads with their run dates.
Input
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
advertiser | string | Yes | - | Advertiser name (Nike), website domain or URL (nike.com), or advertiser ID (AR16735076323512287233). |
region | string | No | any region | Two-letter country code (US, GB or UK, FR, DE, JP...): only ads shown in that country. |
format | string | No | all | all, text, image or video. |
dateRange | string | No | anytime | anytime, last_7_days, last_30_days, last_90_days or last_365_days (ads shown at least once in the period, counted back from yesterday, UTC). |
maxItems | integer | No | 20 | Maximum number of ads to return (1 to 5,000). |
includeDetails | boolean | No | true | Fill regions, regionCount and variationCount (one extra request per ad). |
extractMediaUrls | boolean | No | true | Fill imageUrl / videoUrl for image and video ads shown through a preview script (one extra download of about 200 KB per such ad). |
Example input:
{"advertiser": "nike.com","region": "US","format": "video","dateRange": "last_30_days","maxItems": 50}
Output
One dataset item per ad. Real items from a run with "advertiser": "nike.com":
[{"advertiserId": "AR18378488041124659201","advertiserName": "Nike Retail BV","creativeId": "CR02488267518863474689","format": "text","firstShown": "2021-10-25T07:00:00+00:00","lastShown": "2026-10-28T06:22:05+00:00","daysShown": 1414,"landingDomain": "nike.com","imageUrl": "https://tpc.googlesyndication.com/archive/simgad/3129906315878413076","previewUrl": "https://tpc.googlesyndication.com/archive/simgad/3129906315878413076","adUrl": "https://adstransparency.google.com/advertiser/AR18378488041124659201/creative/CR02488267518863474689?region=anywhere","advertiserCountry": "NL","regions": "AT,BE,BG,BR,CY,CZ,DE,DK,EE,ES,FI,FR,GR,HR,HU,IE,IS,IT,LT,LV,MT,NL,NO,PL,PT,RO,SE,SK,TR","regionCount": 29,"variationCount": 3,"videoUrl": null,"searchRegion": "anywhere","query": "nike.com","scrapedAt": "2026-10-28T06:46:10.552859+00:00"},{"advertiserId": "AR01266454498310619137","advertiserName": "유한회사 나이키코리아","creativeId": "CR03459814590374739969","format": "video","firstShown": "2026-10-01T02:16:21+00:00","lastShown": "2026-10-28T06:19:51+00:00","daysShown": 28,"landingDomain": "nike.com","imageUrl": "https://i.ytimg.com/vi/6UWPFi97i9w/hqdefault.jpg","previewUrl": "https://displayads-formats.googleusercontent.com/ads/preview/content.js?client=ads-integrity-transparency&...","adUrl": "https://adstransparency.google.com/advertiser/AR01266454498310619137/creative/CR03459814590374739969?region=anywhere","advertiserCountry": "KR","regions": "KR","regionCount": 1,"variationCount": 2,"videoUrl": "https://www.youtube.com/watch?v=6UWPFi97i9w","searchRegion": "anywhere","query": "nike.com","scrapedAt": "2026-10-28T06:46:10.552859+00:00"}]
| Field | Description |
|---|---|
advertiserId, advertiserName | Google advertiser ID (AR...) and name as shown in the Transparency Center. |
advertiserCountry | Two-letter country code of the advertiser's location. |
creativeId | Google ID of the ad (CR...), unique in the dataset. |
format | text, image or video. |
firstShown, lastShown | First and last time the ad was shown (ISO 8601, UTC). |
daysShown | Number of days on which the ad was shown, as reported by the Transparency Center (at most the days between first and last shown). |
regions, regionCount | Countries where the ad ran (comma-separated codes) and their number (includeDetails). |
variationCount | Number of variations of the ad archived by Google (includeDetails). |
landingDomain | Domain the ad leads to, when Google reports it (mostly in domain searches). |
imageUrl | Archived image of the ad, product or display image, or YouTube thumbnail of a video ad. |
videoUrl | YouTube URL of a video ad, when its preview references a YouTube video. |
previewUrl | Google's preview of the ad: the archived image, or the preview script the Transparency Center uses to render it. |
adUrl | Page of the ad in the Google Ads Transparency Center. |
searchRegion, query, scrapedAt | Region filter and advertiser input of the run, collection time. |
Missing values are null. Export as JSON, CSV, Excel or through the Apify API.
Pricing
Pay-per-event, no start fee: $1.40 per 1,000 ads on the Apify Free plan, with lower prices on paid plans. Each ad pushed to the dataset is one AD event; regions, variations and media URLs are included at no extra charge.
| Event | Free | Starter | Scale | Business | Enterprise |
|---|---|---|---|---|---|
Ad (AD) | $1.40 | $1.20 | $1.00 | $0.84 | $0.84 |
Prices in USD per 1,000 events.
Cost examples (Free plan)
| Scenario | Ads | Cost |
|---|---|---|
| Quick look | 10 | $0.014 |
| One advertiser, recent ads | 100 | $0.14 |
| Full creative library | 1,000 | $1.40 |
The run stops cleanly when the "maximum cost per run" set in the run options is reached.
Limitations
- Only what the Ads Transparency Center publishes is available. Google does not publish impressions, spend or targeting for commercial ads; those exist only for political ads, which this Actor does not cover.
- Ad text is not extracted: Google archives most text (search) ads as an image of the ad, so the text is in
imageUrl, not in a text field. videoUrlis filled only when the video ad's preview references a YouTube video (not all of them do); other video ads keep their thumbnail or preview script.- Name search depends on Google's advertiser suggestions (10 per query). For an ambiguous or very short name, use the domain or the advertiser ID; the resolved advertiser is written in the run log.
- A domain search returns ads from every advertiser that points to that domain (resellers, regional entities), not only the brand owner.
- The date filter only goes back about one year: Google returns no ads for older periods.
- For long-running ads,
firstShowncan be the start of Google's archive rather than the real launch date (many older ads show October 2021). - Google's ad counts are approximate ("about 9,000 ads");
maxItemscaps the number of ads returned, up to 5,000 per run.