Google Ads Transparency Scraper - Ad Text & Copy avatar

Google Ads Transparency Scraper - Ad Text & Copy

Pricing

from $2.00 / 1,000 ad scrapeds

Go to Apify Store
Google Ads Transparency Scraper - Ad Text & Copy

Google Ads Transparency Scraper - Ad Text & Copy

Google Ads scraper for the Ads Transparency Center with ad text included at no extra charge: headlines, descriptions, display URLs & YouTube titles. Track competitor ads by domain or advertiser, OCR for screenshot ads, only-new-ads mode.

Pricing

from $2.00 / 1,000 ad scrapeds

Rating

0.0

(0)

Developer

Fern Crawl

Fern Crawl

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Security

Limited permissions

Share

Scrape any advertiser's ads from the Google Ads Transparency Center by domain, advertiser name or advertiser ID, with the ad text included: headline, description and display URL (plus the YouTube title for video ads). Ad text costs nothing extra.

💲 About $2 per 1,000 ads, ad text included. Some other tools charge an extra fee for ad text. Here the text is part of the $0.002 per-ad price. Only optional extras cost more: OCR for screenshot-only text ads (+$0.002 per image only when OCR returns text) and per-ad country details (+$0.001).

🆕 Only new ads mode. Schedule a daily run and get only the ads you haven't received yet. Ads already returned are skipped and not charged.

Use cases

  • 🕵️ Competitor ads research: see every Google search, display and YouTube ad a competitor runs, with the actual copy
  • ✍️ Ad copy inspiration & swipe files: export headlines and descriptions to CSV/Excel for copywriters and AI prompts
  • 🔔 New-ad alerts: a daily schedule with Only new ads sends you just the ads a brand launched since the last run
  • 📊 Market & agency reporting: count ads by format, region and date and track how long ads keep running
  • 🌍 Multi-country checks: compare what one advertiser shows in the US, UK, Taiwan, Japan… in one run

Keywords: google ads scraper, google ads transparency center scraper, ads transparency center API, competitor ads, google ad library, ad copy scraper, search ads, YouTube ads.

Why this scraper?

  • ✍️ Real ad copy — headline, long headline, description, display URL, call-to-action and business name, decoded from Google's live ad preview (textSource: preview-structured / preview-heuristic)
  • 🎬 YouTube video titles & channels for video ads — the best text signal a video ad has
  • 👁️ Smart OCR (Auto) — Google stores many search text ads only as PNG screenshots. In the default Auto mode the Actor OCRs exactly those ads (and nothing else), so you get their headline, description and display URL without paying for OCR on banners (PP-OCRv5: English, Traditional & Simplified Chinese, Japanese)
  • 🌍 Multi-region in one run — US, GB, TW, JP… or anywhere; results are merged per ad with the list of regions
  • 🆕 Only new ads: outputs only ads you have not received before (memory kept per query in your own Apify account); skipped ads are free. Optional first-shown-since date filter
  • 🔔 Monitoring (diff) mode — schedule it daily and every ad is labelled new, existing or removed compared with the previous run of the same query
  • 📅 First shown / last shown dates, days running, image and video URLs, video duration
  • 🧯 Fails loudly when Google changes its format — schema-drift checks stop the run with SCHEMA_DRIFT instead of returning silent garbage
  • 🛡️ Proxy on by default — Apify Proxy (datacenter) is pre-selected; the Actor rotates sessions and backs off on rate limits

What data can I extract?

FieldExample
advertiserName / advertiserIdNike, Inc. / AR16735076323512287233
creativeId, formatCR08040681151846678529, TEXT / IMAGE / VIDEO
headline, description, displayUrlShop Clothing Made For You - Free Shipping On Orders $75+ …
longHeadline, callToAction, businessNameresponsive display / video ads
adTextall visible ad copy in one string
textSourcepreview-structured, preview-heuristic, youtube-title, ocr
youtubeTitle, youtubeChannel, youtubeVideoIds, videoUrls, videoDurationvideo ads
imageUrlscreative images
firstShown, lastShown, daysShown2023-11-17T02:49:19Z, 2026-10-30T…Z, 876
regions / allRegions["US"] (allRegions with Fetch per-ad details)
ocrMeanConfidence0–1, only for OCR text
ocrErrorSet only when OCR was skipped or failed for that ad (the ad is still returned with its other fields, and no OCR fee is charged)
previewUrllink to the ad in the Transparency Center
monitorStatusnew / existing / removed (monitoring mode)

How to use it

  1. Enter one or more domains (nike.com), advertiser names or advertiser IDs (AR…).
  2. Pick regions (or leave anywhere), optional formats and date range.
  3. Set Max ads per advertiser.
  4. Leave OCR on Auto (default) — or choose Off for the fastest run, or All image ads to also try banners. Keep the default 1024 MB memory whenever OCR can run.
  5. Optional: turn on Only new ads (or Monitoring mode) and add a schedule.
  6. Click Start and download JSON, CSV or Excel, or use the API.

Keep Proxy configuration enabled (the default). Google blocks requests from cloud data-center IPs without a proxy, often on the very first request.

Input example

{
"domains": ["nike.com", "momoshop.com.tw"],
"regions": ["US", "TW"],
"maxAdsPerAdvertiser": 100,
"lastNDays": 30,
"ocr": "auto",
"monitorMode": true,
"proxyConfiguration": { "useApifyProxy": true }
}

Output example

{
"advertiserId": "AR16735076323512287233",
"advertiserName": "Nike, Inc.",
"creativeId": "CR08040681151846678529",
"format": "TEXT",
"headline": "Shop Clothing Made For You - Free Shipping On Orders $75+",
"description": "Get geared up & take on any activity in style. Available now at Nike®…",
"displayUrl": "www.nike.com/shop/sweatshirts",
"textSource": "ocr",
"firstShown": "2023-11-17T02:49:19Z",
"lastShown": "2026-10-30T…Z",
"regions": ["US"],
"imageUrls": ["https://tpc.googlesyndication.com/archive/simgad/10342465081222581191"],
"previewUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR08040681151846678529?region=US",
"monitorStatus": "new"
}

Monitor competitor ads (new / removed)

Turn on Monitoring mode and schedule the Actor (e.g. daily). Each run compares with the previous run of the same query (stored in a named key-value store) and labels every ad new or existing. Ads that disappeared are output with monitorStatus: "removed" — but only when the run covered the advertiser's complete ad list, so a Max ads cut-off never creates false "removed" alerts. Connect a Slack or email integration to get alerts.

Only new ads (incremental runs)

Turn on Only new ads (onlyNewAds: true) and schedule the Actor. The Actor remembers the creative IDs each query has already returned and skips them next time:

  • First run: returns ads as usual and remembers them.
  • Later runs: return only ads you have not received yet. If nothing new appeared, the run returns 0 ads and charges only the tiny start fee.
  • Not charged: skipped ads are dropped before any charge, text decoding, OCR or detail request, so they cost nothing. They also don't count toward Max ads per advertiser.
  • Scope: memory is kept per domain/advertiser + regions + formats, in a named key-value store google-ads-transparency-seen in your own Apify account. Changing regions or formats starts a fresh memory. To reset, delete that store or the matching SEEN_… record.
  • Scan limit: results come ordered by most recently shown, so freshly launched ads appear near the top. To keep runs fast, each query looks through at most 1,000 already-seen or older ads beyond Max ads per advertiser.
  • Since date: add Only ads first shown on/after (sinceDate, YYYY-MM-DD) to keep only ads launched after a date. It works with or without Only new ads, and older ads are skipped without charge.
  • Compared with Monitoring mode: Monitoring mode outputs all ads labelled new/existing/removed (all charged). Only new ads outputs only the new ones. If both are on, Only new ads is used.

The run's OUTPUT record shows skippedAlreadySeen and skippedFirstShownBeforeSince.

{
"domains": ["nike.com"],
"regions": ["US"],
"maxAdsPerAdvertiser": 50,
"onlyNewAds": true,
"sinceDate": "2026-10-01"
}

OCR modes

Auto (default)OffAll image ads
Text from live ad previews✅✅✅
YouTube video titles✅✅✅
Text ads stored only as screenshots✅ OCR❌ empty✅ OCR
Image / banner adsnot OCR'dnot OCR'dOCR'd
Speedfast; +~9 s per screenshot adfastest (~1–20 s per 30 ads)slowest
OCR chargeonly ads actually OCR'dnoneevery image ad

Whether a text ad comes as a live preview or a screenshot depends on the advertiser and region. In our tests a large US brand's search text ads were almost all screenshots (0/30 had text with OCR off, 29/30 with OCR), while Taiwanese advertisers' ads were mostly live previews and needed little or no OCR. Auto handles both: it only OCRs a text ad when its copy is missing, and loads the OCR model only when the first such ad appears.

Memory: the default is 1024 MB. OCR at 512 MB is about 1.5× more expensive per image and peaked at 431 MB of 512 MB in our test, so lower memory is only safe with OCR: Off (peak ~150 MB).

Limitations

  • Image ads: most banner and display ads carry their message inside the artwork and are not OCR'd in Auto. Even with All image ads, only about 29% of image ads in our test returned usable text. Text-ad coverage is much higher.
  • OCR quality: OCR can make small character errors (e.g. ® read as ?, stray characters at line ends). Use ocrMeanConfidence to filter.
  • OCR speed: about 9 seconds per image at 1024 MB, slower at lower memory. An advertiser with 100 screenshot text ads ≈ 15 minutes in Auto. Advertisers whose ads have live previews finish in seconds.
  • Video ads: in-stream video ads have no copy outside the video itself; we return the YouTube title and channel when the video is public.
  • Advertiser names: Latin-script names resolve best. For local-language brands use the domain or the AR… ID from the Transparency Center URL (e.g. Shopee Taiwan is registered as 「新加坡商蝦皮娛樂電商有限公司」).
  • Rate limits: Google throttles heavy traffic. Keep the proxy on; the Actor backs off automatically and saves partial results if it is blocked.
  • Coverage is Google's: the Transparency Center only shows what Google publishes. Some ads have no preview or are removed by Google.

Tips

  • Regions use ISO codes; UK is accepted as GB.
  • Enable Fetch per-ad details to get allRegions with the last-shown date per country.
  • Use formats: TEXT with lastNDays to focus on current search ads.

The Transparency Center is a public library Google publishes so anyone can see who is advertising. This Actor only reads publicly available ad data and collects no personal data. Check your use case against applicable laws and Google's terms, and consult a lawyer if unsure.

FAQ

I searched an advertiser name and got 0 ads in my country? Advertisers are registered under their legal name, often in the local language. Search the local name or use the domain. The run log warns you when the matched advertiser is registered in another country.

Why do some ads have no headline? Either the ad is a screenshot-only text ad (use OCR Auto or All), a pure image/HTML5 banner (text is inside the artwork; OCR All image ads helps sometimes), or an in-stream video (see youtubeTitle).

I started a run with an empty input — what happens? If no domain, advertiser name or ID is given, the Actor runs the example query (nike.com, US, 10 ads) so it never fails, and logs a warning.

Something broke? If Google changes its internal format the run fails with SCHEMA_DRIFT in the OUTPUT record instead of returning bad data. Please open an issue in the Issues tab — we fix these fast.