Google Ads Creatives Scraper - Transparency Center (No Login)
Pricing
from $0.12 / 1,000 scanned creatives
Google Ads Creatives Scraper - Transparency Center (No Login)
Scrape Google Ads Transparency Center creatives by advertiser, no Google login or API key. Track competitor ads and every verified creative change: new, stopped, resumed & asset updates in webhook-ready JSON. Built for competitor ad changes, ad history & PPC monitoring.
Pricing
from $0.12 / 1,000 scanned creatives
Rating
0.0
(0)
Developer
Kamer Ozkan
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 days ago
Last modified
Categories
Share
Track what changed in a verified competitor's Google Ads creative library.
This Actor scrapes current creatives from exact Google Ads Transparency advertiser accounts and tracks new, stopped, resumed, and changed creatives across later runs. It is designed for competitor research, swipe-file exports, scheduled monitoring, agency reporting, and webhook automation.
You do not need a Google Ads account, cookies, or a Google Ads API key.
What problem does it solve?
A normal Google Ads scraper downloads the same creative rows every day. Your workflow still has to decide what is actually new, what disappeared, and whether a failed or partial scrape created a false alarm.
This Actor keeps monitor history and returns a clean change feed:
NEW: a creative appeared after the baselineDISCOVERED: Google returned a previously unseen creative whose own first-shown date predates the last accepted scanMISSING_ONCE: one tentative absence, available only when requestedSTOPPED_CONFIRMED: absent from two consecutive complete scansRESUMED: a previously stopped creative returnedASSET_CHANGED: the same creative ID returned with different creative content
The first successful run creates the monitoring baseline. The default ALL_CHECKED output returns every current creative as a CURRENT row, while keeping existing ads out of the NEW event stream. Scheduled users can switch to CHANGES_ONLY.
Google can occasionally return an older creative that was absent from an earlier snapshot. The Actor labels that record DISCOVERED, not NEW. A NEW event requires the source's own firstShown date to be on or after the previous accepted scan date.
Why use this Actor?
Exact advertiser isolation
The input accepts native Google advertiser IDs such as AR13568824525935607809. Domain searches can mix official brand accounts, agencies, affiliates, and unrelated advertisers. Exact IDs keep each monitor tied to the account you selected.
Safer stopped-ad detection
A creative is not marked stopped after one absence. STOPPED_CONFIRMED requires:
- Two consecutive successful source runs
- Complete pagination in both runs
- The creative missing from both complete snapshots
- At least six hours between the first absence and confirmation
Failed, blocked, timed-out, or capped scans do not advance the stopped-ad counter. Immediate retries cannot confirm a stopped creative.
Google preview-container parameters can rotate without the creative changing. Those volatile parameters are excluded from asset identity. Direct media changes and stable creative fields can still produce ASSET_CHANGED.
When Google switches the same creative between an opaque preview container and a direct media URL, the Actor updates its evidence without claiming that the ad changed.
Automatic large-account protection
AUTO mode chooses the safest behavior for every advertiser:
- Complete scan: full lifecycle monitoring
- Result or page cap reached: new-launch feed only
The Actor never claims that an ad stopped when the account was only partially scanned.
Changes-only output
Use CHANGES_ONLY for scheduled runs. The dataset stays empty when nothing changed, making it easy to connect the Actor to Slack, Discord, Make, Zapier, n8n, or your own webhook.
Quick start
Use one exact advertiser ID for the first test:
{"advertiserIds": ["AR13568824525935607809"],"region": "US","monitorName": "competitor-watch","mode": "AUTO","lookbackDays": 7,"maxCreativesPerAdvertiser": 1000,"outputMode": "ALL_CHECKED"}
The first run returns the current creatives and creates the baseline. Run it again with the same monitorName, advertiser IDs, region, and activity window to receive verified changes.
Example output
The CURRENT record is unedited output from a live Linear Orbit run on 2026-07-28.
The ASSET_CHANGED record is unedited output from scheduled production run
mjMpc95ADzl1lP48R for HelloFresh SE on 2026-07-29. That run finished HEALTHY,
exhausted all nine source pages, accepted the lifecycle comparison, and charged 340
creative scans plus five change events. The stopped-ad sequence remains an explicitly
labeled deterministic replay that demonstrates both confirmation stages.
1. A checked creative (CURRENT)
One creative, one region, one record. Fields the Transparency Center does not publish
for this creative stay null inside current; nothing is guessed.
2. A verified change (ASSET_CHANGED)
Google returned the same creative ID with a different direct image asset URL and asset
hash. The event carries both hashes in evidence, plus the full previous and
current states, so the change is auditable end to end. The deterministic eventId
doubles as an idempotency key for webhook retries.
3. How a stop is confirmed, never guessed
A creative disappearing from one scan is not a stopped ad. The engine reports it in two deliberate steps:
- First absence is tentative.
MISSING_ONCEsays the creative was absent from one complete, successful scan.evidence.tentativeistrueand nothing is confirmed. - Confirmation needs a second complete absence. Only then does
STOPPED_CONFIRMEDfire, with the absence count, the first missing timestamp, and the confirmation interval inevidence. - Incomplete scans confirm nothing. A partial or failed source run is rejected as
INCOMPLETE_SOURCE_RUN: zero events, state untouched, no phantom stops. - The first observation of a monitor bills zero verified changes, by a hard rule in the billing code, so starting a new monitor never charges for a wall of baseline events.
Input fields
| Field | Description | Default |
|---|---|---|
advertiserIds | 1-20 native AR... IDs or advertiser URLs | Required |
region | Country where the ads were shown | US |
monitorName | Stable history name for one watchlist | competitor-watch |
mode | AUTO, FULL_LIFECYCLE, or NEW_LAUNCH_FEED | AUTO |
lookbackDays | Rolling activity window from 1 to 90 days | 7 |
maxCreativesPerAdvertiser | Per-advertiser result and billing safety cap | 1000 |
outputMode | Current creatives plus changes, or changes only | ALL_CHECKED |
includeBaseline | In changes-only mode, label first-run creatives as NEW | false |
includeTentative | Include internal MISSING_ONCE events | false |
Monitoring modes
Auto
Recommended for most users. Full lifecycle is used only when all source pages finish. Large accounts automatically fall back to a safe new-launch feed.
Full lifecycle
Requires a complete advertiser scan. If the configured cap is reached, the target is reported as INCOMPLETE, history is not advanced, and no verified creative checks are billed for that target.
New launch feed
Tracks previously seen creative IDs and emits only new ones. This mode can operate on a capped recent window because it never produces stopped-ad claims.
Output modes
Changes only
Returns only lifecycle events. Use this for schedules, webhooks, Slack, Discord, Make, Zapier, and n8n. The first baseline produces zero rows because existing ads are not new launches.
Changes and all checked creatives
The default mode. Adds one CURRENT row per verified creative and includes any verified change events. Use it for the first run, one-time exports, audits, and swipe-file workflows.
Creative fields by format
Google exposes different structured fields for each creative format. A null
value means the source did not provide that field. The Actor does not guess
missing copy, OCR text embedded in artwork, render preview containers, or
transcribe videos.
| Format | Consistently available | Structured copy limitations |
|---|---|---|
TEXT | Creative ID, source URL, dates, region, asset evidence, and asset hash | body is populated only when Google returns literal text in the source payload. headline and destinationUrl can be null, and preview-only records can leave all three fields null. |
IMAGE | Image or Google preview-container URL, dates, region, and asset hash | headline, body, and destinationUrl are usually null. Text embedded in an image is not OCR output. |
VIDEO | Video or preview asset URL, dates, region, and asset hash | headline, body, and destinationUrl are usually null. On-screen and spoken text are not transcribed. |
Treat copy fields as opportunistic. Use primaryAssetUrl and sourceUrl when
your workflow needs to inspect the creative exactly as Google exposed it.
Supported countries
The Actor currently supports 33 major Google Ads markets:
AE, AT, AU, BE, BR, CA, CH, CZ, DE, DK, ES, FI, FR, GB, GR, HU, IE, IN, IT, JP, KR, MX, NL, NO, NZ, PL, PT, RO, SE, SG, TR, US, ZA.
Country criteria use active Google geo target constants.
How to find the advertiser ID
- Open Google Ads Transparency Center.
- Search for the advertiser.
- Open the advertiser page.
- Copy the
AR...value from the URL.
Example:
https://adstransparency.google.com/advertiser/AR13568824525935607809
You can paste either the full URL or only the advertiser ID into the Actor input.
Scheduling and webhooks
For daily monitoring:
- Save the Actor input as an Apify Task.
- Keep the same
monitorNameand scope settings. - Add an Apify Schedule.
- Add a webhook for
ACTOR.RUN.SUCCEEDED. - Read the default dataset. Zero rows means no confirmed change was emitted.
Every change includes a deterministic eventId. Use it as the idempotency key when a webhook or downstream workflow retries delivery.
Changing monitorName, advertiser ID, region, or lookbackDays creates a different history scope.
This Actor is also exposed to AI agents through Apify's MCP server (mcp.apify.com): an agent can discover it by search and run it with the same pay-per-event billing, with no separate integration.
Billing
The Actor separates the cost of scanning from the cost of confirmed changes.
An unchanged creative can still incur the scan charge when it is hidden by
CHANGES_ONLY, because the source request, advertiser isolation, and history
comparison were completed.
- Creatives scanned: $0.15 per 1,000
- Verified changes: $5.00 per 1,000
- Actor start: $0.005 per GB of run memory
- Platform usage and proxies: included
The first accepted observation creates a baseline and never incurs verified change charges. Later runs charge that event only for confirmed new, stopped, resumed, or modified creatives.
Example scan costs before any later verified changes:
| Creatives scanned | Scan cost |
|---|---|
| 10 | $0.0015 |
| 100 | $0.015 |
| 1,000 | $0.15 |
One advertiser with 1,000 creatives scanned daily for 30 days costs $4.50 in scan charges, plus the Actor start for each run and any verified change events.
The default 1,000-creative cap limits scan charges to $0.15 per advertiser. With 20 advertisers at the full default cap, the maximum scan charge is $3.00 plus verified changes and the Actor start. Most advertisers return fewer rows.
Dataset rows are not a separate billable event, so ALL_CHECKED does not create
a second scan charge.
These cases are not billed as creative scans:
- Advertiser lookup failure
- Source request failure
- Advertiser contamination
- Explicit
FULL_LIFECYCLErun that cannot finish pagination - Suspicious empty snapshot after a previously active library
- Records beyond the run's maximum charge limit
The OUTPUT record contains exact scan and change billing counters plus a
per-advertiser accounting summary.
Reliability evidence
The pre-launch benchmark on July 22-23, 2026 included:
- 25/25 successful source targets across the United States and Germany
- 820 source records with zero duplicate creative IDs
- 100% native creative ID, asset, and date coverage on non-empty targets
- 8 verified advertiser accounts with full pagination
- 1,072 creatives per complete canary round
- Two consecutive complete rounds with zero false lifecycle events
- Direct HTTP rate-limit detection with a browser-session fallback
- A separate live United Kingdom smoke test with complete pagination
Automated tests cover baseline behavior, duplicate handling, incomplete-run safety, two-run stopped confirmation, resume detection, asset fingerprint stability, billing limits, account isolation, and state persistence.
Important limitations
- Google Ads Transparency Center is a public transparency source, not the Google Ads performance API.
- The Actor does not provide spend, conversions, ROAS, exact impressions, or campaign performance.
- A missing transparency record does not prove that a campaign was deleted inside Google Ads.
- A complete but empty snapshot cannot erase a previously active library. The target is flagged as
SUSPICIOUS_EMPTY, history is preserved, and no stopped events are emitted. - Creative links and media availability depend on what Google exposes publicly.
- Very large advertisers may use
NEW_LAUNCH_FEEDin Auto mode rather than full stopped-ad detection. - The Actor monitors one delivery country per run. Create separate tasks for separate countries.
- Avoid overlapping runs that use the same monitor name and scope. Schedule the next run after the previous run finishes. Every change includes a deterministic
eventIdso downstream systems can safely deduplicate retried delivery. - Google reports source dates at day-level granularity. A
NEWevent means the source date is on or after the previous accepted scan date, not that the exact launch minute is known.
FAQ
Can I enter a domain such as nike.com?
Not in this Actor. Domain searches can mix multiple advertiser accounts. Use an exact advertiser ID to preserve account isolation.
Why was my first dataset empty?
You selected CHANGES_ONLY, so the first successful run created a silent baseline. Use the default ALL_CHECKED mode when you want the current creative snapshot on the first run.
Why did Auto mode use New Launch Feed?
The advertiser had more creatives than the configured cap. Auto mode refused to make stopped-ad claims from a partial snapshot.
Does a stopped event require two days?
It requires two consecutive complete scheduled runs, not a fixed number of days. With a daily schedule, confirmation normally takes two daily absences.
Can I monitor several competitors?
Yes. Add up to 20 advertiser IDs. Every advertiser receives an independent state and completeness decision.
Is this affiliated with Google?
No. This Actor is not affiliated with or endorsed by Google. Users are responsible for using public data lawfully and in accordance with applicable rules.