PPC competitor analysis tools for market research

49 advertisers spent $3.24M on Google Search in September. A DataForSEO spend estimate put the same 49 at $1,866.

Real Google Search spend of $3.24M across 49 US domains in September 2026, next to a DataForSEO estimate of $1,866

The $3.24M is real spend from their Google Ads accounts. DataForSEO showed $0 for 44 of them, including one that spent $1.33M that month. DataForSEO is a keyword data service that tool builders use. If you’ve ever pitched a client off an “estimated spend” number, that’s how far off DataForSEO’s was for these 49 domains.

What I found

  • The spend estimate missed 99.9% of real spend. $1,866 against $3.24M.
  • Google’s free Transparency Center missed ads too. It showed none of the 257 Search ads a telehealth pharmacy ran in the last 30 days.
  • Copying the longest-running ad paid off in only 9 of 16 accounts. That’s the rule most ad spy advice runs on.

Below you’ll find 10 tools with prices (3 are free) and a script that runs the long-running test on your own account.

How I tested the tools

I ran three checks, all on US accounts:

  1. Spend estimates. I took real Google Search spend and clicks for September 2026 from the Google Ads API, for every account with $1,000 or more of Search spend. That gave 49 domains. I ran each one through the DataForSEO Labs domain overview for the US, which estimates paid traffic and its cost from the keywords it tracks. DataForSEO sells this data to tool builders.
  2. Transparency Center coverage. For 55 US domains, I counted the Google Search ads that got impressions in the 30 days to 21 October 2026. Then I opened each domain in the Ads Transparency Center with the same filters: United States, Google Search, last 30 days. I was signed out.
  3. Long-running ads. I pulled 12 months of non-brand Search ads (October 2025 to September 2026), 5,135 ads in 73 accounts. I compared ads that ran in 9 or more of the 12 months with ads that ran in 3 or fewer. I kept ads with 100 or more clicks, and accounts with at least 6 of those ads and at least one of each kind. 16 accounts qualified.

I didn’t log in to Semrush or SpyFu for this test, so I can’t give their error on the same 49 domains. The one public test I found is from the agency JumpFly, in May 2023. On one of its own accounts, SpyFu and Semrush both estimated less than half of the real $13,800 a month.

How accurate are competitor spend estimates?

Not accurate enough to use as a number. The estimate found $0 of paid traffic for 44 of the 49 domains. The other 5 got estimates between $3 and $1,109 a month, against real spend of $1,520 to $163,981.

Domains a DataForSEO spend estimate showed at $0: 16 of 20 under $5k a month, 18 of 18 at $5k to $25k and 10 of 11 over $25k

Size didn’t help. Of the 11 domains that spent more than $25,000 that month, 10 showed $0.

This is how keyword-based estimates work. The tool tracks a list of keywords, checks which ads appear for them, and multiplies by an estimated click share and cost per click. An advertiser that spends on brand terms, long-tail searches or keywords outside the tool’s list is close to invisible. The 49 domains sell telehealth, golf apparel, hot tubs, supplements and more, so this isn’t one odd niche.

To check how far a tool is off in your market, look up your own domain first. If it shows $8,000 a month and you spend $30,000, multiply its numbers for competitors by about 3.75. If it shows $0 for your account, don’t use it for spend at all.

What a spend estimate is good for

Use it for direction. A competitor that goes from $0 to 400 tracked keywords in a month has started a campaign. That signal is real even when the dollar figure is wrong.

Does the Ads Transparency Center show every ad?

It showed most of them. Of the 55 domains, 33 showed as many Search ads as ran, or more. The count is higher than the real number when the same ad has several variations, or when other advertisers send ads to that domain. 15 showed fewer ads than ran.

Search ads the Transparency Center showed for 55 US domains, signed out, last 30 days: none for 7, fewer than ran for 15, as many or more for 33

The 7 domains with 0 ads shown are the problem. One telehealth pharmacy ran 257 Search ads in that window and spent $578,753 on Search in September. Signed out, the Transparency Center showed none of its Search ads for the last 30 days, and 28 ads when I set the date to any time. Another telehealth company spent $79,471 in September and showed no ads at all.

Google’s Transparency Center FAQ gives two reasons. Some ads are age restricted and only show to signed-in users above the age limit. And an advertiser that hasn’t finished verification doesn’t get a page. So sign in before you research a competitor in health, alcohol, gambling or finance.

Are long-running ads the winners?

This is the rule most ad spy advice is built on: an ad that has run for months must be working, so copy it. On Google Search, it held in 9 of 16 accounts.

In those 9, the ads that ran in 9 or more months had a higher conversion rate than ads that ran for 3 months or less. In the other 7, the new ads converted better. Click-through rate was the same story, higher for the long-running ads in 10 of 16. I left brand campaigns out, because brand ads run all year and convert well for other reasons.

A Search ad often runs for a year because no one changed it. So a long-running competitor ad shows what they kept. Treat it as an idea to test in your own account.

To run the same check on your own account, paste this script into Google Ads (Tools, then Bulk actions, then Scripts) and click Preview. It reads the 12 full months before this one for non-brand Search ads with 100 or more clicks and logs the conversion rate for long-running and new ads. Nothing in the account changes.

Long-running vs new Search ads, last 12 full months
function main() {
  var tz = AdsApp.currentAccount().getTimeZone();
  var now = new Date();
  var end = new Date(now.getFullYear(), now.getMonth(), 0);
  var start = new Date(now.getFullYear() - 1, now.getMonth(), 1);
  var day = function (d) { return Utilities.formatDate(d, tz, 'yyyy-MM-dd'); };
  var query = 'SELECT ad_group_ad.ad.id, campaign.name, segments.month, ' +
      'metrics.clicks, metrics.conversions FROM ad_group_ad ' +
      "WHERE campaign.advertising_channel_type = 'SEARCH' AND metrics.impressions > 0 " +
      "AND segments.date BETWEEN '" + day(start) + "' AND '" + day(end) + "'";
  var ads = {};
  var rows = AdsApp.search(query);
  while (rows.hasNext()) {
    var row = rows.next();
    if (/brand/i.test(row.campaign.name)) continue;
    var id = row.adGroupAd.ad.id;
    var ad = ads[id] || (ads[id] = { months: 0, clicks: 0, conv: 0 });
    ad.months += 1;
    ad.clicks += Number(row.metrics.clicks);
    ad.conv += Number(row.metrics.conversions);
  }
  var groups = { 'Ran 9+ months': [0, 0, 0], 'Ran 3 months or less': [0, 0, 0] };
  for (var key in ads) {
    var a = ads[key];
    if (a.clicks < 100) continue;
    var name = a.months >= 9 ? 'Ran 9+ months' : (a.months <= 3 ? 'Ran 3 months or less' : null);
    if (!name) continue;
    groups[name][0] += 1;
    groups[name][1] += a.clicks;
    groups[name][2] += a.conv;
  }
  for (var g in groups) {
    var n = groups[g];
    var rate = n[1] ? (100 * n[2] / n[1]).toFixed(2) + '%' : 'no ads';
    Logger.log(g + ': ' + n[0] + ' ads, conversion rate ' + rate);
  }
}

The script skips any campaign with “brand” in its name, so rename the filter if your brand campaigns are named differently.

I can’t run the same check on Meta, because I don’t have Meta data at this scale. I’d treat long-running Meta ads the same way, as ideas to test.

The free competitor research tools

Start here. These three come straight from Google and Meta.

Google Ads Transparency Center results for hubspot.com, filtered to the United States, Google Search and the last 30 days, showing about 500 ads, including HubSpot's own ads and an ad from another advertiser that points to the same domain

The Transparency Center shows the ads any verified advertiser ran on Google Search, YouTube, Shopping, Maps and Google Play, with the format and the date each ad was last shown. You can search by advertiser name or by website.

You can set the filters in the address, which saves clicks when you check a lot of competitors:

Transparency Center link with filters
https://adstransparency.google.com/?region=US&domain=example.com&platform=SEARCH&preset-date=Last+30+days

Change example.com to the competitor’s domain. Leave out platform to see every format.

Two uses most people miss. A domain search shows every advertiser that sends ads to that domain, so search your own site to find resellers and affiliates bidding on your brand. And the ad count shows how busy a competitor is: a jump from 20 to 200 Search ads means a new campaign or a lot of new tests.

What it doesn’t show: keywords, spend, impressions or results. The platform filter only works for ads shown since 4 September 2023. Google is also removing the clickable landing page links, so copy the display URL and open it yourself.

Auction Insights

Google Ads auction insights report

Auction Insights is the only competitor data that comes from the auctions you were in. It’s inside your Google Ads account for Search, Shopping and Performance Max campaigns. It shows impression share, overlap rate, position above rate, outranking share, and top of page rate.

Use it to decide who your competitors are before you open any other tool. The domains in your Auction Insights are the ones taking your clicks, and they’re often different from the brands you’d guess. My guide to how the Google Ads auction works explains what each number means.

Auction Insights covers your own auctions only. If a competitor bids on searches you don’t, it won’t show. When I asked the Google Ads API for auction insight data, it returned a permission error, so you read it in the interface.

Meta Ad Library

Meta Ad Library search for a competitor's ads

The Meta Ad Library holds every active ad across Facebook, Instagram and Meta’s other apps. Meta’s help page says anyone can view and search it. You need to log in to download results.

For ads that ran in the EU you also get reach, with a breakdown by age, gender and location. That makes the EU view the best free targeting data you can get, even for a US brand that runs ads in Europe. The Ad Library API covers political ads and ads delivered in the EU only.

The paid competitor research tools

Competitor ad tool entry prices on 21 October 2026: Transparency Center, Meta Ad Library and Auction Insights free, Gethookd $29, SpyFu $39, Foreplay $49, BigSpy $69, Semrush Advertising £80, Atria $129 and Adthena $399

I took these prices from each vendor’s pricing page on 21 October 2026. Semrush showed me prices in pounds.

ToolEntry price a monthCoversBest for
SpyFu$39Google SearchKeyword and ad history on a budget
Semrush Advertising£80, billed yearlyGoogle Search and Shopping; display, video and social on ProGoogle keywords and ad copy
SimilarwebContact salesWebsite traffic by channelShare of traffic from paid search
Adthena$399ChatGPT ads; Google on custom plansLarge Google advertisers
Foreplay$49Meta, TikTok, YouTube ShortsSaving and briefing social ads
Gethookd$29MetaCheapest Meta ad search
BigSpy$69Facebook, TikTok, YouTube, Twitter and moreMany platforms in one place
Atria$129, billed yearlyMeta, TikTokResearch plus AI creative briefs

The old version of this list had iSpionage. It shut down on 9 July 2025, and its site now points to TapClicks.

SpyFu

SpyFu’s Basic plan is $39 a month. Pro + AI is $59 for the first month, then $119, and Team is $249 for 5 users. There’s a 30-day money-back guarantee.

SpyFu keeps years of history on which keywords a domain bid on and which ad copy it ran. That history is the useful part. Its spend figure is the same kind of keyword-based estimate I tested above, so check it on your own domain before you quote it in a meeting.

Semrush Advertising

Semrush sells its ad data as an Advertising toolkit, separate from its SEO toolkit. Base was £80.22 a month billed yearly when I checked, and Pro was £178.27. Pro adds AdClarity, which covers display, video and social ads.

Semrush is the better pick if you also do SEO, because one login covers both. For PPC, the strongest parts are the ad copy history and the keyword gap reports.

Similarweb

Similarweb estimates a site’s traffic and splits it by channel, including paid search. Paid plans go through its sales team. Use it to compare how much of each competitor’s traffic comes from paid search, which is a better question than how many dollars they spend.

Adthena

Adthena is built for big advertisers. Its Google market plans are custom and aimed at brands spending $500,000 or more on Google Ads a year. The one fixed price is ChatGPT Ads Intelligence at $399 a month, with a 21-day trial. If you’re testing ChatGPT ads, it tracks who else runs them.

Foreplay

Foreplay starts at $49 a month, with a 7-day trial. It saves ads from the Meta Ad Library, TikTok and YouTube Shorts into boards, and helps you turn them into briefs. Its value is in organising what you find, and the ads themselves come from the free libraries.

Gethookd

Gethookd’s Starter plan is $29 a month, the cheapest paid Meta tool here. It searches Meta ads and the stores behind them. Access from Claude and ChatGPT comes with the yearly plans, or with the Team and Agency monthly plans.

BigSpy

BigSpy is $69 a month for the first paid plan, with a free plan to try it. It covers more platforms than the others, including TikTok Shop ads. Check an ad is still live in the Meta Ad Library before you copy it.

Atria

Atria’s Core plan is $129 a month billed yearly. It mixes ad research with AI tools that write briefs and analyse your own ad accounts. Two cheaper tools that do the saving part are Swipekit from $26 a month and Panoramata from $99, which also covers competitor emails.

My competitor research workflow

The first 3 steps are free:

  1. Find the real competitors in Auction Insights. Take the 3 to 5 domains with the highest overlap rate.
  2. Read their Search ads in the Transparency Center. Use the link above with the last 30 days. Note the offers, prices and proof in their headlines.
  3. Read their Meta ads in the Ad Library. Note which ads have run longest, as ideas to test.
  4. Check their keyword history in SpyFu or Semrush. Look for keywords they added or dropped. Ignore the spend figure unless the tool gets your own spend about right.
  5. Open their landing pages. This is where most of the difference is. Compare their offer, their proof and their form with yours.

For step 2, our free competitor messaging analysis prompt turns the ads you copy into a table of who leads with which proof. The competitive intelligence playbook covers what to do when a new bidder shows up.

For step 5, Postclick reads the landing page your ads send people to and shows where it loses buyers. If a competitor’s page beats yours on offer and proof, that’s usually a bigger win than outbidding them. My competitor analysis guide covers the strategy side, and the ad copy guide covers what to do with the headlines you find.

What is the best free tool for PPC competitor research?
The Google Ads Transparency Center for Google ads, and the Meta Ad Library for Facebook and Instagram. Both are free and show the real ads. Auction Insights, inside your Google Ads account, tells you which competitors are in your auctions.
How accurate are competitor spend estimates?
I tested one keyword-based estimate, from DataForSEO, on 49 US domains. It found $1,866 of $3.24M in real Search spend and showed $0 for 44 domains. I didn't test SpyFu or Semrush on those domains. In a May 2023 test by JumpFly, both estimated less than half of one account's real $13,800 a month. Check any tool on your own domain first.
Can I see how much a competitor spends on Google Ads?
Not directly. Google doesn't publish spend for commercial ads. Third-party tools estimate it from the keywords they track, and miss spend on brand and long-tail searches. The Transparency Center shows the ads, without spend.
Why can't I find a competitor in the Ads Transparency Center?
Google's FAQ gives two reasons. The advertiser may not have finished verification or run ads in the last 365 days. And some ads are age restricted and only show when you're signed in. In my check, 7 of 55 US advertisers showed no Search ads when signed out, most of them in telehealth.
Do long-running ads mean the ad is working?
Only about half the time. In 16 Google Ads accounts, the longest-running non-brand Search ads converted better than new ads in 9. Many Search ads run for months because no one changed them. Treat a competitor's long-running ad as an idea to test.
Stewart Dunlop

Stewart

CEO

Postclick is live

Turn more ad clicks into customers.

Run the free CRO audit on the page behind your ad. Postclick finds the leaks, then gives you stronger directions to build.

Checking you're not a bot. Protected by Cloudflare Turnstile.

Not ready to paste a URL? See a finished audit first.