Google Ads Transparency Scraper $2/1K | Advertisers & Creatives avatar

Google Ads Transparency Scraper $2/1K | Advertisers & Creatives

Pricing

from $2.00 / 1,000 ad creatives

Go to Apify Store
Google Ads Transparency Scraper $2/1K | Advertisers & Creatives

Google Ads Transparency Scraper $2/1K | Advertisers & Creatives

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

21 days ago

Last modified

Features

Limited permissions

Share

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.

Advertiser and creative research from Google Transparency

Use this Google Ads Transparency scraper to export observed creatives for an explicit advertiser identity, a source domain filter or a reviewed name match. Agencies can prepare a competitor creative worksheet, researchers can inspect disclosed advertiser context, and teams can build a dated reference library. It does not provide a competitor's campaign account, spend, conversion metrics or complete targeting strategy.

Research workflowBest starting selectorWhat to preserve
Inspect a known source advertiseradvertiserIdsActual advertiserId and creativeId
Research ads associated with a domaindomainstargetDomain, resolutionMethod and actual advertiser
Resolve a business namesearchQueries with exact modeRESOLUTION candidates and match status
Build a small creative reference setOne selector with maxItems/maxTotalItemsPreview/source dates and missing optional fields
Continue an interrupted exportSUMMARY.nextInput unchangedDynamic ordering and partial coverage

Choose the selector that matches the question. A brand-like name is not ownership verification, and a domain can be advertised by multiple entities. Start with a confirmed advertiser ID and a few rows before exploring broader selectors.

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.

Bounded advertiser-research inputs

The advertiser ID below is the recorded Nike, Inc. source example. It is a precise source identity, not a guarantee that every creative field or preview will be available. Set a platform event-charge cap as well as item limits in your run client.

Two core creatives without optional detail requests

{
"advertiserIds": [
"AR16735076323512287233"
],
"maxItems": 2,
"maxTotalItems": 2,
"includeAdDetails": false,
"includeAdvertiserInfo": true,
"maxConcurrency": 1,
"maxRetries": 0,
"timeoutSecs": 120
}

This first request checks core creative identity/provenance with limited enrichment work. It does not promise full headline/copy, rich variations or independent verification of the advertised claims.

Inspect domain-associated creatives in one region

{
"domains": [
"nike.com"
],
"region": "US",
"maxItems": 3,
"maxTotalItems": 3,
"includeAdDetails": false,
"maxRetries": 0,
"timeoutSecs": 120
}

Google’s domain filter is an association, not a verified owner lookup. Keep each actual advertiserId. The region is a source filter identifier rather than a complete campaign-targeting disclosure.

Review an exact advertiser-name match

{
"searchQueries": [
"Nike, Inc."
],
"searchMatchMode": "exact",
"maxAdvertisersPerQuery": 1,
"maxItems": 2,
"maxTotalItems": 2,
"includeAdDetails": false,
"maxRetries": 0
}

Read RESOLUTION even when no creative row is returned. No exact name match is different from source denial. Do not substitute the largest or first similarly named advertiser and label it a verified brand match.

Project a small creative-reference export

{
"advertiserIds": [
"AR16735076323512287233"
],
"maxItems": 2,
"maxTotalItems": 2,
"includeAdDetails": false,
"outputFields": [
"creativeId",
"advertiserId",
"sourceUrl",
"format",
"previewUrl",
"firstShown",
"lastShown"
],
"maxRetries": 0
}

Identity/provenance fields are retained by the runtime. Optional absent fields can remain absent, not zero. A preview link can later expire; it is not a durable owned creative asset.

Turn source creatives into a useful reference library

Retain creativeId, advertiserId, sourceUrl, sourceMode, resolutionMethod and the collection date in your destination. The same domain or familiar advertiser name does not authenticate the underlying ad claim. A source verified-advertiser flag is source identity context, not a certification of domain ownership, product quality or a relationship between similarly named businesses.

Keep firstShown/lastShown as source observations. They do not establish continuous delivery, current activity, impressions or frequency. sourceAdCountRange is a disclosed range, not an exact total you must receive. A bounded export can contain only a small portion of an advertiser's visible creatives. Preview variants and optional overlays depend on the current source response and may be missing even on a useful core creative row.

Store rich nested fields as JSON when you need their structure; tabular formats serialize arrays/objects. If you download or retain a media reference, distinguish it from the source identity link and observe your own retention/access policy. The Actor does not grant permission to reuse advertising assets or publish someone else's campaign material.

When optional details fail, read detailsStatus, copySource and ERRORS. A valid core creative can still be paid. Missing text is not a prompt to infer ad copy, and arbitrary source numeric fields must not be repurposed as impressions or spend. IncludeDunsNumber adds an optional mapping request and does not create a universal business identity field.

Can I search every ad by a product keyword? searchQueries requests advertiser-name suggestions, not a full-text ad-copy search engine. Use an explicit ID or a reviewed domain/name selector for the intended scope.

Can I filter by date, platform or ad format? Those input filters are not supported in this release. Filter available source date/format observations after export, while retaining missing values. Unsupported legacy non-all settings fail explicitly rather than silently changing the question.

What does one result cost? One useful creative costs $0.002, plus startup $0.005 per GB with a one-event minimum. At 256 MB, two rows create $0.009 in event fees before separately paid platform/proxy usage. Item limits and the event cap can leave nextInput work; neither is an all-in platform-cost ceiling.

Does a source end mean a complete historical library? No. It means no unresolved continuation was observed within this run. Results can change, repeat or become unavailable. Retain coverageComplete, sourcePages, errors and stop reasons with the reference set.

Should an AI agent fill missing headline or targeting values? No. Keep absent optional fields absent and report the actual observed coverage. A successful tool call or a valid preview does not establish conversion performance, continuous ad delivery or account access.

How do I automate a follow-up? Poll the returned run, read SUMMARY/ERRORS/RESOLUTION and copy nextInput unchanged when needed. Existing community integrations below provide delivery paths, not extra source access or n8n Cloud verification. Do not repeatedly replay a known source refusal unchanged.

n8n and developer integrations

Use this Actor in your automation or application with the existing community integrations below. An Apify account and API token are required; Actor and platform charges follow the current pricing.

These are community packages. Publication on npm does not establish n8n verification or availability in n8n Cloud. Review the linked package README for supported inputs and setup.