Google Ads Transparency Scraper β From $0.40/1K
Pricing
from $0.34 / 1,000 baseline ad results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 hours ago
Last modified
Categories
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.
| BASELINE | CHANGES | |
|---|---|---|
| What you get | Every ad running right now | Only what moved since your last run |
| Answers | "What is my competitor advertising?" | "What did my competitor change?" |
| Best for | Creative research, audits, swipe files | Scheduled monitoring, alerts, weekly reports |
| Needs a previous run | No | Second 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 group | Rows | Coverage |
|---|---|---|
| Creative ID, advertiser, format, dates, display domain, source URL | 500/500 | 100% |
| Direct image / media URL | 331/500 | 66% |
| Sanitized preview URL | 169/500 | 34% |
| Structured headline & description copy | 70/500 | 14% |
| Observed destination candidate | 61/500 | 12% |
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
| Group | Fields |
|---|---|
| Ad identity | creativeId, format, versionId |
| Advertiser | advertiserId, advertiserName, displayDomain |
| Copy | headlines, descriptions |
| Creatives | imageUrls, primaryMediaUrl, previewUrl |
| Destination | landingPageCandidateUrl |
| Delivery | firstShownAt, lastShownAt, region |
| Change tracking | changeStatus, changedFields |
| Run context | searchTarget, 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?
| Event | Price |
|---|---|
| Run start | $0.01 |
| Baseline result | $0.40 / 1,000 |
| Detected change | $0.80 / 1,000 |
Real examples:
| What you run | You 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 delivered | 500 unique, zero duplicates |
| Route | 100% HTTP/RPC, zero browser requests |
| Blocks, challenges, retries | 0 |
| Application data work | 3.6 seconds for 500 rows |
| Complete Apify run | 55.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:
| Status | Meaning |
|---|---|
COMPLETE | The source ran out of ads. You have all of them. |
CAPPED | Your result limit was reached first. More ads exist. |
PARTIAL | Rows are valid, but neither the cap nor the end was reached. |
EMPTY | Proven 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:
- Monitor Google ads daily β bounded daily change monitoring.
- Weekly Google ad change report β a scheduled detected-change report.
- 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.