Google Ads Transparency Scraper: Ads, Text and Reach
Pricing
from $0.40 / 1,000 ads
Google Ads Transparency Scraper: Ads, Text and Reach
Google Ads Transparency scraper at $0.50 per 1,000 ads, with ad text, impressions per country and platform, and targeting included. Search by brand, website, advertiser ID or Transparency Center URL; filter by country, platform, format and dates; monitor only new ads.
Pricing
from $0.40 / 1,000 ads
Rating
0.0
(0)
Developer
AgentToolWorks
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 hours ago
Last modified
Categories
Share
What is this Google Ads Transparency scraper?
This Actor is a Google Ads Transparency scraper: it reads the Google Ads Transparency Center logged out and returns every ad of a brand, a website or an advertiser account as one row per ad, with the ad's text, first and last day shown, impressions per country and per platform (Search, YouTube, Maps, Play, Shopping), and the targeting criteria used, plus a link to the ad's own page. Search by brand name, website, advertiser ID, or paste the Transparency Center URL you already have: its region, platform, format and dates are kept, the date menu's presets (the last 7 or 30 days, today, yesterday) included.
In short
- What you get: one row per Google ad, with its format, headline and description (text ads), image or preview, first and last day shown, impressions in total, per country and per platform, targeting, and the ad's Transparency Center page. Filter by country, platform, format and dates; monitor only the ads that are new since your last run.
- What it costs: $0.50 per 1,000 ads, with the details and the ad text included ($0.45 and $0.40 on higher Apify plans). An ad already returned in the run is never charged twice.
- Why this one (prices read from the Apify Store on 2026-10-26): scrapesage/google-ads-transparency-scraper charges $2 per 1,000 ads, plus $3 per 1,000 for full creative details, plus $2 per 1,000 for ad text from 2026-11-01, so up to $7 per 1,000 ads with everything; solidcode/ads-transparency-scraper charges $1.50 per 1,000 results on the Free plan; silva95gustavo/google-ads-scraper $1.90 per 1,000 ads on the Free plan.
No Google account, no API key, no login.
What data can you extract from the Google Ads Transparency Center?
One row per ad. Where Google does not publish a field, it is null, never guessed.
| Ad data | Reach and targeting | Search and advertiser data |
|---|---|---|
| Ad ID and link to the ad's Transparency Center page | Impressions range in total (impressionsMin, impressionsMax) | Advertiser name and ID |
| Format: text, image or video | Impressions per country, with first and last day shown in each (reachByCountry) | Optional advertiser records (maxAdvertisers): ID, name, country, how many ads Google holds |
| Headline and description of text ads, where Google renders them as text | The platforms that showed the ad, from Google's breakdown by platform (publisherPlatforms: SEARCH, YOUTUBE, MAPS, PLAY, SHOPPING) | query: which of your searches found the row |
Display domain (displayUrl) | Targeting: the criteria the advertiser included or excluded (demographics, location, contextual signals) | |
| Image URL, or Google's preview for video and HTML ads | Countries where the ad was shown | |
| First and last day shown |
The row format is the same as the Google rows of our Ad Library Scraper (Meta, Google and Bing in one run), so the two datasets merge without mapping.
What can you use Google ads data for?
- Competitor ad research: every ad a competitor runs on Google Search, YouTube, Maps, Play and Shopping, with its text and how long it has been running.
- Creative and copy research: headlines and descriptions of text ads, images and video previews, sorted by how recently they ran.
- Market monitoring: schedule a search with Only new ads and get each week only the ads that started since.
- Media-mix and reach research: impressions per country and per platform, where Google publishes them.
- Lead generation: which companies, websites or agencies run Google Ads, and how many ads each holds.
- Data for AI agents and pipelines: one predictable JSON row per ad.
How to scrape the Google Ads Transparency Center
- Click Try for free (or Start) on this page and sign in to Apify.
- Type Brands (
nike), Websites (nike.com) or Advertiser IDs (AR16735076323512287233), or paste Transparency Center URLs from your browser. - Pick the Countries (
US,FR... or English names such asFrance; empty means anywhere), and if you want, Platforms, Formats and dates. - Set Max ads per search. You pay per ad returned, so start small to look at the data.
- Click Start. When the run finishes, open the Output tab, pick the Ads or Reach by country view, and export as JSON, CSV, Excel or XML, or read it through the API.
Input
| Field | What it does |
|---|---|
queries | Brand or advertiser names, each its own search. Google has no keyword search of ad text: the Actor finds the advertiser named like the brand (nike finds "Nike, Inc."), the biggest by ad count, and returns its ads. A brand that advertises under its company's name (temu) is read through its own website (temu.com) when Google suggests it, and the run summary says so. An advertiser ID or a Transparency Center URL typed here is read as one, with a note. |
domains | Advertiser websites (nike.com): every ad that points to the site, whichever advertiser account ran it. A word without a dot is searched as a brand, with a note. |
advertiserIds | Google advertiser IDs (AR and 20 digits), as in the address bar of an advertiser's page. |
startUrls | Transparency Center URLs: a search by website (/?region=FR&domain=nike.com&platform=YOUTUBE&format=VIDEO&start-date=2026-09-01&end-date=2026-09-30), an advertiser's page (/advertiser/AR...?region=US, region=anywhere works) or one ad's page (/advertiser/AR.../creative/CR...). The URL's own filters win over the fields below. The date menu's presets (today, yesterday, the last 7 or 30 days, in the page's language) are read as days in Pacific Time, the time zone the page dates ads in. A URL whose region, platform, format or dates cannot be read is left out with a note in the run summary, never searched without that filter; another parameter is named there and not read. |
countries | Two-letter codes or English names, any case. Empty means anywhere. |
platforms | SEARCH, YOUTUBE, MAPS, PLAY, SHOPPING. Google's filter takes one platform at a time and covers ads shown since 4 September 2023; with several, each platform is its own search. Empty searches every platform at once, older ads included. |
formats | TEXT, IMAGE, VIDEO. Empty keeps every format. |
startDate, endDate | YYYY-MM-DD: only ads shown in that window. |
maxAdsPerSearch | Stop after this many ads per search (default 100, up to 5,000). Google lists the most recently shown ads first. |
includeDetails | One more request per ad, no extra charge (default on): impressions per country and platform, dates per country, targeting, and the text of text ads. Off gives a faster list. |
maxAdvertisers | Optional advertiser records per search (default 0: off), stored in the key-value store record ADVERTISERS and charged per record. For a brand search it also reads that many advertisers named like the brand. |
onlyNewAds, monitorName | Return and charge only the ads not returned by earlier runs of this monitor (see below). |
proxy | auto (default), residential or none. See the limits below for why the Actor reads through Apify Proxy. |
Example: one brand's YouTube video ads in France, by pasting the page you have open.
{"startUrls": [{ "url": "https://adstransparency.google.com/?region=FR&domain=nike.com&platform=YOUTUBE&format=VIDEO" }],"maxAdsPerSearch": 50}
Example: three competitors, their search ads in the US, with text.
{"domains": ["nike.com", "adidas.com", "puma.com"],"countries": ["US"],"platforms": ["SEARCH"],"maxAdsPerSearch": 100}
Example: a weekly monitor that returns only new ads.
{"domains": ["booking.com"],"countries": ["GB"],"maxAdsPerSearch": 300,"onlyNewAds": true,"monitorName": "booking-uk"}
Output
The dataset holds ads only, one row per ad, with three views in Apify Console and in the API:
- Ads: advertiser, format, headline, text, website, first and last shown, impressions, platforms, countries and the ad's page.
- Reach by country: one row per ad and country, with the impressions range and the first and last day shown that Google publishes for that country.
- All fields: every field of every row.
A row from a cloud run (nike, United States, run HZTZnOehVcQeCsxPh, 2026-10-26), preview link shortened and empty fields left out:
{"platform": "google","adId": "CR04371376104225636353","adLibraryUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR04371376104225636353?region=US","advertiserId": "AR16735076323512287233","advertiserName": "Nike, Inc.","firstShown": "2023-11-16","lastShown": "2026-10-26","format": "text","title": "Nike® Volleyball Collection","body": "Designed and created to enable outstanding performance, The Nike® Volleyball Collection.","displayUrl": "nike.com","imageUrl": "https://tpc.googlesyndication.com/archive/simgad/1293885961370619522","previewUrl": "https://displayads-formats.googleusercontent.com/ads/preview/content.js?client=ads-integrity-transparency&...","publisherPlatforms": [],"countries": ["US"],"countriesBasis": "reach","reachByCountry": [{ "country": "US", "countryImpressionsMin": null, "countryImpressionsMax": null, "countryLastShown": "2026-10-26" }],"query": "nike","scrapedAt": "2026-10-26T16:06:35.261Z"}
For an ad shown in the EU, Google also publishes impressions per country and per platform: a YouTube video of nike.com searched in France (run a0Ge0clnYRfqbkNUm) carried publisherPlatforms ["MAPS", "SEARCH", "YOUTUBE"] and a reachByCountry entry per EU country with its impressions range and dates.
Only new ads (monitoring)
With onlyNewAds on, the Actor remembers, per search, the ads it returned, in a key-value store of your own account named ads-transparency-monitor-<monitorName>. Each run lists the first maxAdsPerSearch ads Google shows for the search (most recently shown first), leaves out the ones returned before, before reading their details, and returns and charges only the new ones. The first run returns everything it reads. Set maxAdsPerSearch deep enough to cover the brand's active ads: listing is cheap, and only new ads are read in detail and charged. Google's order among ads shown the same day changes from one run to the next (two runs of 30 on booking.com in the UK listed different ads, 2026-10-26), so a shallow list returns a different slice each time rather than the newest ads. A different country, platform, format or date window is a different search with its own memory; use one monitorName per schedule. The memory follows what a search lists, not how the input wrote it: adding a platform to the run, listing the countries in another order or typing the brand in capitals keeps it, and a URL with a date preset (the last 7 days) keeps it as the days move.
Run summary
The key-value store record SUMMARY has one entry per search: its status (ok, partial with the reason, skipped or failed), how many ads it found, how many were already seen (with onlyNewAds), how many requests it made, how many Google refused with HTTP 429 and which IPs it ended on, and notes (inputs that were not read, ads left out). A short result is never silent. When the run stopped early, the top-level status is partial with a reason (run timeout or spending limit).
Limits worth knowing before you run it
- Google has no keyword search of ad text. A brand name is matched to advertiser names as a whole word (
nikecan also match a person's account named "Nike Klara"); the biggest advertiser by ad count is read, more withmaxAdvertisers. Brands that advertise under a legal name (Temu advertises as Whaleco Inc.) are read through their own website when Google suggests it. For an exact brand, use Websites. - The platform filter only covers ads shown since 4 September 2023, as the Transparency Center itself says. Google's breakdown of impressions by platform starts on the same day, and the page warns that an ad "may also have been shown on other platforms":
publisherPlatformslists the platforms of that breakdown, not every surface. - Impressions per country and per platform are published by Google for ads shown in the EU. Ads shown only elsewhere come with their creative and dates, without those figures.
- Ad text is read where Google renders the ad as text (its preview of local and search text ads). Text ads that Google archives as an image carry their text only in the image (36 of 83 Nike text ads had their text read in a local run of the same reader, 2026-10-05). Google publishes no landing URL, only the display domain, so
linkUrlisnull. - Video ads carry Google's preview script (
previewUrl), not a video file. - Formats: Google's filter takes one format. With two of the three, the Actor reads one listing per format, each with Google's own filter, and merges them, most recently shown first.
- Google refuses many requests from the Apify cloud's shared IPs (HTTP 429 on the first request of every run, 2026-10-26). The Actor reads through Apify Proxy, a new IP after each refusal and residential IPs after two in a row, at no extra charge to you. In 20 cloud runs of the same reader across 20 countries on 2026-10-26, Google refused 6.7% of requests, each was retried, and every run was read.
- The run stops itself before its timeout: two minutes before (less on a short run), it starts nothing new, stores what it read, and ends as succeeded with
SUMMARYsaying what was not covered. Only the ads in the dataset are charged.
How it compares (Apify Store, read 2026-10-26)
Prices and 30-day figures as each Actor's public Store record showed them on 2026-10-26 (pricingInfos and stats). We did not run these Actors.
| scrapesage/google-ads-transparency-scraper | solidcode/ads-transparency-scraper | silva95gustavo/google-ads-scraper | This Actor | |
|---|---|---|---|---|
| Ads, per 1,000 (Free plan) | $2.00 | $1.50 | $1.90 | $0.50 |
| Ads, per 1,000 (top tier listed) | $2.00 | $0.80 | $0.90 | $0.40 |
| Full details (reach per country, dates, variations) | +$3.00 per 1,000 | no separate event | no separate event | included |
| Ad text of text ads | +$2.00 per 1,000 from 2026-11-01 | no separate event | no separate event | included |
| Advertiser records | $3.00 per 1,000 | none listed | none listed | $3.00 per 1,000 (opt-in) |
| Run start | none listed | $0.001 per GB of memory | $0.00005 | $0.00005 |
| Users, last 30 days | 1,282 | 628 | 467 | new |
| Public runs, last 30 days | 31,015 (0 failed, 0 timed out) | 237,207 (2 failed, 29 timed out) | 338,807 (1,171 failed, 3,473 timed out) | new |
| Rating | 5.0 (1 review) | 1.9 (4 reviews) | 4.9 (19 reviews) | new |
"No separate event" means the Actor lists one price per result; whether its rows carry those fields was not checked. What each one returns was not compared on the same input. Speed: silva95gustavo states "up to 400 ads per minute"; this Actor read 150 ads with their details (dates, reach, platforms) in 42 seconds in the cloud, about 210 a minute (samsung, Germany, 2026-10-26), and the listing alone is faster.
How much does it cost to scrape the Google Ads Transparency Center?
Pay per event, no subscription, platform usage and proxies included:
| Event | Price |
|---|---|
| Ad returned, with details and ad text | $0.50 per 1,000 ads ($0.0005 each; $0.45 and $0.40 on higher Apify plans) |
Advertiser record returned (only if you set maxAdvertisers) | $3.00 per 1,000 records |
| Run start | $0.00005 |
Examples:
- 1,000 ads with text, reach and targeting: $0.50.
- 100 ads: $0.05.
- A weekly monitor of 300 ads that finds 20 new ones: $0.01 a week.
- Apify's free plan includes $5 of monthly usage (apify.com/pricing), enough for about 10,000 ads a month.
Set a maximum cost per run in the run options and the Actor stops cleanly when it is reached: it starts no further search, and reads no ad it could not charge.
Use the Actor through the Apify API
Run it and get the ads in one HTTP call (replace YOUR_APIFY_TOKEN, from Settings > API & Integrations in Apify Console):
curl -X POST "https://api.apify.com/v2/acts/agenttoolworks~google-ads-transparency-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"domains": ["nike.com"], "countries": ["US"], "maxAdsPerSearch": 50}'
Node.js, with the official apify-client:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('agenttoolworks/google-ads-transparency-scraper').call({domains: ['nike.com'],countries: ['FR'],platforms: ['YOUTUBE'],maxAdsPerSearch: 100,});const { items: ads } = await client.dataset(run.defaultDatasetId).listItems();console.log(ads.map((ad) => [ad.advertiserName, ad.format, ad.firstShown, ad.impressionsMax, ad.publisherPlatforms]));
Python, with the official apify-client:
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("agenttoolworks/google-ads-transparency-scraper").call(run_input={"queries": ["temu"], "countries": ["US"], "platforms": ["SEARCH"], "maxAdsPerSearch": 200})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["advertiserName"], row["firstShown"], row["title"], row["body"])
The API tab on this page has ready-made snippets for every language and endpoint.
FAQ
Do I need a Google account or an API key?
No. The Actor reads the Transparency Center the way a logged-out visitor's browser does. Google publishes no API for it.
How do I get every ad of one advertiser?
Paste the advertiser's page URL (adstransparency.google.com/advertiser/AR...) or its ID in Advertiser IDs, and raise Max ads per search (up to 5,000 per search). To get every ad that points to a website, whichever account ran it, use Websites.
Can I get ads shown in the United States or outside the EU?
Yes: set the country or leave countries empty. Impressions per country and per platform are published by Google for ads shown in the EU; the rest come with their creative, text and dates.
Why does a platform filter return fewer ads than the same search without it?
Google's platform filter only covers ads shown since 4 September 2023, and only the five platforms it lists (Search, YouTube, Maps, Play, Shopping).
How do I get only new ads every week?
Turn on Only new ads, give the schedule a Monitor name, and schedule the Actor (or a saved task) in Apify Console. Each run returns and charges only the ads the previous runs did not return.
Can I use it with Make, Zapier, n8n or Google Sheets?
Yes, through Apify's integrations: the dataset works with every Apify integration, and a webhook can fire when a run finishes.
Can AI agents use it through MCP?
Yes. Apify's hosted MCP server exposes Store Actors to MCP clients such as Claude or Cursor: https://mcp.apify.com?tools=agenttoolworks/google-ads-transparency-scraper.
Is it legal to scrape the Google Ads Transparency Center?
The Actor reads only what the Transparency Center shows to any visitor without logging in: ads and the businesses behind them, which Google publishes to meet its transparency obligations. It never logs in, uses no account and collects no data about the people who saw the ads. Google's terms for the Transparency Center restrict how its content may be reused; how you use the data is your responsibility.
Something is missing or broken?
Open an issue in the Issues tab: we read every one.
Other Actors by AgentToolWorks
- Facebook Ad Library Scraper: Meta, Google and Bing Ads: Meta (Facebook, Instagram), Google and Microsoft (Bing) ad libraries in one run, with EU reach, payer and beneficiary for Meta ads. Same row format as this Actor.
- Shopify & WooCommerce Scraper and Price Tracker: every product of any Shopify or WooCommerce store, with variants, barcodes and stock.
- AliExpress Scraper: Products, Prices and Shipping per Country: AliExpress products by keyword, category or product URL, with every SKU's price and stock and the shipping cost to each country you list, plus a price tracker mode that returns only the changes.
- LinkedIn Jobs Scraper and Indeed Scraper: public job listings of both boards in one row format.
- Google Maps Scraper: places with phone, website, rating, opening hours and emails.
- Google Trends Scraper: interest over time, by region and related queries, plus each country's Trending now list.
Learn more
- What this Google Ads Transparency scraper returns, with real runs
- The Ad Library Scraper: Meta, Google and Bing ads side by side
Built by AgentToolWorks. Not affiliated with Google.