Google Ads Transparency Scraper · Creatives & Impression Ranges avatar

Google Ads Transparency Scraper · Creatives & Impression Ranges

Pricing

from $2.10 / 1,000 creative scrapeds

Go to Apify Store
Google Ads Transparency Scraper · Creatives & Impression Ranges

Google Ads Transparency Scraper · Creatives & Impression Ranges

Scrape Google Ads Transparency Center by brand, domain, advertiser ID or URL. Export Search copy, images, YouTube IDs, plus who paid, impression ranges and platforms when Google publishes them

Pricing

from $2.10 / 1,000 creative scrapeds

Rating

0.0

(0)

Developer

Corentin Robert

Corentin Robert

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Share

What does Google Ads Transparency Scraper do?

This Actor scrapes the public Google Ads Transparency Center and exports one row per creative. Paste a brand name, domain, advertiser ID (AR…), or a Transparency URL.

Two audiences, one run:

  • Creative / swipe file — Search headlines, images, YouTube IDs, first / last shown.
  • Media buyer / adtech — legal entity (paidForBy), impression ranges, countries, Search vs Display — when Google publishes them.

It is a Google Ads Transparency API alternative — Google does not offer an official API for this data. It does not read Google Ads Manager. You will not get spend, CPC, CTR, or private keywords.

Why scrape the Google Ads Transparency Center?

Marketers use the Transparency Center to see which ads a competitor is running on Google Search, YouTube, and Display. Doing that by hand does not scale. Same job on Meta: Facebook Ads Library Scraper.

  • Compare creative strategy across brands
  • Pull Search headlines into a teardown spreadsheet
  • Collect YouTube ad IDs for a swipe file
  • See who paid and how many impressions Google discloses (ranges, not Ads Manager stats)
  • Monitor when creatives first and last appeared

On Apify you can schedule runs, download JSON / CSV / Excel, and call the Actor from the API or integrations (Sheets, Make, n8n).

What data can Google Ads Transparency Scraper extract?

FieldDescription
headline, descriptionSearch ad copy when Google publishes the TEXT bundle
displayUrl, businessNameVisible URL and business name on TEXT ads
imageUrl, imageUrlsCreative image(s) (PNG/JPEG archive)
youtubeVideoId, thumbnailUrlYouTube ID and thumbnail when the VIDEO preview exposes them (~half of video ads)
formatTEXT, IMAGE, VIDEO, or UNKNOWN
firstShownAt, lastShownAtRun dates (ISO UTC)
advertiserName, advertiserId, advertiserUrl, creativeUrlAdvertiser identity and Transparency links
paidForByLegal entity Google shows as paying for the ad
impressionsAvailabletrue when Google published an impression range
impressionsLower, impressionsUpperPublic impression range (not Ads Manager). Lower may be null (UI “< N”)
impressionsByRegion, platformNamesCountry split and surfaces (Search / Display / Maps, inferred)
targetingInclude/exclude flags for the targeting methods Google discloses

Not extracted (and not invented): spend, budget, CPC, CTR, conversions, Ads Manager keywords, emails. Impression counts and targeting method flags are public Transparency fields — they stay null when Google does not publish them for that creative.

How to scrape competitor Google ads

  1. Open this Actor in Apify Console.
  2. In Query, paste a brand (Qonto), a domain (qonto.com), an advertiser ID (AR…), or a Transparency Center URL.
  3. Keep Region on Anywhere unless you only care about one country.
  4. Leave Max ads at 20 for a first run, then raise it.
  5. Keep Include who paid & impression ranges on unless you only want a swipe file.
  6. Click Start. Download the dataset as JSON, CSV, or Excel. Use the Creatives — Media buyer view for impression columns.

See the Input tab for the visible options (Residential proxy is automatic — not in the form).

How much will it cost to scrape Google ads?

This Actor uses pay-per-event pricing. You only pay per creative written to the dataset. Compute and Residential proxy are included — there is no Actor-start fee. Paid Apify plans get a lower price per creative.

Apify planPer creativePer 1,000
Free$0.003$3.00
Bronze$0.0027$2.70
Silver$0.0024$2.40
Gold$0.0021$2.10
Platinum$0.0018$1.80
Diamond$0.0015$1.50
Run (Free plan)Approx. cost
Default (20 ads)$0.06
100 ads$0.30
1,000 ads$3.00

Set Max ads and, on Apify, a max total charge so a run cannot exceed your budget. A row with empty headline / youtubeVideoId / impressions still counts — Google did not publish those fields; the creative was still scraped.

Default memory is 512 MB (HTTP only, no browser).

Input

Visible Console fields:

FieldDefaultNotes
queryQontoName, domain, AR…, or Transparency URL
regionanywhere?region= on a pasted URL overrides this
adFormatsAllText / Image / Video
dateRangeAny timeFilter on last-shown date (client-side)
maxAdvertisers3Name/domain search only
maxAds20Global cap for the run (0 = unlimited)
enrichMediaBuyerDatatrueInclude who paid & impression ranges. Off = swipe file only.
platformsAllOptional Search / Display / Maps filter (forces the lookup above)

Residential Apify Proxy is always on (hidden). A creative ID (CR…) alone is not enough — paste the full Transparency creative URL. Ads Manager URLs (ads.google.com) are rejected.

Example:

{
"query": "Qonto",
"region": "anywhere",
"maxAds": 20
}

Output

You can download the dataset in JSON, HTML, CSV, or Excel.

{
"advertiserName": "Qonto SA",
"advertiserId": "AR05318151651209510913",
"creativeId": "CR01362885945854001153",
"format": "TEXT",
"headline": "Qonto, le compte pro en ligne",
"description": "Gérez toutes vos dépenses pro et optimisez votre trésorerie.",
"displayUrl": "www.qonto.com",
"imageUrl": "https://tpc.googlesyndication.com/archive/simgad/…",
"youtubeVideoId": null,
"paidForBy": "OLINDA SAS",
"impressionsAvailable": true,
"impressionsLower": null,
"impressionsUpper": 1000,
"platformNames": "SEARCH, DISPLAY",
"firstShownAt": "2025-05-15T13:36:30.000Z",
"lastShownAt": "2026-07-28T13:02:38.000Z",
"region": "anywhere",
"creativeUrl": "https://adstransparency.google.com/advertiser/AR05318151651209510913/creative/CR01362885945854001153?region=anywhere"
}

Console views: Creatives — Overview, Creatives — Copy & media (swipe file), Creatives — Media buyer (who paid / impressions).

These Actors cover the same job or the next step in the workflow. Apify’s automatic recommendations stay inside one category — this list is the rest of the toolkit.

ActorUse it when
Instagram Sponsored Feed ScraperSponsored posts in the Instagram feed
Facebook Ads Library Scraper · Meta Page Ads, Creatives & ReachMeta Ads Library — page ads, creatives and reach
Facebook Page Scraper · Extract Email, Phone & WebsiteEmail, phone and website from a Facebook Page
Shopify App Store Developer Contacts · Emails & AddressShopify App Store partner emails — unique publishers, not per app
SW Website Rankings ScraperRank the website / domain after you have the URL
Google Maps search — place details & contactsGoogle Maps places, details and contacts
French Companies · Search & SIREN EnrichFrench companies: search and SIREN enrich

FAQ, disclaimers, and support

Why is Residential proxy always on?

The Transparency Center returns a Google captcha (sorry) on datacenter or bare IPs. The Actor always uses Apify Proxy group RESIDENTIAL (hidden in Console). The run fails immediately if that proxy cannot start.

Why is the headline empty on some TEXT ads?

Google sometimes publishes Search ads as a screenshot (simgad) without the HTML text bundle. Those rows stay TEXT with imageUrl set and headline null. That is expected — not a failed scrape.

Why are some YouTube IDs empty?

Google does not always embed a YouTube ID in the public VIDEO preview. Empty youtubeVideoId is expected for a large share of video ads — not a failed scrape.

Do I pay for rows with empty headlines or YouTube IDs?

Yes. Pricing is per creative scraped, not per filled field. Empty copy / video IDs / impressions mean Google did not publish them on the Transparency Center — not that the scrape failed.

Why are impressions empty on some rows?

Google only publishes impression ranges for some creatives and regions (often EU Transparency / DSA). impressionsAvailable: false is expected — not a failed scrape. Spend and exact impression counts from Ads Manager are never available here.

Can I export unique advertisers instead of every ad?

Yes. Set What to export to Unique advertisers. You get one row per AR… with paidForBy when Google publishes it. There is no advertiser sitemap — start from a brand, domain, or advertiser ID, like a targeted run of Apify Creator Scraper rather than a full dump.

How are Search / Display / Maps assigned?

Surface names are inferred from Transparency GetCreativeById ids (3 = Search, 5 = Display, 4 = Maps) using Qonto dumps. The numeric platforms[].id is always kept. Treat labels as best-effort.

Why can a name match several advertisers?

Search uses Google’s autocomplete. The Actor takes the first Max advertisers suggestions in Google’s order. It does not guess which “Qonto” is the one you meant. Use an AR… ID or Transparency URL for a precise advertiser.

Does region filtering always match the website?

The Actor sends the known geo id for the selected country. Google sometimes ignores geo on the creatives list. Each row still has a region label. Do not treat it as a 100% server-side guarantee.

Our Actors are ethical and do not extract private user data such as personal emails. They only extract what Google has chosen to publish on the Ads Transparency Center (creatives, public impression ranges, and country splits). We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you are unsure whether your reason is legitimate, consult your lawyers.

Use the Issues tab for bugs and feature requests. Use the API tab to run the Actor programmatically.