Google Ads Transparency Scraper - Competitor Ads Library avatar

Google Ads Transparency Scraper - Competitor Ads Library

Pricing

from $1.50 / 1,000 ads

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

Google Ads Transparency Scraper - Competitor Ads Library

Scrape competitor ads from the Google Ads Transparency Center by advertiser name, ID or domain: text, image and video ads, first/last shown dates, regions, platforms, impression ranges, ad text, YouTube links and verification. Monitor new ads on a schedule.

Pricing

from $1.50 / 1,000 ads

Rating

0.0

(0)

Developer

Luca Despot

Luca Despot

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a day ago

Last modified

Share

Google Ads Transparency Scraper: Competitor Ads Library by Advertiser or Domain

Download every ad a company runs on Google (Search, YouTube, Display, Maps, Play and Shopping) from the public Google Ads Transparency Center and export it to JSON, CSV or Excel. Search by advertiser name, advertiser ID or website domain. Filter by country, date range and format (text, image, video).

For each ad you get the creative ID, format, first/last shown dates, the regions and platforms where it ran, impression ranges, image/video/preview URLs, the ad text and the advertiser's verification status.

It uses the same public JSON endpoints the Transparency Center website calls in your browser. There is no login, no headless browser and no proxy cost, so it is fast (about 100 ads in 25 s with full details) and cheap.

What can this Google Ads scraper do?

  • ✅ Any input: Nike, Inc., AR18378488041124659201, nike.com or a Transparency Center URL. The type is detected automatically.
  • ✅ Filters: region (any country, or anywhere), format (text / image / video), date range or "last N days".
  • ✅ Rich details: per-country first/last shown dates, impression ranges per platform (Google Search, YouTube, Maps, Play, Shopping), all creative variations, and the advertiser's country, legal name and verified status.
  • ✅ Ad content (optional): headlines and descriptions for local, shopping and responsive ads, the YouTube video ID and URL for video ads, and image URLs.
  • ✅ Competitor monitoring (onlyNew): remembers ads already returned. With a daily or weekly schedule you get, and pay for, only new ads.
  • ✅ Many advertisers and domains in one run, with automatic pagination (tens of thousands of ads per advertiser).
  • ✅ REST API (Standby mode): GET /?queries=nike.com&region=US&format=video&maxItems=20 returns JSON instantly.

Use cases

  • Competitor ad intelligence: see which creatives a competitor runs, in which countries, since when and on which Google platforms.
  • Agencies and media buyers: creative inspiration, swipe files, pitch research and client audits.
  • Brand protection: find advertisers bidding on your domain or brand name, and unverified look-alike accounts.
  • Market research: track launch dates of campaigns (the first-shown date) and how long ads run.
  • Alerts: a scheduled onlyNew run plus a webhook sends a Slack or email alert when a competitor launches a new ad.

How to use it

The input is a simple form, no code needed:

  1. Type advertiser names, websites, advertiser IDs or Transparency Center URLs into 🔎 Advertisers or websites (one per line).
  2. Pick the Country where the ads were shown from the dropdown (or keep 🌍 Anywhere) and the Ad format (All, Text, Image, Video).
  3. Set Max ads per advertiser / website and, if you want, Max ads in total.
  4. Optional, in 📅 Dates: Shown in the last … days, or a Shown from / Shown until date picker.
  5. Optional, in 📄 Output: turn on Include ad text, images and video if you need ad text, YouTube links and image URLs (slower).
  6. Click Start and download the ads from the Output tab, or read them through the API.
  7. For monitoring, open 🔔 Monitoring, turn on Only new ads since the last run, save the input as a Task and add a Schedule.

⚙️ Advanced options: name matching (exact or contains), separate lists for names / IDs / websites, and the proxy (used only if Google rate-limits; leave as is).

Input example

{
"queries": ["nike.com", "The Coca-Cola Company", "AR18378488041124659201"],
"region": "US",
"format": "all",
"lastDays": 30,
"includeDetails": true,
"includeAdContent": true,
"maxItemsPerQuery": 200,
"onlyNew": false
}
FieldWhat it does
queriesAdvertiser names, advertiser IDs (AR…), domains or Transparency Center URLs. You can also use advertiserNames, advertiserIds and domains separately.
nameMatchexact (default) takes every advertiser account with exactly that name, for example the US, TR and FR accounts of "The Coca-Cola Company". all takes every suggestion that contains the text.
region2-letter country code where the ad was shown (US, GB, IT, DE, …) or anywhere.
formatall, text, image or video.
dateFrom / dateTo / lastDaysOnly ads shown in this period.
includeDetailsRegions, impressions, platforms, variations and verification (on by default).
includeAdContentAd text, YouTube video and image URLs from the ad preview (off by default, slower).
maxItemsPerQuery / maxItemsLimits per advertiser/domain and in total (0 = no limit).
onlyNew / stateKeyMonitoring mode (see above).

Output example (one item per ad)

{
"advertiserName": "Nike Retail BV",
"advertiserId": "AR18378488041124659201",
"advertiserCountry": "NL",
"advertiserVerified": true,
"advertiserLegalName": "Nike Retail BV",
"creativeId": "CR11715540743232684033",
"format": "TEXT",
"domain": "nike.com",
"firstShown": "2025-10-24T11:14:08Z",
"lastShown": "2026-10-28T17:41:19Z",
"daysShown": 370,
"regions": [
{
"regionCode": "SK",
"regionName": "Slovakia",
"geoId": 2703,
"firstShown": "2025-10-25",
"lastShown": "2026-10-27",
"impressionsMin": 0,
"impressionsMax": 1000,
"platforms": [
{
"platform": "GOOGLE_SEARCH",
"impressionsMin": 0,
"impressionsMax": 1000
},
{
"platform": "GOOGLE_MAPS",
"impressionsMin": 0,
"impressionsMax": 1000
}
]
}
],
"regionCodes": ["SK", "FI", "PL", "BE", "MT", "EG", "NL", "RO", "…"],
"platforms": ["GOOGLE_MAPS", "GOOGLE_SEARCH", "GOOGLE_SHOPPING"],
"impressionsMin": 125000,
"impressionsMax": 150000,
"variations": [
{
"previewUrl": null,
"imageUrl": "https://tpc.googlesyndication.com/archive/simgad/17766060261377364950"
}
],
"imageUrl": "https://tpc.googlesyndication.com/archive/simgad/17766060261377364950",
"previewUrl": null,
"adTexts": ["nike.com", "The Official Nike Site", "Zuidplein Hoog 770", "Discover Products Online At Nike.com. Shop The Official Nike Site."],
"adKind": "Local Ad",
"videoId": null,
"videoUrl": null,
"transparencyUrl": "https://adstransparency.google.com/advertiser/AR18378488041124659201/creative/CR11715540743232684033?region=anywhere",
"advertiserUrl": "https://adstransparency.google.com/advertiser/AR18378488041124659201?region=anywhere",
"detailsError": null,
"query": "nike.com",
"queryType": "domain",
"scrapedAt": "2026-10-28T18:26:32Z"
}

(Real output from a cloud run on 28 Oct 2026. Lists and URLs are shortened.)

Text (Search) ads are published by Google as a rendered image, so imageUrl shows the ad exactly as users saw it. adTexts gives the text when the preview contains it (local, shopping, responsive and app ads).

The dataset has two views: Overview (image, advertiser, format, dates, regions, platforms, impressions and link) and All fields.

FAQ

Where do I find an advertiser ID? Open the advertiser on adstransparency.google.com. The URL contains /advertiser/AR…. You can also paste the whole URL as a query.

Name or domain: which is better? A domain (nike.com) returns every advertiser account whose ads lead to that site, including resellers and affiliates. A name or ID returns only that advertiser.

Why do some ads have no impressions? Google publishes impression ranges only for some regions (mainly the EU/EEA, plus political ads). Elsewhere impressionsMin/impressionsMax are null.

What does advertiserVerified mean? It is true when Google confirmed the advertiser's identity. New and suspicious accounts are often unverified.

How far back does it go? As far as the Transparency Center shows. Use lastDays or the dates to narrow the results.

Can I call it as an API? Yes. Use Standby mode (GET or POST with the same fields as the input), or the normal Apify API, webhooks and integrations (Make, Zapier, n8n, Google Sheets).

Pricing

Pay per event, with platform usage included and no subscription. You pay only for:

  • $0.002 per run start (one start event per GB of memory; the default 512 MB run counts as one).
  • $0.0015 per ad returned, which is $1.50 per 1,000 ads, with all details included.

Error rows (for example a name with no matching advertiser) are free. With onlyNew you pay only for new ads. Example: 1,000 ads cost about $1.50. Set a maximum cost per run in the run options to cap spend.

Limitations

  • It shows only what the Transparency Center publishes: no spend, clicks, keywords or targeting data, and impression ranges only where Google publishes them (mainly the EU/EEA and political ads).
  • Text (Search) ads come as rendered images; adTexts is filled only when the preview contains the text.
  • includeAdContent opens each ad preview, so runs with it on are slower.
  • It relies on the Transparency Center's public web endpoints. If Google changes them, the Actor may need an update.

Responsible use

This Actor reads only public data that Google publishes for ad transparency. It does not log in or collect personal data beyond what advertisers publish. Respect Google's terms and use reasonable volumes. Issues and feature requests are welcome in the Issues tab.