Google Ads Transparency Center Scraper — Ads by Advertiser avatar

Google Ads Transparency Center Scraper — Ads by Advertiser

Pricing

from $1.40 / 1,000 ads

Go to Apify Store
Google Ads Transparency Center Scraper — Ads by Advertiser

Google Ads Transparency Center Scraper — Ads by Advertiser

Extract ads from Google's Ads Transparency Center for any advertiser or domain: ad ID, format (text/image/video), first/last shown, preview and image URLs, region, and optional EU impression ranges, platforms, topic and audience selection. Filter by country, format, platform, date and political ads.

Pricing

from $1.40 / 1,000 ads

Rating

0.0

(0)

Developer

Sergey Lutsak

Sergey Lutsak

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Google Ads Transparency Center Scraper — Ads by Advertiser or Domain

Extract every ad an advertiser runs on Google — Search, YouTube, Display, Maps, Play and Shopping — from the official Google Ads Transparency Center, as clean JSON. Search by advertiser name, advertiser ID, website domain or a Transparency Center URL; filter by country, format (text / image / video), platform, date range and political ads. Optionally pull each ad's detail record with EU impression ranges per country and platform, topic and audience-selection signals. No login, no browser: fast and cheap.

Use cases

  • Competitive intelligence — see which creatives a competitor is running right now, how long each has been live (days_shown) and where (regions, platforms).
  • Ad-creative research & swipe files — collect image, text and video ads with preview links for a whole industry (search by domain: nike.com, booking.com, …).
  • Agencies & brand monitoring — track a client's or partner's ad footprint over time and by market on a schedule.
  • EU DSA / political-ad research — impression ranges per EU country and platform, topic labels and audience-selection categories for any ad shown in the EU; political-ads mode for election monitoring.
  • AI agents & datasets — a stable, documented JSON contract for LLM pipelines and analytics.

Input

FieldTypeDefaultDescription
queriesarray of strings—Advertiser names (Nike, Inc.), advertiser IDs (AR16735076323512287233), domains (nike.com) or Transparency Center URLs. A name is resolved to the best-matching advertiser: exact name first, otherwise the one with the most ads
maxItemsinteger100Cap on ads per query — you are charged only for ads actually returned
regionstringanywhereISO 3166-1 alpha-2 country code (US, GB, DE, PL, IN, BR, …) or anywhere
formatany / text / image / videoanyAd format
platformany / search / youtube / maps / play / shoppinganyPlatform. Google tags platforms only for ads shown since Sep 4, 2023
topicall / politicalallPolitical ads only
dateFrom, dateToYYYY-MM-DD—Only ads shown within the range (Pacific Time, as in the Center)
includeDetailsbooleanfalseFetch the detail record per ad (variations, topic, audience selection, per-country impressions & platforms). One extra request per ad
proxyobjectApify datacenter proxyProxy configuration
{
"queries": ["nike.com", "AR16735076323512287233", "Booking.com"],
"maxItems": 200,
"region": "DE",
"format": "video",
"platform": "youtube",
"includeDetails": true
}

Output (one item = one ad)

{
"id": "CR01003845904182018049",
"url": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR01003845904182018049?region=PL",
"advertiser_id": "AR16735076323512287233",
"advertiser_name": "Nike, Inc.",
"advertiser_domain": "nike.com", // only for domain queries
"format": "IMAGE", // TEXT | IMAGE | VIDEO
"first_shown": "2021-10-25T07:00:00Z",
"last_shown": "2026-09-29T11:53:01Z",
"days_shown": 1801, // Google's count of days the ad had impressions
"preview_url": "https://displayads-formats.googleusercontent.com/ads/preview/content.js?client=ads-integrity-transparency&…",
"image_url": "https://tpc.googlesyndication.com/archive/simgad/11154944259192068658", // archived image, when Google serves one
"preview_html": "<img src=\"https://tpc.googlesyndication.com/archive/simgad/…\" height=\"219\" width=\"380\">",
"region": "PL",
"query": "AR16735076323512287233",
// with includeDetails = true:
"variations_count": 3,
"variations": [{ "preview_url": "…", "image_url": null, "preview_html": null }],
"topic": { "id": 166, "name": "Apparel & Accessories", "source": "advertiser" }, // source: advertiser | google
"audience_selection": { "demographic_info": "included", "geographic_locations": "included", "contextual_signals": "not_used" },
"regions": [
{ "region": "DE", "region_id": 2276, "impressions_min": 1000, "impressions_max": 2000,
"first_shown": null, "shown_since": "2023-03-06", "last_shown": "2024-08-27",
"platforms": [{ "platform": "SHOPPING", "impressions_min": 1000, "impressions_max": 2000 }] }
],
"eu_summary": { "impressions_min": 3000, "impressions_max": 4000, "shown_since": "2023-03-01", "last_shown": "2024-08-27", "platforms": [] }
}

Notes:

  • preview_url is Google's rendered preview (a content.js loader used by the Transparency Center itself; open the url to view the ad). image_url is present when Google serves an archived screenshot instead of a rendered preview (typical for text/Shopping ads).
  • Impression ranges and platforms are published by Google for ads shown in the European Union only (impressions_* are null elsewhere). Values are bounds, not exact counts.
  • Field names are a stable contract: new fields may be added in minor versions; renames only in a major version (see Changelog).

The run's key-value store record OUTPUT holds run statistics: requests, resolved advertisers, match totals per query, blocked/not-found counters and reason_if_empty.

Pricing

Pay only for results: $2.00 per 1,000 ads. Platform usage is included — no compute bills, no proxy costs. A run that finds nothing costs (almost) nothing.

Discounts on paid Apify plans:

Apify planPrice per 1,000 ads
Free plan$2.00
Starter$1.80
Scale$1.60
Business$1.40

Examples (Free plan price):

  • all ads of one advertiser in one country (~50) → $0.10
  • 1,000 ads for a competitor set → $2.00
  • 10,000 ads across a whole industry → $20.00

Limitations

  • Advertiser name search returns the single best match; pass an advertiser ID (AR…) to be exact — you can find it in any Transparency Center URL.
  • Google exposes at most a few thousand ads per query via pagination; use region, format, platform or dates to slice large advertisers.
  • Rendering ad previews to screenshots or extracting YouTube video IDs is not included in this version.

API & integrations

Run it from code — Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("vulcandata/google-ads-transparency").call(run_input={"queries": ["nike.com"], "region": "US", "maxItems": 200})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

…or plain HTTP (returns the dataset items directly):

curl -X POST "https://api.apify.com/v2/acts/vulcandata~google-ads-transparency/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" -d '{"queries": ["nike.com"], "region": "US", "maxItems": 200}'
  • No-code: connect to Make, Zapier, n8n, Google Sheets, Slack or webhooks from the actor's Integrations tab.
  • Schedules: run daily/weekly from Schedules and get fresh data automatically.
  • AI agents (MCP): add vulcandata/google-ads-transparency to the Apify MCP server (mcp.apify.com) and let Claude, ChatGPT or Cursor call it as a tool.
  • Exports: JSON, CSV, Excel, XML, RSS — straight from the dataset.

FAQ

Is this legal? The actor reads only what Google publishes in its public Ads Transparency Center — the same pages anyone can open in a browser. No login, no personal data.

Can I find all ads that point to a website? Yes — pass the domain (e.g. booking.com). Google returns ads from every advertiser account that promotes that domain.

How do I get the video of a video ad? preview_url is Google's own preview loader; open url to watch the ad in the Transparency Center. Direct video files are not exposed by Google.

Why do impression ranges show null? Google publishes impression ranges and platforms only for ads shown in the European Union.

Can I monitor a competitor every week? Yes — create a schedule in Apify with the same input and get only fresh data each run (filter by last_shown).

More scrapers by VULCAN

Changelog

See CHANGELOG.md.