Skip to content

logiover/google-ads-transparency-scraper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Google Ads Transparency Center Scraper — Competitor Ads, Impressions & Spend

Apify Actor Run on Apify No API key No login Pay per result Export

This repository is documentation only. The scraper itself runs on the Apify platform — no setup, no server, no code to install.

Scrape the Google Ads Transparency Center at scale and pull every ad your competitors are running across Search, Display, Shopping and YouTube. Look up advertisers by website domain, by advertiser ID, or by brand name, batch up to 50 competitors in a single run, and optionally enrich each ad with impressions ranges, per-region breakdowns, spend tiers and A/B creative variants. There is no API key, no login and no Google account required — you get a clean, structured, queryable Google ad library feed you can export to JSON, CSV or Excel.

If you have been searching for a Google Ads Transparency Center API, a way to download competitor ad creatives, or a Google ad spend / impressions data export, this Apify Actor turns Google's public regulatory ad data into a schedulable dataset.


🔎 What you get

Each dataset row is one ad creative, deduplicated by ad ID. Real output fields:

Field Description
adId Google creative ID for the ad.
advertiserId AR…-prefixed Google advertiser ID.
adUrl Link to the ad's page in the Ads Transparency Center.
advertiserName Display name of the advertiser.
advertiserDomain Verified advertiser website domain.
format Creative format: TEXT, IMAGE, VIDEO, DISPLAY or UNKNOWN.
surface Where the ad runs: SEARCH, DISPLAY or SHOPPING.
imageUrl Direct URL to the creative image (image/banner ads).
imageWidth / imageHeight Creative image dimensions in pixels.
iframeUrl Live ad iframe URL for rich-media / responsive creatives.
previewUrl Best available preview URL (image, else iframe).
variationCount Number of creative variations grouped under the ad.
firstShown / lastShown First and last observed dates (ISO yyyy-mm-dd).
advertiserTotalAdsMin / advertiserTotalAdsMax Google's estimate of the advertiser's total ad count.
impressionsRange Min/max impressions range (enrichment).
impressionsRegions Per-region impression breakdown (enrichment).
spendRange Spend tier min/max (enrichment, political ads).
targetingCategory Ad targeting category, e.g. Clothing & Accessories (enrichment).
variantUrls A/B variant preview URLs (enrichment).
payer Paying entity for the ad (political ads, enrichment).
firstShownDetailed / lastShownDetailed Precise first/last shown dates (enrichment).
searchedDomain / searchedAdvertiser / searchedRegions / searchedFormat Search context that produced the record.
scrapedAt ISO timestamp of when the ad was scraped.

Enrichment fields are null when enrichDetails is off or Google withholds them.

💡 Use cases

  • Competitive ad monitoring — track which Google ads your top competitors run, in which regions, and at what scale.
  • Creative swipe files — download competitor ad creatives via imageUrl / iframeUrl to study winning formats and hooks.
  • Google ad spend & impressions intelligence — use enrichment to estimate where and how heavily rivals invest per region.
  • Share-of-voice analysis — aggregate impressions and spend ranges to size category share-of-voice.
  • Ad-tech & agency lead generation — active Google advertisers are warm B2B leads for agencies and martech vendors.
  • Political ad accountability — the payer field exposes who funds political ads for journalism and research.
  • New-campaign alerting — schedule the Actor and get notified the moment a competitor launches a new creative.

🚀 Quick start

You can run the Actor four ways. Every method returns the same structured dataset.

1) Apify Console (no code)

  1. Open the Actor: apify.com/logiover/google-ads-transparency-scraper.
  2. Click Try for free. The default input (nike.com) returns sample ads immediately — no configuration needed.
  3. Set your own competitor domains, then Start and export from the Output tab.

2) Apify CLI

npm install -g apify-cli
apify login
apify call logiover/google-ads-transparency-scraper \
  --input '{ "mode": "domain", "domains": ["nike.com", "adidas.com"], "maxAds": 200 }'

3) API / curl

curl -X POST \
  "https://api.apify.com/v2/acts/logiover~google-ads-transparency-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "domain",
    "domains": ["nike.com", "adidas.com", "puma.com"],
    "regions": ["US", "DE"],
    "creativeFormats": ["IMAGE", "VIDEO"],
    "maxAds": 300,
    "enrichDetails": true
  }'

4) apify-client (JavaScript / Python)

See examples/javascript.md and examples/python.md for full snippets. All four methods live in examples/.

📥 Input

Every field is optional except providing at least one target that matches your mode. Leave everything empty and the run defaults to nike.com, so you always get sample data.

Field Type Description
mode select How to identify advertisers: domain, advertiser-id, or advertiser-name. Default domain.
domains array For mode=domain. Advertiser website domains (no www. / https://). Batch up to 50+.
advertiserIds array For mode=advertiser-id. AR… Google advertiser IDs from advertiser detail-page URLs.
advertiserNames array For mode=advertiser-name. Brand/company names, auto-resolved to the top-matching advertiser.
regions multi-select Country/region filter (ISO 3166-1 alpha-2, e.g. US, GB, DE). Multiple = OR filter. anywhere skips the filter. ~120 countries.
creativeFormats multi-select Filter by format: any combination of TEXT, IMAGE, VIDEO. Empty = all formats.
maxAdsPerTarget integer Cap on ads returned per advertiser/domain. 0 = unlimited per target.
maxAds integer Global cap on total ads across all targets. 0 = unlimited.
enrichDetails boolean Fetch each ad's detail page for impressions, regional breakdown, spend tiers, variant URLs, targeting category and payer info. Roughly doubles cost and run time. Default false.
proxyConfiguration object Apify Proxy (AUTO) is on by default and rotates IPs. Switch to RESIDENTIAL only for very large runs.

mode, regions and creativeFormats are dropdowns in the Console for easy selection.

📤 Output

A realistic sample record (enrichment fields populated):

{
  "adId": "CR10456789012345678",
  "advertiserId": "AR01614014162839862273",
  "adUrl": "https://adstransparency.google.com/advertiser/AR01614014162839862273/creative/CR10456789012345678",
  "advertiserName": "Nike, Inc.",
  "advertiserDomain": "nike.com",
  "format": "IMAGE",
  "surface": "DISPLAY",
  "imageUrl": "https://tpc.googlesyndication.com/archive/simgad/1234567890",
  "imageWidth": 1200,
  "imageHeight": 628,
  "iframeUrl": null,
  "previewUrl": "https://tpc.googlesyndication.com/archive/simgad/1234567890",
  "variationCount": 4,
  "firstShown": "2026-05-02",
  "lastShown": "2026-07-04",
  "targetingCategory": { "code": "1234", "name": "Clothing & Accessories", "surface": 3 },
  "impressionsRange": { "min": 100000, "max": 1000000 },
  "spendRange": { "min": 5000, "max": 10000 },
  "payer": null,
  "advertiserTotalAdsMin": 900,
  "advertiserTotalAdsMax": 1000,
  "searchedDomain": "nike.com",
  "searchedRegions": ["US", "DE"],
  "scrapedAt": "2026-07-06T09:14:22.183Z"
}

The Console ships two ready-made table views — Ads Overview and Creative Details — so you can browse results with no post-processing.

🔌 Integrations & automation

  • Schedules — run hourly, daily or weekly for continuous competitive monitoring.
  • Webhooks — push every newly detected ad to Slack, Airtable, or your own endpoint on run completion.
  • Google Sheets / Airtable / Notion — sync the dataset live for a shared competitor swipe file.
  • BigQuery / S3 / your data warehouse — export via the Apify API for long-term ad tracking.
  • Zapier · Make · n8n · Pipedream — connect the Actor into no-code automations (e.g. Slack alert on a new competitor creative).

📦 Export formats

Every run writes to an Apify dataset you can export as CSV, JSON, JSONL (JSON Lines), Excel (XLSX) or XML — one click in the Console or via the Apify API.

❓ FAQ

Is there a Google Ads Transparency Center API?

Google does not publish an official Ads Transparency Center API. This Actor is a practical Google Ads Transparency Center API alternative — it returns structured ad records you can pull programmatically via the Apify API.

Can I scrape Google ads without an API key or login?

Yes. The Ads Transparency Center is a public regulatory tool, so you can extract competitor ad creatives, impressions and spend ranges with no Google API key, no account, no cookies and no login.

How do I scrape Google ads for multiple competitor domains at once?

Set mode to domain and pass up to 50 competitor domains in one run. The Actor deduplicates by ad ID and returns every creative each advertiser is running.

How do I get impressions and spend for a competitor's Google ads?

Enable enrichDetails. Each ad's detail page is fetched to unlock the impressions range, per-region impressions breakdown, spend tier and A/B variant URLs.

How do I download a competitor's Google ad creative images?

Every record includes a direct imageUrl (fetch it with a plain HTTP GET) plus an iframeUrl for video and rich-media creatives — perfect for building a swipe file.

How do I export Google Ads Transparency data to CSV or Excel?

Every run lands in an Apify dataset that exports to CSV, JSON, JSONL, Excel (XLSX) or XML in one click, or via the Apify API.

How many ads can I get, and how do I control cost?

Batch many competitors per run and cap volume with maxAdsPerTarget (per competitor) and maxAds (global ceiling). Detail enrichment roughly doubles per-ad cost and run time.

Which ad formats and surfaces are covered?

Search text ads, Display image and video banners, YouTube and Shopping product ads across SEARCH, DISPLAY and SHOPPING surfaces. Format detection is automatic; filter with creativeFormats.

Why are some enrichment fields null?

Google attaches targetingCategory, impressionsRange, spendRange and payer selectively depending on the ad and what it chooses to disclose. A null value means Google did not return that field — it is not a scraping error.

Can I schedule continuous ad monitoring?

Yes. Schedule the Actor on Apify to run on any interval and use webhooks to push new creatives to Slack, Airtable, or your backend automatically.

🔗 Related actors by logiover

👉 Browse all logiover scrapers on Apify Store.


📄 Documentation only — this repository contains no scraper source code. The Actor runs on the Apify platform. ▶️ Run it: https://apify.com/logiover/google-ads-transparency-scraper

Licensed under the MIT License · © 2026 logiover · Not affiliated with, endorsed by, or sponsored by Google LLC.

About

Scrape the Google Ads Transparency Center by domain, advertiser ID or brand name — competitor ad creatives, impressions & spend. No API key, no login.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors