Google Ads Transparency API: Competitor Ads by Domain or Brand
Pricing
from $0.85 / 1,000 ads
Google Ads Transparency API: Competitor Ads by Domain or Brand
Every ad a competitor runs on Google Search, YouTube, Display, Maps and Play, from Google's Ads Transparency Center. Search by website domain, brand name or advertiser ID. Get format, first and last shown dates, image links, YouTube video links and optional per-country reach. $1 per 1,000 ads.
Pricing
from $0.85 / 1,000 ads
Rating
0.0
(0)
Developer
Saulius AutomatesIT
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 minutes ago
Last modified
Categories
Share
See every ad a competitor runs on Google: Search, YouTube, Display, Maps, Play and Shopping. This Actor reads Google's public Ads Transparency Center and returns the ads as clean JSON, CSV or Excel. No Google account, no login, no cookies.
Give it a website domain (hubspot.com), a brand name (HubSpot), an advertiser ID (AR10072600183532683265) or any Transparency Center URL. For each ad you get:
- Advertiser: Google-verified legal name and advertiser ID.
- Format: text, image or video.
- Dates: when Google first and last showed the ad, and on how many days it ran. Long-running ads are the ones that work.
- Creative: the ad image (text ads are archived by Google as images too), the live preview link, and for video ads the YouTube video ID and URL.
- Optional detail: every country the ad ran in with first and last shown dates, impression ranges where Google publishes them (EU countries), and all creative variations.
Why use it
- $1 per 1,000 ads. The Store's best-known Google Ads Transparency scrapers charge $1.48 to $2 per 1,000 on the free plan, plus extra for details. Paid Apify plans get the usual discounts on top.
- Domain search finds every advertiser. Agencies, resellers and regional entities that point ads to the same website all come back in one query.
- Filters that matter. Country, format (text, image, video) and a date range, so a weekly run only returns ads shown that week.
- YouTube links included. Video ads come with the YouTube URL at no extra cost, ready for our YouTube Transcript Scraper if you want the script of every competitor video ad.
- Built for bulk and schedules. Each request goes out on a fresh proxy IP, so large brands with tens of thousands of ads finish without rate-limit failures. Empty queries cost nothing.
What it's used for
- Competitor ad monitoring: a weekly scheduled run per competitor domain, filtered to the last 7 days, shows every new creative.
- Creative research: find a brand's longest-running ads (
daysShown) to see which messages and formats they keep paying for. - Agency prospecting: list every business advertising in a country and format, then check how active they are.
- Brand protection: catch advertisers using your brand or domain.
- Ad intelligence for AI agents: an agent can pull a competitor's ads and summarise their positioning.
Input
| Field | What it does | Default |
|---|---|---|
queries | Domains, brand names, advertiser IDs or Transparency Center URLs, one per line | |
mode | ads, or advertisers to look up advertiser names and IDs only | ads |
region | Two-letter country code (US, GB, DE...) or anywhere | anywhere |
format | all, text, image or video | all |
dateFrom, dateTo | Only ads shown in this window (YYYY-MM-DD) | all time |
maxAdsPerQuery | Cap per query line, newest ads first | 100 |
includeDetails | Add per-country dates, EU impression ranges and all variations | false |
includeVideoIds | Add YouTube video ID and URL to video ads (free) | true |
maxAdvertisersPerName | For brand names: how many matching advertisers to scrape, most ads first | 1 |
Example:
{"queries": ["hubspot.com", "salesforce.com"],"region": "US","dateFrom": "2026-09-01","maxAdsPerQuery": 500}
Domain or brand name? A domain is the most complete: it returns ads from every advertiser that sends traffic to that site. A brand name is matched against Google's verified advertiser names (HubSpot finds "Hubspot, Inc."). Names that are common words can match the wrong company, so use the domain or the advertiser ID when it matters. Run mode: "advertisers" first to see which advertisers a name matches.
Output
One item per ad:
{"type": "ad","query": "hubspot.com","region": "US","advertiserId": "AR10072600183532683265","advertiserName": "Hubspot, Inc.","creativeId": "CR02085961376810926081","format": "video","firstShown": "2026-06-29T21:00:29.000Z","lastShown": "2026-10-03T11:59:19.000Z","daysShown": 97,"spanDays": 97,"domain": "hubspot.com","imageUrl": null,"previewUrl": "https://displayads-formats.googleusercontent.com/ads/preview/content.js?...","videoId": "yiG2lE3wqrY","videoUrl": "https://www.youtube.com/watch?v=yiG2lE3wqrY","adUrl": "https://adstransparency.google.com/advertiser/AR10072600183532683265/creative/CR02085961376810926081?region=US","scrapedAt": "2026-10-03T13:06:00.404Z"}
Image and text ads carry imageUrl (with imageWidth and imageHeight). With includeDetails on, each ad also has:
{"regionCount": 9,"regions": [{ "countryCode": "FR", "country": "France", "firstShown": "2025-05-30", "lastShown": "2026-09-21", "impressionsMin": 1000 }],"euImpressionsMin": 1000,"variationCount": 3,"variations": [{ "imageUrl": "https://tpc.googlesyndication.com/archive/simgad/...", "width": 348, "height": 269 }]}
daysShown is Google's count of days the ad was shown; spanDays is the calendar span from first to last shown. In advertisers mode each item is an advertiser: advertiserName, advertiserId, country, adCountMin, adCountMax, advertiserUrl and related domains.
The run summary (ads delivered, queries without results, failures) is saved as OUTPUT in the run's key-value store.
Pricing
Pay per result, no subscription:
| Event | Price |
|---|---|
| Ad | $0.001 per ad ($1.00 per 1,000) |
Ad details (only with includeDetails) | $0.001 per ad |
Advertiser record (advertisers mode) | $0.0005 per advertiser |
| Actor start | $0.00005 per run |
Queries that find nothing are free. Set Maximum cost per run in the run options and the run stops cleanly when it is reached.
Tutorial: Python, schedules and AI agents
You need an Apify API token (Apify Console > Settings > API & Integrations). Apify's free plan includes $5 of monthly credit, about 5,000 ads.
1. Python: every ad a competitor ran this month
$pip install apify-client
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("sauliusautomatesit/google-ads-transparency-api").call(run_input={"queries": ["hubspot.com"],"region": "US","dateFrom": "2026-09-01","maxAdsPerQuery": 1000,})ads = list(client.dataset(run.default_dataset_id).iterate_items())longest = sorted(ads, key=lambda a: a["daysShown"] or 0, reverse=True)[:10]for ad in longest:print(ad["format"], ad["daysShown"], "days", ad["videoUrl"] or ad["imageUrl"])
run.default_dataset_id is for apify-client 3.x; on 2.x write run["defaultDatasetId"]. Pass max_total_charge_usd=1 to .call() to cap a run at $1.
2. Weekly competitor monitoring
Save an input like this as a Task and give it a weekly schedule. Each run returns only ads shown in the last 7 days; connect the Task to Slack, Google Sheets or a webhook in the Integrations tab.
{"queries": ["competitor-one.com", "competitor-two.com", "competitor-three.com"],"region": "US","dateFrom": "2026-09-26","maxAdsPerQuery": 2000}
3. AI agents: one MCP URL, one tool
This URL gives any MCP client exactly one tool, this Actor:
https://mcp.apify.com/?tools=sauliusautomatesit/google-ads-transparency-api
Claude Code:
$claude mcp add --transport http google-ads-transparency "https://mcp.apify.com/?tools=sauliusautomatesit/google-ads-transparency-api"
Cursor, Claude Desktop, VS Code and other clients that take JSON:
{"mcpServers": {"google-ads-transparency": {"url": "https://mcp.apify.com/?tools=sauliusautomatesit/google-ads-transparency-api","headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }}}}
Then ask: "Which video ads has Salesforce run in the UK since August, and which ran longest?"
Related Actors
- Google Trends API: search interest over time for the keywords and brands your competitors advertise on.
- YouTube Transcript Scraper: the full script of every competitor video ad, from the YouTube links this Actor returns.
- Google Hotels API: hotel prices by destination, for travel and hospitality advertisers.
Limits and notes
- Data comes from Google's public Ads Transparency Center. Google lists ads from verified advertisers; it does not publish spend, clicks or keywords (except for political ads), and it publishes impression ranges only for EU countries.
- Text ads are archived by Google as images, so their wording is in
imageUrl, not as text. - A platform filter (Search only, YouTube only) is not offered yet.
- Not affiliated with Google.