Google Ads Transparency Scraper + Creative Monitor
Pricing
from $0.80 / 1,000 google ad processeds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
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:
- Discovery — resolve keywords, domains, direct AR advertiser IDs, or full Ads Transparency URLs and collect public creatives.
- 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.
- 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 baselineNEWLY_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 IDsAD— structured public creative recordADVERTISER_SUMMARY— deterministic creative/activity intelligenceCHANGE— monitoring eventsERROR— 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/lastShownare 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/sorryor 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_BLOCKEDexplicitly.
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:
| Creatives | Dataset results | Runtime | Displayed platform cost |
|---|---|---|---|
| 10 | 11 | ~6 s | ~$0.001 |
| 50 | 51 | ~18 s | ~$0.002 |
| 100 | 101 | ~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.