Google Ads Transparency Center (Google Ads) Scraper avatar

Google Ads Transparency Center (Google Ads) Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Google Ads Transparency Center (Google Ads) Scraper

Google Ads Transparency Center (Google Ads) Scraper

Scrape ads from the Google Ads Transparency Center (adstransparency.google.com) by keyword, domain, website or link. Extracts advertiser, ad text, images, videos, formats, dates, impressions, countries, platforms and targeting as JSON, CSV or Excel.

Pricing

from $2.00 / 1,000 results

Rating

5.0

(1)

Developer

ActorFlow

ActorFlow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

11 days ago

Last modified

Categories

Share

Scrape ads from the Google Ads Transparency Center (adstransparency.google.com) by keyword, domain, website address or a link copied from the Transparency Center. Each ad comes back with its advertiser, ad text, images or video links, format, dates, impressions, countries, platforms and targeting, exported as JSON, CSV or Excel, and the actor can be called as an API. Type a keyword or domain, press Start.

Target website: adstransparency.google.com

✨ Features of this Google Ads Transparency Center scraper

  • Ad data extraction — ad text, image and video links, previews, format, first and last shown dates, days active, impressions and total matching ads on every record.
  • Advertiser details — advertiser name, legal name, country, Transparency Center profile link and (for keyword searches) the advertiser's ad count range.
  • Structured ad copy — headline, description, display URL, call to action and the store locations shown with text ads.
  • Reach and targeting details — countries and platforms the ad ran on with impression ranges (per country and per platform), and the targeting criteria used.
  • Keyword, domain, website and link input — search by brand keyword, domain (nike.com), website address or a Transparency Center link, including links to a single ad.
  • Pagination support — keeps reading result pages until your ads limit is reached.
  • Region, platform, format, topic and date filtering — narrow ads by region, Google platform, ad format, political topic and date range.
  • Proxy support — configurable proxy settings, with datacenter proxies by default.
  • Media download — optionally save ad images and previews to the key-value store.
  • No browser required — HTTP requests only, which makes runs fast and cheap.

🚀 How to scrape Google ads in 5 steps

  1. Sign up for a free Apify account — includes $5 monthly credit.
  2. Open the actor page and click Try for free.
  3. Fill in the Input fields (a keyword, domain, website or Transparency Center link is required).
  4. Click Start and wait for the run to complete.
  5. Download results from the Output tab in JSON, CSV, or Excel format.

You can also run this actor via the Apify API or integrate it directly into your workflows using Zapier, Make, or n8n.

💰 Pricing

This actor uses pay-per-result billing based on the compute units a run consumes.

  • New Apify accounts include $5 of free monthly credit.
  • It works over plain HTTP requests, so it costs significantly less to run than browser-based scrapers.

🔧 Input configuration

FieldTypeRequiredDefaultDescription
Keywords or domainsarray—nike.comKeywords (advertiser or brand name), domains or website addresses to find ads for.
Linksarray——Transparency Center links (advertiser, domain search or single ad pages) or website addresses.
Maximum ads per searchinteger—3Ads collected for each keyword advertiser, domain or link.
Advertisers per keywordinteger—3Matching advertisers scraped for each keyword.
Regionstring—anywhereTwo-letter country code the ads were shown in, or anywhere.
Platformstring——Google Play, Maps, Search, Shopping or YouTube.
Ad formatstring——Text, image or video.
Topicstring—allAll topics or political ads.
Start datestring——Only ads shown on or after this date, YYYY-MM-DD.
End datestring——Only ads shown on or before this date, YYYY-MM-DD.
Download mediaboolean—falseSave ad images and previews to the key-value store.
Proxy configurationobject—Apify proxyProxy used to reach the Transparency Center.

Supported inputs:

  • Keyword: nike (matched to the largest advertisers with that name)
  • Domain or website: nike.com or https://www.nike.com/
  • Domain search link: https://adstransparency.google.com/?region=anywhere&domain=nike.com
  • Advertiser link: https://adstransparency.google.com/advertiser/AR16735076323512287233?region=anywhere
  • Single ad link: https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR12805937033067364353

The output is a dataset of ads (exportable as JSON, CSV or Excel) with the keys: id, advertiserId, creativeId, advertiserName, advertiserLegalName, advertiserCountry, advertiserUrl, advertiserAdCountRange, domain, format, url, previewUrl, previewStoreKey, firstShownAt, lastShownAt, daysActive, impressions, impressionsLastShownOn, shownCountries, shownCountryCount, platforms, platformImpressions, countryStats, audienceSelections, adText, adHeadline, adDescription, adDisplayUrl, adCallToAction, storeLocations, imageUrls, videoUrls, variants, searchedFor, totalAds. The dataset has 1 view.

  • Overview — a compact table with advertiser, domain, format, ad text, preview image, first and last shown dates, days active, impressions, countries, platforms, total ads and the ad link.

Output at a glance:

AdvertiserDomainFormatFirst shownLast shownDays activeImpressionsCountries
Nike Retail BVnike.comTEXT2026-07-112026-10-139410002
Nike Retail BVnike.comTEXT2025-10-302026-10-13348100002
Nike Retail BVnike.comTEXT2025-10-242026-10-13354300008

Sample output (raw JSON):

{
"id": "CR09221065519157739521",
"advertiserId": "AR18378488041124659201",
"creativeId": "CR09221065519157739521",
"advertiserName": "Nike Retail BV",
"advertiserLegalName": "Nike Retail BV",
"advertiserCountry": "NL",
"advertiserUrl": "https://adstransparency.google.com/advertiser/AR18378488041124659201",
"advertiserAdCountRange": null,
"domain": "nike.com",
"format": "TEXT",
"url": "https://adstransparency.google.com/advertiser/AR18378488041124659201/creative/CR09221065519157739521...",
"previewUrl": "https://displayads-formats.googleusercontent.com/ads/preview/content.js?client=ads-integrity-transpa...",
"previewStoreKey": null,
"firstShownAt": "2025-10-22T18:40:28.000Z",
"lastShownAt": "2026-10-13T17:24:05.000Z",
"daysActive": 356,
"impressions": "6000",
"impressionsLastShownOn": "2026-10-13",
"shownCountries": [
"Luxembourg",
"Germany"
],
"shownCountryCount": 4,
"platforms": [
"Google Search",
"Google Maps"
],
"platformImpressions": [
{
"name": "Google Maps",
"code": "MAPS",
"impressions": {
"lowerBound": null,
"upperBound": "1000"
}
},
{
"name": "Google Search",
"code": "SEARCH",
"impressions": {
"lowerBound": "5000",
"upperBound": "6000"
}
}
],
"countryStats": [
{
"code": "LU",
"name": "Luxembourg",
"firstShownAt": "2025-10-23",
"lastShownAt": "2026-10-10",
"impressions": {
"lowerBound": null,
"upperBound": "1000"
},
"platformStats": [
{
"name": "Google Search",
"code": "SEARCH",
"impressions": {
"lowerBound": null,
"upperBound": "1000"
}
}
]
},
{
"code": "DE",
"name": "Germany",
"firstShownAt": "2025-10-22",
"lastShownAt": "2026-10-13",
"impressions": {
"lowerBound": "5000",
"upperBound": "6000"
},
"platformStats": [
{
"name": "Google Maps",
"code": "MAPS",
"impressions": {
"lowerBound": null,
"upperBound": "1000"
}
},
{
"name": "Google Search",
"code": "SEARCH",
"impressions": {
"lowerBound": "5000",
"upperBound": "6000"
}
}
]
}
],
"audienceSelections": [
{
"name": "Demographic info",
"hasIncludedCriteria": true,
"hasExcludedCriteria": false
},
{
"name": "Geographic locations",
"hasIncludedCriteria": true,
"hasExcludedCriteria": false
}
],
"adText": "{KeyWord:Nike Court} - Entdecke {Keyword:Nike schuhe} online auf Nike.com – der offiziellen Nike Website. - nike.com",
"adHeadline": "{KeyWord:Nike Court}",
"adDescription": "Entdecke {Keyword:Nike schuhe} online auf Nike.com – der offiziellen Nike Website.",
"adDisplayUrl": "nike.com",
"adCallToAction": null,
"storeLocations": [
{
"name": "NIKE STORE OBERHAUSEN CENTRO (Partnered)",
"street": "CentrO-Promenade 555",
"city": "Oberhausen",
"postalCode": "46047",
"country": "DE"
}
],
"imageUrls": [],
"videoUrls": [],
"variants": [
{
"textContent": "{KeyWord:Nike Court} - Entdecke {Keyword:Nike schuhe} online auf Nike.com – der offiziellen Nike Website. - nike.com",
"headline": "{KeyWord:Nike Court}",
"description": "Entdecke {Keyword:Nike schuhe} online auf Nike.com – der offiziellen Nike Website.",
"displayUrl": "nike.com",
"callToAction": null,
"locations": [
{
"name": "NIKE STORE OBERHAUSEN CENTRO (Partnered)",
"street": "CentrO-Promenade 555",
"city": "Oberhausen",
"postalCode": "46047",
"country": "DE"
}
],
"images": []
}
],
"searchedFor": "https://adstransparency.google.com/?region=anywhere&domain=nike.com&topic=all",
"totalAds": 100000
}

🐍 How to scrape Google ads with Python, JavaScript or the API

Run the actor programmatically with the official Apify clients. Replace <YOUR_API_TOKEN> with the token from your Apify Console.

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("confidential_gnat/google-ads-scraper").call(run_input={
"queries": ["nike.com"],
"maxItems": 10,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript (npm install apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('confidential_gnat/google-ads-scraper').call({
queries: ['nike.com'],
maxItems: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

cURL — start a run and wait for the dataset:

curl -X POST "https://api.apify.com/v2/acts/confidential_gnat~google-ads-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"queries": ["nike.com"], "maxItems": 10}'

💡 What you can use Google Ads Transparency Center data for

  • Competitor ad monitoring: see which ads a brand runs, where and for how long
  • Creative research: collect ad copy, images and video links by advertiser or domain
  • Estimating reach with impression ranges per country and platform
  • Tracking political and issue advertising by region and date
  • Brand protection: find ads that use your domain or brand name

Marketers, agencies, researchers, journalists and compliance teams in e-commerce, finance, politics and media typically use this data.

⚠️ Limitations & known issues

  • Impression ranges — Google publishes impressions as ranges, and some ads show none.
  • Restricted ads — ads the Transparency Center hides cannot be read and are skipped.
  • Total ads — the total is Google's approximate count of matching ads and is rounded for large searches.
  • Rate limiting — Google throttles heavy usage; the actor retries automatically and switching to residential proxies helps.

❓ Frequently asked questions

Can I scrape the Google Ads Transparency Center legally?

The actor only collects data already publicly visible in the Google Ads Transparency Center — no login, paywall or private content is accessed. Scraping publicly available data is generally considered lawful (see hiQ Labs v. LinkedIn), but you are responsible for complying with the site's Terms of Service and applicable laws such as GDPR/CCPA if personal data is involved.

What data does the Google ads scraper return?

Advertiser name, legal name and country, domain, format, ad text, image, video and preview links, first and last shown dates, days active, impressions, countries and platforms with per-country ranges, targeting criteria and the total number of matching ads. Turning on Download media also stores images in the key-value store.

Maximum ads per search limits each keyword advertiser, domain or link separately; the default is 3. Keywords are matched to up to the number of advertisers set in Advertisers per keyword, so a keyword can return that many times the limit.

Do I need a proxy to scrape adstransparency.google.com?

Yes, a proxy is recommended. The input defaults to Apify datacenter proxies, which work for most runs; switch to residential proxies if you see throttling or empty results.

How do I scrape Google ads with Python?

Use the Python example above and iterate over the dataset items returned by the run.

Can I run this Google ads scraper on a schedule?

Yes. Use Apify Schedules to run it daily or weekly with the same input, for example to track a competitor's new ads.

What output formats are supported?

JSON, CSV, Excel, XML and RSS, either from the Output tab or through the Apify API.

Why does a keyword return ads from advertisers I did not expect?

Keywords are matched to advertiser names in the Transparency Center, largest first. To target one company precisely, use its domain, website address or a copied advertiser link instead.

🔗 Other actors you may find useful

ActorDescription
📱 TikTok Ad Library ScraperScrape TikTok ads with creative, advertiser, spend and targeting data.
🛒 Google Shopping Products ScraperScrape Google Shopping listings with prices, merchants and ratings.
📸 Snapchat Profile ScraperScrape public Snapchat profiles, Spotlight videos, stories and highlights.
▶️ YouTube Channel Info and Stats ScraperScrape YouTube channel info and statistics from channel About pages.
📅 Facebook Events ScraperScrape public Facebook events by keyword, location, page or URL, no login.

💬 Support & contact

If you encounter any issues or have questions, please open an issue or reach out via the Apify Community Forum.

You can also find more of our actors on the Actor Flow page.