Google Ads Transparency Scraper: Competitor Ad Library avatar

Google Ads Transparency Scraper: Competitor Ad Library

Pricing

from $1.50 / 1,000 ads

Go to Apify Store
Google Ads Transparency Scraper: Competitor Ad Library

Google Ads Transparency Scraper: Competitor Ad Library

See every competitor ad in the Google Ads Transparency Center. Search by brand, website or advertiser ID and get ad text, images, YouTube videos, format, first and last shown dates, regions and EU reach. No login, no proxy fees.

Pricing

from $1.50 / 1,000 ads

Rating

0.0

(0)

Developer

Jason

Jason

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Pull every ad a company runs on Google (Search, YouTube, Shopping, Maps and Play) from the public Google Ads Transparency Center. Search by website, brand name or advertiser ID and get one clean row per ad: format, first and last shown, days running, every country it ran in, headline and description, landing page, image and YouTube video links, EU impressions ranges per country and platform, and the audience targeting the advertiser used.

Google Ads Transparency Scraper: Competitor Ad Library - sample output

$1.50 per 1,000 ads, with full details included. No login, no cookies, no Google account, and no proxy fees.

Independent tool. Not affiliated with, endorsed by or sponsored by Google LLC. It reads only the data Google publishes for ad transparency.

Why this scraper?

Typical ad-library scrapersThis Actor
Price per 1,000 ads$1.50–$2.00$1.50
Full ad details (every country with dates, EU reach, audience, variations)extra event, often +$3 per 1,000included, no extra charge
Ad text (headline, description, call to action, landing URL)missing or a paid add-onincluded where Google shows it
YouTube video link, thumbnail, duration and channel for video adspreview link onlyincluded
Proxyexample inputs often use residential proxiesdirect connection first, then Apify datacenter, then residential only as a last resort, at no extra cost to you
Ads with problemssilently missingfree row with the reason (no ads, unknown advertiser, rate-limited)
Spending capsometimes overshootsstops exactly at your max charge
  • Websites (domains): nike.com returns every ad that points at nike.com, from every advertiser account (brand, retailers, agencies).
  • Brand names or keywords: HelloFresh is matched to advertiser accounts with the Transparency Center's own search. The biggest matching account comes first; raise Advertiser accounts per brand name to take more. When no account carries the brand's name (Grammarly advertises as "Superhuman Platform Inc."), we use the website Google suggests for the brand (grammarly.com) and say so in matchedVia.
  • Advertiser IDs: AR16735076323512287233 (from the advertiser page URL).
  • Transparency Center links: paste advertiser pages, single-ad (creative) pages or domain searches.

Filters: region (any country or anywhere), ad format (text, image, video), platforms (Search, YouTube, Shopping, Maps, Play), date range, max ads per target and per run.

Example input

{
"domains": ["hellofresh.com"],
"queries": ["Grammarly"],
"region": "US",
"adFormat": "ALL",
"maxAdsPerTarget": 200
}

Only new ads, for a daily competitor watch:

{
"advertiserIds": ["AR16735076323512287233"],
"onlyNewAds": true,
"monitorStoreName": "nike-watch",
"maxAdsPerTarget": 500
}

Example output (one ad)

{
"adId": "CR09367480842609229825",
"advertiserId": "AR05288677867637440513",
"advertiserName": "Superhuman Platform Inc.",
"advertiserLegalName": "Superhuman Platform Inc.",
"advertiserCountry": "US",
"advertiserVerified": true,
"format": "VIDEO",
"firstShown": "2026-07-20T00:00:00Z",
"lastShown": "2026-10-20T23:17:29Z",
"daysShown": 92,
"headline": "Corrigez votre français en temps réel.",
"description": "Corrigez tous les champs de texte en temps réel.",
"callToAction": "Télécharger",
"destinationUrl": "https://www.grammarly.com/fr/a",
"landingDomain": "grammarly.com",
"videoUrl": "https://www.youtube.com/watch?v=mPW-BN63M7Y",
"videoThumbnail": "https://i.ytimg.com/vi/mPW-BN63M7Y/hqdefault.jpg",
"videoDuration": "0:48",
"youtubeChannel": "Grammarly",
"platforms": ["YOUTUBE"],
"regionCodes": ["FR", "MA"],
"regions": [
{"region": "FR", "regionName": "France", "firstShown": "2026-07-20", "lastShown": "2026-10-20",
"impressionsMin": 0, "impressionsMax": 1000, "platformImpressions": [{"platform": "YOUTUBE", "impressionsMin": 0, "impressionsMax": 1000}]},
{"region": "MA", "regionName": "Morocco", "firstShown": null, "lastShown": "2026-10-20"}
],
"impressionsMin": 0,
"impressionsMax": 1000,
"audienceSelection": {"demographicInfo": "included", "geographicLocations": "included and excluded",
"contextualSignals": "included and excluded", "topicsOfInterest": null, "customerLists": "included and excluded"},
"variationCount": 1,
"transparencyUrl": "https://adstransparency.google.com/advertiser/AR05288677867637440513/creative/CR09367480842609229825?region=anywhere",
"status": "ok"
}

Field notes:

  • daysShown: how long the ad has been running. Long-running ads are usually the ones that work.
  • impressionsMin / impressionsMax and per-country regions[].impressions*: Google's "times shown" ranges. Google publishes them only for ads shown in the EU (Digital Services Act), so they are empty for ads that never ran there.
  • audienceSelection: whether the advertiser used demographics, locations, contextual signals, topics or customer lists (EU ads).
  • headline, description, callToAction, destinationUrl, adTextLines: read from Google's own ad preview (textSource: "preview"). Many text ads are archived by Google only as a picture; we read the headline, description and display URL from that picture (textSource: "ocr_snapshot", with ocrConfidence and textQuality), and the picture itself stays in imageUrl. Latin-script ads read best; text in other scripts that cannot be read is left out (named in ocrUnreadableParts) and the row is marked textQuality: "low".
  • textAvailable: whether the row has ad text. Some local/Maps ads use a headline Google writes on the fly from the landing page; then headline is empty, headlineIsDynamic is true and textUnavailableReason says so (the description is still there).
  • Text ads with no readable text are kept with their dates, regions and links but get status: "text_unavailable" and are not charged (switch on chargeTextAdsWithoutText to treat them as normal ads).
  • Domain searches return every advertiser account whose ads point to that website, exactly like the Transparency Center (it says "This domain includes results for multiple advertiser accounts"). Placeholder domains such as example.com really do have thousands of ads from unrelated advertisers; the run summary lists advertisersFound per domain.
  • imageUrl: the ad image (or Google's archived picture of a text ad). variationImageUrls lists every A/B variation.
  • landingDomain: where the ad sends people.

Free rows have status set to no_ads, no_advertiser, no_new_ads, text_unavailable, invalid_input, error or charge_limit_too_low, with a plain-English error or textUnavailableReason.

Pricing

Pay per event:

  • $1.50 per 1,000 ads saved ($0.0015 per ad). Details, ad text, video links and advertiser info are included.
  • A tiny start fee of $0.00005 per run.
  • Free: rows for targets with no ads, unknown advertisers, invalid input, rate-limit errors, and ads skipped in monitor mode.

Set Maximum cost per run in the run options and the Actor stops exactly there. If the cap is below the price of one ad, you get one free row explaining it and nothing else is charged.

Reliability and fair use

  • Uses the same public endpoints the Transparency Center website uses. No login and no personal data: advertisers are businesses.
  • Polite by design: paced requests, automatic slow-down and retry when Google pushes back, then a switch to Apify datacenter proxy. It never solves CAPTCHAs or works around Google's bot checks; if Google keeps refusing, you get a free error row and keep every ad already saved.
  • Residential proxy is a last resort, and free for you. It is used only when Google rate-limits both the direct connection and Apify datacenter proxy, only for the small data requests (a few KB per ad), and its cost is included in the price. Switch off "Allow residential proxy as a last resort" to never use it. If you turn on Apify Proxy in the input yourself, your choice is used from the first request.

Good to know

  • Google filters by date only for roughly the last 12 months. Older windows return nothing; leave the dates empty to get every ad with its first and last shown dates.
  • Platform filters apply only to ads shown since 4 September 2023 (Google's rule).
  • Google's ad counts (in the run summary as googleAdCountApprox) are Google's own rough ranges.
  • Brand names can match several accounts (for example a person called "Nike Smith"). For exact results, use the website or the advertiser ID.

Use cases

  • Competitor ad intelligence: see every ad a rival runs right now, which ones have run longest, and where.
  • Creative research and swipe files: headlines, descriptions, images and YouTube videos at scale.
  • Reach and media mix (EU): compare impressions by country and platform.
  • Monitoring: schedule a daily run with monitor mode and get only newly launched ads.
  • Lead generation and ad checks: find which companies advertise on Google and under which legal entity.

Integrations

Run it from the Apify API, the Python or JavaScript client, schedules, webhooks, Make, Zapier or n8n, and export to JSON, CSV, Excel or Google Sheets.