Google Ads Archive
Pricing
from $0.26 / 1,000 results
Google Ads Archive
Export every ad an advertiser runs on Google, from the official Ads Transparency Center: creative image, first and last shown dates, format, and a link to the ad on Google. Any country, no API key.
Export an advertiser's ads from Google's own Ads Transparency Center — text, image and video creatives — as clean JSON, CSV or Excel. No API key, no browser, no scraping code.
Google publishes this archive but gives it no API and no export button. This Actor turns it into a table.
What you get
One row per ad creative: Google's own format for it, the image and its pixel size where the creative has one, the dates it first and last ran, and a link back to the ad on Google so anything can be checked at source.
By default a run collects up to 100 ads per advertiser — large brands run
thousands, so raise maxAdsPerAdvertiser (or set it to 0) when you want the
full history, and watch the cost.
How to scrape Google ads by advertiser
Put one or more advertiser names in Advertisers and run it. A name is resolved against Google's own advertiser directory and the closest match is used; when a brand has several registered entities the alternatives are listed in the log so you can switch to an exact id.
{"advertisers": ["Nike, Inc."],"region": "US","maxAdsPerAdvertiser": 100}
To pin an exact advertiser, pass its Google id instead:
{"advertisers": ["AR16735076323512287233"],"region": "GB"}
Competitor ad research and creative tracking
Because every row carries firstShown and lastShown, a single run tells you
which creatives a competitor is still running, which they retired, and how long
each has been live. Re-run it on a schedule and the diff is a creative-rotation
timeline.
Ads differ by country: an advertiser with thousands of ads in the US may have none in Germany. Set Region per market.
Input
| Field | Type | Default | Description |
|---|---|---|---|
advertisers | array | — | Advertiser names (Nike, Inc.) or Google advertiser ids (AR16735076323512287233). Required — with none set the run stops and charges nothing. |
region | string | US | US, GB, DE, IN, CA, AU or JP. For any other country pass Google's numeric region code (2000 + the ISO-3166-1 numeric country code). |
maxAdsPerAdvertiser | integer | 100 | Stop after this many ads per advertiser. A large advertiser can run thousands — Google reports 9,000-10,000 for Nike in the US alone — so this is the main cost control. 0 means no limit. |
maxItems | integer | 0 | Stop the whole run after this many rows. 0 means no limit. |
maxRunSeconds | integer | 900 | Stop starting new pages after this many seconds. 0 disables the budget. |
maxRetriesPerRequest | integer | 8 | Retries when Google rate-limits a request; each one backs off and rotates the proxy IP. |
rotateAfterRequests | integer | 24 | Retire a proxy identity after this many requests, before Google throttles it. 0 disables proactive rotation. |
proxyConfiguration | object | Apify Proxy | Google rate-limits a single address with 429 during sustained reading, so leaving the proxy on is strongly recommended. |
Output
{"advertiserId": "AR16735076323512287233","advertiserName": "Nike, Inc.","creativeId": "CR05576182909712203777","format": "text","formatCode": 1,"imageUrl": "https://tpc.googlesyndication.com/archive/simgad/10891172661046192318","imageWidth": 348,"imageHeight": 174,"previewUrl": null,"firstShown": "2022-11-30","lastShown": "2026-07-27","firstShownTimestamp": 1669820166,"lastShownTimestamp": 1785116984,"region": "US","regionCode": 2840,"creativeUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR05576182909712203777?region=US","scrapedAt": "2026-07-27T01:10:00+00:00"}
That row is a real one, taken verbatim from a live run. Note it: a text ad
that carries an image. That is normal, and it is why you should filter on
format rather than on whether imageUrl is set.
format is Google's own classification, read from the format code it
returns, not inferred from what the creative happens to contain:
formatCode | format |
|---|---|
1 | text |
2 | image |
3 | video |
Anything else is reported as other with the raw formatCode kept, so a new
Google format arrives visible rather than silently mislabelled. Do not infer the
format from whether a row has an image: text ads carry images too, so
filtering on imageUrl returns search ads alongside display ones.
Dates. firstShown and lastShown are the UTC date of the instants Google
returns. Those instants are not midnight boundaries, so a reader in another
timezone may want a different calendar date — firstShownTimestamp and
lastShownTimestamp carry the raw epoch seconds for exactly that.
previewUrl is Google's own preview endpoint for the creative. It is a
script payload meant to be embedded by Google's viewer rather than a standalone
page, so treat it as an identifier for the creative rather than a link to hand
to a browser. imageUrl and creativeUrl are ordinary URLs.
Cost
Billing is pay per result: one event per ad row, and nothing else. A failed request is never written to the dataset, so you are not charged for this Actor's errors. Passing the same advertiser twice — by name and by id, say — collects it once, so a duplicated list does not become a duplicated invoice.
A run whose advertisers exist but have no ads in that region finishes successfully with an empty dataset and an explanation in the log. So does a run where a name matches nothing: that is an answer, not a failure. A run fails only when every advertiser was actually unreadable, with the reason in the status message.
Set maxAdsPerAdvertiser to bound a run before you start it — that is the field
that decides what a large advertiser costs.
Notes and limits
- Only advertisers Google has verified appear in the Transparency Center, and only ads Google still retains are listed. This Actor reports what that archive contains; it cannot show ads Google has removed.
- An advertiser must be specified. Google's archive has no "all advertisers" view, so there is no way to sweep a whole category in one call.
- Ad counts, spend and impression ranges shown for political ads in some regions are not included — this Actor returns creatives.