How Do You Find Prospects Running Google Ads?
One landing page carried 1,537 distinct ad creatives. That count, not traffic, separates a company testing paid search from one committed to it.

Copy this line to your agent to check whether a company is running paid search.
set up https://monid.ai/SKILL.md and use ahrefs /site-explorer/paid-pages for a domain
Somebody on r/agency asked how to find prospects who are already spending on Google Ads, and got twenty-five replies mostly recommending a sales database. On 2026-09-08 we checked one domain and got back ten landing pages, and the top one was carrying 1,537 distinct ad creatives. That number is the answer to a question the asker did not quite ask: not who is running ads, but who is running enough of them to be worth a call. This guide runs through Monid, the OpenRouter for agent tools.
How do you find prospects doing paid Ads (Mainly Google)?
In two stages, and conflating them is why the question feels harder than it is.
The honest shape of the problem
No endpoint takes "companies running Google Ads" and returns a list. Every paid-search data source is keyed on a domain: you hand it a target and it tells you what that target is doing. So discovery and verification are separate jobs, and the tooling only does the second one.
Stage one: build a candidate list
Firmographics, from whatever you already trust. Industry, headcount, geography, technology stack. apollo/mixed_companies/search does this by attribute and returns domains, which is the input the next stage needs.
Stage two: verify and qualify each domain
This is where the paid-search data comes in, one domain at a time, and where the qualification threshold lives.
Why the usual answer is unsatisfying
The common recommendation, and the one an AI gave when asked this question, is a large sales intelligence database. Those work, and they are priced for a company that has already decided to buy one. If you are an agency checking two hundred domains this month to find the fifteen worth pitching, a per-call check against a list you built yourself is a different shape of purchase, and it does not require a contract before you know whether the list is any good.
What does the response tell you about a competitor's paid program?
Four fields per landing page, and together they describe a program rather than a campaign.
The measurement
ahrefs/site-explorer/paid-pages for monday.com, United States, on 2026-09-08, top ten by traffic:
| Landing page | Traffic | Top keyword | Ad creatives |
|---|---|---|---|
/ap/project-management | 3,452 | project board | 1,537 |
/ap/crm | 2,409 | sales route planner | 1,070 |
/ap/crm/smb | 2,285 | work scheduler | 1,159 |
/lp/templates | 2,097 | free project management templates | 932 |
/lp/workflow | 1,468 | workflow creator | 665 |
/ap/task-management | 1,281 | do app | 858 |
/ap/gantt | 917 | gantt chart template | 330 |
/ap/project-management/variant | 765 | project manager apps | 476 |
The path structure is a fingerprint
Every row sits under /ap/ or /lp/.You can read the maturity of a paid program from its URL structure alone, before looking at any number. A company running its ads to /, /pricing and /features is running ads. A company with a hundred pages under a dedicated prefix is running a program.
The A/B test is visible from outside
/ap/project-management and /ap/project-management/variant both appear, with 1,537 and 476 creatives respectively. That is a live landing-page test, running now, readable by anyone.
For a prospecting conversation this is unusually good material: it tells you they are testing, it tells you which page is the control, and it tells you roughly how much traffic the variant is taking. None of that required access to their account.
The top keyword is not the page's topic
The CRM page's best keyword is "sales route planner". The task-management page's is "do app". The calendar page's is "office calendars".
These are not the terms the pages are named after, which means the pages are winning traffic on adjacent intent rather than on the head term. That is what a mature paid program looks like from outside: the obvious keywords are expensive and contested, so the volume accumulates on the long tail.
How do you go from a company list to a qualified paid-search prospect?
Three steps, and discovery is free.
For agents
Grab an API key at app.monid.ai, then paste this to your agent and hand it the key:
set up https://monid.ai/SKILL.md
It learns the whole discover, inspect, run workflow itself. More in the agent quickstart.
For humans
npm install -g @monid-ai/cli
monid keys add -k <your-api-key> -l main
Step 1. Build the candidate list
What it does. Turns a description of a market into domains.
The endpoints. apollo/mixed_companies/search, billed per call, filters on headcount, location, revenue and industry.
What comes back. Company records with websites, which is the only field the next step needs. If a company name is all you have, the company website lookup closes that gap first.
What it costs. A few cents per call. Current figures at monid.ai/tools.
Step 2. Check each domain for paid landing pages
What it does. Returns the pages a domain is buying traffic to, with a creative count on each.
The endpoints. ahrefs/site-explorer/paid-pages, billed per result, requires both target and date.
The call.
monid run -p ahrefs -e /site-explorer/paid-pages \
--query '{"target":"monday.com","date":"2026-09-08","country":"us","mode":"domain","limit":10,"order_by":"sum_traffic:desc"}'
Two things about that call. date is required, not optional, so pass today's date for a current view. And order_by accepts only url, sum_traffic, top_keyword and ads_count: passing traffic:desc returns a 400 that names the legal set, which is the good kind of failure and the same behaviour described in a wrong enum returns zero.
What comes back. One row per landing page with url, sum_traffic, top_keyword and ads_count.
What it costs. A few cents per row, so limit is the cost control. Ten rows is enough to qualify; you are not building their campaign for them.
Step 3. Score, do not just filter
What it does. Turns ten rows into one number you can sort a prospect list by.
The call. No endpoint, just the rule:
def paid_maturity(rows):
if not rows: return "no paid program"
creatives = sum(r["ads_count"] for r in rows)
dedicated = sum(1 for r in rows if r["url"].count("/") > 3)
if creatives > 500 and dedicated >= 5: return "committed"
if creatives > 50: return "active"
return "testing"
The thresholds are yours to calibrate against your own closed deals. The shape is the point: creative volume and landing-page dedication together, rather than either alone.
Give this to your agent![]()
Set up https://monid.ai/SKILL.md, and then use Monid to for each domain in my prospect list, pull its paid landing pages, and rank the companies by total ad creatives across their top ten pages.📖 See also Mining the Meta Ad Library with Wireflow: Ninety Days Means It Works
Which number qualifies a prospect?
ads_count, and it is not the number most people reach for.
Why traffic is the wrong field
sum_traffic tells you how many visits a landing page receives from paid search. It scales with budget, with market size and with how competitive the vertical is, so it tells you about the market as much as about the advertiser.
Why creative count is the right field
ads_count is how many distinct ad creatives point at that page. On our top row it was 1,537 for a single landing page.
Nobody produces 1,537 creatives for one page by accident. That number is the output of a testing programme: variants of headlines, descriptions and extensions, generated and rotated and pruned over months. It implies people, process and tooling, which is exactly the thing an agency, a tool vendor or a consultant is selling into.
Compare it to a company with three creatives on one page. Both are "running Google Ads". They are not remotely the same prospect, and only one field separates them.
The second signal, which is free
Count the distinct landing pages and look at their paths. Ten pages under a dedicated prefix is a different operation from three pages that are just the homepage, the pricing page and a blog post.
What none of this gives you
Spend. There is no field here that says what anyone is paying, and any figure claiming to is a model, not a measurement. The honest position is that creative volume and page dedication are proxies for investment, and proxies are what is publicly available. Anyone quoting you a competitor's exact Google Ads budget is estimating, and should say so. That distinction between a measured field and a derived one is the same one drawn in the salary data guide.
Which endpoint should I use for which job?
| Endpoint | What it does | Input | Output | Best for | Billing |
|---|---|---|---|---|---|
ahrefs/site-explorer/paid-pages | Paid landing pages for a domain | target, date | url, traffic, top keyword, creative count | Qualifying one prospect | Per result |
apollo/mixed_companies/search | Companies by attribute | Filters | Company records with domains | Building the candidate list | Per call |
tikhub/api/v1/tiktok/ads/search_ads | Live ads on another network | Search terms | Ad records | Prospects advertising outside search | Per call |
apify/curious_coder/facebook-ads-library-scraper | The Meta ad library | Page or keyword | Ad creatives with run dates | Cross-network confirmation | Per result |
Every row was verified with monid inspect on 2026-09-08. The table gives billing shape rather than figures, because shape drives design and current numbers live on monid.ai/tools.
The mix of billing shapes is what makes this workflow affordable. Candidate building is per call, so a wide firmographic sweep is cheap. Verification is per result, so the cost is set by the limit you pass and stops when you have seen enough. Ten rows per domain answers the question; a hundred rows per domain answers a question nobody asked.
When is this the wrong signal?
Four cases.
The prospect is small or local. Paid-pages data has a coverage floor. A dentist running 300 dollars a month in local search will often return nothing at all, and an empty response there means "below the threshold", not "no ads". For local businesses the Google Ads Transparency Center is the better check, and it is free.
You are selling something paid search does not indicate. Running ads says a company buys demand. It does not say they need your CRM, your compliance tool or your recruiting service. The signal is only a qualifier when your product is about ads, landing pages, conversion or agency services.
You need to know what they are spending. As above: there is no spend field, and there is no way to derive one honestly from what is published. If your pitch depends on knowing their budget, you will be guessing, and a prospect who runs paid search professionally will notice immediately.
The domain is not where the ads point. Companies run campaigns to microsites, to app store listings and to partner pages. A domain check misses all of those, which is one more reason to treat an empty response as inconclusive rather than negative. The same reasoning applies to relying on any single source, argued in not depending on one scraping vendor.
And the disclosure: this is Monid's blog and we sell per-call access to these endpoints. The main argument of this article is that the first stage of the job is not something we sell you an endpoint for and the second stage should be run with a small limit, which is a strange pitch for volume. The competing answer, a full sales intelligence subscription, is genuinely better if you are checking thousands of domains a month and want everything in one seat.
Conclusion
Nobody can hand you a list of companies running Google Ads, because every source in this category is keyed on a domain. So the job is two jobs: build a candidate list from firmographics, then verify each domain one call at a time. Once you accept that shape, the work gets much simpler, and the second stage is cheap enough to run across a list you are not yet sure about.
The thing that matters more than the tooling is which number you qualify on. Traffic measures the market; creative count measures the advertiser. One landing page at monday.com carried 1,537 distinct creatives, and a company that produces 1,537 creatives for one page has a team, a process and a budget. A company with three has a credit card. Both show up as "runs Google Ads" in a database, and only one of them is your prospect.
Free next step: pick one domain you already believe is a good fit, run the paid-pages call with a limit of ten, and look at ads_count on the top row. It costs a few cents and it will recalibrate what you thought "running ads" meant. Start at monid.ai.
FAQ
What about the Google Ads Transparency Center?
It is free, it is official, and you should use it, particularly for small and local advertisers where third-party coverage thins out. It shows the ads an advertiser has run, with dates and formats, and it is the authoritative record of what was actually served. What it does not give you is the landing-page view, the creative counts aggregated per page, or any way to query many domains programmatically, which is why it complements rather than replaces the route in this article. For a single prospect you are about to call, check both.
Can you estimate a competitor's Google Ads spend?
Not from published data, and you should be sceptical of anyone who says otherwise. Every spend figure in this category is a model built from estimated traffic multiplied by estimated cost per click, and both inputs carry wide error bars that compound. What is genuinely measurable is creative volume, landing-page count and the keywords a page appears for, and those are proxies for investment rather than measures of it. Use them as ordering signals to rank prospects, never as figures to quote back to the prospect.
Does this work for small and local businesses?
Poorly, and the failure is silent. Coverage in this class of data depends on a page accumulating enough measured traffic to appear at all, so a local business running a modest budget will frequently return an empty result set that looks identical to a business running nothing. Treat an empty response as unknown rather than negative when the prospect is small, and fall back to the Transparency Center, which has no such floor because it reports what was served rather than what was measured.
How fresh is the data?
The endpoint requires an explicit date parameter, which is the clearest possible statement that you are reading a dated snapshot rather than a live feed. Pass today's date for the most current view available. Underlying crawl and index cycles mean a campaign launched this week may not appear yet, and a campaign paused this week may still show, so treat the picture as accurate to within days rather than hours. For a prospecting workflow that is more than sufficient; for monitoring a live test it is not.
Last updated September 2026.


