Google Ads Transparency Scraper avatar

Google Ads Transparency Scraper

Pricing

from $1.50 / 1,000 ad creative scrapeds

Go to Apify Store
Google Ads Transparency Scraper

Google Ads Transparency Scraper

Scrape Google Ads Transparency Center ads by advertiser name, domain or ID: creatives, ad text, image/video URLs, first/last shown, regions, impressions, topic. No login.

Pricing

from $1.50 / 1,000 ad creative scrapeds

Rating

0.0

(0)

Developer

Romas Jurevicius

Romas Jurevicius

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Share

Google Ads Transparency Scraper exports ads from the Google Ads Transparency Center as clean JSON. Give it an advertiser name, a website domain or an advertiser ID (AR...) and it returns one record per ad creative: the advertiser and whether Google verified its identity, the ad format (text, image, video), the preview, image and YouTube URLs, the ad text where Google renders it, the landing domain, first and last shown dates, every region the ad ran in, impression ranges where Google publishes them, the topic Google labelled the ad with, and a link back to the ad's Transparency Center page. No Google account, cookie or API key is needed.

Typical uses: competitor ad research (what is Walmart, Nike or your rival running on Search, Shopping and YouTube right now), creative inspiration libraries, monitoring brand impersonation (who else points ads at your domain), agency reporting, ad-spend estimation from impression ranges in the EU, and feeding AI agents that analyze ad copy.

How to scrape the Google Ads Transparency Center

  1. Open the Actor in Apify Console and click Try for free.
  2. Add Advertisers, one per line. Each entry can be:
    • a website domain such as walmart.com (or a full URL) - every ad that lands on that site, from all advertiser accounts. This is the most complete option for big brands, which often run several accounts.
    • an advertiser ID such as AR07091023166411112449, or an adstransparency.google.com/advertiser/... URL.
    • an advertiser name such as Walmart Inc. - matched against the Center's own advertiser search; all accounts with exactly that name are included.
  3. Pick Regions (ISO codes, default US; anywhere for no filter), optionally Shown from / until dates and an Ad format.
  4. Set Max creatives per advertiser (default 20) and turn on Include creative details for regions, impressions, topic and ad text (off by default for speed).
  5. Click Start. Results land in the Output tab and can be downloaded as JSON, CSV or Excel or read through the API.

How it works

The Actor talks to the same JSON endpoints the Transparency Center web app uses, over plain HTTPS (no headless browser, so runs are fast and cheap): SearchService/SearchSuggestions to match advertiser names, LookupService/GetAdvertiserById for verification status and country, SearchService/SearchCreatives for the paginated ad list (up to 100 per page, filtered by region, date range and format), and LookupService/GetCreativeById for the per-creative detail page. Ad text, product images and YouTube IDs are read from Google's own ad preview script. Requests go through Apify Proxy with a concurrency cap and retries on rate limits.

Pay per event, no subscription:

  • Ad creative scraped: $0.002 per creative ($2 per 1,000 ads), with or without creative details.
  • Advertiser lookup: $0.001 per Advertisers entry that resolved to an advertiser or a domain search.
  • Actor start: Apify's small synthetic start fee.

Entries that match nothing produce a free not_found record. The default run (one domain, 20 ads) costs about $0.04; 1,000 ads cost about $2. Set Maximum cost per run to cap spending; the Actor stops cleanly at the limit and keeps everything scraped so far.

Input example

{
"advertisers": ["walmart.com", "AR07828854790737100801", "Nike, Inc."],
"regions": ["US", "GB"],
"dateFrom": "2026-09-01",
"dateTo": "2026-10-12",
"format": "all",
"maxCreativesPerAdvertiser": 200,
"includeCreativeDetails": true,
"proxyConfiguration": { "useApifyProxy": true }
}
FieldTypeDefaultDescription
advertisersarray of strings["walmart.com"]Domains, advertiser IDs, Transparency Center URLs or advertiser names.
regionsarray of ISO codes["US"]Ads shown in any of these countries; anywhere disables the filter.
dateFrom / dateToYYYY-MM-DDnoneAds shown at some point in this window (inclusive).
formatall / text / image / videoallGoogle's format classification.
maxCreativesPerAdvertiserinteger20Cap per Advertisers entry (max 10,000). Most recently shown ads come first.
includeCreativeDetailsbooleanfalseRegions, per-region dates and impressions, topic, audience flags, ad text, video ID.
proxyConfigurationobjectApify ProxyStandard Apify proxy settings.

Output example

One record per creative (captured 2026-10-12, trimmed):

{
"recordType": "creative",
"query": "AR07828854790737100801",
"queryType": "advertiserId",
"advertiserId": "AR07828854790737100801",
"advertiserName": "Eastern RED Tech Limited",
"advertiserVerified": true,
"advertiserCountry": "HK",
"creativeId": "CR05831720218145062913",
"format": "text",
"previewUrl": null,
"imageUrl": "https://tpc.googlesyndication.com/archive/simgad/9066546823614426027",
"html5Url": "https://tpc.googlesyndication.com/archive/sadbundle/$csp%3Darchive$/10475215587204032752/index.html",
"videoUrl": null,
"adText": null,
"landingDomain": null,
"firstShown": "2025-01-22T11:21:12.487Z",
"lastShown": "2026-10-12T07:33:51.268Z",
"daysShown": 610,
"searchedRegions": [],
"regions": [
{ "region": "FR", "criterionId": 2250, "firstShown": "2025-03-17", "lastShown": "2026-03-05",
"impressionsMin": 0, "impressionsMax": 1000,
"impressionsByPlatform": [{ "platform": "Google Search", "impressionsMin": 0, "impressionsMax": 1000 }] }
],
"regionCount": 75,
"impressionsMin": 600000,
"impressionsMax": 700000,
"impressionsSince": "2025-03-01",
"topic": "Internet & Telecom",
"audienceSelection": { "demographics": { "included": true, "excluded": true }, "geographicLocations": { "included": true, "excluded": true }, "contextualSignals": { "included": true, "excluded": true } },
"variationCount": 1,
"detailsFetched": true,
"transparencyUrl": "https://adstransparency.google.com/advertiser/AR07828854790737100801/creative/CR05831720218145062913?region=anywhere",
"scrapedAt": "2026-10-12T08:49:15.389Z"
}

Field notes:

  • adText comes from Google's ad preview: Search ads give advertiser, headline and description lines, Shopping ads the product title and merchant, Maps ads the business lines. Many Search ads are archived only as a screenshot (imageUrl on tpc.googlesyndication.com/archive/simgad/...); those have no machine-readable text and adText is null.
  • landingDomain is exact for domain searches; for ID and name searches it is the display domain read from the preview, when there is one.
  • Impressions and topic are only published by Google for some regions, mainly EU/EEA countries (Digital Services Act) and political ads. US commercial ads show region and last-shown date only. Ranges are Google's buckets (0 - 1K, 10K - 15K, ...).
  • daysShown is the Center's per-creative day counter as returned by its listing endpoint.
  • audienceSelection mirrors the Center's "Audience selection" panel: whether demographic, location and contextual criteria were included and/or excluded.
  • Per-advertiser summaries (resolved accounts, verification, approximate total ads) are saved in the ADVERTISERS key-value record. Entries that matched nothing, matched no ads or failed are also pushed to the dataset as free recordType: "advertiser" records with a status and a message.

Integrations

  • API: run with the Apify API or the JavaScript/Python clients; run-sync-get-dataset-items returns the ads in one call.
  • MCP / AI agents: available through the Apify MCP server at https://mcp.apify.com, so Claude, ChatGPT, Cursor or any MCP client can call it with the same input.
  • n8n, Make, Zapier: use the Apify node, pass the input JSON and map the dataset items.
  • Schedules and webhooks: run weekly per competitor and push new creatives to Slack, Google Sheets or a database.

Limitations

  • Only data the Transparency Center shows publicly is returned. Spend, clicks, targeting details and exact impressions are not published by Google.
  • Advertiser-name matching uses Google's suggestion list (top 10). Brands with many similarly named accounts are best searched by domain or ID.
  • The date filter selects ads shown at some point in the window; firstShown / lastShown remain the ad's overall dates.
  • Policy-removal notices are not mapped to fields yet.
  • The endpoints are internal to Google's web app and can change without notice; the Actor is tested against captured responses and reports failures as error records instead of returning bad data.

Do I need a Google account or API key?

No. The Transparency Center is public and the Actor uses only its unauthenticated endpoints.

Why is adText empty for some ads?

Google archives many Search text ads as screenshots. The image URL is returned, but there is no text to read without OCR. Shopping, Maps, video and many Search ads have a rendered preview and do return text.

How do I get every ad for a brand?

Search by domain (nike.com). It covers every advertiser account whose ads land on that site, including resellers and agencies, and each record names the account that ran it.

Can I get impression numbers for US ads?

Not for commercial ads: Google only publishes impression ranges for EU/EEA regions and for political ads. Set regions to EU countries (DE, FR, IT) to see them.

How many ads can one run return?

Up to 10,000 per Advertisers entry. The default 20-ad run without details finishes in seconds; with creative details on, expect roughly two minutes per 50 ads.

Same author, same pay-per-event model, no login:

This Actor only reads information Google publishes on the public Ads Transparency Center for transparency purposes; it does not log in, bypass access controls or collect personal data of end users. Ad creatives are the property of their advertisers, and the Center is subject to Google's Terms of Service. You are responsible for how you use the data, including copyright in ad creatives, data-protection law and any rules on redistribution. Read Apify's article on the legality of web scraping if unsure. This Actor is independent and not affiliated with or endorsed by Google.

Support

Missing a field, wrong parsing, or need political-ad or platform filters? Open an issue on the Actor's Issues tab with the input JSON and the creative ID; fixes usually ship within days.