Google Ads Transparency Scraper — Competitor Ads avatar

Google Ads Transparency Scraper — Competitor Ads

Pricing

from $1.05 / 1,000 ad scrapeds

Go to Apify Store
Google Ads Transparency Scraper — Competitor Ads

Google Ads Transparency Scraper — Competitor Ads

Get every ad a brand or domain runs on Google Search, YouTube, Maps, Play and Shopping from the Ads Transparency Center: ad copy, images, videos, first and last shown dates, landing pages with UTM tags. Bulk check which domains advertise. No login.

Pricing

from $1.05 / 1,000 ad scrapeds

Rating

0.0

(0)

Developer

Leandro Zanatta

Leandro Zanatta

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Categories

Share

Google Ads Transparency Scraper — Competitor Ads, Ad Copy & Landing Pages

See every ad a brand runs on Google: Search, YouTube, Display, Maps, Play and Shopping, straight from the public Google Ads Transparency Center. Search by brand name, domain or advertiser ID and get each ad with its format, first and last date shown, days running, image or video, ad copy, display URL and landing page with UTM tags. Check long lists of domains in bulk to find out who advertises on Google and how much.

No login, no Google account, no API key.

Nubank search ads as Google archives them (images) next to the display URL, headline and description this Actor extracts as text

Real output of this Actor for "Nubank" in Brazil: Google stores search ads as pictures, the Actor returns them as text.

Why use it

  • 📝 Real ad copy, also for text ads: Google archives search ads as images. This Actor reads them (OCR) and returns display URL, headline and description as text, including dynamic keyword insertion such as {KeyWord:Nike Shoes}. Other scrapers only give you the picture.
  • 🎯 Landing pages and UTM tags: see where each ad sends traffic and how the campaign is tagged (utm_source, utm_campaign…), when Google exposes the click URL.
  • 🎬 YouTube videos: video ads come with their YouTube link and thumbnail.
  • 📍 Local and Maps ads: business name, call to action, category and the store addresses shown in the ad.
  • 🔎 Search the way you think: brand names ("Magazine Luiza"), domains (nike.com), advertiser IDs or Transparency Center URLs, mixed in one list.
  • ✅ Bulk advertiser check: one row per domain or brand: does it advertise on Google, how many ads, which accounts, when the last ad ran. Great for lead lists.
  • 🌍 Filters: country, platform (Search, YouTube, Maps, Play, Shopping), format (text, image, video) and date range, applied by Google itself, so you only pay for what you need.
  • 💸 Pay per ad: no subscription, no per-seat SpyFu or Semrush plan.

Who uses it

WhoWhat for
Marketing & growth teamsMonitor competitors' messages, offers and creatives over time
AgenciesCompetitive audits and pitch decks for new clients in minutes
SEO / SEM specialistsFind the keywords, headlines and landing pages competitors invest in
Sales & lead generationFind companies that spend on Google Ads (bulk domain check)
E-commerce & brandsSpot resellers or affiliates bidding on your brand
Researchers & journalistsStudy advertising by sector, country or period

Input

FieldDefaultDescription
Advertisers, domains or URLs (searchTerms)—Brand names, domains, advertiser IDs (AR…) or Ads Transparency Center links
What to get (mode)adsads = every ad with details; advertisers = one row per search (does it advertise, how many ads)
Country (region)anywhere2-letter code (BR, US, GB, DE, IN…)
Max ads per advertiser or domain (maxAdsPerSearch)100Most recently shown first
Ad format (adFormat)alltext, image or video
Google platform (platform)allsearch, youtube, maps, play, shopping (ads shown since Sept 2023)
Only ads shown in the last N days (shownInLastDays)—e.g. 30
Shown from / until (startDate, endDate)—Exact date range (YYYY-MM-DD)
Advertiser accounts per brand name (maxAdvertisersPerName)3A brand often has several accounts; the biggest ones are used
Ad copy and landing pages (includeAdDetails)trueRead headline, description, display URL, landing page and YouTube video from each ad preview
Read text ads (OCR) (readTextAds)trueTurn the text-ad images into text
Proxy (proxyConfiguration)Apify ProxyGoogle limits requests per IP; IPs are rotated automatically
{
"searchTerms": ["nike.com", "Magazine Luiza", "AR14248386603834671105"],
"region": "BR",
"maxAdsPerSearch": 200,
"shownInLastDays": 30
}

Output

One row per ad (ads mode):

{
"searchTerm": "Nubank",
"advertiserId": "AR16872622891684855809",
"advertiserName": "NU PAGAMENTOS S.A. INSTITUIÇÃO DE PAGAMENTO",
"domain": "nubank.com.br",
"creativeId": "CR11535416222929649665",
"format": "text",
"firstShown": "2023-06-22T20:02:34Z",
"lastShown": "2026-10-12T16:09:27Z",
"daysShown": 1209,
"visibleUrl": "www.nubank.com.br/investimento",
"headline": "Invista mais fácil com Nubank - Rende até 120% do CDI",
"description": "No Nubank é você quem tem o controle do seu dinheiro. Parece simples. E é. Caixinha Turbo: rende...",
"imageUrl": "https://tpc.googlesyndication.com/archive/simgad/4636736067623573836",
"adUrl": "https://adstransparency.google.com/advertiser/AR16872622891684855809/creative/CR11535416222929649665?region=BR",
"adsTotalMin": 1000,
"adsTotalMax": 2000
}

Depending on the ad, you also get:

FieldWhen
landingUrl, utmThe ad's click URL is available (often video ads)
youtubeVideoUrl, videoThumbnailUrl, videoDurationSecondsYouTube / video ads
businessName, callToAction, businessCategory, locationsMaps and local ads
adTextFull OCR text of a text ad
adsTotalMin, adsTotalMaxHow many ads Google reports for this advertiser or domain in total

advertisers mode returns one row per search: found, adsMin, adsMax, lastAdShown, formats, advertisers (accounts) and a link to the Transparency Center.

Pricing

Pay per ad scraped (details and OCR included) or per advertiser checked in bulk-check mode, plus a tiny start fee. No subscription. Apify plan discounts apply automatically (see the Pricing tab). Use Max ads or the run's maximum cost to cap spending.

Use it from code or an AI agent

Python: the competitor's newest ads

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("adorable_partial/google-ads-transparency-scraper").call(run_input={
"searchTerms": ["competitor.com"], "region": "US", "shownInLastDays": 30,
})
for ad in client.dataset(run["defaultDatasetId"]).iterate_items():
print(ad.get("format"), ad.get("lastShown"), ad.get("headline"), ad.get("landingUrl"))

JavaScript: which of my leads advertise on Google?

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('adorable_partial/google-ads-transparency-scraper').call({
searchTerms: ['acme.com', 'example.org', 'shop.example'],
mode: 'advertisers',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.filter((r) => r.found).forEach((r) => console.log(r.searchTerm, r.adsMin, r.lastAdShown));

No-code and agents: schedule a weekly competitor report with Make, Zapier or n8n, send new ads to Slack or Google Sheets, or let an AI agent research advertisers through the Apify MCP server.

FAQ

Is this data public? Yes. Google publishes it in the Ads Transparency Center for anyone to see; this Actor collects it for you. It is not affiliated with Google.

Why don't all ads have a headline or landing page? Google shows different previews per ad type. Text ads are read with OCR; video, Maps and local ads come with their copy and links when Google includes them; some display ads are only an image (imageUrl).

Why "adsTotalMin / adsTotalMax"? Google reports totals as ranges (e.g. 9,000–10,000).

Can I see spend, impressions or targeting? Google only publishes those for political ads and some regions; this Actor returns what the Transparency Center shows for each ad.

I got a blocking error. Google limits requests per IP. The Actor rotates Apify Proxy IPs automatically; for very large runs choose residential proxies in the Proxy field.

Need a different tool? Request it

Missing a feature, an input or output format, or a whole different tool for your workflow? Open an issue in the Issues tab and describe what you need:

  • what goes in (files, URLs, data) and what should come out,
  • roughly how much you process (per day or month),
  • one example, if you can share it.

Requests with a real use case get built, either as a new option in this Actor or as a new Actor in this collection, and you get notified in the issue when it's live. Every request is read.