Google Ads Transparency Scraper — Bulk CSV API
Pricing
from $2.00 / 1,000 ad creatives
Google Ads Transparency Scraper — Bulk CSV API
Collect supported Google Ads Transparency creatives by query, domain or advertiser, with coverage diagnostics. Bulk export: JSON, CSV, Excel and API. PPE: $2/1K ad creatives; start fee, usage extra.
Pricing
from $2.00 / 1,000 ad creatives
Rating
0.0
(0)
Developer
Apivault Labs
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Google Ads Transparency Scraper
Export source-returned advertising creatives from the Google Ads Transparency Center, by advertiser ID, domain filter or advertiser-name suggestions. Get creative identities, previews, source dates and optional advertiser/detail fields without a browser or a separate Google API key.
First run
{"advertiserIds": ["AR16735076323512287233"],"maxItems": 3}
This source ID is Nike, Inc. A creative row includes its actual source advertiser and creative IDs, source link and substantive preview/date/name metadata. Default maxItems is5 per selector, not10000. Start small; check SUMMARY and ERRORS before increasing limits.
Choose the source you mean
| Input | Actual behavior |
|---|---|
advertiserIds | Fetch creatives from the explicit source advertiser identity |
domains | Use Google's domain filter, then require source-returned matching targetDomain; multiple advertisers can advertise that domain |
searchQueries | Advertiser-name suggestions; exact normalized name match by default |
searchMatchMode: suggestions | Select the first source suggestions, limited by maxAdvertisersPerQuery; unverified brand association is marked |
Name search does not search every ad's copy, discover all advertisers for a product keyword, or independently verify ownership of a brand/domain. An ambiguous query such as nike can refer to another business. Default exact mode avoids choosing the candidate with the highest ad count. Inspect free RESOLUTION candidates and use a precise name, domain or advertiser ID.
Domain example:
{"domains": ["nike.com"],"region": "US","maxItems": 3}
Exact advertiser-name example:
{"searchQueries": ["Nike, Inc."],"searchMatchMode": "exact","maxAdvertisersPerQuery": 1,"maxItems": 2}
Legacy searchQuery accepts a string or string array and uses the same name-search semantics. An empty input returns0 rows. A valid query with no exact match returns0 rows and RESOLUTION candidates; this is different from an inaccessible source.
Inputs and limits
| Setting | Default and scope |
|---|---|
maxItems | 5 useful rows per advertiser/domain selector;1–10000 |
maxTotalItems | 10000 across the whole run;1–10000 |
maxAdvertisersPerQuery | 1 selected candidate per query;1–10 |
region | Empty/anywhere, supported country code, or numeric Google criterion ID |
includeAdDetails | true; optional lookup for preview variants/observed region criteria |
includeAdvertiserInfo | true; optional source identity/country/verification |
includeDunsNumber | false; downloads a public mapping table, matching entries are not universal |
outputFields | Empty means available fields; projection retains identity/provenance/source link |
maxConcurrency | 3 detail lookups;1–5 |
maxRetries | 1 retry for429/5xx/network failure;0–3 |
timeoutSecs | 540 best-effort processing seconds; platform timeout also applies |
proxyConfiguration | Apify residential by default; direct/custom proxy can be selected explicitly |
continuation | Copy the object from SUMMARY.nextInput unchanged |
Supported country codes: US, UK/GB, FR, DE, JP, CA, AU, IN, BR, IT, ES, NL, SE, NO, DK, FI, PL, RU, KR, MX, AR, CO, CL, PE, ZA, NG, EG, SA, AE, IL, TR, TH, VN, ID, PH, MY, SG, HK, TW, NZ, IE, AT, CH, BE, PT, CZ, RO, HU, GR, UA, LT, LV, EE, BG, HR, SK, SI. These are filter identifiers; source coverage is not guaranteed. Unknown codes fail instead of silently collecting worldwide.
There is no supported platform, date-window or ad-format input filter in this release. Non-all legacy platform/adFormat or non-all timePeriod inputs fail explicitly. Source dates can be filtered after export. Format is observed, not an input filtering promise.
Direct requests worked in small local probes but some cloud requests received HTTP302 instead of data. Apify residential is the default first-run route; its traffic costs extra. To try direct access, set proxyConfiguration to {"useApifyProxy":false}. Custom proxy/group settings are respected. Google access/rate limits vary; a proxy configuration failure is reported and does not silently fall back to a different route.
What a row means
| Fields | Meaning and availability |
|---|---|
creativeId, advertiserId, sourceUrl | Source creative identity and public Transparency link |
advertiserName, advertiserCountry, verifiedName, isVerified | Source identity fields; unknown verification stays unknown, not false |
format, sourceFormatCode | Static image, observed video, decoded text, rich or unknown; a rich preview can be shopping/text content |
previewUrl, imageUrl, dimensions | Source media links; preview links may expire or fail to render |
firstShown, lastShown, totalDaysShown | Source observations, not proof an ad runs continuously or is active now |
sourceAdCountRange | Source lower/upper count bounds, not an exact count or guaranteed export total |
targetDomain | Source domain filter association or supplied overlay domain, when present |
previewUrls, variations | Optional detail preview variants, capped at10 |
regionCriteriaIds, regions | Observed detail criterion IDs and recognized country-code mapping; not campaign targeting strategy |
headline, description, visibleUrl, sitelinks | Only when a supported preview overlay contains them; no guessed proto fields |
sellerRating, appExtension | Optional overlay observations, not universal creative fields |
adGroupId, googleAdsCustomerId, versionId | Preview metadata; customer ID is obfuscated, not account access |
dunsNumber | Optional matching public table entry |
sourceMode, resolutionMethod, detailsStatus, copySource | Source/provenance and optional-field status |
Each row carries sourceMode=google_transparency_rpc. Explicit advertiser IDs and domain-filter rows retain different resolutionMethod values. Suggestion matches are not independently verified brand ownership. detailsStatus=unavailable can accompany a valid paid core row: optional lookup failure does not erase useful core data.
No guaranteed field count, full ad copy for every creative, exact impressions, spend, conversions, account access, or campaign strategy is provided. Arbitrary numeric proto fields are not interpreted as impressions. Missing copy is missing; current rich previews may omit supported overlays entirely.
Coverage, failures and continuation
Only useful qualified source creative rows enter the Dataset. Errors, invalid identities and duplicate creatives are not paid result rows. Duplicate detection spans selectors in a run and the seenCreativeIds supplied with continuation.
- SUMMARY: deliveredDatasetCount, sourcePages, coverageComplete, error counts, limits and nextInput.
- ERRORS: free neutral stage/code diagnostics, including source blocking, lookup failures and repeated pagination.
- RESOLUTION: free query candidates, selected IDs and match mode.
- NEXT_INPUT: same continuation input as SUMMARY.nextInput, when work remains.
An unavailable listing source yields FAILED/0 results; useful rows followed by a source error yield partial coverage. Valid empty source results yield SUCCEEDED/0. Repeated tokens/pages stop rather than loop indefinitely. Optional enrichment failures are recorded while useful core rows remain chargeable.
Follow SUMMARY.nextInput for item/event-budget/time limits or retryable listing failures. It retains selector, source page token, within-page offset and already-delivered identities. Google results can change between requests: this is best-effort continuation, not a stable snapshot or a guarantee of a complete historical library. If the source ends without a token, coverageComplete means no unresolved work was observed in this run, not every ad ever served.
Pricing
$0.002 per useful creative ($2/1000), plus Actor Start $0.005 per GB, minimum one event. Platform compute and proxy traffic are paid separately by the user. For256MB a small run starts with one$0.005 event. Three creatives cost$0.011 in events before platform/proxy usage;100 creatives cost$0.205 under the same startup assumption.
Dataset rows are automatically charged once. Free diagnostics and candidate lists are stored in KV. The event budget (maxTotalChargeUsd in the Apify run API) limits charged Actor events and can leave pending work; it is not an all-inclusive cap on separate platform/proxy usage. The default residential proxy can be changed or disabled explicitly.
REST API
Start a run with a small input and explicit event cap:
curl -X POST 'https://api.apify.com/v2/acts/apivault_labs~google-ads-transparency-scraper/runs?maxTotalChargeUsd=0.05&timeout=240&memory=256' \-H "Authorization: Bearer $APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"advertiserIds":["AR16735076323512287233"],"maxItems":3}'
Poll /v2/actor-runs/RUN_ID, read /v2/datasets/DATASET_ID/items?clean=true and KV records at /v2/key-value-stores/STORE_ID/records/SUMMARY and /records/ERRORS. Export Dataset as JSON, CSV or XLSX. Arrays/objects remain structured in JSON and are serialized in tabular exports.
MCP and agent instructions
Use the Apify MCP server with Actor tool apivault_labs--google-ads-transparency-scraper. Call it with the same input, then read the returned run's Dataset and SUMMARY/ERRORS/RESOLUTION using the server's storage tools.
For agents: prefer a domain or confirmed advertiser ID; start with1–3 creatives. Name suggestions require identity review. Always inspect coverageComplete, detailsStatus and ERRORS before interpreting a successful run. Never infer missing copy, exact ad counts, impressions, spend, continuous activity or brand ownership. A populated core row with unavailable details is paid. Reuse nextInput within your chosen event/usage budget; avoid repeated identical blocked calls without changing the route or waiting for source recovery.
Source and performance
The Actor uses Google's public, undocumented Transparency RPC and bounded local preview-overlay decoding. Source schema, anti-bot controls and signed previews can change. No browser rendering or login is used; source data is not independently audited. Small live runs and multi-page pagination are checked during release, but maximum10000 is an input limit, not a tested throughput/SLA claim. Optional details add requests; omitting them can reduce time and usage.