Google Ads Presence Lookup: ads transparency checker from $3/1k avatar

Google Ads Presence Lookup: ads transparency checker from $3/1k

Pricing

from $2.28 / 1,000 advertiser founds

Go to Apify Store
Google Ads Presence Lookup: ads transparency checker from $3/1k

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

Adrian Voss

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 hours ago

Last modified

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):

ColumnMeaning
advertiserName / advertiserIdThe top advertiser behind this domain's ads (or the matched advertiser for a brand-name query) and its stable AR… Transparency Center ID
verifiedWhether the advertiser passed Google's identity verification
legalNameThe advertiser's legal name on file with Google
advertiserCountryAdvertiser's registered country (ISO code)
creativeCount / creativeCountLowerBoundEstimated 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 / activeLast30dEstimated ads shown in the last 30 days, and the yes/no flag most lists filter on
imageAds / textAds / videoAdsEstimated ad counts by format — "are they running video?" in one column
firstSeenAt / lastSeenAtEarliest and latest ad-shown dates among the sampled creatives
advertiserCount / advertisersSeenDistinct advertisers observed running ads to this domain (agencies, resellers, and regional entities show up here)
sampleCreativeUrlsUp to 5 direct links to real ads in the Transparency Center
transparencyUrlThe advertiser's public Transparency Center page
inputType / regionWhether 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?

  1. In the Apify Console. Open the actor page and click Start — the queries field is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found.
  2. 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"]}'
  3. 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

queryfoundstatusadvertiserNameadvertiserIdverifiedlegalNameadvertiserCountrycreativeCountcreativeCountLowerBoundcreativesLast30dactiveLast30dimageAdstextAdsvideoAdsfirstSeenAtlastSeenAtadvertiserCountadvertisersSeensampleCreativeUrlstransparencyUrlinputTyperegionscrapedAt
booking.comtrueOKBooking.comAR02934798844673654785falseBooking.comNL154000001530000012500000true15400000400050002021-10-252026-08-311[{"advertiserId":"AR02934798844673654785","advertiserName":"Booking.com"}]["https://adstransparency.google.com/advertiser/AR02934798844673654785/creative/CR01274045157221597185?region=anywhere","https://adstransparency.google.com/advertiser/AR02934798844673654785/creative/CR06634413802920083457?region=anywhere","https://adstransparency.google.com/advertiser/AR02934798844673654785/creative/CR11308336422907281409?region=anywhere","https://adstransparency.google.com/advertiser/AR02934798844673654785/creative/CR04582091563454169089?region=anywhere","https://adstransparency.google.com/advertiser/AR02934798844673654785/creative/CR13333864921213960193?region=anywhere"]https://adstransparency.google.com/advertiser/AR02934798844673654785?region=anywheredomainanywhere2026-08-31T06:30:25.604Z

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.com matches ads by their landing-page domain — unambiguous. "Acme" has to go through advertiser-name search, which can hit same-named companies in other countries. The inputType column tells you which path each row took.
  • activeLast30d is the enrichment flag. creativeCount includes 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. creativeCount is the upper bound, creativeCountLowerBound the lower.
  • firstSeenAt is 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.com shows Nike Retail BV, Nike, Inc., WPP Media, and more). advertisersSeen lists 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.