Google Ads Transparency Center Scraper avatar

Google Ads Transparency Center Scraper

Pricing

$1.00 / 1,000 result items

Go to Apify Store
Google Ads Transparency Center Scraper

Google Ads Transparency Center Scraper

Scrape Google Ads Transparency Center ads by domain or advertiser across 237 regions. Filter text, image, and video creatives on YouTube, Search, Display, Shopping, Maps, and Play.

Pricing

$1.00 / 1,000 result items

Rating

0.0

(0)

Developer

kane liu

kane liu

Maintained by Community

Actor stats

1

Bookmarked

6

Total users

2

Monthly active users

19 hours ago

Last modified

Share

Scrape Google Ads Transparency Center creatives by domain or advertiser and export structured ad transparency data for competitor research, brand monitoring, and market analysis.

This Actor turns the public Google Ads Transparency Center into a schedulable dataset. Search by domain or advertiser, filter by creative format and Google platform, choose any supported region (or anywhere), and download advertiser, creative, preview, and destination fields as JSON, CSV, Excel, or XML.


Need a dedicated scraper for one website?

This Actor is the general tool for protected public pages. If you already have one specific site and a field list, a dedicated scraper is faster and more stable: listing + detail, your export format, delivered to your Apify account or as a standalone runnable client.

I confirm the tier before you pay. The clock starts after that confirmation.

Start here: Submit a custom scraper request

Starter $50Dedicated $100Hard target $200–999
Site1 simple anti-bot public site1 medium anti-bot public siteCloudflare / aggressive anti-bot / custom parser
ScopeFull listing + detail fieldsListing + detail + pagination, your field listAgreed fields, repeatable runs
DeliveryCSV/JSON · Apify Actor or standalone runnable client (script/CLI)Same, plus a sample run and short instructionsFeasibility first, then build
Time24 hours after we confirm the URL is in scope48 hours after confirmationQuoted after feasibility
Fixes30 days for small public-layout changes30 daysScoped in the quote

Hard-target sites are not a 100% uptime promise. You get a dedicated parser that can be re-run on the agreed fields. If the URL is not feasible, you get a refund or pay an assessment fee only — you will know before the build starts.

Not in Starter/Dedicated: login-walled data, native APK / Windows installer / full web apps, or two-year maintenance. Those are a separate quote.


What this Google Ads Transparency Center scraper does

  • Search Google Ads Transparency Center by domain or advertiser
  • Process one or more targets in a single run
  • Cover anywhere plus 237 country/territory regions
  • Filter creative formats: text, image, video (or all)
  • Filter platforms: YouTube, Search, Display, Shopping, Maps, Play (or all)
  • Paginate SearchCreatives results with maxPagesPerTarget
  • Collect advertiser IDs/names, creative IDs, format labels, preview URLs, detail URLs, first/last shown dates, and destination fields when available
  • Optionally enrich rows with creative details and best-effort variant content parsing
  • Write a RUN_SUMMARY with proxy, pagination, warning, and pay-per-event charge metadata

What data you can extract

Each dataset item is one creative-level row from Google Ads Transparency Center, including fields such as:

  • advertiserId, advertiserName, advertiserCountryRaw
  • creativeId, detailUrl, previewUrl, dedupeKey
  • formatCode, formatLabel
  • firstShownRaw, lastShownRaw
  • headline, description, destinationUrl, visibleUrl, redirectUrl
  • videoId, channelName, channelIcon
  • region, searchMode, searchValue, targetLabel
  • platforms, creativeFormats
  • warnings, scrapedAt

Optional raw RPC fragments are available when includeRawJson=true:

  • rawSearchCreativesJson
  • rawCreativeJson
  • rawAdvertiserJson

Lead and contact fields

Every Dataset row includes the same lead shape. Google Ads Transparency Center is primarily an advertiser-identity and creative-destination source, not a business directory, so empty contact fields stay explicit and leadAbsences explains why they are empty.

FieldTypeGoogle Ads Transparency Center meaning and source
phones[{value, type, e164?}]Advertiser phone numbers attributable to the opened advertiser or creative surfaces. No visible phone, tel: value, or phone reveal control was present in the measured VN/DE surfaces, so current rows use [] with an honest absence reason.
emails[{value, type}]Advertiser contact emails. No visible email, mailto: value, or email reveal control was present in the measured surfaces.
address{street, unit, locality, region, postalCode, country, full}Advertiser postal address. unit means the street or door number. Current opened surfaces did not provide a postal address, and an advertiser regulatory country such as Vietnam is not copied into this object.
geo{lat, lng} | nullCoordinates that supplement, rather than replace, a postal address. Current advertiser and creative surfaces did not provide address coordinates.
person{name, role?} | nullA named individual advertiser contact. Current measured surfaces exposed organizations, not individual contacts.
org{name, id?, country?} | nullAdvertiser identity from Search rows and the optional advertiser lookup. Examples include CÔNG TY TNHH TI KI and Zalando SE, with the AR... advertiser ID. org.country is a regulatory identity field, not a street address.
web{website, socials[], destinationUrl?, visibleDomain?, redirectUrl?}The final advertiser landing page decoded from a creative preview payload, plus advertiser-owned social links when present. The Google click URL is kept as redirectUrl; it never replaces the final website.
leadSourcesearch | detail | entity | contact | reveal-xhrSurface that produced the lead. Organization-only rows use entity or detail; a decoded creative destination uses reveal-xhr.
leadRevealvisible | click | xhr | gated | image | absentHow the lead became available. Advertiser identity is visible in Search/detail data; final destinations come from preview XHR content.
leadAbsencesobject/mapPer-field reasons such as 本站无 for a measured surface-wide absence or 未验证 when an optional lookup or preview failed for that item.

Reveal and enrichment cost

There is no measured “show phone”, “show email”, or “show address” control, so the Actor does not spend a click or reveal XHR on those fields.

With enrichDetails=true (the default), each creative retained by the Search result limit can add a creative-detail RPC and a preview payload request. The worker also makes a best-effort advertiser lookup, cached by advertiser ID within the run. More pages and a higher maxCreativesPerTarget therefore increase run time, proxy traffic, and exposure to upstream rate limits. Search applies the requested result limit before this per-row enrichment, so this Actor does not enrich a larger hidden candidate pool and then discard it during final truncation.

Preview parsing decodes the final adurl from public creative content. The worker does not open or crawl the advertiser landing page itself. If creative detail, advertiser lookup, or preview parsing fails and strictErrors=false, the row remains usable with a warning and an item-level leadAbsences reason.

Honest lead limitations

  • The accepted Actor Dataset contains advertiser organization identity, but its two sampled Zalando rows did not obtain a final preview landing page. Those rows correctly use web.website=null and leadAbsences.website=未验证.
  • A separate bounded live worker check proved final landing extraction with a Tiki creative. Availability still varies by creative format and preview payload.
  • The optional GetAdvertiserById lookup can return invalid or empty JSON. Search-derived advertiser name and ID remain valid, while org.country stays null and leadAbsences.orgCountry records that it was not verified.
  • phones, emails, postal address, geo, person, and advertiser-owned web.socials were absent on the measured opened advertiser/creative surfaces. The Actor does not infer them from IDs, ad counts, dates, platform chrome, or the destination domain.
  • The input region is a Transparency Center collection filter. It is not a proxy country, a postal region, or evidence for address.country.
  • An advertiser country such as Vietnam belongs to org.country. It must not be presented as address.full, address.street, or address.unit.
  • Google may change numeric-key RPC shapes, signed preview URLs, or available creative material. Optional enrichment failures can therefore produce partial lead values without making the Search identity row false.

More Actors like this

Need Meta / TikTok ad libraries or another vertical? Use a dedicated Actor below for structured fields. Stay on this Actor for Google Ads Transparency Center domain / advertiser creative lookups (regional filters, formats, platforms).

Ads Intelligence (closest matches)

Social & short-form video

Prefer a dedicated site scraper?

If your target has a specialized Actor below, use that first — usually cheaper and more structured than a generic scrape.

E-commerce

Jobs & Freelance

Real Estate

Travel & Stays

Local & Maps

General tools

→ See the full catalog in Related Actors below, or browse apify.com/lentic_clockss.


How to scrape Google Ads Transparency Center ads

  1. Open the Actor and click Try for free.
  2. Keep runMode as real for live Transparency Center data (fixture is only for smoke tests).
  3. Set region to a country code such as US, VN, DE, or use anywhere.
  4. Add one or more targets with searchMode = domain or advertiser.
  5. Optionally filter with creativeFormats and platforms.
  6. Start with a low maxCreativesPerTarget and maxPagesPerTarget.
  7. Run the Actor and export the dataset.

Example: domain monitoring

{
"runMode": "real",
"region": "US",
"targets": [
{
"searchMode": "domain",
"searchValue": "nike.com",
"targetLabel": "Nike domain"
}
],
"creativeFormats": ["video"],
"platforms": ["youtube"],
"maxCreativesPerTarget": 20,
"maxPagesPerTarget": 2,
"includeCreativeDetails": true,
"includeVariantContent": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

Example: multi-target advertiser research

{
"runMode": "real",
"region": "anywhere",
"targets": [
{
"searchMode": "advertiser",
"searchValue": "Nike",
"targetLabel": "Nike advertiser"
},
{
"searchMode": "domain",
"searchValue": "adidas.com",
"targetLabel": "Adidas domain"
}
],
"creativeFormats": ["text", "image", "video"],
"platforms": ["search", "display", "youtube"],
"maxCreativesPerTarget": 30,
"maxPagesPerTarget": 3
}

Example output item

{
"runId": "abc123",
"region": "US",
"searchMode": "domain",
"searchValue": "nike.com",
"targetLabel": "Nike domain",
"platforms": ["youtube"],
"creativeFormats": ["video"],
"advertiserId": "AR03132760982632267777",
"advertiserName": "Nike, Inc.",
"creativeId": "CR17251863590479069185",
"detailUrl": "https://adstransparency.google.com/advertiser/AR03132760982632267777/creative/CR17251863590479069185",
"formatCode": 3,
"formatLabel": "video",
"previewUrl": "https://adstransparency.google.com/...",
"firstShownRaw": "2026-06-01",
"lastShownRaw": "2026-07-01",
"headline": null,
"destinationUrl": null,
"warnings": [],
"scrapedAt": "2026-07-22T02:42:00Z"
}

Input

FieldTypeDefaultDescription
runModestringrealreal for live Google Ads Transparency Center requests; fixture for deterministic smoke tests.
regionstringVNanywhere or one of 237 supported country/territory codes.
targetsarrayrequiredOne or more search targets. Every target is processed in order.
targets[].searchModestringrequireddomain or advertiser.
targets[].searchValuestringrequiredDomain or advertiser value sent to Transparency Center.
targets[].targetLabelstringoptionalReporting label copied into output rows.
creativeFormatsarrayallLeave empty for all, or choose text, image, video.
platformsarrayallLeave empty for all, or choose youtube, search, display, shopping, maps, play.
maxCreativesPerTargetinteger30Max creatives emitted per target across pages (up to 1000).
maxPagesPerTargetinteger5Max SearchCreatives pages per target (~40 creatives/page).
includeCreativeDetailsbooleantrueFetch and merge GetCreativeById detail payloads.
includeVariantContentbooleantrueFetch and parse variant/preview content when available.
includeRawJsonbooleanfalsePreserve raw search/creative/advertiser RPC fragments on each item.
strictErrorsbooleanfalseFail the run on enrichment errors instead of continuing with warnings.
proxyConfigurationobjectApify ProxyPrefer residential proxy routed to the same market as region.
sessionobjectoptionalOptional cookies, headers, or user agent for live requests.
rpcPaths / rpcIdsobjectoptionalOptional RPC path overrides (rpcIds is an alias).
debugbooleanfalseExtra debug logging and optional DEBUG_ARTIFACTS.
keepDebugArtifactsbooleanfalseKeep debug artifacts in the key-value store.

Output and RUN_SUMMARY

Dataset rows are creative-level records ready for export or automation.

The Actor also writes RUN_SUMMARY with:

  • items written and targets processed
  • region, formats, platforms
  • pages fetched and warning counts
  • proxy selection metadata
  • pay-per-event charge status (result-item)

Pricing

This Actor uses pay per event pricing.

  • Event: result-item
  • Charge: $0.001 per final dataset item successfully written
  • You are charged once per emitted creative row
  • Platform usage (compute/proxy/storage) is billed according to your Apify account and Actor publication settings

Start with a small maxCreativesPerTarget to estimate cost before larger pulls.

Proxy recommendations

For live runs, use Apify Proxy with residential IPs and match apifyProxyCountry to the market you care about:

{
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

Standby / Live View endpoints

This Actor supports Standby mode with:

  • GET / and GET /health
  • GET /input-example
  • GET /openapi.json
  • POST /search
  • POST /run

Use runMode: "fixture" only for deterministic low-cost validation. For live data, keep runMode: "real" and bound volume with maxCreativesPerTarget.

Data source and limits

Data source:

https://adstransparency.google.com

Important limits:

  • Google can change Transparency Center endpoints, payloads, or anti-bot behavior.
  • Region filters depend on Transparency Center geo collection IDs; some markets may return sparse or empty results.
  • Platform/format filters narrow results, but Google-side availability still controls what is returned.
  • Pagination helps collect more creatives, but large advertisers can exceed practical page budgets.
  • Variant parsing is best-effort and depends on preview/detail payloads.
  • This Actor does not return private Google Ads account data, spend, conversions, or targeting settings.

FAQ

Does this scrape all countries?

Yes for Transparency Center coverage used by this Actor: choose anywhere or any of the 237 mapped country/territory codes.

Can I filter by ad format and platform?

Yes. Use creativeFormats for text / image / video, and platforms for youtube / search / display / shopping / maps / play. Leave either filter empty to include all.

Is fixture mode required?

No. Default runMode is real. Use fixture only for schema/smoke validation.

How am I charged?

One result-item event per final dataset item written, at $0.001 per item.

Developer usage

Apify API

curl "https://api.apify.com/v2/acts/lentic_clockss~google-ads-transparency-center-vn/runs?token=YOUR_TOKEN" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"runMode": "real",
"region": "US",
"targets": [{"searchMode": "domain", "searchValue": "nike.com"}],
"creativeFormats": ["text", "image", "video"],
"platforms": ["youtube", "search", "display"],
"maxCreativesPerTarget": 10,
"maxPagesPerTarget": 2
}'

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("lentic_clockss/google-ads-transparency-center-vn").call(
run_input={
"runMode": "real",
"region": "anywhere",
"targets": [
{"searchMode": "domain", "searchValue": "nike.com", "targetLabel": "Nike"}
],
"creativeFormats": ["video"],
"platforms": ["youtube"],
"maxCreativesPerTarget": 10,
}
)
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
print(items[:2])

MCP / AI assistants

Actor ID:

lentic_clockss/google-ads-transparency-center-vn

Summary

Use this Actor when you need a Google Ads Transparency Center scraper for domain or advertiser lookups, regional comparisons, format/platform filters, and structured creative-level exports for analytics, compliance review, and automation.

All 77 public Actors from [lentic_clockss]. Click a name to open the Store detail page.

Jobs & Freelance

Real Estate

E-commerce

Travel & Stays

Social & Content

Ads Intelligence

Local & Maps

General Tools

→ Browse the full profile: apify.com/lentic_clockss