Google Ads Transparency Scraper + Creative Monitor avatar

Google Ads Transparency Scraper + Creative Monitor

Pricing

from $0.80 / 1,000 google ad processeds

Go to Apify Store
Google Ads Transparency Scraper + Creative Monitor

Google Ads Transparency Scraper + Creative Monitor

Scrape public Google Ads Transparency creatives, group creative families, analyze competitor ad activity, and monitor new, updated, stopped, and newly observed ads across runs.

Pricing

from $0.80 / 1,000 google ad processeds

Rating

0.0

(0)

Developer

ProdukDigitalAli

ProdukDigitalAli

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Scrape public Google Ads Transparency creatives, group related creatives into deterministic families, summarize competitor activity, and optionally monitor ad and exposed landing-page changes across runs.

Why this Actor is different

This is not only another Google Ads Transparency row extractor. It combines three jobs:

  1. Discovery — resolve keywords, domains, direct AR advertiser IDs, or full Ads Transparency URLs and collect public creatives.
  2. Creative intelligence — group equivalent/related creative assets into stable creative families and calculate format mix, family concentration, launch recency, visible lifespan, and landing-domain concentration without an LLM.
  3. Monitoring — persist advertiser state and classify new, updated, possibly stopped, confirmed stopped, reactivated, advertiser failures/recoveries, and optional landing-page changes.

Creative-family fingerprinting

Every creative receives creativeFamilyId, familyMethod, and familyConfidence.

  • text ads: normalized headline + description + landing host (TEXT_COPY, HIGH)
  • image ads with media enrichment: exact asset SHA-256 or perceptual dHash (HIGH)
  • image fallback: normalized public asset URL (MEDIUM)
  • video: YouTube video ID when exposed (HIGH), otherwise normalized video URL (MEDIUM)
  • final fallback: creative ID only (LOW; never merges different creatives)

This helps distinguish many creative IDs from many genuinely different creative concepts/assets.

Stable change hashing

Google can regenerate preview wrapper callback identifiers on every request. The Actor canonicalizes those volatile render parameters before comparing creatives, so callback churn and observation-date roll-forward do not produce false AD_UPDATED events. Meaningful asset/copy/destination changes remain detectable.

Conservative monitoring semantics

A partial Google result window is not treated as a complete advertiser inventory. The Actor distinguishes a creative that is proven new from one that is merely newly observed in a rotating partial window.

  • NEW_AD — the creative was absent from a previous complete advertiser baseline, so it is safe to call it new relative to that baseline
  • NEWLY_OBSERVED_AD — the creative ID was not in the stored state, but the previous advertiser crawl was incomplete, so the Actor does not claim it was newly launched
  • first complete-crawl miss: POSSIBLY_STOPPED
  • N complete consecutive misses (default 2): AD_STOPPED
  • later return: AD_REACTIVATED
  • incomplete/truncated/failed crawl: no missing-ad inference

Direct AR advertiser IDs are recommended for scheduled monitoring because keyword/domain resolution can legitimately return multiple advertiser accounts.

For high-volume collection, the Actor paginates SearchCreatives conservatively (40 creatives per RPC page in the current implementation) and treats Google redirects or suspicious empty continuation pages as incomplete rather than as proof that an advertiser inventory ended.

Optional landing-page monitoring

When Google publicly exposes/decodes a destination URL, auditLandingPages can inspect bounded public HTTP/HTML signals: HTTP status, final URL, title, meta description, canonical, noindex, H1, and visible-content hash.

Monitoring can emit LANDING_PAGE_CHANGED, LANDING_PAGE_BROKEN, and LANDING_PAGE_RECOVERED. Landing-page and media requests block localhost/private/link-local/reserved targets and revalidate redirect destinations.

Example

{
"domains": ["nike.com"],
"region": "US",
"maxAdsPerAdvertiser": 100,
"includeDetails": true,
"includeAdvertiserSummary": true,
"fingerprintMedia": false,
"auditLandingPages": false
}

Scheduled monitor:

{
"advertiserIds": ["AR1234567890"],
"maxAdsPerAdvertiser": 500,
"monitorMode": true,
"emitChangesOnly": true,
"baselineOnly": true,
"monitorKey": "competitor-daily",
"stopConfirmationRuns": 2
}

baselineOnly only suppresses the first baseline for an empty advertiser state; later runs continue normally. If a baseline is incomplete, later unseen IDs are reported as NEWLY_OBSERVED_AD until a complete baseline has established the full public inventory.

Output

The dataset can contain:

  • ADVERTISER_RESOLUTION — candidates, scores, ambiguity, selected advertiser IDs
  • AD — structured public creative record
  • ADVERTISER_SUMMARY — deterministic creative/activity intelligence
  • CHANGE — monitoring events
  • ERROR — explicit reader-mode errors

Run-level diagnostics are written to RUN_SUMMARY in the default key-value store.

Important limitations

  • Google Ads Transparency is a public transparency surface, but the web RPC used by this Actor is not a documented stable Google API. Google can change response shapes or rate limits; the Actor fails explicitly rather than fabricating missing fields.
  • firstShown / lastShown are best-effort fields from the current public response shape and must be Cloud-validated against real live responses after each protocol change.
  • Ordinary commercial ads do not universally expose spend, impressions, audience targeting, conversion performance, or every landing URL. This Actor does not invent those metrics.
  • Destination URL, text decoding, media URLs, and dates can be absent depending on creative format and what Google exposes.
  • Optional media fingerprinting and landing-page auditing add network work and can be slower than creative-only collection.
  • Apify Proxy is enabled by default. Sticky proxy sessions are unique per Actor run, and the client rotates to a fresh proxy session when Google responds with google.com/sorry or HTTP 429. Users can still provide their own proxy configuration.
  • Transient HTTP transport/protocol failures (including incomplete chunked reads, proxy errors, connection/read/write errors, and timeouts) are normalized into retryable errors; Google session/RPC failures reinitialize the public session and rotate the proxy when available instead of crashing the Actor.
  • No CAPTCHA solving or authenticated/private Google account access is implemented. If all retry/proxy rotations remain blocked, the Actor reports GOOGLE_BLOCKED explicitly.

Security and reliability

  • bounded ads, targets, concurrency, response bytes, redirects, retries, and timeouts
  • private/local network blocking for public enrichment requests
  • redirect target revalidation
  • per-advertiser persistent KVS state
  • failure-state preservation
  • duplicate advertiser processing avoided within one run
  • no stop inference on incomplete crawls

Validation

The packaged release is subjected to unit/integration tests, JSON-schema/project validation, parser/HTML fuzzing, monitoring-state tests, public-network tests, and synthetic stress checks. Live Google RPC compatibility, Apify Proxy behavior, Cloud KVS persistence, real-world rate limits, throughput, and cost are deliberately left for the small Cloud validation gates because this environment has no outbound DNS access.

Pricing

The Actor is designed for Pay Per Event pricing with one simple primary custom event:

  • ad-processed$0.0008 per successfully processed creative ($0.80 / 1,000)
  • apify-actor-start — use Apify's synthetic start event at the default $0.00005 in Console

A creative is billable when its public Google creative record is successfully processed. Monitoring runs still charge for unchanged creatives because the Actor must fetch and compare them. Failed creative-detail fetches are not charged. Resolution, summaries, advertiser errors, and monitoring change rows do not create extra custom charges.

The billing guard checks the user's remaining PPE budget before starting an advertiser, caps work when needed, charges successful creatives individually, and keeps a paid prefix only if a concurrent/race condition exhausts the limit mid-run. Any billing-truncated monitoring crawl is treated as incomplete so unseen previous ads remain preserved and cannot become false AD_STOPPED events. Billing diagnostics are included in RUN_SUMMARY.

Cloud full-detail benchmark evidence from the validation advertiser:

CreativesDataset resultsRuntimeDisplayed platform cost
1011~6 s~$0.001
5051~18 s~$0.002
100101~38 s~$0.005

The displayed platform cost is rounded by Apify and is not a guarantee for other advertisers, regions, proxies, optional media downloads, or landing-page audits.