Google Ads Transparency Scraper: Competitor Ads Library
Pricing
from $1.00 / 1,000 ad scrapeds
Google Ads Transparency Scraper: Competitor Ads Library
Google Ads Transparency Center scraper: get any competitor's Google ads by domain, brand or advertiser ID with format, first/last shown dates, creative and preview URLs and per-country reach. Check if a company runs Google Ads, find advertiser IDs and monitor only new ads. Licensed data.
Pricing
from $1.00 / 1,000 ad scrapeds
Rating
0.0
(0)
Developer
vncntlabs Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 hours ago
Last modified
Categories
Share
Google Ads Transparency Center Scraper: competitor ads library, advertisers and new-ad monitor
Scrape the Google Ads Transparency Center for any competitor: every Google Search, Shopping, YouTube and Display ad an advertiser runs, by domain, brand name or advertiser ID, with format, first and last shown dates, creative and preview URLs and per-country reach. Use it as a Google ads library for PPC research, as a quick 'does this company run Google Ads?' check for lead lists, or as a monitor that returns only new ads. Data comes through a licensed API, so there are no captchas or proxies.
Who it's for
- PPC agencies doing competitor research.
- Lead-gen teams qualifying prospects ("are they already spending on Google Ads?").
- Brand-protection teams watching for impersonators.
- Market researchers.
What you can do
| Mode | You give | You get |
|---|---|---|
| Ads library | domains, company names, advertiser IDs or Transparency Center URLs | One row per ad: format (text/image/video), first and last shown dates, days running, preview image, creative preview URL, Transparency Center link, advertiser name/ID, verified flag, and the regions (from your selected countries) where the ad appeared |
| Quick check | a list of domains or company names | One row per company: runs Google Ads? yes/no, active now (last ad within N days), approximate ad count, last ad date, formats, advertiser names. Built for lead lists |
| Monitor | the same targets on a schedule | Only ads that are new since the last run. It remembers what it has already seen in a named key-value store in your own Apify account |
| Find advertisers | company names | Google's advertiser accounts that match: advertiser ID, legal name, country, verified status and approximate ad count. Also lists related advertiser domains |
Filters
- Country, or several countries for per-country reach
- Ad format
- Google platform: Search, YouTube, Shopping, Play or Maps
- Date range (history goes back to 31 May 2018)
Input examples
Competitor ads in the US and UK:
{ "mode": "ads", "targets": ["printify.com", "Canva"], "countries": ["US", "GB"], "maxAdsPerTarget": 100 }
Does each lead run Google Ads?
{ "mode": "check", "targets": ["acme-plumbing.com", "bestdentist.com", "Joe's Pizza"], "countries": ["US"] }
Daily new-ad alerts (schedule it in Apify):
{ "mode": "monitor", "targets": ["competitor.com"], "maxAdsPerTarget": 120, "monitorStoreName": "competitor-watch" }
Only YouTube video ads from the last 30 days:
{ "targets": ["nike.com"], "adFormat": "video", "platform": "youtube", "dateFrom": "30 days" }
Targets can be any of these:
nike.comorhttps://www.nike.com/…(domain)Nike(company name)AR16735076323512287233(advertiser ID)- An
adstransparency.google.com/advertiser/…or…?domain=…URL
How names are matched
- Names are matched to Google's advertiser accounts, ignoring case, punctuation and suffixes like Inc, LLC or GmbH.
- By default only exact name matches count, and every matching verified account is included (big brands often have several).
- Set Advertiser name matching to Best guess to fall back to the closest match.
- Or use Find advertisers to pick advertiser IDs yourself.
Output
Ad row (type: "ad"), trimmed:
{"target": "printify.com", "advertiserName": "Printify LLC", "advertiserId": "AR08671856592045473793","verified": true, "creativeId": "CR16010598130466684929", "format": "text","adUrl": "https://adstransparency.google.com/advertiser/AR08671856592045473793/creative/CR16010598130466684929?region=US","previewImageUrl": "https://tpc.googlesyndication.com/archive/simgad/17118618634733905916","firstShown": "2025-06-21T01:48:06Z", "lastShown": "2026-10-16T12:38:18Z", "daysRunning": 482,"activeNow": true, "advertiserMatchesTarget": true, "regions": ["US", "GB"], "rankInTarget": 1}
Quick-check row (type: "check"):
hasAds,hasOwnAds,activeNow,adsCountApproxlastAdShown,daysSinceLastAdformatsInSample,advertiserNames,countriesWithAdsbyCountry,transparencyUrl
Every run also writes:
- A
targetrow per input, with its status:okno_adsno_advertiser_matchno_new_adsbaseline_savederrornot_processed
skippedrows for invalid or duplicate inputs.- A run summary in the
OUTPUTrecord.
Dataset views: Ads, Quick check, Advertisers, Run summary. Export to JSON, CSV, Excel or via the API.
Pricing (pay per event)
You pay only for results.
| Event | Charged when |
|---|---|
| Ad scraped | Each ad delivered to your dataset (monitor mode: each new ad) |
| Advertiser processed | Ads library: each target looked up per country that returned ads. Quick check and Monitor: each target looked up per country (a "no ads" answer is still an answer). Find advertisers: each advertiser account returned |
| Actor start | Once per run (Apify standard) |
Never charged
- Invalid inputs
- Provider errors
- Names that match no advertiser (Ads library and Monitor)
- Ads library targets with no ads
Set a maximum charge per run and the Actor stops cleanly before going over it.
Apify free plan: up to 3 targets, 40 ads per target and 1 country per run.
Good to know
- Order and limits. Ads come most recently shown first.
- Up to 1,000 ads per target per country.
- For advertisers with more than 120 ads, the Actor automatically splits the search by format and platform and removes duplicates.
- Very large advertisers (100k+ ads) return their most recent ads, and the summary shows
allAdsFetched: false.
- Counts are estimates. Ad counts (
adsAvailableApprox,adsCountApprox,approxAdsCount) are Google's rounded estimates (for example "~400"). - How regions work.
regionslists the countries you selected where the ad appeared in that country's results.- It's complete when the advertiser has fewer ads in that country than Max ads per target.
- Leave Countries empty to search all regions worldwide (
regionsis then empty).
- Third-party advertisers in domain searches. A domain search also returns ads from other advertisers that point to that domain, such as partners, resellers and agencies.
- Every ad carries
advertiserMatchesTarget, which is true when the advertiser's name looks like the domain owner. - Quick check reports both
hasAdsandhasOwnAds. - Set Ads found by domain to matching to keep only owner-named advertisers. This also drops agencies that buy ads on a brand's behalf.
- Every ad carries
- What's in a creative.
- Text ads come with a rendered preview image, not raw headline text.
- Image, video and rich-media ads come with a preview URL.
- Per-creative variants and impression or spend ranges are not available (Google publishes spend only for political ads).
- Monitor runs.
- The monitor compares creative IDs against what earlier runs saw for the same target, countries and filters.
- Run one monitor schedule per store name at a time.
- Ads cut off by your maximum charge are not marked as seen, so they show up in the next run.
Use from AI agents (MCP)
AI assistants such as Claude, ChatGPT and Cursor can run this Actor through Apify's MCP server (https://mcp.apify.com). The agent can look up the Actor, read its input schema, run it and read the results. Runs use your own Apify account and are charged at the prices on this page.
- Actor name:
vncntlabs/google-ads-transparency - Server URL with only this tool:
https://mcp.apify.com?tools=vncntlabs/google-ads-transparency. The defaulthttps://mcp.apify.comalso works; the agent can then search Apify Store and call the Actor by name. - Claude (desktop app or claude.ai): Settings > Connectors > Add custom connector, paste the server URL, then sign in to Apify.
- ChatGPT: turn on Developer mode, then Settings > Apps & Connectors > Create, paste the server URL and choose OAuth.
- Cursor: run
/add-plugin apifyin Cursor chat and connect the Apify MCP server under Cursor Settings > Tools & MCPs, or add the server tomcp.json:
{ "mcpServers": { "apify": { "url": "https://mcp.apify.com?tools=vncntlabs/google-ads-transparency" } } }
Example prompt: "Use the Apify Actor vncntlabs/google-ads-transparency to list up to 50 Google ads that competitor.com ran in the US, and summarise their main offers."
To cap the cost of an agent's run, it can pass maxTotalChargeUsd in the run options.
FAQ
Is this legal? The Ads Transparency Center is a public Google service. This Actor retrieves its data through a licensed third-party API and does not log in or bypass any protection. You are responsible for how you use the data.
Why does a company show "no ads"?
- It isn't running Google Ads in that country.
- It advertises under a different domain or legal name. Try Find advertisers.
- All of its ads are older than your date filter.
Not affiliated with Google. "Google" and "Google Ads" are trademarks of Google LLC and are used here only to describe the data source.
Questions or a missing feature? Open an issue on the Actor page.