SEO · 9 min read
How to Find the Keywords Your Competitors Rank For
Summary
Most keyword gap analyses fail because you ran them against Angi. Separate SERP competitors from real ones, then mine only the keywords you can win.
By Hyder Shah, Founder & CEO · Published July 13, 2026 · Updated July 13, 2026
A keyword gap analysis sounds simple. List every keyword a competitor ranks for, subtract the ones you already rank for, and what is left is your content plan. Every tutorial says the same thing: enter your competitor's domain.
Then you actually look at who ranks for your money queries. It is not the shop across town. It is Angi, Yelp, Thumbtack, Houzz, a Reddit thread, and a 'best plumbers in Austin' listicle from a local news site. Feed those domains into a gap tool and you get a keyword list you cannot act on, because the pages that rank for them are directories and you are not a directory.
The version that works for a service business has four steps: separate SERP competitors from business competitors, run the gap only against operators in your weight class, delete the keywords aggregators own, then filter the survivors for commercial intent. Everything below is the detail.
Who is actually your competitor in Google — and who just looks like one?
Your Google competitor is any domain sitting in a result you want, and in a service SERP most of those domains are not businesses like yours. Ahrefs looked at the top 10 results for 1.3 million US keywords in 2025 and found 72.9% of top-10 pages were more than three years old, with the average #1 page five years old. A service SERP is a queue of aged incumbents, and the incumbents are mostly platforms.
So before you type a single domain into a gap tool, sort every result on page one into a bucket. The bucket decides whether the keyword is even reachable.
| Result type | Example | Why it ranks | Can you outrank it? |
| Lead-gen directory | Angi, Thumbtack, Bark | Site-wide authority plus one page per city and service | Not on their head terms |
| Review platform | Yelp, Houzz | Brand demand plus user-generated pages at scale | Rarely, and not soon |
| Publisher listicle | 'Best roofers in Tampa' on a local news site | News-site authority applied to a list page | Sometimes — but only by getting listed on it |
| National franchise | A brand with a location page in every metro | National brand signals plus local pages | On long-tail service questions, yes |
| Local operator | The other plumbing shop six miles away | Same size site, same links, same city | Yes — this is your real target |
The last row is your business competitor: the company that takes a call that would otherwise have been yours. Everyone above it is a SERP competitor — an obstacle, not a benchmark. Gap analysis only produces usable output when you run it against the last row.
Why does running a gap analysis against Angi waste your afternoon?
Because the export comes back unwinnable, and the math is brutal: Ahrefs tracked 1 million random URLs for a year and found only 1.74% of newly published pages reached Google's top 10 — in a separate 2-million-URL sample limited to non-empty English pages, 6.11% did. Your odds against an aggregator's aged, heavily linked city page are worse than that baseline, not better.
But the link gap is not even the real problem. Intent is. When Google ranks four directories for 'plumbers in Austin', it is telling you the searcher wants a list of ten providers to compare — not one provider's homepage. You cannot honestly publish a 'best plumbers in Austin' page about yourself. The keyword is not hard for you. It is structurally wrong for you.
Run the gap against Angi and you also inherit their page count. Their keyword list is one row per service, per city, times thousands of cities. Copying that means mass-producing thin location pages — the exact pattern that gets a small site's index quality flagged.
How do you find the local operators you can realistically outrank?
Build the list by hand from live SERPs, then keep only the domains whose referring-domain count is inside roughly 2x yours — most gap tools cap you at three or four competitor domains anyway, so you get 3–4 slots and should spend them well.
- Search 8–10 of your real money queries (service + city, 'emergency X near me', 'X repair cost [city]') in an incognito window set to your city.
- Ignore ads. Ignore the map pack. Write down only the organic non-directory domains that appear more than once.
- Pull the domain rating and referring-domain count for each. Drop anyone with more than about twice your referring domains — you will not close that gap inside a year.
- Keep the 3–4 closest to your own profile. Those are your comparables.
- If nobody local has a real website, widen the net: find an operator in a same-size metro who does. They are not competing for your calls, but their keyword footprint is a valid model for yours.
That last case is common. In a lot of trades, the whole local field is running a five-page site from 2016. That is good news — it means the gap you should be running is against a comparable operator in a different city, and the entire keyword set is open in yours. Get the fundamentals right first; our technical SEO service exists because a fast, crawlable site is what makes those easy keywords actually land.
How do you run the gap and read the output?
Enter your domain plus your 3–4 comparables, then filter hard before you export. Ahrefs' own content gap workflow recommends excluding competitor brand terms, requiring at least two competitors in the top 10, setting a minimum search volume of 20, and capping Keyword Difficulty at 30; it also warns that a list over 100,000 keywords is too big to work with. If your export is that large, your filters are wrong.
Semrush's Keyword Gap tool splits the output into tabs, and it recommends a KD filter of 0–49 if your domain has not built much authority yet. Read the tabs in this order:
| Bucket | What it means | What to do with it |
| Weak | You rank, they rank better | Start here — rewriting a page you already own is the cheapest win on the list |
| Missing | Every competitor ranks, you do not | The topic is table stakes in your market — build the page |
| Untapped | One competitor ranks, you do not | Verify against the live SERP first — one competitor ranking may just be noise |
Verdict: work Weak first. Every keyword in that tab is a page that already exists, already has some equity, and needs an edit rather than a new asset. Missing is second. Untapped is a maybe-pile, not a plan.
Ahrefs also splits gaps into two kinds worth naming: domain-level gaps (they cover a topic you have no page for) and page-level gaps (you both have a page, theirs ranks for more keywords because it is more complete). Domain-level gaps get a brief. Page-level gaps get a section added to the page you already published. Do not create a second page for a topic you already cover — you will just cannibalize yourself.
What do you do with the keywords the directories own?
You delete most of them, and the test takes ten seconds: open the live SERP, and if four or more of the top five results are directories or listicles, Google has decided that query wants a list. One operator page will not win it. But deleting is not your only option — a directory-owned keyword can still be monetized three other ways.
- Buy it instead of earning it. If 'plumbers in [city]' is owned by aggregators forever, that is a paid search line item, not a content brief. Rent the position you cannot own.
- Get onto the page that beats you. If a local news listicle ranks #1, the winning move is being in it. That is outreach, not writing — see link building for service businesses.
- Reframe to the sub-question. The directory page ranks for 'best water heater installers in Austin' but answers 'how much does water heater replacement cost in Austin' badly, in two sentences. That question is yours to take.
That third move is where most of your winnable volume actually lives. Aggregator pages are wide and shallow by design. They list twenty companies and dedicate a paragraph to the actual question. A specific, honest, numbers-first answer from an operator beats that paragraph — and it is a page you can genuinely write.
How do you filter the survivors for commercial intent?
Keep the queries with a wallet on the other end and cut the rest — and commercial queries have a second advantage right now: they are the ones AI Overviews intercept least. In Seer Interactive's February 2026 analysis of 53 brand accounts and roughly 49,000 tracked queries, AI Overviews appeared on 36% of informational queries but only 8% of commercial and 5% of transactional ones.
So the buyer-intent keyword you keep is also the keyword least likely to have its click eaten by a summary box. Run every survivor through three questions:
- Does the keyword name a service, a symptom, a price, or a place? 'AC not cooling' and 'crown cost without insurance' pass. 'What is HVAC' does not.
- Would you pay for the click in Google Ads? If you would not bid on it, it is not worth a page either.
- Does the searcher want to hire someone, or do it themselves? DIY tutorials pull traffic that will never call you. Skip them unless they are a genuine first step on a path you can walk a buyer down.
A keyword with 40 searches a month and hiring intent is worth more than one with 2,000 and none. That is the same rule that governs keyword research for a service business generally, and it is the rule that survives every algorithm update: rank for the query a person types when they are about to spend money.
Do you need a paid tool to do this?
No — the free path gets you the same answer, it just costs a day instead of an hour, and for a single-location operator with fewer than about 30 target keywords the free path is genuinely fine.
| Method | What it gives you | Cost | The catch |
| Google Search Console | Your own queries, positions and clicks — ground truth | Free | Shows zero competitor data. It cannot do a gap at all |
| Manual SERP checks | Who actually ranks, right now, in your city | Free (~2 hours for 30 queries) | No volume or difficulty data, and it does not scale |
| Google Keyword Planner | Volume ranges and seed ideas from a competitor URL | Free with an Ads account | Bucketed ranges, not exact volumes, and an ads-side bias |
| Ahrefs / Semrush gap tools | Full missing/weak/untapped export with KD and volume | Paid | Estimated data — and it will still hand you a list full of directories to delete |
Verdict: buy the tool if you manage more than one location or more than roughly 50 keywords; otherwise do it by hand once, and you will learn your SERP better than any export would teach you. If you are picking a platform anyway, we broke down Semrush vs Ahrefs vs Moz for service businesses.
One warning that applies to every tool: their position data is an estimate from a crawled index, not what a customer in your city sees. Before you commit budget to your top 10 gap keywords, open each one in a live, incognito, city-set search and confirm the SERP looks like the tool says it does. It often does not.
If you would rather see the finished list than build it, that is essentially what we hand over in an SEO engagement: your real competitors, the keywords they own that you can take, and the ones you should stop chasing. Get my free audit and we will map the gap for your market.
Where does this fit in your stack?
If you're running a US service business, the playbook in this post pairs with our full services lineup and applies cleanly across our supported industries and US locations. If you want help implementing it, book a free strategy call — we'll review your current setup and prioritize the next three moves.
For the deeper engagement details, see our SEO service. New to the terminology here? Our SEO & marketing glossary defines every acronym in this post.
What are the most common questions about this topic?
Common questions readers send us about this topic.
How do I see what keywords a competitor ranks for?
Put their domain into a keyword gap tool such as Ahrefs' Competitive Analysis or Semrush's Keyword Gap, alongside your own domain. The tool returns the keywords they rank for and you do not. The output is only useful if the domain you entered is a real business competitor. Enter Yelp or Angi and you get thousands of keywords that belong to directory pages you cannot replicate.
Can I find competitor keywords for free?
Yes, but manually. Search 20 to 30 of your money queries in an incognito window with your city set, and record which competitor pages rank. Then open those pages and read their headings — the headings tell you the sub-topics they target. Google Keyword Planner will give you volume ranges for free with an Ads account. What you cannot get free is a complete ranked keyword list for a competing domain.
Why do directories like Yelp and Angi rank above local businesses?
Two reasons. First, they have site-wide authority built over decades and a page for every service in every city. Second, and more important, they match the intent: when someone searches 'plumbers in Austin' they want a list of options to compare, and a directory page is literally that list. Google is not being unfair to you — it is answering the query that was typed.
Should I try to rank for the same keywords as a national aggregator?
Not on their head terms. Ahrefs found only 1.74% of newly published pages reach the top 10 within a year, and aggregator city pages are aged and heavily linked. Target the sub-questions their pages answer in one thin paragraph instead — cost questions, symptom questions, repair-versus-replace questions. Those are winnable, and the person searching them is closer to hiring anyway.
How many competitors should I run a gap analysis against?
Three or four. Semrush's Keyword Gap tool accepts up to four competitor domains and Ahrefs recommends one to three, so the tools already push you toward a tight list. More competitors does not mean more signal — it means more noise from businesses that are not in your weight class. Pick the operators closest to your own site size and link profile.
What is the difference between a keyword gap and a content gap?
A keyword gap analysis finds specific queries a competitor ranks for that you do not. A content gap analysis finds topics you have not covered, whether or not they show up as keywords. Semrush frames the difference well: a plumber's keyword gap surfaces 'emergency plumbing boston', while a content gap surfaces buyer questions like whether home insurance covers plumbing. You need both, and the keyword gap is the faster one to run.
How do I pick which gap keywords to actually target first?
Start with the Weak bucket — keywords where you already rank but a competitor ranks higher. Those pages exist, so the fix is an edit rather than a new asset. Then take Missing keywords with commercial intent and a Keyword Difficulty under 30. Leave everything owned by directories, everything informational-only, and everything you would not pay for in Google Ads.
About the author
Hyder Shah
Founder & CEO, Foundgrove
Hyder Shah is the founder of Foundgrove, an SEO and GEO agency for US service businesses. See our editorial policy for how these guides are researched and reviewed.
Related reading
Other tactical pieces from the Foundgrove blog.
- SEO · 11 min read
Keyword Research for Service Businesses: The 2026 Playbook
Find high-converting, buyer-intent keywords for your service business. Mine low-volume local terms that bring customers instead of chasing vanity traffic.
Read the seo playbook → - SEO · 12 min read
Semrush vs Ahrefs vs Moz for Service Businesses (2026)
Semrush wins on AI visibility, Ahrefs on backlinks, Moz on local citations. Choose by your bottleneck: local, competitive, or broad-channel work.
Read the seo playbook → - SEO · 12 min read
Link Building for Service Businesses: What Works in 2026
Service businesses earn authoritative backlinks via chambers, sponsorships, and digital PR (HARO) - not paid links Google penalizes.
Read the seo playbook → - SEO · 11 min read
How to Build a Topical Map for a Service Business
A topical map is 30-50 pages, not 400. Here is a complete worked map for one roofing company: every node, the grouping rule, and the publish order.
Read the seo playbook → - SEO · 8 min read
SERP Analysis: How to Read a SERP Before You Write
Most content dies on the SERP, not the page. Three checks — format, competitors, and what is left after SERP features — take five minutes.
Read the seo playbook → - SEO · 9 min read
SEO Forecasting: Predict Booked Calls, Not Traffic
Most SEO forecasts multiply search volume by a CTR curve and hand you a traffic number. Here is the chain to booked calls, and why most keywords fail it.
Read the seo playbook →
Want help applying this to your business?
Book a free 30-minute call. We'll review your current acquisition stack and show you the three highest-leverage moves for your industry and state. Or read how our SEO service works.