Competitor keyword analysis is the process of pulling the keywords your competitors rank for, subtracting the ones you already rank for, and turning the remainder into a prioritised list of pages to build or improve. Done properly it takes about two hours per competitor set, and it is the fastest way I know to find demand you have proven is winnable, because someone with a similar site is already winning it. Below is the exact 7-step process I use, with paid and free methods, a worked gap table, and a scoring formula so the list does not sit in a spreadsheet forever.
- Pick SERP competitors (sites that rank for your target queries), not the businesses your sales team worries about.
- A keyword gap is any term where two or more competitors rank in the top 20 and you are absent or below position 30.
- Score each gap with traffic potential × relevance ÷ difficulty; work the top 20 first.
- Most gaps are “improve an existing page”, not “write a new one”. Check what you already have before creating anything.
- Free method: Google Search Console + manual SERP checks +
site:operators covers 70% of what paid tools show, just slower.
Step 1: Choose SERP competitors, not business competitors
Your business competitor is who your sales team loses deals to. Your SERP competitor is whoever appears on page one for the queries you want. A regional accounting firm’s business rivals are other accountants; its SERP rivals are NerdWallet, Investopedia, and the IRS.
To find SERP competitors, search your 10 most important target keywords and note every domain that appears twice or more in the top 10. Ahrefs Site Explorer → Organic competitors and Semrush Organic Research → Competitors do this automatically. Keep three to five domains and drop anything you cannot realistically match (Wikipedia, Amazon, government sites, Reddit).
One filter I apply in every keyword competition analysis: the competitor’s authority should be within roughly 20 points of yours (Ahrefs DR or Moz DA). Gaps with a DR 90 publisher are aspirational; gaps with a DR 45 peer are actionable. The SERP analysis guide covers how to read a results page beyond the blue links.
Step 2: Export every keyword each competitor ranks for
You want the raw list before you filter, so the export should include: keyword, competitor position, ranking URL, monthly volume, and keyword difficulty. Paid tools do this in one click; the free route is described in Step 4.
- Ahrefs: Site Explorer → Organic keywords → filter Position 1–20 → Export. Available on the Lite plan ($129/month as of September 2026; the $29 Starter plan caps you at limited rows and is fine for one or two small competitors).
- Semrush: Organic Research → Positions → Export. Pro is $139.95/month as of September 2026, with a limited free account that allows 10 requests a day, enough to sample one competitor.
- SpyFu: SEO Research → Top keywords → Export. Basic is $39/month ($29 billed annually) as of September 2026, and it includes exports up to 10,000 rows, which is more than enough for a mid-size competitor.
Export top 20 positions only. A position 63 ranking tells you nothing about demand a competitor has actually captured.
Step 3: Run a keyword gap analysis to isolate what you are missing
This is the core of competitive keyword analysis. You want terms where competitors rank and you do not, or where you rank far behind. Each major tool has a dedicated report.
Ahrefs Content Gap
Site Explorer → enter your domain → Content Gap in the left menu. Add up to 10 competitor domains in the “show keywords that the below targets rank for” boxes and your domain in “but the following target doesn’t rank for”. Set the dropdown to “at least 2 of the targets should rank in top 10”. That single setting removes most junk, because a term two peers both rank for is a term your niche genuinely serves.
Semrush Keyword Gap
Keyword Gap → enter your domain first, then up to four competitors → Compare. Use the “Missing” tab (keywords all competitors rank for and you do not) and the “Weak” tab (you rank, but lower than every competitor). Filter Position to Top 20 and Intent to Informational or Commercial depending on the goal. Semrush’s intent labels are roughly 80% accurate in my testing; verify anything you plan to act on.
SpyFu Kombat
Kombat → enter three domains. The Venn diagram shows shared and exclusive keywords; click the segment for “keywords both competitors rank for but you don’t”. SpyFu’s volume numbers skew lower than Ahrefs and Semrush for the same terms, so compare rows within SpyFu rather than across tools. For a full plan breakdown see the SpyFu pricing and features guide.
For this job specifically, Ahrefs allows more competitors per run and Semrush has better intent filtering; the Ahrefs vs Semrush comparison covers the rest.
Step 4: How to find competitor keywords for free
You can complete a credible competitor keyword research pass without a paid subscription. It costs time instead of money, and the data is thinner, but it finds the same big gaps.
- Google Search Console, Performance → Search results, last 3 months. Filter to queries with impressions above 100 and average position 11–30. These are terms Google already associates with you where a competitor sits above you. That is a gap list with zero third-party data. The Search Console tutorial shows the exact filters.
site:operators to map competitor coverage. Searchsite:competitor.com "topic"to see how many pages they have on a subject, thensite:yourdomain.com "topic"for yours. A 15-to-1 page count ratio on a subject is a topic gap even before you know the individual keywords. Trysite:competitor.com intitle:"vs"to pull their comparison pages, andsite:competitor.com inurl:blog "how to"for their tutorial set.- Manual SERP checks. For each competitor page you found, search its title in Google and note what other queries the page appears for by scanning the People Also Ask and “related searches” blocks. Log these into a sheet with columns matching the table below.
- Free tool tiers for volume. Semrush’s free account gives 10 lookups a day; Ahrefs Webmaster Tools is free for your own verified domain, which helps with the “you” column. Google Keyword Planner gives volume ranges if you have any Google Ads account.
Budget three to four hours for the free route against about 30 minutes with a paid tool.
Step 5: Build the gap table and clean it
Whichever method you used, consolidate into one sheet with these columns. Here is a real-shape example for a project-management SaaS blog, with two competitors:
| Keyword | Competitor A pos | Competitor B pos | You | Volume | KD | Action |
|---|---|---|---|---|---|---|
| gantt chart template excel | 3 | 6 | — | 9,900 | 34 | New page (template + download) |
| project charter example | 2 | 9 | 41 | 4,400 | 28 | Improve existing page |
| raci matrix | 5 | 4 | — | 12,100 | 52 | New page, phase 2 |
| sprint retrospective ideas | 1 | 7 | 18 | 2,900 | 21 | Improve existing page (add 15 formats) |
| agile vs waterfall | 8 | 3 | — | 6,600 | 61 | Ignore for now (DR gap too large) |
| jira alternatives | 4 | 11 | — | 5,400 | 47 | New page (commercial intent) |
| project management certification cost | 6 | 2 | — | 1,900 | 19 | Ignore (not our audience) |
Cleaning rules I apply before scoring:
- Delete branded terms for the competitor (“asana pricing”) unless you are deliberately writing comparison pages.
- Delete anything where the ranking competitor URL is a product page and you have no equivalent product.
- Merge obvious variants (“raci chart”, “raci matrix template”) into one row with the highest-volume head term; the keyword clustering guide covers how to do this at scale.
- Check search intent on every term above 1,000 volume by looking at the actual SERP. Volume without matching intent is noise.
Step 6: Prioritise with traffic potential × relevance ÷ difficulty
A raw gap list of 400 keywords is useless. Score every row with this formula and sort descending:
Priority score = (Traffic potential × Relevance) ÷ Difficulty
- Traffic potential: not the search volume of the single keyword, but the estimated total traffic to the top-ranking page for it (Ahrefs shows this as “Traffic potential” in Keywords Explorer; in Semrush use the top URL’s traffic from Organic Research). If you only have volume, use volume × 0.3 as a rough click estimate.
- Relevance: score 1–5 by hand. 5 means the searcher is your exact buyer, 1 means tangential. This is the step people skip and it is why they end up ranking for terms that produce zero leads.
- Difficulty: the tool’s KD score, with a floor of 10 so easy terms do not produce infinite scores.
Worked example from the table: “gantt chart template excel” at traffic potential 6,000, relevance 4, KD 34 scores (6,000 × 4) ÷ 34 = 706. “raci matrix” at 8,000, relevance 3, KD 52 scores 462. “agile vs waterfall” at 5,000, relevance 3, KD 61 scores 246. The Gantt template wins despite lower headline volume, which matches reality: template pages convert search traffic into sign-ups far better than definitional posts.
Take the top 20 scored rows and stop. A quarter’s capacity for most teams is 12–25 pages, and the list will change once the first batch ranks.
Step 7: Decide what to do with each keyword: new page, improve, or ignore
Every prioritised keyword gets exactly one of three labels. Deciding this before writing anything prevents the most common failure, which is publishing a new post that cannibalises a page you already had.
Improve an existing page
Choose this when you already rank anywhere in the top 50 for the term, or when a site:yourdomain.com "keyword" search returns a page that could reasonably cover it. Read the top three competitor pages, list every subtopic they cover that you do not, and add those sections. Then update the title tag and add internal links from your three most-trafficked related posts (see the internal linking guide). In client audits this single move is behind most position 15-to-5 jumps I have seen, at roughly a third of the cost of a new post.
Create a new page
Choose this when nothing on your site addresses the intent, and the SERP is dominated by a distinct page type (a template, a calculator, a comparison) that your existing content does not resemble. Match the format that ranks. If the top five results are all listicles, do not write a narrative essay because you prefer it.
Ignore
Ignore when relevance is 1–2, when every ranking page is from a domain 30+ DR above yours, when the SERP is entirely product listings or video, or when an AI Overview fully answers the query. That last category has grown sharply; the AI Overviews and SEO post explains how to spot zero-click queries.
Track the labelled list in the same sheet with a “published/updated on” column, and re-run the gap analysis every 90 days.
Common mistakes I see in competitor keyword analysis
- Analysing the wrong competitor. Teams choose the brand the CEO mentions in meetings. In an audit for a B2B logistics client, their named rival ranked for 400 keywords; the SERP competitor nobody had heard of ranked for 9,000 in the same topics. Start from the SERP, always.
- Trusting the difficulty score blindly. KD models weight backlinks heavily. A KD 55 term where the top results are five-year-old forum threads is easier than a KD 30 term held by fresh pages from strong brands. Open the SERP for anything you intend to target.
- Chasing volume with no relevance filter. A marketing-automation client once asked why 40,000 monthly visits from “email signature generator” produced no trials. The keyword came from a competitor gap report and nobody scored relevance.
- Creating new pages when an update would do. Duplicating coverage splits link equity and confuses Google about which URL to rank. Always run the
site:check first. - Ignoring your own Search Console data. Position 11–30 queries in GSC are the cheapest wins available, and they never show up as gaps in third-party tools because technically you already rank.
For the seed-list work that comes before competitor research, see how to do keyword research. Before acting on any list, read Google’s short guidance on creating helpful, reliable, people-first content.
FAQ
How do I find out what keywords my competitors are ranking for?
Paid: enter their domain in Ahrefs Site Explorer, Semrush Organic Research, or SpyFu SEO Research and export the top-20 positions. Free: use site:competitor.com searches to map their pages, then check which queries those pages appear for manually. Semrush’s free account allows 10 lookups a day, which covers a single competitor over a week.
What is a keyword gap analysis?
It is a comparison of the keywords two or more competitors rank for against the keywords you rank for, producing a list of terms where you are missing or weak. Ahrefs calls the report Content Gap, Semrush calls it Keyword Gap, and SpyFu calls it Kombat.
How many competitors should I analyse?
Three to five. Fewer than three and you cannot use the “at least two competitors rank” filter that removes junk; more than five and the shared-keyword set becomes too generic to act on.
Is competitor keyword analysis worth doing for a new website?
Yes, but weight difficulty heavily. A new site with DR under 20 should filter the gap list to KD under 25 and target long-tail terms first.
How often should I repeat the analysis?
Every 90 days for most sites, or immediately after a Google core update if your rankings moved noticeably. The re-run takes a fraction of the time because your sheet and competitor set already exist.



