Google Ads Transparency Monitor avatar

Google Ads Transparency Monitor

Pricing

from $2.00 / 1,000 ad returneds

Go to Apify Store
Google Ads Transparency Monitor

Google Ads Transparency Monitor

Get the ads any advertiser runs on Google from the public Ads Transparency Center. Search by domain, advertiser ID or name; filter by country, format and date. $2 per 1,000 ads, free notice rows, and a clean stop with your data when Google rate limits.

Pricing

from $2.00 / 1,000 ad returneds

Rating

0.0

(0)

Developer

Dylan Caponi

Dylan Caponi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Security

Limited permissions

Share

List the ads any advertiser runs on Google, straight from Google's public Ads Transparency Center (adstransparency.google.com). Give it a website domain, an advertiser ID or an advertiser name. You get one row per ad creative: format, first and last shown dates, image or preview link, and a link to the ad's own page on Ads Transparency Center.

$2.00 per 1,000 ads. Notice rows for advertisers that are not found or have no ads are free. When Google rate limits a run, it waits, retries, and if the limit lasts, it stops cleanly with the ads collected so far instead of failing the run.

What you can use it for

  • See which ads a competitor is running right now, and since when.
  • Check whether an ad has stopped running (its last shown date stops moving).
  • Keep a dated record of an advertiser's ads by running it on a schedule and comparing datasets.
  • Pull ads for a list of domains in one run for market or agency research.

Input examples

By website domain (every ad Ads Transparency Center links to that domain, across all advertiser accounts that use it):

{
"advertisers": ["nike.com"],
"maxAdsPerAdvertiser": 40
}

By advertiser ID (exact; copy it from the advertiser's page URL on Ads Transparency Center, or paste the whole link):

{
"advertisers": [
"AR16735076323512287233",
"https://adstransparency.google.com/advertiser/AR13872981516994215937?region=US"
]
}

By advertiser name (resolved through Google's own advertiser suggestions):

{
"advertisers": ["Blue Bottle Coffee"],
"nameMatch": "matching"
}

With filters: only video ads shown in the United States during October 2026:

{
"advertisers": ["AR16735076323512287233"],
"region": "US",
"format": "VIDEO",
"startDate": "2026-10-01",
"endDate": "2026-10-31",
"maxAdsPerAdvertiser": 200
}

You can mix domains, IDs and names in one list.

Input fields

FieldWhat it does
advertisersOne entry per line: a domain (nike.com), an advertiser ID (AR16735076323512287233), a link to an advertiser page on Ads Transparency Center, or an advertiser name (Blue Bottle Coffee).
regionTwo-letter country code (US, GB, DE, ...) to only return ads shown in that country. Empty means all regions.
formatALL (default), TEXT, IMAGE or VIDEO.
startDate, endDateOnly ads shown at some point within this date range (YYYY-MM-DD, both days included). An ad that started before the range and is still running counts.
maxAdsPerAdvertiserStop after this many ads per entry (default 40, up to 10,000). Ads come back in the order Ads Transparency Center lists them, most recently shown first. For a name that matches several advertisers, the limit applies to each matched advertiser.
includeDetailsOff by default. When on, each ad's detail page is also read to add the countries it was shown in (with the last shown date per country) and its variations. One extra request per ad, so runs take much longer. The price per ad does not change.
nameMatchFor names only. matching (default) takes the suggested advertisers whose name matches yours, ignoring case, punctuation and suffixes such as Inc or LLC, or the top suggestion if none match. all takes every advertiser Google suggests for that name (up to 10).
maxRateLimitWaitSecsAdvanced. Total time a run may spend waiting when Google rate limits it (default 240 seconds).

How each kind of entry is searched:

  • Domain: all ads Ads Transparency Center links to that domain, from any advertiser account. A large brand's domain often covers several accounts, for example regional entities.
  • Advertiser ID or link: ads from that one advertiser account.
  • Name: the name is first resolved to advertiser accounts (see nameMatch), then each account's ads are listed. The run log names the other suggested advertisers that were not included. For exact results, use an advertiser ID.

Output

One dataset row per ad creative. Example:

{
"query": "AR16735076323512287233",
"queryType": "advertiserId",
"status": "ok",
"message": null,
"advertiserId": "AR16735076323512287233",
"advertiserName": "Nike, Inc.",
"creativeId": "CR10843954190812708865",
"format": "IMAGE",
"firstShown": "2026-04-28T16:37:41.000Z",
"lastShown": "2026-11-05T05:08:18.000Z",
"regions": ["US"],
"regionLastShown": [{ "region": "US", "lastShownDate": "2026-11-04" }],
"variationCount": 3,
"variationImageUrls": [],
"domain": null,
"imageUrl": null,
"previewUrl": "https://displayads-formats.googleusercontent.com/ads/preview/content.js?...",
"transparencyUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR10843954190812708865?region=US",
"scrapedAt": "2026-11-05T05:37:12.232Z"
}
FieldMeaning
queryThe input entry this row came from, as you typed it.
queryTypedomain, advertiserId or name.
statusok for an ad. Free notice rows use not_found, no_ads or error.
messagePlain explanation on notice rows; null on ads.
advertiserId, advertiserNameThe advertiser account that ran the ad.
creativeIdGoogle's ID for the ad creative.
formatTEXT, IMAGE or VIDEO, as Ads Transparency Center labels it.
firstShown, lastShownFirst and last shown dates reported by Ads Transparency Center, in UTC.
regionsCountries the ad was shown in. Only with includeDetails; otherwise null.
regionLastShownLast shown date per country. Only with includeDetails.
variationCount, variationImageUrlsNumber of variations and any variation image links. Only with includeDetails.
domainFilled when the entry was a domain.
imageUrlDirect image link when Google serves the ad as a static image (text ads are often archived this way).
previewUrlThe script Google uses to render the ad preview, when there is no static image.
transparencyUrlOpens the ad on Ads Transparency Center.
scrapedAtWhen the row was collected.

If an entry finds nothing, the dataset gets one free notice row for it with status set to not_found (no such advertiser), no_ads (the advertiser exists but no ads match your filters) or error, and a plain message. A run summary (ads per entry, requests made, rate-limit waits) is saved under the SUMMARY key of the run's key-value store.

Pricing

Pay per event, no subscription:

  • $0.002 per ad row returned ($2.00 per 1,000 ads).
  • $0.00005 per run start (Apify's standard start fee; charged once at the default 512 MB memory, once per GB if you raise the memory).
  • Notice rows (not_found, no_ads, error) are free.

Worked example: one run that returns 1,000 ads costs $2.00 plus $0.00005 for the start, so about $2.00. A run that returns 40 ads costs $0.08.

If you set a maximum cost per run, the actor only collects as many ads as fit under it, then stops cleanly. Every ad in the dataset is one you were charged for, and you are never charged for ads that were not delivered.

Speed and reliability

  • Requests go out one at a time, about one per second. Each listing request returns up to 40 ads, so a run without details returns roughly 40 ads per second when Google is not rate limiting. With includeDetails on it is about one ad per second.
  • Google sometimes rate limits the shared IP addresses Apify runs go out from. The run then waits and retries (20 to 90 seconds per wait). If the limit lasts longer than maxRateLimitWaitSecs, the run ends early as a normal finished run with every ad collected so far, adds a free error notice row for the entry it was on, and skips the rest. Running again a few minutes later usually works.
  • If detail lookups get rate limited, details are switched off for the rest of the run and the remaining ads are still returned, without regions and variations.

Limits

  • Public data only. You get what Ads Transparency Center shows publicly; Google decides which ads, advertisers and regions appear there and how far back they go.
  • No login, cookies or proxies are used.
  • Big runs are slower, not more expensive per ad: rate limits on Google's side can add waits.
  • The listing can change between runs as ads start and stop, and the ad counts Google reports for an advertiser are ranges.
  • It does not download video files, read ad text out of rendered previews, return spend or impression numbers (Google does not publish them for regular ads), or handle the separate political ads reports.