Google Ads Presence Lookup: ads transparency checker from $3/1k
Pricing
from $2.28 / 1,000 advertiser founds
Google Ads Presence Lookup: ads transparency checker from $3/1k
Google Ads transparency checker by domain — see if a brand or domain is running Google Ads, straight from Google's own Ads Transparency Center. One row per company: advertiser identity, verified status, ad counts by format and recency, sample ad links. Never charged for a miss.
Pricing
from $2.28 / 1,000 advertiser founds
Rating
0.0
(0)
Developer
Adrian Voss
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 hours ago
Last modified
Categories
Share
Google Ads Presence Lookup: Google Ads Transparency Checker
Paste a list of company domains (or brand names). Get back one row per company telling you whether it's running Google Ads right now — with the advertiser's verified identity, how many ads are in Google's library, how many ran in the last 30 days, the format mix (image / text / video), first and last seen dates, and links to sample ads. Data comes straight from Google's own Ads Transparency Center, the public register of every ad shown by verified Google advertisers.
Who it's for
- Outbound and RevOps teams enriching a lead list: "does this prospect spend on Google Ads?" is a buying-intent and budget signal you can filter on in Clay, n8n, or a spreadsheet.
- Agencies prospecting for ad clients: find companies that are already advertising (they have budget) or not yet advertising (they need you).
- Competitor and market analysts who want a quick per-company read — active ad program or not, how heavy, which formats — without scraping thousands of creatives.
- AI agents that need a single structured answer per company, callable over plain HTTP.
Why this one
Every other Google Ads actor on Apify is a bulk creative scraper: you give it a query, it downloads hundreds or thousands of individual ads, and you pay per ad. That's the right tool for building a creative-intelligence archive — and the wrong tool for enriching a 5,000-row lead list, where you'd pay for 500 ads from one company just to learn "yes, they advertise."
This actor asks the opposite question: one input company → one output row, sized and priced as an enrichment column.
- One row per company, not one per ad. Predictable output, predictable cost.
- Never charged for a miss. A company with no ads in the Transparency Center costs you nothing.
- Domains beat brand names. A domain (
acme.com) is matched against ads that actually link to it — the strongest possible signal. Brand names are matched against Google's advertiser register with exact-name ranking (a search for "nike" on Google's own site ranks a small Kenyan advertiser named "Nike" above Nike, Inc. — this actor corrects for that). - Verified identity included. Google's advertiser verification status, legal name, and country come from the advertiser's own Transparency page.
What you get
One dataset row per input, with these columns (all included by default; select fewer with the columns input):
| Column | Meaning |
|---|---|
advertiserName / advertiserId | The top advertiser behind this domain's ads (or the matched advertiser for a brand-name query) and its stable AR… Transparency Center ID |
verified | Whether the advertiser passed Google's identity verification |
legalName | The advertiser's legal name on file with Google |
advertiserCountry | Advertiser's registered country (ISO code) |
creativeCount / creativeCountLowerBound | Estimated ads in Google's library — Google reports a range; creativeCount is the upper estimate its own UI displays ("~9K ads"), exact for small advertisers |
creativesLast30d / activeLast30d | Estimated ads shown in the last 30 days, and the yes/no flag most lists filter on |
imageAds / textAds / videoAds | Estimated ad counts by format — "are they running video?" in one column |
firstSeenAt / lastSeenAt | Earliest and latest ad-shown dates among the sampled creatives |
advertiserCount / advertisersSeen | Distinct advertisers observed running ads to this domain (agencies, resellers, and regional entities show up here) |
sampleCreativeUrls | Up to 5 direct links to real ads in the Transparency Center |
transparencyUrl | The advertiser's public Transparency Center page |
inputType / region | Whether the input matched as a domain or brand, and the region scope (anywhere) |
How to use Google Ads Presence Lookup — Is This Domain Running Ads?
- In the Apify Console. Open the actor page and click Start — the
queriesfield is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found. - Via the API. Call it directly with a POST request — no Console needed once you have an API token:
curl "https://api.apify.com/v2/acts/accountable_eel~google-ads-presence-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-X POST \-H "Content-Type: application/json" \-d '{"queries":["nike.com","booking.com"]}'
- On a schedule. Save this actor as an Apify Task with the input you want, then add a Schedule (hourly, daily, weekly) so it runs on its own — no server of your own required.
Input
{"queries": ["nike.com","booking.com"]}
One brand name or company domain per line. Domains match more reliably than brand names. Accepted formats: nike.com, https://www.nike.com/gb/, Nike, Inc..
Sample output
Pricing
$3 per 1,000 brands or domains, plus a $0.00005 start fee. Misses (found:false) are never charged.
Compare: assembling the same answer from a bulk creative scraper at ~$0.80 per 1,000 ads means paying for every ad a big advertiser runs just to learn that they advertise — a single Nike-sized company can cost more than this actor's entire 1,000-company run. Clay's own enrichment credits run $0.08–0.40 per row.
Use it from Clay, n8n, Make, or an AI agent
This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.
curl "https://api.apify.com/v2/acts/accountable_eel~google-ads-presence-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-X POST \-H "Content-Type: application/json" \-d '{"queries":["nike.com","booking.com"]}'
n8n. Add an HTTP Request node: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~google-ads-presence-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body Content Type JSON, JSON Body {"queries":["nike.com","booking.com"]} (swap in an expression from an earlier node for a real value).
Clay. Add an "HTTP API" column: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~google-ads-presence-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body {"queries":["{{brand or domain}}"]}, mapping the row's brand or domain into the queries array.
MCP. In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "Google Ads Transparency Checker | Apify" — the agent will find and run this actor.
Tips
- Prefer domains over brand names.
acme.commatches ads by their landing-page domain — unambiguous. "Acme" has to go through advertiser-name search, which can hit same-named companies in other countries. TheinputTypecolumn tells you which path each row took. activeLast30dis the enrichment flag.creativeCountincludes historical ads; a company can have thousands in the library and none running this month.- Counts are Google's own estimates. For large advertisers Google reports order-of-magnitude ranges (8,000–9,000 for Nike, Inc. — the UI shows "~9K"); for small advertisers they're exact.
creativeCountis the upper bound,creativeCountLowerBoundthe lower. firstSeenAtis sampled, not global. It's the earliest first-shown date among the sampled creatives (newest-first ordering), so treat it as "advertising since at least…", not the advertiser's true first-ever ad date.- Multiple advertisers per domain is normal. Large brands advertise through regional entities and agencies (
nike.comshows Nike Retail BV, Nike, Inc., WPP Media, and more).advertisersSeenlists what was observed; the row's identity fields describe the most frequent one. - Keep the RESIDENTIAL proxy default. Google serves these endpoints happily to residential IPs; shared datacenter IPs are much more likely to be rate-limited mid-run.
FAQ
What does "no ads found" (found: false) actually mean?
No advertiser in Google's Transparency Center currently has (or recently had) ads linking to that domain, or no advertiser register entry matched your brand name. It does not distinguish "never advertised" from "ads aged out of the library". Misses are never charged.
How fresh is the data?
It's read live from Google's Transparency Center at run time — the same data Google shows the public, including ads shown the same day (lastSeenAt is often today's date for active advertisers).
Which regions are covered?
The lookup runs with Google's "Anywhere" region scope — ads shown in any country count. Per-country breakdowns aren't included; advertiserCountry is the advertiser's registered home country, not where its ads run.
Are the ad counts exact? Exact for small advertisers; Google-reported estimate ranges for large ones (the same "~9K ads" its own UI shows). Date filtering (the 30-day count) uses Google's Pacific-time day boundaries.
Does this download the actual ad creatives? No — that's deliberate. You get up to 5 sample ad links plus counts by format. If you need every creative's text and media, use a bulk creative scraper; this actor is the cheap per-company presence check that tells you which companies are worth that deeper pull.
Can I look up an advertiser by their AR… ID?
Not directly in this version — input a domain or brand name. The row gives you the advertiserId and transparencyUrl for any deeper manual digging.
Rate limits / getting blocked?
The actor uses Apify RESIDENTIAL proxies by default and retries transient failures. If a run reports BLOCKED rows, lower maxConcurrency (5 by default) — Google rate-limits bursts, not sustained modest traffic.
Is this legal? The Ads Transparency Center is Google's own public transparency register, built so anyone can inspect who advertises what. This actor reads only that public data — no login, no personal data.
Related actors
- Tech Stack Lookup — what a website is built on (CMS, analytics, payments), another per-domain enrichment column.
- Company Domain Enrichment — RDAP, DNS, email route, tech and hiring signals for a domain in one call.
- Email Deliverability Check — MX/provider verification for outbound lists.