Google Ads Transparency Scraper — Competitor Ads & Monitor avatar

Google Ads Transparency Scraper — Competitor Ads & Monitor

Pricing

from $1.99 / 1,000 ad creatives

Go to Apify Store
Google Ads Transparency Scraper — Competitor Ads & Monitor

Google Ads Transparency Scraper — Competitor Ads & Monitor

Scrape Google Ads Transparency Center ads by domain, brand, or advertiser ID. Get creatives, landing URLs, days running, and region, and monitor new versus ended ads. A Google Ads Transparency API alternative for Python, Node.js, and MCP.

Pricing

from $1.99 / 1,000 ad creatives

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Google Ads Transparency Scraper — Competitor Ads, Landing URLs & Monitor

Unofficial tool for the public Google Ads Transparency Center. Google Ads and related names are trademarks of their respective owners. Not affiliated with, sponsored by, or endorsed by Google LLC. For informational, research, and competitive-intelligence use only. Respect applicable terms of use and law.

Google Ads Transparency Scraper ◄── you are here

Scrape Google Ads Transparency Center creatives into structured JSON: ad format, landing URL, days running, region, first / last shown, and image or video previews. Search by domain, brand name, or advertiser ID. Schedule monitor mode so a daily job emits only new and ended ads. A practical Google Ads Transparency API alternative — call from Python, Node.js, cURL, or Apify MCP.

Ideal for agencies, D2C brands, creative research, PPC competitive intel, and brand-protection workflows that need landing pages and longevity — not a silent empty dataset.

Crawloop digital intelligence — competitor Google ads here, then creative-trend and app-store siblings.

Google Ads Transparency (Search / YouTube / Display)TikTok Creative Center (hashtags)Google Play (ASO)
Google Ads Transparency Scraper ◄── you are hereTikTok Trending Hashtags ScraperGoogle Play Scraper

When to use this Actor

  • You need a Google Ads Transparency scraper / Google Ads Library export for one or many competitors as JSON
  • You want landing URLs, days running, and region on every creative — the fields agencies actually paste into swipe files
  • You schedule new vs ended monitoring instead of re-downloading a 2,000-creative dump every morning
  • You want a Google Ads Transparency API alternative from Python, Node.js, or an MCP / AI assistant
  • You run an ad-check pass first (advertisers mode) to see who is actually spending on Google, then pull creatives for the shortlist

When not to use this Actor

  • Official Google Ads API / MCC spend, bids, or keywords — this Actor reads the public Transparency Center, not your ad accounts
  • Meta / Facebook Ad Library — different library; this Actor is Google Search, YouTube, Shopping, Maps, and Play
  • Guaranteed impression or spend numbers on every commercial ad — Google discloses those mainly for political ads; commercial rows still get dates, format, and assets
  • Silent “zero ads” as a real answer — if Google’s own advertiser count is non-zero and the creative RPC returns empty, this Actor emits an error row instead of pretending the brand went dark

Modes

ModeWhat it does
adsCreatives for each domain / brand / AR ID (default)
advertisersOne summary row per advertiser (ad-check / lead-gen)
monitorNamed KV snapshot of creative IDs; emit new and ended (optional active)

Key features

  • Keyword-exact Google Ads Transparency scraper — domain, brand query, advertiser ID, or pasted Transparency URLs
  • Buyer fieldsdaysRunning, region, firstShown / lastShown, format, preview/image/video, plus landingUrl / headline when Google encodes them (text ads). Not OCR.
  • Monitor new and ended — not only “only new”; ended creatives come back as tombstone rows with the last known landing URL
  • Loud empty — payload drift and soft-blocks are error records, not a fake zero
  • Full token pagination — continues past the first 40-ad page
  • Optional detail pass — variations + per-country dates when Google discloses them
  • HTTP (no browser) — Chrome-impersonated RPC, retries, and polite delays
  • Typed dataset rowsad, advertiser, error
  • Export-ready — download the default dataset as JSON, CSV, Excel, or JSONL

Input

ParameterDescription
modeads / advertisers / monitor
domains / queries / advertiserIdsWebsites, brand names, or AR… IDs
startUrlsTransparency Center advertiser, creative, or ?domain= URLs
regionISO country (US, DE) or ANYWHERE
platforms / adFormatSearch, YouTube, Shopping, Maps, Play; text / image / video
dateFrom / dateToShown-after / shown-before (YYYY-MM-DD)
maxAdsPerTarget / maxItemsCaps
includeDetailsExtra RPC per ad (variations, regional dates)
outputModeMonitor: all / changes_only / new_only / ended_only
monitorStoreName / monitorBaselineOnlyNamed KV watermarks
webhookUrl / Telegram fieldsAlerts on new and ended
proxyConfigurationResidential recommended for scheduled bulk runs

Example — competitor creatives

{
"mode": "ads",
"domains": ["nike.com"],
"region": "US",
"maxAdsPerTarget": 100,
"includeDetails": false
}

Example — daily new / ended monitor

{
"mode": "monitor",
"advertiserIds": ["AR04119126533128323073"],
"region": "US",
"outputMode": "changes_only",
"monitorStoreName": "nike-us-ads-monitor",
"maxAdsPerTarget": 500
}

Output

FieldDescription
typead, advertiser, or error
changeTypenew / active / ended (monitor)
creativeId / advertiserId / advertiserNameStable Google IDs and display name
formattext, image, video
headline / descriptionSearch-ad copy when the preview payload decodes
landingUrlDestination URL when the creative encodes one (typical for Search/text ads)
imageUrl / videoUrl / previewUrlCreative assets
firstShown / lastShown / daysRunningLongevity
regionRequested country or ANYWHERE
adUrlDeep link back to the Transparency Center creative
regionsShown / variationsOnly when includeDetails is on

Ad output example

{
"type": "ad",
"changeType": "new",
"creativeId": "CR12965115384414863361",
"advertiserId": "AR04119126533128323073",
"advertiserName": "Nike, Inc.",
"domain": "nike.com",
"format": "image",
"landingUrl": "https://www.nike.com/launch",
"imageUrl": "https://tpc.googlesyndication.com/archive/simgad/33210746.png",
"firstShown": "2024-01-01",
"lastShown": "2024-08-01",
"daysRunning": 214,
"region": "US",
"adUrl": "https://adstransparency.google.com/advertiser/AR04119126533128323073/creative/CR12965115384414863361?region=us"
}

You can download the dataset as JSON, CSV, Excel, or JSONL from the run.

How to scrape Google Ads Transparency Center

  1. Open this Actor and keep mode on ads (or monitor for a scheduled diff).
  2. Paste competitor domains, brand names, or AR… advertiser IDs.
  3. Set region (for example US) and an optional max ads per target.
  4. For a daily watch, set mode to monitor, give the run a monitor store name, and schedule it.
  5. Run. Export the default dataset or pull it from the Apify API / MCP.

Use cases

  • Agency swipe files — pull live Search / YouTube / Display creatives plus landing URLs
  • D2C competitor watch — schedule monitor mode; wake up to new launches and killed tests
  • Brand protection — see who is bidding around a domain and how long each creative has been up
  • Lead-gen ad-checkadvertisers mode: which companies in a list actually run Google Ads
  • Creative research — filter image vs video vs text, sort by daysRunning as a proxy for what survived

Integration examples

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawloop/google-ads-transparency-scraper').call({
mode: 'ads',
domains: ['nike.com'],
region: 'US',
maxAdsPerTarget: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("crawloop/google-ads-transparency-scraper").call(
run_input={
"mode": "ads",
"domains": ["nike.com"],
"region": "US",
"maxAdsPerTarget": 50,
}
)
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item.get("creativeId"), item.get("landingUrl"), item.get("daysRunning"))

cURL

curl "https://api.apify.com/v2/acts/crawloop~google-ads-transparency-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"mode\":\"ads\",\"domains\":[\"nike.com\"],\"region\":\"US\",\"maxAdsPerTarget\":50}"

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call this Actor by its Store ID / name.

Example prompts:

  • "Run Google Ads Transparency Scraper for nike.com in US and return the top 20 ads with landing URL, days running, and format as JSON"
  • "Monitor Google Ads Transparency for advertiser AR04119126533128323073 and list only new and ended creatives"
  • "Chain Google Ads Transparency Scraper then TikTok Trending Hashtags Scraper for the same brand's paid-search vs short-form creative trends"

Suite next step

After Google ads, run TikTok Trending Hashtags Scraper for Creative Center trends, or Google Play Scraper for the same brand's app-store presence.

FAQ

Is this a Google Ads Transparency API alternative? Yes for the public Transparency Center — creatives, dates, region, and assets — without a Google Ads API token. It is not a replacement for the official Ads API (spend, keywords, conversions).

How do I scrape Google Ads Transparency with Python or Node.js? Call crawloop/google-ads-transparency-scraper with the Apify client (examples above) or from an MCP assistant. Results land in the default dataset.

Ads mode vs monitor mode? ads dumps the current creative set. monitor diffs creative IDs against the previous run in a named Key-Value Store and can emit new and ended only (outputMode: changes_only). Seed the first run with monitorBaselineOnly if you do not want a full dump on day one.

Why do some scrapers return empty? The Transparency Center RPC fails closed: a missing required field or a payload reshuffle returns {}, which looks like “this advertiser has zero ads.” This Actor paginates with the required request fields, retries 429/5xx, and emits an error row when Google’s own advertiser count is non-zero but creatives do not come back.

Do I need a Google login? No. The Transparency Center is public.

Does region always filter the result set? The Actor sends the Transparency Center region enum (ISO numeric + 2000). Some commercial creatives still appear globally; region is always stored on the row so you can run parallel country jobs and label exports.

Do asset URLs expire? Preview / simgad links can rot. Pull the dataset when the run finishes, or turn on includeDetails when you need every variation immediately.

Why is landingUrl empty on some image ads? Google often omits the click-through URL on image/HTML5 creatives in the public RPC. Search/text ads usually decode a destination. This Actor does not OCR landing pages off screenshots.

Can I pass Transparency Center URLs? Yes — advertiser pages, creative pages, and ?domain= searches are parsed automatically.