Google Ads Transparency Scraper - Ad Creatives & Advertisers avatar

Google Ads Transparency Scraper - Ad Creatives & Advertisers

Pricing

from $1.76 / 1,000 advertiser ads

Go to Apify Store
Google Ads Transparency Scraper - Ad Creatives & Advertisers

Google Ads Transparency Scraper - Ad Creatives & Advertisers

Scrape the Google Ads Transparency Center: every ad creative a brand runs, with format, flight dates, days shown and per-country reach. 213 countries.

Pricing

from $1.76 / 1,000 advertiser ads

Rating

0.0

(0)

Developer

SIÁN OÜ

SIÁN OÜ

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Google Ads Transparency Scraper — Competitor Ads & Creatives 📢

SIÁN Agency Store Similarweb Traffic Google SERP Google Trends

🎉 Every ad a brand is running on Google, across 213 countries, with no login and no API key

Built for PPC teams and agencies who need competitor ad creatives as rows they can filter and export


🔎 What is the Google Ads Transparency Scraper — and when should you use it?

The Google Ads Transparency Scraper turns Google's public Ads Transparency Center into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

Use it when you need: Google ad creatives for any advertiser: image, text and video ads with the rendered preview, the first and last date each one ran, how many days it was shown, and a link that opens the ad in Google's own viewer. Filter by country across 213 markets and by ad format, both applied before anything is charged. One optional flag adds every creative variation, the full per-country reach list with flight dates, Google's published impression range and the ad category. A separate advertiser search turns a brand name into the advertiser ID behind it and reports how many ads each match is running, and an advertiser profile returns the verified legal name and the country Google verified it in.

Use something else when: you need ads from a network Google does not publish. This actor reads Google's Ads Transparency Center only. Meta's Ad Library, Microsoft and Bing ads, TikTok's ad library and LinkedIn are separate disclosure systems with separate data, and no Google tool can reach them.

🤖 Use with AI agents

Already connected to the Apify MCP server? Just ask for this Actor by name: sian.agency/google-ads-transparency-scraper

Your agent can pay for its own runs. This Actor is eligible for agentic payments, so an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

I want to see what ads a competitor is running on Google using the Apify Actor `sian.agency/google-ads-transparency-scraper`.
Use it when I need: Google ad creatives for any advertiser: image, text and video ads with the rendered preview, the first and last date each one ran, how many days it was shown, and a link that opens the ad in Google's own viewer. Filter by country across 213 markets and by ad format, both applied before anything is charged. One optional flag adds every creative variation, the full per-country reach list with flight dates, Google's published impression range and the ad category. A separate advertiser search turns a brand name into the advertiser ID behind it and reports how many ads each match is running, and an advertiser profile returns the verified legal name and the country Google verified it in.
Don't use it when: This actor reads Google's Ads Transparency Center only. Meta's Ad Library, Microsoft and Bing ads, TikTok's ad library and LinkedIn are separate disclosure systems with separate data, and no Google tool can reach them.
How to call it: pick one `operation` — `advertiserAds` returns the creatives and is what most runs want, `advertiserSearch` turns a brand name into the advertiser ID and its ad-count range, `advertiserProfile` returns the verified identity for one advertiser ID. Put brand names or `AR` advertiser IDs in `queries`, set `region` to a two-letter country code or `ANYWHERE`, narrow with `adFormat` (`ANY`, `TEXT`, `IMAGE`, `VIDEO`) and `lastShownSince` to keep only ads still running, cap the run with `maxResults`, and set `includeCreativeDetail` to add per-country reach and creative variations.
Start with this input:
{
"operation": "advertiserAds",
"queries": [
"Nike"
],
"region": "US",
"adFormat": "ANY",
"maxResults": 100
}
Ask me which brands to look at and which country I care about, then run the Actor and summarise the results as a table.

Things you can ask your agent for:

  • Show me every video ad Nike is running in Germany right now, and how long each one has been live.
  • Compare the ad creatives of my three biggest competitors and tell me which formats they lean on.
  • Find every verified advertiser using my brand name and tell me which country each one is registered in.
  • Pull Booking.com's ads in Spain and flag the creatives that launched in the last month.

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at apify.com/sian.agency/google-ads-transparency-scraper.md.

📋 Overview

Google publishes every ad it serves, but only one ad at a time, through a viewer you cannot export. This actor reads that same public record and hands you the whole advertiser in one dataset.

Why teams use it:

  • Creatives you can actually use: image URLs, video and text ad previews, and a direct link that opens each ad in Google's own viewer
  • Fast: 100 ads per request, so a thousand-ad advertiser is ten requests, not two hundred page loads
  • 🎯 213 countries: the same brand runs different ads in different markets, and you can pull any of them
  • 💰 Pay per ad that lands: failed lookups are never charged, and format or date filters run before billing, so a narrowed search costs less
  • 💎 Per-country reach: one optional flag adds every creative variation, the full country list with first and last shown dates, impression ranges and the ad category
  • No login anywhere: no Google account, no API key, no cookie, no OAuth

✨ Features

  • 📢 Every ad creative an advertiser has on record, paginated to whatever depth you ask for
  • 🔎 Brand-name resolution: type "Nike", not an opaque advertiser ID
  • 🏢 Verified identity: legal name, display name and the country Google verified the advertiser in
  • 🌍 Country filter across 213 countries, or Anywhere for the global picture
  • 🎞️ Format filter: text, image or video, applied before you are charged
  • 📅 Recency filter: keep only ads still running as of a date you choose
  • ⏱️ Days shown on every ad, so you can tell an evergreen creative from a two-week test
  • 🔬 Per-country reach with impression ranges and ad category, on request
  • 🧩 Creative variations: the other sizes and cuts of the same ad
  • 📊 Ad-count ranges per advertiser, so you can size a competitor before you pull them

🎬 Quick Start

Pick an operation, name a brand, press Start. The default run needs no configuration at all. It pulls Nike's ads so you can see the shape of the data, and everything after that is one field.

curl -X POST https://api.apify.com/v2/acts/sian.agency~google-ads-transparency-scraper/runs?token=YOUR_TOKEN \
-H 'Content-Type: application/json' \
-d '{"operation": "advertiserAds", "queries": ["Nike"], "region": "US"}'

🚀 Getting Started (3 Simple Steps)

Step 1: Name the brands

Type one or more brand names into Who do you want ads for?. Advertiser IDs starting with AR work too, if you already have them.

Step 2: Pick a country

Leave it on Anywhere for the global view, or choose one of 213 countries to see what that brand runs in that market.

Step 3: Press Start

Results stream into the dataset as they arrive. Export to JSON, CSV or Excel whenever you like.

That's it! In about a minute, you'll have:

  • Every ad creative on record for those brands
  • The dates each one ran and how many days it was shown
  • A link that opens each ad in Google's own viewer

📥 Input Configuration

FieldTypeRequiredDescription
operationstringNoadvertiserAds, advertiserSearch or advertiserProfile
queriesarrayNoBrand names or advertiser IDs starting with AR
regionstringNoTwo-letter country code, or ANYWHERE
adFormatstringNoANY, TEXT, IMAGE or VIDEO
lastShownSincestringNoKeep only ads last shown on or after this date
includeCreativeDetailbooleanNoAdd per-country reach, variations and category
maxResultsintegerNoAds per brand, 1 to 5000

Example: every ad Nike runs in the US

{
"operation": "advertiserAds",
"queries": ["Nike"],
"region": "US",
"maxResults": 200
}

Example: video ads still running, with full country reach

{
"operation": "advertiserAds",
"queries": ["Booking.com", "Expedia"],
"region": "DE",
"adFormat": "VIDEO",
"lastShownSince": "2026-08-01",
"includeCreativeDetail": true,
"maxResults": 50
}

Example: find the advertiser ID behind a brand name

{
"operation": "advertiserSearch",
"queries": ["Nike"]
}

📤 Output

Every row is one ad, one advertiser match, or one advertiser profile, depending on the operation.

FieldTypeDescription
imageUrlstringThe ad image, when the creative is an image ad
advertiserNamestringThe advertiser running the ad
adFormatstringTEXT, IMAGE or VIDEO
adCategorystringGoogle's category for the ad, e.g. Clothing & Accessories
creativeIdstringStable ID for this creative
adUrlstringOpens this exact ad in the Ads Transparency Center
previewUrlstringRendered preview for text and video ads
firstShownstringFirst date this creative ran
lastShownstringMost recent date it ran
daysShownintegerDays the creative was shown
impressionsLowerBoundintegerBottom of Google's published impression range
impressionsUpperBoundintegerTop of that range
regionCountintegerHow many countries this creative ran in
regionsarrayPer-country reach with first and last shown dates
variationCountintegerHow many variations of this creative exist
advertiserIdstringThe advertiser ID, reusable in later runs
adCountLowerBoundintegerFewest ads this advertiser is known to run
adCountUpperBoundintegerMost ads this advertiser is known to run
legalNamestringVerified legal entity behind the advertiser
advertiserCountrystringCountry Google verified the advertiser in

Example row:

{
"query": "Nike",
"advertiserId": "AR16735076323512287233",
"advertiserName": "Nike, Inc.",
"creativeId": "CR07944289166462812161",
"adFormat": "IMAGE",
"imageUrl": "https://tpc.googlesyndication.com/archive/simgad/17551224094686740705",
"firstShown": "2023-11-16",
"lastShown": "2026-09-04",
"daysShown": 856,
"adUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR07944289166462812161?region=anywhere",
"advertiserUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233?region=anywhere",
"status": "success"
}

💼 Use Cases & Examples

1. Competitor Ad Monitoring

A PPC manager watching three rivals wants to know the moment a new creative goes live.

Input: the three brand names, on a daily schedule Output: every creative with first shown, last shown and days shown Use: diff two runs and you have the week's launches and the quiet retirements, without opening a browser.

2. Creative Research Before a Launch

A performance marketer writing new ad copy wants to see what already works in the category.

Input: the four best-funded advertisers in the vertical, format set to VIDEO Output: rendered previews and the run dates for each video ad Use: the creatives that have been live for 800 days are the ones paying for themselves. Start there.

3. Market Entry and Country Comparison

A brand expanding into Germany wants to know what the incumbents run there, not in the US.

Input: the same advertiser, once per country Output: completely different creative sets per market, plus per-country reach Use: Nike runs roughly 10,000 ads globally and around 95 in Germany. That gap tells you how contested the market really is.

4. Agency Pitch Research

An agency preparing a pitch wants the prospect's whole ad footprint on one slide.

Input: the prospect and its three closest rivals, advertiserSearch first for the ad counts Output: ad-count ranges per brand, then every creative for the ones that matter Use: walk in already knowing which formats they lean on and how stale their creative is.

5. Ad Compliance and Brand Protection

A brand-protection lead is hunting advertisers bidding on their trademark.

Input: the brand name, advertiserSearch Output: every verified advertiser matching that name, with its registered country Use: the lookalikes and grey-market resellers surface immediately, each with a verified legal name you can act on.

6. Ad Intelligence for AI Agents

An analyst wants an agent to answer ad questions on demand.

Input: the MCP prompt above Output: structured rows the agent can summarise, chart or join to other data Use: "what is Expedia running in Spain this month" becomes a question you ask, not a project.


🔗 Integration Examples

JavaScript/Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('sian.agency/google-ads-transparency-scraper').call({
operation: 'advertiserAds',
queries: ['Nike'],
region: 'US',
maxResults: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('sian.agency/google-ads-transparency-scraper').call(
run_input={
'operation': 'advertiserAds',
'queries': ['Nike'],
'region': 'US',
'maxResults': 100,
}
)
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item)

cURL

curl -X POST 'https://api.apify.com/v2/acts/sian.agency~google-ads-transparency-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation": "advertiserAds", "queries": ["Nike"], "region": "US"}'

Automation Workflows (N8N / Zapier / Make)

  1. Trigger: a weekly schedule, or a webhook from your own tooling
  2. HTTP Request: call the actor API with your brand list
  3. Process: compare creativeId values against last week's run
  4. Action: post the new creatives to Slack, or append them to a sheet

📊 Performance & Pricing

FREE Tier (Try It Now)

  • 25 ads per run, with every field and every operation unlocked
  • No credit card required
  • Enough to see exactly what a competitor is running
  • Unlimited ads per run, up to 5,000 per brand
  • Pay per result: only successful rows are charged
  • Format and date filters run before billing, so a narrow search costs less than a wide one

💰 $2.00 per 1,000 ads on paid plans, the middle of the market, on an actor that reads 100 ads per request instead of 40.

What a run costs, in full. Every billable event is listed here so nothing on your invoice is a surprise. Prices are the paid-plan (Bronze) rate; the Free tier is 4x these, and Gold and above are lower.

You are charged forEventPaid plans
Each ad creative returnedad-creative-result$0.002 ($2.00 per 1,000)
Each advertiser found by nameadvertiser-result$0.0025
Each advertiser profileadvertiser-profile-result$0.003
Each per-ad detail lookup, only with includeCreativeDetailcreative-detail-result$0.003
Starting a runapify-actor-start$0.005

Rows that fail are never charged - an input we could not read costs you the run-start fee and nothing else.

🔗 View current pricing


❓ Frequently Asked Questions

Q: Do I need a Google account or an API key? A: No. The Ads Transparency Center is public, and this actor reads it without any login, key or cookie.

Q: Can I look up a company by its website? A: No, and this is worth understanding before you pick a tool. Google's search matches advertiser names, not domains. Passing nike.com returns an unrelated company with a similar name, so this actor rejects a bare domain instead of quietly profiling the wrong business. Pass the brand name, or run advertiserSearch first and take the advertiser ID.

Q: A brand name matches several advertisers. Which one do I get? A: The one running the most ads, which is almost always the company you meant. Searching "Nike" surfaces a Kenyan advertiser with a single ad before Nike, Inc. with 10,000, so first-match would be wrong. Run advertiserSearch if you want to choose yourself.

Q: Why does an advertiser return no ads? A: Usually the country filter. Try Anywhere first. Google also indexes verified advertisers only, so a company that never completed verification has no page at all.

Q: Are the impression numbers exact? A: No. Google publishes ad counts and impressions as ranges, so a creative reads as 1,000 to 2,000 impressions rather than a single figure. Every tool reading this source is bound by the same limit.

Q: How many ads can I pull for one brand? A: Up to 5,000 per brand per run. Large advertisers run thousands, so maxResults is the main lever on run cost.

Q: What output formats are available? A: JSON, CSV and Excel, exported straight from the Apify dataset.

Q: How far back does the data go? A: As far as Google keeps it. Creatives first shown in 2021 and 2022 still appear in the results.


🐛 Troubleshooting

A brand returns no ads

  • Set the country to Anywhere, since the brand may not advertise in the one you chose
  • Run advertiserSearch on the same name to confirm the advertiser exists and is verified

I got the wrong company

  • Run advertiserSearch, pick the right advertiserId from the results, then pass that ID instead of the name

A run returns fewer ads than maxResults

  • The advertiser has fewer ads than you asked for in that country, or your format and date filters removed the rest. Filtered ads are never charged.

The run is slower than expected

  • Requests are deliberately paced so Google does not throttle the run. A large maxResults takes longer rather than failing.

A video ad has no image

  • Video and text ads carry previewUrl rather than imageUrl. Open adUrl to see the ad as Google renders it.

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

This actor reads Google's Ads Transparency Center, a disclosure system Google publishes deliberately so that anyone can see who is advertising and what they are running.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the legality of web scraping.

Google and Google Ads are trademarks of Google LLC. This actor is not affiliated with, endorsed by, or sponsored by Google.


🤝 Support

Telegram Support

Join our active support community


Built by SIÁN Agency | More Tools