Google Ads Transparency Scraper — Bulk CSV API avatar

Google Ads Transparency Scraper — Bulk CSV API

Pricing

from $2.00 / 1,000 ad creatives

Go to Apify Store
Google Ads Transparency Scraper — Bulk CSV API

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

Apivault Labs

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

4 days ago

Last modified

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

InputActual behavior
advertiserIdsFetch creatives from the explicit source advertiser identity
domainsUse Google's domain filter, then require source-returned matching targetDomain; multiple advertisers can advertise that domain
searchQueriesAdvertiser-name suggestions; exact normalized name match by default
searchMatchMode: suggestionsSelect 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

SettingDefault and scope
maxItems5 useful rows per advertiser/domain selector;1–10000
maxTotalItems10000 across the whole run;1–10000
maxAdvertisersPerQuery1 selected candidate per query;1–10
regionEmpty/anywhere, supported country code, or numeric Google criterion ID
includeAdDetailstrue; optional lookup for preview variants/observed region criteria
includeAdvertiserInfotrue; optional source identity/country/verification
includeDunsNumberfalse; downloads a public mapping table, matching entries are not universal
outputFieldsEmpty means available fields; projection retains identity/provenance/source link
maxConcurrency3 detail lookups;1–5
maxRetries1 retry for429/5xx/network failure;0–3
timeoutSecs540 best-effort processing seconds; platform timeout also applies
proxyConfigurationApify residential by default; direct/custom proxy can be selected explicitly
continuationCopy 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

FieldsMeaning and availability
creativeId, advertiserId, sourceUrlSource creative identity and public Transparency link
advertiserName, advertiserCountry, verifiedName, isVerifiedSource identity fields; unknown verification stays unknown, not false
format, sourceFormatCodeStatic image, observed video, decoded text, rich or unknown; a rich preview can be shopping/text content
previewUrl, imageUrl, dimensionsSource media links; preview links may expire or fail to render
firstShown, lastShown, totalDaysShownSource observations, not proof an ad runs continuously or is active now
sourceAdCountRangeSource lower/upper count bounds, not an exact count or guaranteed export total
targetDomainSource domain filter association or supplied overlay domain, when present
previewUrls, variationsOptional detail preview variants, capped at10
regionCriteriaIds, regionsObserved detail criterion IDs and recognized country-code mapping; not campaign targeting strategy
headline, description, visibleUrl, sitelinksOnly when a supported preview overlay contains them; no guessed proto fields
sellerRating, appExtensionOptional overlay observations, not universal creative fields
adGroupId, googleAdsCustomerId, versionIdPreview metadata; customer ID is obfuscated, not account access
dunsNumberOptional matching public table entry
sourceMode, resolutionMethod, detailsStatus, copySourceSource/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.