Google Ads Transparency Scraper β€” From $0.40/1K avatar

Google Ads Transparency Scraper β€” From $0.40/1K

Pricing

from $0.34 / 1,000 baseline ad results

Go to Apify Store
Google Ads Transparency Scraper β€” From $0.40/1K

Google Ads Transparency Scraper β€” From $0.40/1K

Scrape Google Ads Transparency Center creatives, advertisers and dates. Track competitor Google ads and detect new, updated and safely ended ads.

Pricing

from $0.34 / 1,000 baseline ad results

Rating

0.0

(0)

Developer

Luka

Luka

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 hours ago

Last modified

Share

Google Ads Transparency Center Scraper & Tracker

Scrape Google Ads Transparency Center creatives and advertiser data β€” then detect new, updated and safely ended competitor ads on later runs.

Point it at a brand, a domain, an advertiser ID or a Transparency Center URL. Get back the advertiser, the creatives, the dates and the copy that Google exposes, straight from the Google Ads Transparency Center. Run the same query again later and you get only what actually moved.

No Google Ads account and no Ads API key required.


🎯 What can this Actor do?

πŸ”Ž Search by brand, domain, advertiser ID or Transparency URL β€” mix as many targets as you like in one run

⚑ Fast by architecture, strict by design β€” the measured cloud run delivered 500 unique ads in under one minute end to end, with zero browser requests, blocks, retries or duplicates

πŸ–ΌοΈ Get the creatives β€” direct image and media URLs, without paying to download the files

πŸ“ Get the ad copy where Google exposes it β€” headlines and descriptions, on the formats that carry them

πŸ”— See the destination candidate β€” the outbound URL observed on the ad, reported honestly as unverified

🌍 Filter before you scrape β€” region and ad format, so you pay only for the ads you want

πŸ”” Track changes over time β€” later runs deliver only NEW, UPDATED and safely proven ENDED, never unchanged filler

βœ… Know when your data is complete β€” every target reports whether the source was exhausted, capped or only partially read


πŸ†š Baseline or Changes β€” which one do I need?

This is the only real decision you have to make. Everything else has a sensible default.

BASELINECHANGES
What you getEvery ad running right nowOnly what moved since your last run
Answers"What is my competitor advertising?""What did my competitor change?"
Best forCreative research, audits, swipe filesScheduled monitoring, alerts, weekly reports
Needs a previous runNoSecond run onwards
A run with no changesβ€”Succeeds with an empty dataset, costs you nothing per result
Price$0.40 / 1,000 results$0.80 / 1,000 changes

Start with BASELINE. Switch to CHANGES when you want the Actor to do the comparing for you.


πŸ“Š What you actually get β€” measured, before you pay

For standard commercial ads, Google Ads Transparency Center publishes advertiser, creative and delivery-transparency data β€” not private campaign performance metrics. This Actor returns what Google actually makes public and never pads your export with guessed metrics or decorative empty columns.

Real coverage from a 500-row Nike domain run on 2026-08-20:

Field groupRowsCoverage
Creative ID, advertiser, format, dates, display domain, source URL500/500100%
Direct image / media URL331/50066%
Sanitized preview URL169/50034%
Structured headline & description copy70/50014%
Observed destination candidate61/50012%

Structured ad copy is format-dependent at the source. In this measured sample, Google exposed machine-readable headline or description fields on 14% of rows. When text exists only inside a rendered image or video, it is not available as source-verified structured copy; OCR can only approximate what is visually present. This Actor prioritizes source truth over guessed text. If you need consistently structured copy, use the Meta companion Actor below.

Google does not publish a normalized CTA, direct video asset or verified final landing-page field across every commercial-ad format. Some creative formats expose more than others, but these values do not have a universal, stable source contract. This Actor therefore exposes only verified source fields and omits unavailable values instead of pretending they were extracted. landingPageCandidateUrl, where present, is an observed and unverified candidate β€” not a confirmed advertiser landing page.


⬇️ Input

The simplest possible run:

{
"searchTargets": ["nike.com"]
}

A monitored competitor set:

{
"productLevel": "CHANGES",
"searchTargets": ["nike.com", "adidas.com", "AR16735076323512287233"],
"region": "US",
"maxAdsPerTarget": 200
}

Image ads only, one market:

{
"searchTargets": ["Nike"],
"region": "DE",
"adFormat": "IMAGE",
"maxAdsPerTarget": 500
}

searchTargets accepts brand names, domains, AR… advertiser IDs, and official adstransparency.google.com URLs pasted straight from your browser.


⬆️ Output

One row per ad. Real rows from the measured run, not idealized examples.

A typical row β€” identity plus a directly exposed image:

{
"creativeId": "CR04739221842466701313",
"advertiserId": "AR16735076323512287233",
"advertiserName": "Nike, Inc.",
"displayDomain": "nike.com",
"format": "TEXT",
"firstShownAt": "2023-11-16T22:05:24.809Z",
"lastShownAt": "2026-08-20T20:52:01.813Z",
"imageUrls": ["https://tpc.googlesyndication.com/archive/simgad/14068473521641712518"],
"primaryMediaUrl": "https://tpc.googlesyndication.com/archive/simgad/14068473521641712518",
"region": "ANYWHERE",
"searchTarget": "nike.com",
"coverageStatus": "CAPPED",
"sourceAdUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR04739221842466701313"
}

A less common row where Google also exposed copy and a destination candidate:

{
"creativeId": "CR02992220324038180865",
"advertiserName": "Nike Retail BV",
"format": "IMAGE",
"headlines": ["Nike Oficjalny"],
"descriptions": ["MΔ™skie spodenki piΕ‚karskie Dri-FIT Nike Academy - CzerΕ„/czerΕ„/biel - Rozmiar: L"],
"landingPageCandidateUrl": "https://shopping.producthero.com/?utm_source=google&utm_medium=css",
"coverageStatus": "CAPPED",
"sourceAdUrl": "https://adstransparency.google.com/advertiser/AR18378488041124659201/creative/CR02992220324038180865"
}

Export as JSON, CSV, Excel, XML or RSS, or pull it straight from the Apify API.

Built-in dataset views

  • changes β€” the monitoring view: only actionable detected changes.
  • creativeResearch β€” a visual swipe-file view with creative, copy, dates, domain and source evidence.
  • allData β€” every buyer-facing field, without internal diagnostics.

What is in every row

GroupFields
Ad identitycreativeId, format, versionId
AdvertiseradvertiserId, advertiserName, displayDomain
Copyheadlines, descriptions
CreativesimageUrls, primaryMediaUrl, previewUrl
DestinationlandingPageCandidateUrl
DeliveryfirstShownAt, lastShownAt, region
Change trackingchangeStatus, changedFields
Run contextsearchTarget, coverageStatus, observedAt, sourceAdUrl

Optional fields that Google did not expose are omitted from the row rather than delivered as empty columns.


πŸ’° How much does it cost?

EventPrice
Run start$0.01
Baseline result$0.40 / 1,000
Detected change$0.80 / 1,000

Real examples:

What you runYou pay
100 ads from one brand~$0.05
1,000 ads across several brands~$0.41
A monitoring run where nothing changed$0.01

You are billed for the events above β€” not for compute, proxy traffic or storage. Copy and media are included whenever Google exposes them; there is no enrichment surcharge.


⚑ Optimized for exceptional speed and clean data

The extraction engine uses a direct HTTP/RPC route instead of launching a browser for every creative. That keeps large snapshots fast, inexpensive and deterministic without sacrificing validation or duplicate protection.

Every figure below comes from a real private cloud run, read back from the Apify API after it finished.

Rows delivered500 unique, zero duplicates
Route100% HTTP/RPC, zero browser requests
Blocks, challenges, retries0
Application data work3.6 seconds for 500 rows
Complete Apify run55.4 seconds, including container startup

That is 500 validated, deduplicated Google ad rows in under one minute end to end, without browser-per-creative overhead. HTTP/RPC is the primary route. A residential browser starts only when the direct route cannot deliver, and the run reports when that happened.


βœ… How do I know the data is complete?

Most scrapers hand you rows and let you guess whether that was everything. This one tells you, per target:

StatusMeaning
COMPLETEThe source ran out of ads. You have all of them.
CAPPEDYour result limit was reached first. More ads exist.
PARTIALRows are valid, but neither the cap nor the end was reached.
EMPTYProven zero matching ads β€” not a silent failure.

This matters most for change tracking. An incomplete run can never produce an ENDED event β€” otherwise a capped window would look like your competitor switching off campaigns. CAPPED, PARTIAL, failed and mismatched scopes never raise a false ending.

The trade-off is deliberate: this Actor would rather tell you an ad is still running than wrongly tell you it stopped.


⚑ Ready-made workflows

Three public Task Examples are available:

  1. Monitor Google ads daily β€” bounded daily change monitoring.
  2. Weekly Google ad change report β€” a scheduled detected-change report.
  3. Build a Google ad swipe file β€” collect current creatives for research.

Need Facebook and Instagram too? Use the companion Facebook Ad Library Scraper & Change Tracker β€” same output philosophy and the same change-tracking guarantees.

A free n8n β†’ Telegram workflow is prepared for release. It uses the official Apify node to run this paid Actor, wait for completion, turn change rows into a readable alert, and send it through Telegram. The old Slack-only JSON under integrations/n8n/ is a historical draft and must not be used.

πŸ€– For AI agents / MCP

This public, limited-permission Actor can be discovered and run through the hosted Apify MCP server. Use it when an agent needs current Google competitor-ad creatives, source-backed transparency data, or a scheduled changefeed.

Example prompts:

  • Find the current Google ads for nike.com and return the creative evidence.
  • Monitor these Google advertisers and report only new, updated, or safely ended ads.
  • Build a Google Ads Transparency creative research dataset for these domains.

Connect the standard Apify MCP server; no Actor-specific MCP server is required.


❓ FAQ

What can this Actor not tell me? For standard commercial ads, Google Ads Transparency Center does not publish conversions, CPA or ROAS, bids, keywords, campaign-level spend or proof that an ad performed well. These are not hidden fields that a different scraper can unlock. Political ads and certain regional disclosures may include additional impression, reach or targeting information, but those limited exceptions are not universal commercial-ad fields and are not promised by this Actor.

Why does only 14% of rows have ad text? The 14% figure is measured coverage from this 500-ad sample, not a universal Google ceiling. Google publishes machine-readable copy only for formats that expose it as structured data. When copy exists solely inside a rendered image or video, no scraper can recover it as source-verified structured copy; OCR is a best-effort visual interpretation, not the original field. This limitation is measured and published instead of hidden.

Why are CTA and direct video URLs not guaranteed? Google does not expose normalized CTA and direct video-asset fields across every commercial-ad format. Some creatives expose additional assets; others expose only a rendered preview. Because no universal source contract exists, these fields are not promised as standard output; missing values are omitted rather than fabricated or inferred.

Is the landing URL the real advertiser page? Not necessarily. Google Ads Transparency Center does not provide a universal verified final-destination field and is not designed for landing-page click-through verification. landingPageCandidateUrl is the destination observed on the creative and is labelled as an unverified candidate. Shopping and CSS intermediaries frequently appear there. Visiting an advertiser's website or enriching its domain is not proof of the final destination for that specific ad, so this Actor does not present it as one.

Do I need a Google Ads account? No. The Transparency Center is public and this Actor needs no account, no API key and no credentials from you.

Can I run this on a schedule? Yes. Set productLevel to CHANGES and each run delivers only what moved. A run where nothing changed costs just the start fee.

Will the ad order be stable between runs? Not necessarily. Google can reorder results, which is exactly why change detection compares material content rather than position, and why a capped window is never treated as a complete history.


πŸ” How your run is handled

  • Live source traffic runs only inside Apify Cloud through a residential proxy. Local execution fails closed and uses fixtures.
  • Credentials, cookies, proxy URLs, signed payloads, fingerprints and internal query IDs never appear in your rows.
  • Media binaries are not downloaded β€” their URLs are already in the source data.
  • Limited Actor permissions are sufficient; the Actor asks for nothing more.

πŸ’¬ Feedback

Missing a field, a target type that fails, or a filter you need? Open an issue on the Actor's Issues tab. Bug reports with the run ID get fixed fastest.