Google Ads Transparency Center Scraper & API avatar

Google Ads Transparency Center Scraper & API

Pricing

from $2.00 / 1,000 ad results

Go to Apify Store
Google Ads Transparency Center Scraper & API

Google Ads Transparency Center Scraper & API

Scrape ads from the Google Ads Transparency Center by brand, domain or advertiser. Get creatives, dates, days active and per-country reach. No login.

Pricing

from $2.00 / 1,000 ad results

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

Google Ads Transparency Center Scraper

Extract every ad a company runs through GoogleSearch, YouTube, Shopping, Maps and Play — straight from the Google Ads Transparency Center. Search by brand name, exact domain, or advertiser ID and get clean creative data: image/video previews, first- and last-shown dates, days active, advertiser identity, and per-region activity.

No login / no cookies — no Google account required.

Why this ad-transparency scraper?

Typical scrapersThis actor
Need a logged-in session or cookiesNo login, no cookies, no Google account
Return just creativesTwo modes: full ad creatives or one-row advertiser summaries (ad-check)
Single input typeTarget by brand name, exact domain, advertiser ID, or pasted start URLs
Flat list of adsBuilt-in monitor mode that returns only newly-launched ads on a schedule
Image-only dataOptional full creative detail — every A/B variation plus per-country reach
Vague filteringFilter by platform, format, region, and date window

Use cases

  • Competitive ad intelligence — see exactly what creatives a competitor is running right now, on which Google surfaces, and how long each has been live via shownForDays.
  • Ad-check & lead generation — feed a list of companies in advertisers mode to find out which ones actively run Google Ads (and roughly how many), in one cheap pass.
  • Creative & messaging research — pull image and video ad previews at scale for swipe files, trend analysis, or model training.
  • Geographic reach analysis — turn on full creative detail to map the full list of countries each ad ran in, each with its own last-shown date.
  • Brand & compliance monitoring — track when an advertiser launches or retires ads in a given country.

How to use

  1. Sign up for Apify — the free plan is enough to try this actor.
  2. Open the Google Ads Transparency Center Scraper, fill in the inputs you need, and click Start.
  3. Watch results stream into the dataset table as each record is parsed.
  4. Export as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the Apify API.

Input

You can target ads four ways and mix them freely: free-text queries, exact domains, advertiserIds, or pasted startUrls.

{
"queries": ["Nike"],
"domains": ["hellofresh.com"],
"resultType": "ads",
"region": "US",
"platforms": ["YOUTUBE", "SEARCH"],
"adFormat": "VIDEO",
"startDate": "2026-01-01",
"endDate": "2026-06-01",
"maxAdsPerSearch": 200,
"includeDetails": false,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
  • queries — free-text brand names (e.g. Nike) or bare domains (e.g. nike.com), resolved to matching advertisers/domains via the Transparency Center's autocomplete.
  • domains — exact domains; returns every advertiser account whose ads point at that domain.
  • advertiserIds — specific advertiser IDs that start with AR, found on an advertiser's Transparency Center page URL.
  • startUrls — paste advertiser, creative, or domain-search URLs copied from the website; they are parsed automatically.
  • resultTypeads (individual creatives, default) or advertisers (one summary row per advertiser with approximate ad counts — ideal for ad-checks).
  • region — two-letter ISO country code (e.g. US, GB, DE) or ANYWHERE. Platform filters only apply to ads shown on/after 2023-09-04.
  • platforms — any of SEARCH, YOUTUBE, SHOPPING, MAPS, PLAY; leave empty for all.
  • adFormatALL, TEXT, IMAGE, or VIDEO.
  • startDate / endDateYYYY-MM-DD date window.
  • maxAdsPerSearch (default 100) and maxAdvertisersPerQuery (default 5) — cap collection per target and per brand-name query.
  • includeDetails — fetch full creative detail (every variation plus regionsShown); slower and billed per ad. Tune parallelism with detailConcurrency (default 6).

Output

In ads mode, each ad creative is one dataset item:

{
"creativeId": "CR09405416287280037889",
"advertiserId": "AR16735076323512287233",
"advertiserName": "Nike, Inc.",
"domain": "nike.com",
"format": "IMAGE",
"firstShown": "2022-11-30T15:26:06.000Z",
"lastShown": "2026-06-10T00:00:00.000Z",
"shownForDays": 898,
"previewType": "image",
"imageUrl": "https://tpc.googlesyndication.com/archive/simgad/15682570092434089175",
"previewUrl": null,
"width": 380,
"height": 467,
"googleCreativeId": "761207694135",
"googleCustomerId": "1287649103",
"adGroupId": "181405790069",
"versionId": null,
"adUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR09405416287280037889?region=US",
"region": "US"
}
  • shownForDays is a strong "this ad is working" longevity signal for competitive analysis.
  • googleCreativeId / googleCustomerId / adGroupId / versionId are stable internal IDs parsed from the preview (present for text/video/rich ads; null for plain image ads). Use googleCustomerId to group ads from the same ad account, or adGroupId to cluster ads from the same campaign.
  • imageUrl is a direct CDN link for image ads; text, video and rich-media ads expose a Google-hosted previewUrl instead of a raw asset URL.

With includeDetails on, each ad also carries every A/B variation and the full per-country reach:

{
"variationCount": 2,
"variations": [
{ "type": "image", "imageUrl": "https://...", "width": 380, "height": 467, "googleCreativeId": "761207694135", "adGroupId": "181405790069" }
],
"regionsShown": [
{ "region": "US", "lastShownDate": "2026-06-10" },
{ "region": "CA", "lastShownDate": "2026-06-10" },
{ "region": "PR", "lastShownDate": "2026-05-19" }
]
}

In advertisers (ad-check) mode, each row is an advertiser summary:

{
"advertiserId": "AR16735076323512287233",
"name": "Nike, Inc.",
"countryCode": "US",
"approxAdCountLow": 10000,
"approxAdCountHigh": 20000,
"legalName": "Nike, Inc.",
"verified": true,
"matchedQuery": "Nike",
"advertiserUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233?region=US",
"region": "US"
}

Notes: ad counts shown by Google are approximate ranges and are surfaced as-is. Data comes from Google's public Transparency Center and reflects whatever Google currently publishes there. Set includeRawData to attach the raw decoded API objects to each result for debugging.

Monitoring — get only new ads

Turn on onlyNewAds to output only ads not seen in previous runs. The actor remembers every creative ID it has seen in a named key-value store, so a scheduled (daily/weekly) run returns just newly-launched ads — ideal for competitor new-ad alerts.

  • The first run returns everything and seeds the memory; later runs return only genuinely new ads (and are cheaper, since you're billed only for new ads).
  • Set monitorStoreName (default ads-transparency-monitor) to a distinct name per monitoring target so their histories don't mix.
  • Pair it with Apify Schedules and a notification integration to turn the actor into a standing watch on any brand's, domain's, or advertiser's Google ad activity.

Automate & schedule

Run this actor on autopilot and pull results into your own stack:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/google-ads-transparency-scraper').call({
queries: ['Nike'],
resultType: 'ads',
region: 'US',
platforms: ['YOUTUBE', 'SEARCH'],
adFormat: 'VIDEO',
maxAdsPerSearch: 200,
onlyNewAds: false,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} records`);

Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

  • Make — multi-step automation scenarios.
  • Zapier — push new records straight into your CRM or sheet.
  • Slack — get notified when a run finds something new.
  • Google Drive / Sheets — auto-export every run to a spreadsheet.
  • Airbyte — pipe results into your data warehouse.
  • GitHub — trigger runs from commits or releases.

Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "find every YouTube video ad Nike is currently running in the US and how long each has been live" and let it run this scraper for you.

More scrapers from scrapesage

Need data from other sources? Try these:

Tips

  • For large or repeated runs, keep the default residential proxyConfiguration — it is recommended for reliable access at scale.
  • Use advertisers mode for a fast, cheap ad-check across many companies before deciding which ones to pull full creatives for.
  • Enable includeDetails only when you need A/B variations or per-country regionsShown — it adds one extra (separately billed) request per ad. Raise detailConcurrency to speed those detail runs up.
  • For monitoring, give every target its own monitorStoreName so seen-ID histories don't mix, then schedule a daily or weekly run with onlyNewAds on.
  • Remember platform filtering only covers ads shown on or after 2023-09-04; narrow with region, adFormat, and the startDate/endDate window for tighter results.

FAQ

Which Google surfaces are covered? Search, YouTube, Shopping, Maps and Play — filter to specific ones via platforms, or leave it empty for all.

Do I need to log in or supply a Google account? No. The actor reads the public Google Ads Transparency Center — no login, no cookies, no account.

How is it billed? Pay-per-event: a fee per ad creative returned, a separate fee per advertiser record in ad-check mode, and an extra per-ad fee only when full creative detail is on. You pay for the data you actually receive, and monitor mode only charges for new ads.

Why are some ID fields null? googleCreativeId, adGroupId and similar IDs are present for text/video/rich ads but are null for plain image ads. Image ads still return a direct imageUrl.

Is the data accurate and complete? It reflects exactly what Google currently publishes in its Transparency Center, including approximate ad-count ranges, which are surfaced as-is.

What export formats can I get? JSON, CSV, Excel, XML, or RSS from the dataset, or programmatically via the Apify API.

Need help?

Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.