Google Ads Transparency Scraper & New Ads Monitor avatar

Google Ads Transparency Scraper & New Ads Monitor

Pricing

from $1.00 / 1,000 ads

Go to Apify Store
Google Ads Transparency Scraper & New Ads Monitor

Google Ads Transparency Scraper & New Ads Monitor

Track competitors' Google ads from the Google Ads Transparency Center. Monitor domains, advertiser IDs or names by country, get ONLY NEW ads since the last run, plus a summary per advertiser. Text, image & video ads, first/last shown dates, regions, video IDs and ad copy.

Pricing

from $1.00 / 1,000 ads

Rating

0.0

(0)

Developer

Ivan Petrus

Ivan Petrus

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

Categories

Share

Google Ads Transparency Scraper & New Ads Monitor (Search, Display, YouTube)

Google Ads Transparency Center scraper and competitor ad monitor. Give it competitor domains, advertiser IDs or advertiser names. It returns every ad Google has shown for them in any country, including format, first/last shown dates, days running, image or preview URL, YouTube video ID, and ad copy where available. With "Only new ads" turned on, each scheduled run outputs only the ads that appeared since the last run, so it works as a daily competitor-ads alert feed.

Built for reliability: retries with exponential backoff, HTTP 429 handling, proxy session rotation, clear error rows and a free summary row per competitor. Failed checks are never charged.

Sample output

One ad row from a real Apify cloud run (Oct 2026, domain zappos.com, region US). Each target also gets a free summary row:

{
"type": "ad",
"target": "zappos.com",
"region": "US",
"advertiserName": "Zappos IP, Inc.",
"creativeId": "CR11795179083397070849",
"format": "text",
"firstShown": "2026-04-02T18:12:14+00:00",
"lastShown": "2026-10-07T18:48:08+00:00",
"daysRunning": 189,
"transparencyUrl": "https://adstransparency.google.com/advertiser/AR04821233212191670273/creative/CR11795179083397070849",
"isNew": true
}

What you get

DataDetails
🆕 New-ads diffRemembers what it has seen (named key-value store) and outputs only new ads on later runs. Each ad row has isNew.
🧾 Ad detailsAdvertiser name + ID, creative ID, format (text / image / video), first shown, last shown, days running, target domain
🖼️ CreativeImage URL, or the rendered-preview URL, plus a direct transparencyUrl link to the ad in Google's Transparency Center
▶️ Video adsYouTube videoId + youtubeUrl (with "Extract ad content")
✍️ Ad copyHeadline, description and other text snippets when Google exposes them as text (with "Extract ad content")
🌍 Where it ranPer-country first/last shown dates and impression ranges, variations count, verified legal name (with "Enrich details")
📊 Summary rowPer competitor and region: total ads estimate, ads fetched, new ads since last run, format mix, newest/oldest ad, active in the last 24 h

Filters: region (any country, or anywhere), format (text, image, video), date range (lastDays, or dateFrom/dateTo), and a maximum number of ads per competitor.

Use cases

  • Daily competitor ad alerts: schedule it every morning and get only the new ads (email, Slack, Sheets, webhooks).
  • PPC and creative research: see which messages, offers and videos competitors are testing, and for how long.
  • Agencies: monitor dozens of client competitors across countries in one run.
  • Market entry: check who is advertising in a country before you launch there.
  • Brand protection: spot advertisers bidding on your brand or impersonating your domain.

Input examples

Daily monitor of competitors (new ads only):

{ "domains": ["zappos.com", "nike.com"], "regions": ["US"], "onlyNewAds": true }

Advertiser by name, all countries, video ads with YouTube IDs:

{ "advertiserNames": ["Canva"], "advertiserNameMatch": "allSimilar", "regions": ["anywhere"], "formats": ["video"], "extractAdContent": true }

Ads first shown in the last 7 days in Germany and the UK, with details:

{ "domains": ["hubspot.com"], "regions": ["DE", "GB"], "lastDays": 7, "enrichDetails": true }

Start monitoring silently (record existing ads, output nothing on the first run):

{ "domains": ["rozetka.com.ua"], "regions": ["UA"], "firstRunBehavior": "baselineOnly", "stateStoreName": "my-ua-monitor" }

Output example

Ad row:

{
"type": "ad",
"target": "shopify.com",
"region": "GB",
"advertiserId": "AR01625195283841286145",
"advertiserName": "Shopify Inc.",
"creativeId": "CR07882013145693159425",
"format": "video",
"firstShown": "2026-07-22T21:13:26+00:00",
"lastShown": "2026-10-07T18:34:51+00:00",
"daysRunning": 77,
"targetDomain": "shopify.com",
"videoId": "1mMdQ6CJio4",
"youtubeUrl": "https://www.youtube.com/watch?v=1mMdQ6CJio4",
"transparencyUrl": "https://adstransparency.google.com/advertiser/AR01625195283841286145/creative/CR07882013145693159425",
"isNew": true
}

Ad copy (text ad, with "Extract ad content"): "adTextHeadline": "Bags & Backpacks", "adTextDescription": "Discover {KeyWord} Online At Nike.com. Shop The Official Nike Site."

Summary row (free):

{ "type": "summary", "target": "zappos.com", "region": "US", "totalAdsEstimate": "2000-3000", "adsFetched": 50, "newAdsSinceLastRun": 0, "formats": { "image": 20, "text": 20, "video": 10 }, "newestAdFirstShown": "2026-09-30T11:13:27+00:00" }

Failed checks appear as { "type": "error", "status": "failed", "error": "...", "hint": "..." } and are not charged.

Pricing (pay per event)

  • $0.005 per competitor checked (one domain / advertiser in one region, summary row included)
  • $1 per 1,000 ads output. With "Only new ads" on, you pay only for new ads.
  • A tiny $0.001 start fee per run. No proxy or compute costs on top.
  • Example: monitoring 20 competitors daily with ~5 new ads each costs about $0.20 per day.

Set Max ads per competitor or a maximum cost per run to cap spending. The actor stops gracefully, and ads that were not delivered are not marked as seen, so you get them next time.

Reliability notes

  • Proxy: Apify Proxy is on by default. On HTTP 429 or a block, the run rotates the proxy session and backs off exponentially (maxRetries).
  • State: "seen" ads are stored per competitor + region + format filter in the named key-value store stateStoreName. Use different names for different monitors. Up to 20,000 IDs are kept per monitor.
  • Advertiser names: best picks the exact (or closest) match. allSimilar checks up to 5 matching advertiser accounts (e.g. one brand with several country accounts). Advertiser IDs (AR…) are the most precise.
  • Health check: schedule tests/selftest_input.json daily with a run-failure email alert.

Daily alerts to Slack or email

  1. Fill in the input and click Save as a new task (one task per client or competitor set is a good pattern).
  2. In Schedules, create a schedule (for example every day at 08:00 in your time zone) and add the task.
  3. In the task's Integrations tab, add the Slack or Gmail integration to get a message when a run finishes, or a webhook on "Run succeeded" that passes the run to Zapier, Make, n8n or your own endpoint. Those tools can read the rows from https://api.apify.com/v2/datasets/{defaultDatasetId}/items and format them however you like.

Because monitor mode outputs only the ads that appeared since the previous run, every scheduled run's dataset is your alert list. An empty dataset (apart from free summary rows) means nothing changed. Turn on Apify's run-failure notifications too, so you hear about a failed run instead of silence.

Part of a small competitor-intelligence suite by the same developer. Same conventions everywhere: pay per event, failed items are never charged, and the monitors return only what changed since the last run.

FAQ

What is the Google Ads Transparency Center? It is Google's public library of ads shown on Search, YouTube, Display and Shopping, with the verified advertiser behind each one. This actor reads the same data the website shows and returns it as structured JSON/CSV/Excel.

How do I find an advertiser ID? Open the advertiser on adstransparency.google.com. The AR… part of the URL is the ID. Or just enter the advertiser name or website domain.

Why are some text ads returned as images? Google archives many Search ads as rendered images. For those, you get imageUrl. Ad copy is extracted when Google provides it as text (typically local/Search ads with a preview, and Shopping product titles).

Does it show ad spend or clicks? No. Google does not publish spend for commercial ads. With "Enrich details" you get per-country impression ranges where Google shows them.

Can I get alerts? Yes. Schedule the actor and connect the dataset to email, Slack, Google Sheets, Zapier, Make or n8n. With "Only new ads", every run's dataset is your list of new ads.

Is it legal? It collects public ad-library data published by Google for transparency. You are responsible for complying with Google's Terms of Service and local law.

Keywords: google ads transparency center scraper, google ads library, competitor ads monitor, new ads alert, ad spy tool, youtube ads scraper, search ads scraper, ppc competitor research, google ad library api.