An Apify Actor live
Google Ads Transparency scraper: every Google ad of a brand, a website or an advertiser
Search a brand, a website or an advertiser ID, or paste the Transparency Center URL you already have open. Get one row per ad: format, the text of text ads, first and last day shown, targeting, a link to the ad's own page and, for ads shown in the EU, impressions per country and per platform (Search, YouTube, Maps, Play, Shopping). No Google account, no API key.
What you get
One row per Google ad, with the details Google publishes.
Where Google does not publish a field, it is null rather than guessed. The dataset opens in three views in Apify Console (Ads, Reach by country, All fields) and exports as JSON, CSV, Excel or XML, or through the API.
- The ad: ID and link to its Transparency Center page, format (text, image or video), headline and description of text ads where Google renders them as text, display domain, image URL or Google's preview for video and HTML ads.
- When and where: first and last day shown, and the countries it was shown in, with the first and last day in each.
- Reach: the impressions range in total, per country and per platform, which Google publishes for ads shown in the EU. The platforms come from Google's own breakdown of impressions.
- Targeting: the criteria the advertiser included or excluded (demographics, location, contextual signals), as Google lists them.
- The advertisers, if you ask for them: one record per advertiser with ID, name, country and how many ads Google holds for it.
How to scrape the Google Ads Transparency Center
Four ways in, and the page's own filters.
Each brand, website, advertiser ID or URL is its own search. Google lists the most recently shown ads first, and the Actor reads them in that order.
| Input | What it reads |
|---|---|
| Brands | Brand or advertiser names, each its own search. 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 when Google suggests it, and the run summary says so. |
| Websites | Advertiser websites (nike.com): every ad that points to the site, whichever advertiser account ran it. |
| Advertiser IDs | Google advertiser IDs (AR and 20 digits), as in the address bar of an advertiser's page. |
| Pasted URLs | Transparency Center URLs from your browser: a search by website, an advertiser's page or one ad's page. Each URL's region, platform, format and dates are kept, the date menu's presets (today, yesterday, the last 7 or 30 days) included. A URL whose filters cannot be read is left out with a note, never searched without them. |
- 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.
- Formats and dates: text, image or video; a start and an end day.
- Max ads per search: 100 by default, up to 5,000.
- Details: on by default, at no extra charge. Off gives a faster list without impressions, dates per country, targeting or the text of text ads.
{
"domains": ["nike.com", "adidas.com", "puma.com"],
"countries": ["US"],
"platforms": ["SEARCH"],
"maxAdsPerSearch": 100
}Only new ads
Monitor a competitor, pay only for what is new.
With Only new ads on and a monitor name, the Actor remembers, per search, the ads it returned, in a key-value store of your own Apify account. Each run lists the ads Google shows for the search, 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. Listing is cheap, so set Max ads per search deep enough to cover the brand's active ads. A different country, platform, format or date window is a different search with its own memory; use one monitor name per schedule.
Measured in the cloud
150 ads with their details in 42 seconds.
Details take one more request per ad, paced per IP. The Actor reads them on five lanes, each with its own proxy sessions and the same pacing, so a run reads faster without asking any one IP more often.
Google answers HTTP 429 to many requests from the Apify cloud's shared IPs, so the Actor reads through Apify Proxy: a new IP after each refusal, residential IPs after two in a row, at no extra charge to you. The 20 runs (2026-10-26, the same Google reader, up to 50 ads each with details) read 821 ads. A short result is never silent: the run summary gives each search a status, its requests and its refusals.
Why this one
The Google Ads Transparency scrapers on Apify, price by price.
scrapesage/google-ads-transparency-scraper, solidcode/ads-transparency-scraper and silva95gustavo/google-ads-scraper, from their public Store records (prices and 30-day figures) read on 2026-10-26. We ran none of them. With full details and, from 2026-11-01, ad text, scrapesage comes to up to $7 per 1,000 ads; this Actor charges $0.50 with the details and the ad text.
| Point | scrapesage | solidcode | silva95gustavo | This Actor |
|---|---|---|---|---|
| 1,000 ads, Free plan | $2.00 | $1.50 | $1.90 | $0.50 |
| 1,000 ads, top tier | $2.00 | $0.80 | $0.90 | $0.40 |
| Full details | +$3.00 per 1,000 | No separate event | No separate event | Included |
| Ad text | +$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, 30 days | 1,282 | 628 | 467 | New |
| Public runs, 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 |
Top tier: the price each Actor lists for the highest Apify plan it prices. Full details: reach per country, dates and variations. Ad text: the text of text ads. "No separate event" means the Actor lists one price per result; whether its rows carry those fields was not checked, and what each one returns was not compared on the same input. Where we lose: the other three have users, runs and reviews, and ours is new. silva95gustavo states "up to 400 ads per minute"; this Actor read about 210 a minute with details, and the listing alone is faster.
A real run
A Nike search ad in the United States, as the Actor returns it.
One row from a cloud run of 2026-10-26 (search nike, United States, run HZTZnOehVcQeCsxPh), preview link shortened and empty fields left out. Google renders this text ad as text, so its headline and description are in the row.
{
"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"
}Searched in the United States, the row has no impressions: Google publishes them for ads shown in the EU. A YouTube video of nike.com searched in France (run a0Ge0clnYRfqbkNUm) carried the platforms MAPS, SEARCH and YOUTUBE and one reach entry per EU country with its impressions range and dates.
Meta and Bing too
Need Facebook, Instagram and Bing ads in the same table?
The Facebook Ad Library scraper reads the Meta Ad Library, the Google Ads Transparency Center and the Microsoft Ad Library in one run. Its Google rows come from the same reader in the same format as this Actor's, so the two datasets merge without mapping. Use this one for Google alone, with its platform and format filters, advertiser IDs, Transparency Center URLs and the only-new-ads monitor.
Limits
What it does not do, said up front.
- No keyword search of ad text. Google has none. A brand name is matched to advertiser names as a whole word (nike can also match a person's account named "Nike Klara"), and the biggest advertiser by ad count is read. For an exact brand, search its website.
- The platform filter starts on 4 September 2023, as the Transparency Center itself says, and so does Google's breakdown of impressions by platform. The page warns that an ad "may also have been shown on other platforms": the platforms in a row are those of that breakdown, not every surface.
- Impressions per country and per platform are for EU ads. Google publishes them for ads shown in the EU; ads shown only elsewhere come with their creative, text and dates.
- Some text ads carry their text only in the image. The text is read where Google renders the ad as text; text ads it archives as an image keep their words in the image (36 of 83 Nike text ads had their text read in a local run of the same reader, 2026-10-05).
- No landing URL. Google publishes only the display domain, so the landing page field is null.
- Video ads carry Google's preview script, not a video file.
Ready-to-run examples
Open one, change the input, run it.
- Nike YouTube video ads in France
- Temu Google Search ads in the US
- Zalando Google ad reach by EU country
- All Google ads of one advertiser, by advertiser ID
- Competitor Google ads: Booking.com in the UK
Each example opens the Actor on Apify with its input filled in. All examples on the Apify Store.
Pricing
Pay per ad, details and text included.
$0.50 per 1,000 ads on Apify's Free and Bronze plans, $0.45 on Silver, $0.40 on Gold and up, billed by Apify with platform usage and proxies included; $0.0005 an ad on the Free plan. 1,000 ads with text, reach and targeting cost $0.50, 100 ads $0.05, and a weekly monitor of 300 ads that finds 20 new ones $0.01 a week. An ad already returned in the run is never charged twice. Advertiser records are off unless you ask for them ($3.00 per 1,000), and a run starts at $0.00005. Apify's free plan covers about 10,000 ads a month. Set a maximum cost per run and the Actor stops cleanly when it is reached: it starts no further search, and reads no ad it could not charge.
For developers
The Google ads library in one HTTP call.
Run it and get the ads back in the same request through the Apify API. Snippets for Node.js and Python are in the Actor's README.
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}'Questions
Is there an API for the Google Ads Transparency Center?
Google publishes no API for it. The Actor reads the Transparency Center the way a logged-out visitor's browser does and returns the ads as JSON rows, through the Apify API or any Apify integration (Make, Zapier, n8n, Google Sheets). No Google account, no API key.
Can I search the text of Google ads by keyword?
No: Google has no keyword search of ad text. A brand name is matched to advertiser names as a whole word (nike finds Nike, Inc.), and the biggest advertiser by ad count is read, more if you ask for advertiser records. Brands that advertise under a legal name, such as Temu (Whaleco Inc.), are read through their own website when Google suggests it. For an exact brand, search its website.
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.
What does it cost?
$0.50 per 1,000 ads on Apify's Free and Bronze plans, $0.45 on Silver, $0.40 on Gold and up, billed by Apify with platform usage and proxies included. Details and ad text cost nothing extra, and an ad already returned in the run is never charged twice. Advertiser records are off unless you ask for them ($3.00 per 1,000). Apify's free plan includes $5 of monthly usage, about 10,000 ads.
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.
Public ad data only: no login, no account, no data about the people who saw the ads. Not affiliated with Google or Apify.