Google Ads Transparency Center Scraper
Pricing
from $0.80 / 1,000 results
Google Ads Transparency Center Scraper
Pull every ad an advertiser is running from Google's Ads Transparency Center by domain or advertiser ID. Returns each ad's preview, format, first/last shown dates, and optional per-country reach breakdown. Competitive ad intelligence with no login and no API key.
Pricing
from $0.80 / 1,000 results
Rating
0.0
(0)
Developer
Farhan Febrian Nauval
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
See every ad a company is running on Google — Search, Display, and YouTube — straight from Google's own public Ads Transparency Center. Give the actor an advertiser's domain (like nike.com) or advertiser ID and it returns each ad's preview, format, and the dates it ran, plus an optional per-country reach breakdown.
It's a fast, no-cost way to watch a competitor's advertising: what they're promoting, where, and for how long. No account, no API key, no login.
Why use this actor
- No account, no login, no API key — the data is Google's public transparency record.
- Complete ad library per advertiser — every creative Google has on file for a domain or advertiser ID.
- Ad previews — a direct preview link for every ad, plus all creative variants.
- Run dates — when each ad was first and last shown.
- Per-country reach (optional) — impression ranges per country, split by where the ad ran (Search, Display, YouTube).
- Any market — pick the country you want to see ads for (US, GB, DE, JP, and more).
- Clean, stable JSON ready for a spreadsheet, database, or competitive-intel pipeline. Export to JSON, CSV, or Excel, with automatic retries.
How it works
- You give it an advertiser domain (e.g.
nike.com) or an advertiser ID, and a country. - The actor looks up every ad that advertiser is running and pages through all of them.
- Optionally, it opens each ad for the full per-country reach breakdown and all variants.
- It returns one tidy record per ad.
You don't manage any scrapers, browsers, or blocks — just set the inputs and run.
Input
{"domain": "nike.com","advertiserId": "","regionCode": "US","fetchDetail": true,"maxCreatives": 100,"maxConcurrency": 5}
| Field | Type | Description |
|---|---|---|
domain | string | Advertiser website domain to look up (e.g. nike.com). Use this or advertiserId. |
advertiserId | string | A specific advertiser ID starting with AR (e.g. AR18378488041124659201). Use when you already know the exact advertiser; otherwise leave blank and search by domain. |
regionCode | string | Country to see ads for, as a 2-letter code (US, GB, DE, JP, TH, …). Default US. |
fetchDetail | boolean | When on, enriches each ad with its per-country reach breakdown (impression ranges, surface split) and all creative variants. Slower — one extra lookup per ad. Default false. |
maxCreatives | integer | Maximum number of ads to return. Default 100. |
maxConcurrency | integer | How many detail lookups to run at once (only used when fetchDetail is on). Default 5. |
proxyConfiguration | object | Optional. The country is chosen by regionCode, not by your IP, so a proxy is not required. Enable it only to spread request volume on large runs. |
Output
One record per ad (creative). Real sample below — a Nike ad, with fetchDetail on, arrays truncated:
{"_input": "nike.com","_source": "S1-search-detail","_scrapedAt": "2026-07-10T11:55:17Z","advertiserId": "AR18378488041124659201","creativeId": "CR17671898696104542209","advertiserName": "Nike Retail BV","domain": "nike.com","formatCode": 1,"format": "TEXT","firstShownDate": "2025-10-22","lastShownDate": "2026-07-10","previewUrl": "https://displayads-formats.googleusercontent.com/ads/preview/content.js?client=ads-integrity-transparency&creativeId=779544926776&...","creativeUrl": "https://adstransparency.google.com/advertiser/AR18378488041124659201/creative/CR17671898696104542209","regions": [{"regionCode": 2380,"impressionsMin": "100000","impressionsMax": "125000","firstShownDate": "2025-10-22","lastShownDate": "2026-07-10","surfaceSplit": [{ "surfaceCode": 2, "surface": "SEARCH", "impressionsMin": null, "impressionsMax": "1000" },{ "surfaceCode": 3, "surface": "DISPLAY", "impressionsMin": "100000", "impressionsMax": "125000" },{ "surfaceCode": 4, "surface": "YOUTUBE", "impressionsMin": null, "impressionsMax": "1000" }],"raw": { "...": "raw numbered region object" }},{ "regionCode": 2724, "impressionsMin": "1000", "...": "1 more region" }],"variantPreviewUrls": ["https://displayads-formats.googleusercontent.com/ads/preview/content.js?...&creativeId=779544926776&..."],"aggregate": { "2": "100000", "3": "125000", "...": "raw aggregate impressions" },"raw": { "...": "raw numbered search object" },"rawDetail": { "...": "raw numbered detail object" }}
| Field | Type | Description |
|---|---|---|
advertiserId | string | Google advertiser ID (starts with AR). |
creativeId | string | Unique ad (creative) ID (starts with CR). |
advertiserName | string | Advertiser's verified legal name. |
domain | string | Advertiser's website domain. |
format | string | Ad format: TEXT, IMAGE, or VIDEO. |
formatCode | integer | Raw Google format code behind format. |
firstShownDate | string | Date the ad was first shown (YYYY-MM-DD). |
lastShownDate | string | Date the ad was last shown (YYYY-MM-DD). |
previewUrl | string | Direct link to Google's rendered preview of the ad. |
creativeUrl | string | Human-readable Ads Transparency Center page for this ad. |
regions | array | (fetchDetail only) Per-country reach: impression range, run dates, and a split by surface (Search / Display / YouTube). |
variantPreviewUrls | array | (fetchDetail only) Preview links for every variant of the ad. |
aggregate | object | (fetchDetail only) Aggregate impression totals and date range across all countries. |
raw | object | The raw record for the ad, exactly as Google returned it (nothing dropped). |
rawDetail | object | (fetchDetail only) The raw detail record for the ad. |
When fetchDetail is off, records carry only the fast search-level fields (through creativeUrl plus raw) and _source is S1-search.
About region codes
Reach in the regions array is reported using Google's internal country codes (e.g. 2840 = US, 2826 = GB, 2380 = Italy, 2724 = Spain). The code is the country's ISO numeric code plus 2000. You set the country you want with a simple 2-letter regionCode in the input.
Notes & limits
- Domain or advertiser ID: give one or the other. A domain search returns every ad tied to that domain; an advertiser ID targets one specific advertiser.
- Impression ranges, not exact counts: Google publishes reach as ranges (e.g. 100,000–125,000), not precise numbers. Values are passed through exactly as Google reports them; a sparsely-run ad may show
nullfor one end of the range. fetchDetailcost: turning it on adds one lookup per ad. For a quick inventory of what an advertiser is running, leave it off; turn it on when you need reach and variants.- Region is a parameter, not your location: you see a country's ads by setting
regionCode, regardless of where the actor runs — no proxy needed. - Coverage: whatever Google publishes in its Ads Transparency Center. Advertisers with no verified ads return no records.
Other actors in this collection
| Actor | What it does |
|---|---|
| SEC Form D Funding Tracker | US private-placement funding rounds and the people behind them. |
| US Customs Bill-of-Lading (ImportYeti) | US maritime import intelligence per company. |
| North Data Companies | European company registry and financial data. |