Google Ads Transparency Center Advertiser Ads Scraper avatar

Google Ads Transparency Center Advertiser Ads Scraper

Pricing

from $1.50 / 1,000 ad creatives

Go to Apify Store
Google Ads Transparency Center Advertiser Ads Scraper

Google Ads Transparency Center Advertiser Ads Scraper

Pulls every publicly listed ad creative for a Google advertiser (by domain or name) from the Ads Transparency Center: format, first/last shown dates, regions shown, preview URL and ad text when Google exposes it. No login needed.

Pricing

from $1.50 / 1,000 ad creatives

Rating

0.0

(0)

Developer

Salman Bareesh

Salman Bareesh

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Share

What does Google Ads Transparency Center Advertiser Ads Scraper do?

This actor pulls every publicly listed ad creative for a Google advertiser straight from Google's Ads Transparency Center - the tool Google itself runs so anyone can see the ads a given advertiser is currently running (or has run) across Search, Display, YouTube and Shopping. Give it an advertiser domain (e.g. nike.com) or an advertiser name, and it returns one row per ad: format, when it first/last ran, which countries it ran in, a link to the ad on Google's own transparency page, and the ad's headline/description text when Google exposes it. Think of it as a Google Ads API alternative for competitor and lead research - no Google Ads account, no login, and no access to the advertiser's real account data required, because none of this is private: it is exactly what adstransparency.google.com already shows the public.

Why use this scraper?

  • Competitor research - see what ad creative, messaging and formats a competitor is actively running, in which countries, and how long a campaign has been live.
  • Lead / prospecting research - check whether a prospect is running paid ads at all (a signal for ad-budget and marketing maturity) before a sales outreach.
  • Creative monitoring - track when a competitor launches or refreshes a creative.
  • Runs on Apify's schedule, API and integrations, so you can re-check the same advertisers weekly or monthly without touching a browser.

What data can it extract?

FieldDescription
advertiserId / advertiserNameGoogle's internal advertiser ID and display name
advertiserDomainAdvertiser's verified website domain, when Google shows one
creativeIdGoogle's ID for this specific ad creative
formatBest-effort TEXT / IMAGE / VIDEO classification (see Limits)
regionsTwo-letter country codes the ad has run in
firstShown / lastShownDate range the ad has been observed running
adDetailUrlLink to the ad on adstransparency.google.com
creativePreviewUrlDirect image URL, or Google's ad-preview render URL
adHeadline / adDescriptionAd copy, when Google's preview data exposes it

How to find a competitor's Google ads

  1. Open the actor's Input tab.
  2. Add the competitor's website domain (e.g. nike.com) under Advertiser domains, or their company name under Advertiser names if you don't know the domain.
  3. Optionally narrow by region (two-letter country code), a date range, or ad formats.
  4. Run the actor. Each ad becomes one row in the dataset, downloadable as JSON, CSV, Excel or HTML.

How much will it cost?

This actor is free to use and charges $0.002 per ad returned (Apify Store subscription tiers lower this further: Bronze $0.0018, Silver $0.0016, Gold/Platinum/Diamond $0.0015 per ad). Apify's free plan includes $5/month of platform credit, which covers roughly 2,500 ads on the base rate. You only pay for ads actually returned - no charge for empty results.

Input

See the Input tab for the full list of options. The short version:

  • advertiserDomains / advertiserNames - who to look up (use at least one; domains are more reliable, see Limits below).
  • region - two-letter country code to only see ads running in that country; leave empty for worldwide.
  • dateFrom / dateTo - only include ads last shown in this date range.
  • formats - only include TEXT, IMAGE and/or VIDEO ads.
  • maxItemsPerAdvertiser - cap on ads per domain/name (default 20).
  • fetchRegions - off by default. Turn on to fetch each ad's exact per-country breakdown, at the cost of roughly double the requests (and run time), since it's one extra request per ad.

An empty input ({}) scrapes a small sample from nike.com so you can see the output shape immediately.

Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. Example output (from a real local run against nike.com, formats and region numbers vary run to run since Google's ad mix changes constantly):

[
{
"advertiserId": "AR16735076323512287233",
"advertiserName": "Nike, Inc.",
"advertiserDomain": "nike.com",
"domainVerified": true,
"creativeId": "CR06152928169239248897",
"format": "IMAGE",
"formatCode": 1,
"regions": ["CA"],
"firstShown": "2026-06-05",
"lastShown": "2026-09-17",
"adDetailUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR06152928169239248897?region=anywhere",
"creativePreviewUrl": "https://tpc.googlesyndication.com/archive/simgad/17720214098677970069",
"adHeadline": null,
"adDescription": null,
"adDestinationUrl": null,
"searchedBy": "nike.com"
}
]

Tips

  • Prefer advertiser domains over names when you know them. Google's advertiser-name search is a fuzzy "did you mean" match and can occasionally resolve to a similarly-named but unrelated advertiser; domain search matches Google's own verified-domain record for the account.
  • Large maxItemsPerAdvertiser values take longer, and turning on fetchRegions roughly doubles request volume since it adds one extra request per ad. This actor paces every request at roughly 1/second per session, by design, to stay well under Google's rate limits.
  • If Google rate-limits this run's IP (see Limits below), the actor automatically rotates to a fresh Apify Proxy session (when Apify Proxy is available on your plan) and retries, up to 5 sessions per run. Enabling Apify Proxy on the actor's run options gives it the best chance of working around a block; without it, every rotation is still the same direct IP and a persistent block will end the run in failure with a clear status message.

FAQ, disclaimers and support

Does this need a Google Ads account or login? No. It reads only the public adstransparency.google.com tool that Google runs for anyone to inspect any advertiser's ads.

Why is adHeadline/adDescription sometimes null? Google only exposes decodable ad-copy text for some creative types (mainly text and standard responsive ads); Shopping ads, most video ads and plain image ads don't carry decodable text in the data Google's own tool sends to the browser, so those fields are left null rather than guessed.

Why is format sometimes imprecise? Google does not publish its internal ad-format code mapping, and this actor's format field is a best-effort read of that undocumented code. The raw formatCode is always included so you can spot-check it.

Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what Google itself already publishes for any visitor to see on the Ads Transparency Center. You should still be mindful that ad creatives can contain personal data incidentally (e.g. a testimonial with a name); if in doubt about a specific use case, consult your lawyers.

Found a bug or an endpoint that changed? Please use the Issues tab. Programmatic access is available from the API tab.

Limits

  • Google does not publish an official API for the Ads Transparency Center; this actor calls the same unauthenticated endpoints the public web app itself uses. Google can change these without notice, which would need an actor update.
  • Rate limiting is real and expected. Google enforces an undocumented per-IP request budget on these endpoints - once an IP sends "too many" requests it gets an HTTP redirect instead of data. This actor paces requests at roughly 1/second per session and, on a block, rotates to a fresh Apify Proxy session (up to 5 per run) with backoff before giving up. If every session stays blocked:
    • a run that ends with zero ads and no ads were legitimately absent fails loudly with a clear status message (rather than reporting a misleading "success, 0 results") - try again later, or reduce maxItemsPerAdvertiser;
    • a run that already pushed some ads before hitting the block succeeds, but logs a visible warning that the results may be incomplete.
  • fetchRegions (off by default) requires one extra request per ad; when it's on and a specific request gets rate-limited, that ad is still returned with regions falling back to the Region filter (or null) rather than being dropped.
  • Legal / compliance note. This actor only reads data Google itself already publishes for any visitor on adstransparency.google.com - no login, no scraping of private account data. You are responsible for using the output in a way that complies with Google's own Terms of Service and any laws that apply to your use case (e.g. competitive intelligence is generally fine; scraping to build a competing transparency product may not be).
  • Attribution. The domain-search request format and the ad-text overlay-decoding approach were cross-checked against the open-source google-ads-transparency-mcp project (MIT license) while reverse-engineering Google's undocumented endpoints; see THIRD_PARTY_NOTICES.md in this actor's source for details on what was reused (no code was copied - see that file for specifics).