Scrape ad creatives from the Google Ads Transparency Center by advertiser domain or advertiser ID — creative, format, regions, first/last shown, landing URL — export to JSON or CSV. A Google Ads Transparency API alternative and data exporter. You pay only for ads that land.
All notable changes to this Actor will be documented in this file. The format
is loosely Keep a Changelog , and we
follow Semantic Versioning once we hit 1.0.
[0.2.0] — 2026-05-15
Fixed
Crash on Apify platform when proxy was configured. The session_id
template used a hyphen (gat-{uuid}), which Apify's proxy validator
rejects (regex ^[\w._~]+$ allows only [A-Za-z0-9_.~]). Switched
to underscore (gat_{uuid}). Local apify run never tripped this
because Actor.create_proxy_configuration() returns None without
Apify proxy credentials — the bug only surfaced in cloud runs.
Added regression test (test_proxy_session_id_matches_apify_regex)
that scans _resolve_proxy_url source for session_id=... literals
and asserts they satisfy Apify's regex.
Dataset schema validation failure on the platform. Fields
format_type, first_shown_ts, last_shown_ts, impressions,
preview_image_url, preview_content_js_url were declared as
single-type ("integer" / "string") but the parser returns
None for them when the RPC omits the value. Widened to
["integer", "null"] / ["string", "null"]. Local apify run
skipped this check; only the cloud dataset client enforces the
schema strictly.
[0.1.0] — 2026-05-15
Added
Initial release. Scrape Google Ads Transparency Center by brand domain
or advertiser ID via direct RPC replay (curl-cffi, Firefox 147
TLS+H2 fingerprint).
Batch input: multiple searchDomains + advertiserIds in a single run.
Apify Proxy integration with session-locked URLs for cookie continuity.
51 region locale labels (display-only metadata — see Limitations in README).
Pay-per-event pricing: $0.005 actor start + $0.0012 per ad scraped.
Parser tested against 4 golden fixtures (still image, rich video,
minimal, malformed) plus opt-in live smoke tests.
Known limitations
Region is metadata, not a server-side filter. Empirically verified —
see scripts/recon/FINDINGS.md.
Video / rich creatives expose only a content.js URL; rendering the
actual frame is out of scope.
No keyword / political-ad-specific modes yet — track via Apify Store
listing if you want them.