Google Ads Transparency Scraper — Competitor Ads Library avatar

Google Ads Transparency Scraper — Competitor Ads Library

Pricing

from $2.00 / 1,000 job results

Go to Apify Store
Google Ads Transparency Scraper — Competitor Ads Library

Google Ads Transparency Scraper — Competitor Ads Library

Google Ads Transparency scraper: see every ad a competitor runs on Google. Domains, brand terms or advertiser IDs in - advertiser, format, preview, first/last shown dates and days active out. Only-new-creatives mode turns a schedule into a competitor-ad alert.

Pricing

from $2.00 / 1,000 job results

Rating

0.0

(0)

Developer

Flash Scrape

Flash Scrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

See every ad a competitor runs on Google — Search, Display and YouTube — straight from Google's own Ads Transparency Center, the public accountability tool where every advertiser's creatives are listed. Give it a domain (nike.com), a brand term (nike — auto-resolved to its top advertiser domain) or an advertiser ID (AR…), and get one clean row per ad: advertiser, format, preview, first-shown and last-shown dates, and days active.

No API key, no login, no browser — the actor calls the same keyless endpoint the Transparency Center's own page uses, so the data is exactly what Google publishes, at the moment you run it.

Watching competitors on Facebook/Meta instead? The Ad Library niche is well covered on the Store — this actor is for the Google side, where fresh, honest tooling is scarce.

What you get

One row per ad creative. Measured on nike.com (100 rows, 2026-08-15):

columnfillnotes
advertiser_id, advertiser_name100%e.g. AR18378488041124659201, "Nike Retail BV" — ads run by resellers/agencies for the same domain show up under their own advertiser
domain100%the advertiser's verified domain
creative_id100%Google's CR… id — stable, deduplicated
format100%text / image / video
preview_url100%archived screenshot for text ads, render URL for display/video
first_shown, last_shown100%real dates — the sample's last_shown was the run date itself
days_active100%how long the creative has been running — long-running ads are the ones making money
transparency_url100%the ad's own public page on Google's Transparency Center
query100%which of your targets produced the row

Example row (real):

{
"advertiser_id": "AR18378488041124659201",
"advertiser_name": "Nike Retail BV",
"domain": "nike.com",
"creative_id": "CR16074515335549550593",
"format": "image",
"preview_url": "https://tpc.googlesyndication.com/archive/simgad/3436141099225117854",
"first_shown": "2025-07-01",
"last_shown": "2026-08-15",
"days_active": 410,
"transparency_url": "https://adstransparency.google.com/advertiser/AR18378488041124659201/creative/CR16074515335549550593",
"query": "nike.com",
"source": "google-ads-transparency"
}

Quick start

Run it with no input at all — you get up to 100 of Nike's current Google ads. Then point it at your own market:

{
"queries": ["asics.com", "on-running.com", "hoka.com"],
"activeWithinDays": 30,
"maxItems": 300
}

activeWithinDays: 30 is the filter that matters: it keeps only ads last shown in the past month — a competitor's currently running campaigns instead of a year of history. Long days_active + recent last_shown = the proven winners they keep paying for.

Input reference

fielddefaultwhat it does
queries1-domain sampleDomains (exact) or brand terms (auto-resolved via Google's own suggestions). Your list replaces the sample entirely.
advertiserIds[]AR… ids — grab them from any run's rows to watch specific advertisers precisely.
formatanyKeep only text, image or video ads. Applied before billing.
activeWithinDays0 (off)Keep only ads last shown within N days. Undated ads are kept, never guessed away.
onlyNewCreativesfalseCompetitor-ad alert mode — see below.
maxItems100Total cap across all targets, split round-robin. Your cost ceiling.
proxyApify ProxyGoogle rate-limits this endpoint per IP (measured: ~15 rapid requests → 429). The default automatic proxy rotates to a fresh session on every rate-limit; your own proxy URLs are honored.

Every filter runs before billing — a filtered ad is never charged.

🔔 Competitor-ad alerts: onlyNewCreatives + a schedule

Schedule the actor (daily or weekly) with onlyNewCreatives: true and the same targets:

  • the first run is the baseline — it delivers everything and says so;
  • every later run delivers only creatives not seen before — i.e. the competitor's new ads;
  • a quiet run delivers nothing, bills nothing, and says "Nothing new" plainly.

A competitor launching new creatives is a competitor testing a new offer, product or angle — this is the cheapest way to hear about it first. Watch memory lives in a named key-value store (google-ads-monitor) in your own account, pruned automatically (90 days / 50k keys).

Use it from your code

// JavaScript — apify-client
const { ApifyClient } = require('apify-client');
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('flash_scraper/google-ads-transparency-scraper').call({
queries: ['nike.com'], activeWithinDays: 30, maxItems: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
# Python — apify-client
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("flash_scraper/google-ads-transparency-scraper").call(run_input={
"queries": ["nike.com"], "activeWithinDays": 30, "maxItems": 200})
items = client.dataset(run["defaultDatasetId"]).list_items().items
# curl — run synchronously and get the dataset back
curl -X POST "https://api.apify.com/v2/acts/flash_scraper~google-ads-transparency-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries": ["nike.com"], "maxItems": 50}'

n8n / Make / Zapier

All three have a native Apify node/module: pick Run actorflash_scraper/google-ads-transparency-scraper, pass the JSON input above, and read the default dataset when the run finishes. onlyNewCreatives + a schedule trigger pipes every new competitor ad into Slack, a sheet or your CRM — and quiet days cost nothing.

Honest limits

  • Google's data, Google's rules. The Transparency Center keeps roughly the last year of ads and doesn't expose spend or impressions per creative — nobody scraping it can. What you get is what Google publishes: the creatives, who ran them, and when they ran.
  • No region filter yet. Results are worldwide for the advertiser; first_shown/last_shown/days_active still tell you what's actively running.
  • Ad text for text ads ships as an archived screenshot URL (preview_url), not extracted copy — that is how Google serves them.
  • Brand-term resolution is best-effort (it uses Google's own suggestion service); the exact domain is always the reliable input.
  • The endpoint rate-limits per IP; the default proxy handles it. Very large pulls simply take longer — pacing is deliberate.