Google Ads Transparency Scraper
Pricing
from $0.91 / 1,000 ad listeds
Google Ads Transparency Scraper
Ads from Google's Ads Transparency Center per advertiser domain or id, per country or anywhere: advertiser name, creative id, preview image or URL, first and last shown dates and a link to the ad. Up to 200 advertisers per run. Pay only for delivered ads.
Pricing
from $0.91 / 1,000 ad listeds
Rating
0.0
(0)
Developer
Steadydata Team
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Share
Google Ads Transparency Scraper (ads per advertiser)
Every ad an advertiser runs on Google, from the Ads Transparency Center, for up to 200 advertisers per run: advertiser name and id, creative id, a preview image or preview URL, the first and last date the ad was shown, and a link to the ad in the Center. Per country or for ads shown anywhere. You only pay for ads that are actually delivered.
Why this scraper
- Competitor ads without the clicking. The Center shows ads one page at a time; this actor pages through them for a whole list of advertisers and returns one flat table.
- By domain or by advertiser id. Paste
nike.comor anAR...id. A domain can resolve to several advertiser accounts (regional entities, agencies); each row carries the exact advertiser name and id, so they stay apart. - Dates as data. First shown and last shown come as dates, so "still running" and "how long has this been live" are a filter away.
- Lightweight route. About 0.5 KB per ad through the Center's own data endpoint, no browser: in testing on 13-09-2026, 40 ads came back in 21 KB.
- Only delivered ads are charged. An advertiser with no ads in the chosen region comes back as a clear error record at no cost.
Who this is for
Marketing and competitive-intelligence teams tracking what competitors advertise and since when. Agencies auditing a client's ad footprint per country. Researchers studying advertising activity over time.
Who this is not for
This actor lists ads and their previews; it does not return ad spend, impressions or
targeting. Google does not publish those in the Center. The ad format is passed through
as Google's numeric formatCode without a label, because Google does not document the
codes; previewType tells you whether there is a still image or a rich preview URL. Ad
text is not extracted from the preview.
Input fields
| Field | Type | Required or default | What it does |
|---|---|---|---|
advertisers | list of text | required | Advertiser domains (nike.com) or Transparency Center advertiser ids (AR...), one per row, up to 200. An advertiser without ads in the region comes back as a free error record. |
country | text | Two-letter country code to see the ads shown in that country (US, GB, NL, DE ...). Leave empty for ads shown anywhere. | |
maxAdsPerAdvertiser | number | 100 | Cost ceiling per advertiser, newest first as the Transparency Center orders them. One delivered ad is one charged event. |
Input example
{"advertisers": ["nike.com", "booking.com", "AR18378488041124659201"],"country": "NL","maxAdsPerAdvertiser": 100}
country empty means ads shown anywhere. Supported countries: the 70 largest
advertising markets; an unsupported code returns a free INVALID_COUNTRY record.
Output example
| Field | Type | What it holds | Example |
|---|---|---|---|
query | text | The advertiser or domain this row was found with. | booking.com |
advertiserId | text | Google's own id for the advertiser, the key to all their ads. | AR02934798844673654785 |
advertiserName | text | The advertiser as Google verified them, which is the legal name more often than the brand. | Booking.com |
domain | text | The domain the advertiser is registered on. | booking.com |
creativeId | text | Google's id for this one ad, stable while the ad runs. | CR02923306749140140033 |
rank | number | The place in Google's own order, counting from 1. | 1 |
previewType | text | What the ad is: image, video or text. | image |
previewImageUrl | text | The image of the ad itself, straight from Google's archive. | https://tpc.googlesyndication.com/archive/simgad/99002075... |
previewUrl | text | The preview page of the ad, filled for the types Google does not serve as an image. | https://displayads-formats.googleusercontent.com/ads/prev... |
previewWidth | number | The width of that image in pixels. | 380 |
previewHeight | number | The height of that image in pixels. | 499 |
formatCode | number | Google's own format number for the ad, handy to group identical shapes. | 1 |
firstShown | text | The first day Google saw the ad running. | 2021-10-26 |
lastShown | text | The last day Google saw it running; together with firstShown this gives the run time. | 2026-09-30 |
adUrl | text | The ad's page in Google's Ads Transparency Center. | https://adstransparency.google.com/advertiser/AR029347988... |
region | text | The region the ad was seen in; the same ad can run in several. | anywhere |
{"query": "nike.com","rank": 1,"advertiserId": "AR18378488041124659201","advertiserName": "Nike Retail BV","domain": "nike.com","creativeId": "CR15810869670027722753","previewType": "image","previewImageUrl": "https://tpc.googlesyndication.com/archive/simgad/8950235747126220397","previewUrl": null,"previewWidth": 364,"previewHeight": 439,"formatCode": 1,"firstShown": "2026-07-20","lastShown": "2026-09-13","adUrl": "https://adstransparency.google.com/advertiser/AR18378488041124659201/creative/CR15810869670027722753?region=NL","region": "NL","status": "ok"}
An advertiser that yields nothing produces an error record instead, and is not charged:
{"input": "example.org","status": "error","errorCode": "NO_ADS","error": "No ads for example.org in region NL"}
Error codes: INVALID_ADVERTISER, INVALID_COUNTRY, NO_ADS, BLOCKED. INPUT_TRUNCATED appears once when your input is longer than this actor accepts.
Related actors from steadydata
- website-tech-stack: what the advertiser's site runs on
- google-local: how the advertiser ranks locally
- Used together with google-trends-batch and google-autocomplete in a recipe: See what an advertiser runs and what people search for.
Pricing
Pay per event: one ad-listed event per delivered ad. No charge for advertisers that
fail or have no ads, no separate platform-usage surcharge. maxAdsPerAdvertiser is your
hard cost ceiling.
Free Apify plan: this actor delivers up to 25 rows per run for accounts on the Apify free plan, and then stops with a message. That limit is set by us, not by Apify. It exists so the actor keeps paying for itself for the people who do pay. Any paid Apify plan runs it at full size, billed per delivered row, with failed rows never charged.
Reviews: if this actor saves you time, a short review on this page is the one thing that helps most. Ratings are what other buyers look at first, and we have no other way to ask.
FAQ
In what order do the ads come?
The Center's own order, which puts the most recently shown ads first. rank records it.
Why does one domain give several advertiser names?
Because several Google Ads accounts advertise that domain: country entities, resellers
or agencies. Filter on advertiserName or run the AR... id you want.
Can I get the ad text or the video? Not from this actor. Image previews come as an image URL; rich and video ads come as a preview URL you can open in a browser.
Is personal data collected? No. Advertisers in the Center are companies and organisations; the data is what Google publishes about their ads.
What happens when Google changes something? The Center's data endpoint uses numbered fields that Google may renumber. The actor is monitored daily and fixed fast, and while it is broken you are not charged, because only delivered ads cost anything.
Can I call it from my own code, like an API? Yes. Every run is available through the Apify API: start it with one HTTP request, then read the results as JSON, CSV or Excel from the dataset endpoint, or use the official Python and JavaScript clients. The input is the same JSON as in the input example above, so a scheduled script, a Make or Zapier step or an AI agent can call it without any changes.