Google Ads Transparency Scraper (Competitor Ad Monitor) avatar

Google Ads Transparency Scraper (Competitor Ad Monitor)

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Google Ads Transparency Scraper (Competitor Ad Monitor)

Google Ads Transparency Scraper (Competitor Ad Monitor)

Every ad a competitor runs on Google Search, YouTube, Shopping, Maps and Play, from Google's public Ads Transparency Center. Paste advertiser names, domains or AR ids; filter by country, format, platform and dates. Bounded retries; failed advertisers are never charged.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

signal clear

signal clear

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Security

Limited permissions

Share

Google Ads Transparency Scraper

Pull every ad a competitor is running on Google from the public Google Ads Transparency Center: Search text ads, image ads, YouTube video ads, Shopping, Maps and Play. Give it advertiser names, website domains or advertiser ids, and get one clean row per ad with first and last seen dates, the preview image or preview link, and the public Transparency Center page for that ad.

Built for competitor ad monitoring: run it weekly (or daily in the run-up to Black Friday and Cyber Monday) and see which creatives a rival launched, which ones they keep running, and which ones they killed.

  • Names, domains, AR... ids or Transparency Center URLs, mixed in one run
  • Filters: country, platform, ad format, date range
  • Bounded and cheap: a cap per advertiser and in total, gentle request pacing
  • Failed advertisers are never charged. An advertiser's ads are saved only when the whole advertiser finished; anything that failed is listed in FAILED_ADVERTISERS and contributes nothing to the dataset.

Input

FieldWhat it does
advertisersOne per line. Walmart Inc. (name), hubspot.com (domain), AR08902249778948079617 (advertiser id), or a Transparency Center URL such as https://adstransparency.google.com/advertiser/AR... or https://adstransparency.google.com/?domain=hubspot.com.
regionTwo-letter country code (US, GB, DE, ...) or anywhere (default).
platformall, googleSearch, youtube, googleShopping, googleMaps, googlePlay.
adFormatall, text, image, video.
dateFrom, dateToOnly ads shown in this window (YYYY-MM-DD).
maxAdsPerAdvertiserDefault 50. Newest first.
includeAdvertiserInfoAdds one type: "advertiser" summary row per advertiser (counts as a result).
includeCreativeDetailsAdds regions (with per-region dates and impression ranges where Google publishes them), platforms, and every variant's preview. One extra request per ad.
resolveVideoUrlsFills videoUrl with the YouTube link for video ads (downloads ~130 KB per video ad).
maxItemsTotal ad cap across all advertisers (0 = no limit).
maxConcurrencyAdvertisers processed in parallel. Default 2.
maxAttemptsAttempts per advertiser, each on a fresh proxy session. Default 3, max 5.
proxyConfigurationDefaults to Apify datacenter proxy.

How names are matched. A name is looked up with the site's own search box. If several advertisers share that exact name (big brands often have several accounts), the one with the most ads is used and the others are listed in the log; paste an AR... id to choose one explicitly. A domain returns ads from every advertiser that advertises that domain, which is usually what you want for competitor monitoring.

{
"advertisers": ["hubspot.com", "Walmart Inc.", "AR08902249778948079617"],
"region": "US",
"adFormat": "all",
"maxAdsPerAdvertiser": 100
}

Output

One row per ad:

{
"type": "ad",
"advertiserId": "AR10072600183532683265",
"advertiserName": "Hubspot, Inc.",
"advertiserDomains": ["hubspot.com"],
"creativeId": "CR05670001488131260417",
"format": "text",
"firstShown": "2022-06-24T01:19:16Z",
"lastShown": "2026-10-28T09:46:38Z",
"daysShown": 1576,
"previewUrl": "https://tpc.googlesyndication.com/archive/simgad/739348024653901222",
"imageUrl": "https://tpc.googlesyndication.com/archive/simgad/739348024653901222",
"videoUrl": null,
"creativeUrl": "https://adstransparency.google.com/advertiser/AR10072600183532683265/creative/CR05670001488131260417?region=US",
"region": "US",
"input": "hubspot.com",
"scrapedAt": "2026-10-28T17:02:11.412Z"
}
  • format: text, image or video. Google archives text ads as a rendered image, so text ads also have an imageUrl; the ad copy itself is not published as text.
  • previewUrl: the image for image and text ads; for video and some rich ads, Google's preview script link (opens the rendered ad).
  • daysShown: the number of days Google reports the ad as shown.
  • With includeCreativeDetails: regions ([{region, firstShown, lastShown, impressionsLow, impressionsHigh}]), platforms, variantPreviewUrls, and total impressionsLow / impressionsHigh. Impression ranges are published for some regions only (mostly the EU).
  • Landing pages and click-through URLs are not published by the Transparency Center.

Failures are written to the key-value store record FAILED_ADVERTISERS:

[{"advertiser": "zzqx nonexistent brand", "error": "unknown advertiser: no advertiser named \"zzqx nonexistent brand\"", "attempts": 1}]

How it works

The Transparency Center web page loads its data from a small public JSON API on the same site; no login or key is needed. This Actor calls that API directly, the same requests your browser makes when you use the site:

  1. Find the advertiser. A name goes to the site's search suggestions (POST /anji/_/rpc/SearchService/SearchSuggestions), which returns matching advertisers with their AR... ids and rough ad counts. An id is confirmed with LookupService/GetAdvertiserById. A domain needs no lookup.
  2. List the ads. SearchService/SearchCreatives returns up to 100 ads per request (about 360 bytes per ad) for an advertiser id or a domain, with the region, platform, format and date filters applied by Google, plus a cursor for the next page.
  3. Optional detail. LookupService/GetCreativeById returns one ad's regions, dates, platforms, impression ranges and variants.

Each request is a form POST with a single f.req field holding JSON. Requests are paced (1 to 2 seconds between pages of one advertiser) and parallelism is low by default.

Geography. The region is part of the request, so results depend only on the region input, not on where the request comes from; any proxy country works.

Blocks. If Google answers with its "unusual traffic" page, a consent page, a rate limit (429) or a server error, the attempt stops, waits, and the advertiser is retried on a new proxy session from where it left off. The Actor never tries to solve a challenge. If an advertiser still fails after maxAttempts, it is recorded in FAILED_ADVERTISERS and not charged. The run fails only if every advertiser failed.

Limits

  • The API is undocumented. Google can change it at any time; when it does, this Actor fails loudly rather than returning wrong data, and will be updated.
  • Some fields depend on the region: impression ranges, per-region dates and some advertiser details are only published for certain countries.
  • Ad counts from Google are approximate ranges (for example "1000 to 2000").
  • Ads are listed newest first. Very large advertisers have tens of thousands of ads; use the filters and maxAdsPerAdvertiser to keep runs bounded.
  • Platform values follow the Transparency Center's own platform filter. Display network ads have no separate filter there.

Pricing

Pay per result: you pay for ads saved to the dataset (and summary rows if you turn them on). Failed advertisers produce no rows, so they cost nothing. Default settings use datacenter proxy and about one request per 100 ads, so runs are cheap and fast.

The Ads Transparency Center is a public archive that Google publishes so anyone can see who is advertising and what they show. This Actor reads only that public data, collects no personal data, and needs no account. Google's Terms of Service restrict automated access to its services, so using this tool carries contractual risk with Google; you are responsible for how you use the data and for complying with the terms that apply to you.