Competitor keyword research: how to find the terms they win and you do not
A keyword gap method that ends with a short list you will actually write, rather than a 4,000 row export nobody opens.
Keyword gap analysis is one of the few genuinely reliable pieces of competitive research. The data is good, the method is simple, and almost everyone ruins it at the last step by exporting four thousand rows and calling that the output.
The method
1. Pick the right competitors for this job
Search competitors, not business competitors. They are often different.
A directory, a review site or an industry magazine can hold the rankings you want without ever competing for a sale. For keyword work, include them. What you want is whoever occupies the demand.
Three to five domains is right.
2. Run the gap
Every major platform has this. Semrush from $139 a month calls it Keyword Gap. Ahrefs from $129 a month calls it Content Gap. SpyFu at $119 after the intro month has a version.
You want: keywords they rank for in the top 20 where you rank below 20 or not at all.
Set the location and language correctly. This is the most common setup error and it silently produces a useless list.
3. Filter hard, in this order
The raw export is not the deliverable. Cut it down like this.
Drop branded terms. Their brand name and variants. You are not going to rank for those and you should not want to.
Drop anything with no commercial connection to what you sell. Big domains rank for thousands of irrelevant things.
Drop what you cannot serve. Terms for a product you do not have, a country you do not ship to, a service you do not offer.
Keep terms where two or more competitors rank. If three of them rank and you do not, that is a validated topic in your market rather than one company's experiment.
Then sort by how close you already are.
That last step is the one that changes results.
4. Sort into three buckets
Bucket 1: nearly there. You rank 8 to 20, they rank top 5. You already have a page. Improving it is far cheaper than writing a new one, and this bucket produces results in weeks rather than months.
Do all of these first. Every time.
Bucket 2: missing page. They rank, you have nothing. Real work, real writing. Prioritise by commercial intent, not by volume. A 90 a month term where the searcher is ready to buy beats a 5,000 a month term where they are browsing.
Bucket 3: not worth it. High difficulty, low relevance, dominated by domains far larger than you. Write them down so nobody proposes them again in six months, and move on.
5. Look at the page, not just the term
Before committing to anything in bucket 2, open the page that ranks.
What format is it? A guide, a comparison, a calculator, a list? Search results are quite rigid about format, and writing a blog post for a term where every ranking result is a tool page is a wasted month.
Also note: how long is it, what questions does it answer, and what did they include that you would not have thought of?
What the free version gets you
Not the whole picture, but more than nothing.
Their sitemap. /sitemap.xml gives you every page. Page slugs are usually the target keyword. Fifty URLs shaped like /service-city tell you their entire strategy without a tool.
Their titles and headings. Open the twenty most important pages and read the title tag and H1. That is what they are targeting, stated plainly.
Your Search Console. Queries where your position slipped, and queries where you get impressions but almost no clicks. Those are terms you are already in the race for.
The actual SERP. Search your terms in incognito. Who is there, what format won, what the featured snippet says.
This will not give you a competitor's full ranking set. It will tell you whether you have a gap worth paying a database to measure.
Where this connects to AI answers
A note worth adding now, because the two efforts overlap more than they look.
The pages an assistant reads before answering a buying question are largely pages that rank. So ranking work feeds AI visibility. But the pages that get read skew heavily towards lists, comparisons and directories rather than brand pages.
Practical consequence for your gap list: comparison and alternatives pages are worth more than their search volume suggests, because they also get read by assistants forming shortlists. A page targeting "[competitor] alternative" at 300 searches a month can be worth more than a 3,000 a month informational term.
Doing it more than once
A gap analysis is a snapshot. The useful version is the change: what did they start ranking for this month that they did not last month.
That needs the same query run repeatedly and the results diffed, which is tedious by hand. Semrush and Ahrefs can be scheduled if you remember to look. Our own Figo runs the ranking data weekly for each tracked competitor and reports new and lost keywords plus the gap against your own domain, at $49 a month for three competitors.
It is not as deep as a full SEO platform and does not try to be. If keyword research is your job all day, buy Ahrefs or Semrush. If you just want to know what changed, the depth you need is smaller than the depth they sell.
Questions people ask
Can I find competitor keywords for free?
Partly. Their sitemap, page titles and headings tell you what they are targeting, and Search Console tells you where you are losing. A complete ranking keyword list needs a paid database.
How big should a gap list be?
After filtering, twenty to forty terms. A raw gap export of several thousand rows is not a plan, it is a spreadsheet.
What is the fastest win in a gap analysis?
Terms where you already rank 8 to 20 and they rank top 5. You have a page, it is close, and the fix is usually improving the page rather than writing a new one.
Does keyword gap still matter with AI search?
Yes, because the pages an assistant reads are largely the pages that rank. It matters differently: you are aiming to be in the sources that get read, not only to hold a position.
See it on your own competitors
Figo checks their ads, pages, rankings, reviews and AI answers every week, then tells you what to do in plain words. Set up in two minutes.
Keep reading