Google Ads Creatives Scraper - Transparency Center (No Login) avatar

Google Ads Creatives Scraper - Transparency Center (No Login)

Pricing

from $0.12 / 1,000 scanned creatives

Go to Apify Store
Google Ads Creatives Scraper - Transparency Center (No Login)

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

Kamer Ozkan

Maintained by Community

Actor 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 baseline
  • DISCOVERED: Google returned a previously unseen creative whose own first-shown date predates the last accepted scan
  • MISSING_ONCE: one tentative absence, available only when requested
  • STOPPED_CONFIRMED: absent from two consecutive complete scans
  • RESUMED: a previously stopped creative returned
  • ASSET_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:

  1. Two consecutive successful source runs
  2. Complete pagination in both runs
  3. The creative missing from both complete snapshots
  4. 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_ONCE says the creative was absent from one complete, successful scan. evidence.tentative is true and nothing is confirmed.
  • Confirmation needs a second complete absence. Only then does STOPPED_CONFIRMED fire, with the absence count, the first missing timestamp, and the confirmation interval in evidence.
  • 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

FieldDescriptionDefault
advertiserIds1-20 native AR... IDs or advertiser URLsRequired
regionCountry where the ads were shownUS
monitorNameStable history name for one watchlistcompetitor-watch
modeAUTO, FULL_LIFECYCLE, or NEW_LAUNCH_FEEDAUTO
lookbackDaysRolling activity window from 1 to 90 days7
maxCreativesPerAdvertiserPer-advertiser result and billing safety cap1000
outputModeCurrent creatives plus changes, or changes onlyALL_CHECKED
includeBaselineIn changes-only mode, label first-run creatives as NEWfalse
includeTentativeInclude internal MISSING_ONCE eventsfalse

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.

FormatConsistently availableStructured copy limitations
TEXTCreative ID, source URL, dates, region, asset evidence, and asset hashbody 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.
IMAGEImage or Google preview-container URL, dates, region, and asset hashheadline, body, and destinationUrl are usually null. Text embedded in an image is not OCR output.
VIDEOVideo or preview asset URL, dates, region, and asset hashheadline, 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

  1. Open Google Ads Transparency Center.
  2. Search for the advertiser.
  3. Open the advertiser page.
  4. 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:

  1. Save the Actor input as an Apify Task.
  2. Keep the same monitorName and scope settings.
  3. Add an Apify Schedule.
  4. Add a webhook for ACTOR.RUN.SUCCEEDED.
  5. 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 scannedScan 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_LIFECYCLE run 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_FEED in 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 eventId so downstream systems can safely deduplicate retried delivery.
  • Google reports source dates at day-level granularity. A NEW event 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.