SEOCompetitor Research

How to steal keywords from your competitors

Abdullah Javaid

7 min read
How to steal keywords from your competitors

"How to steal keywords from your competitors" sounds like it should have a trick attached to it. It doesn't. The process is domain-intersection: pull every keyword a competitor's site ranks for, pull every keyword your own site ranks for, and look at what's on their list but missing from yours. That leftover list is the opportunity. You can build it in a spreadsheet in an afternoon, or you can have it run automatically before you write a single sentence. Most people searching this term expect the first. The second is where it actually pays off.

Why would you want to run competitive analysis of keywords in the first place

Because writing without it means guessing twice. First you guess whether anyone searches the term at all. Then you guess whether you can outrank whoever already owns it. Competitive keyword analysis removes both guesses at once: if a competitor ranks for a keyword, you already know there's demand and you already know the difficulty, because their page is the proof.

This is also the gap most AI writing tools skip. A lot of them generate first and research never, which gets you fluent paragraphs for keywords nobody's searching, or for keywords a competitor already owns outright with three years of backlinks behind the page. Neither outcome moves your traffic. The point of running this analysis before you write is that it tells you which fights are winnable before you spend the hour writing the draft.

The spreadsheet method, and where it breaks down

The manual version of this is a known move: export a competitor's ranking keywords from an SEO tool, export your own, drop both into one sheet, and use a VLOOKUP or a pivot to isolate what's on their side but not yours. An seo competitor analysis excel workflow like this works fine for one comparison. Sort the result by search volume and keyword difficulty, and you've got a shortlist.

Where it breaks down is scale and follow-through. Running this for three to five competitors, then re-running it every quarter because rankings shift, turns into hours of export-and-match work. And the harder failure mode isn't the spreadsheet itself, it's what happens after: a lot of gap lists get built, get admired, and never turn into drafts, because the export and the writing live in two separate tools with no bridge between them.

The columns that matter in that sheet are the same ones a filter needs to apply automatically: keyword, search volume, keyword difficulty, and whether it's present on your own ranking export. Get those four right and the spreadsheet version and the automated version are answering the exact same question, just at different speeds.

What domain-intersection actually finds

This is the same underlying technique whether you run it by hand or automatically: two ranking-keyword sets, intersected, with your own domain's set subtracted out. hrefStack's Competitor Intelligence Engine runs this against DataForSEO data, filtered to keywords with search volume above 100 and keyword difficulty below 80, and it runs before any writing starts, not as a report you generate afterward to justify a draft you already wrote.

That ordering is the whole mechanism. A keyword clears the filter because a competitor's ranking page proves the demand is real and the difficulty is survivable. The draft that eventually gets written is aimed at something already shown to work for somebody in the same space, rather than a topic picked because it sounded good.

Which keywords are best to target

The best keyword on a gap list isn't the highest-volume one. It's the one with the best ratio of demand to reachable difficulty, sitting on a topic you can actually cover credibly. A 40,000-volume keyword at KD 85 is not a better target than a 400-volume keyword at KD 12 if you don't have the domain authority to compete for the first one yet.

The volume-above-100, KD-below-80 filter exists for exactly this reason: it strips out the noise keywords with almost no search demand and the keywords that would take a backlink profile you don't have yet. What's left is a shortlist you can actually act on this month, not a wish list.

And because the gap list is already subtracted against your own domain's rankings, you're not wasting a slot on a keyword you're already ranking for. That sounds obvious until you've watched a content calendar get built off a competitor's list without that subtraction step, and half the topics turn out to be cannibalizing pages that already exist.

This is the idea behind hrefStack's tagline, "Don't just write. Write what wins." A keyword clearing the volume and difficulty filter isn't a guarantee of anything, but it's a filter built from a competitor's actual ranking outcome instead of a hunch about what sounds like a good blog topic.

Searches for provide backlink gap analysis and competitor backlink gap analysis are asking something related but distinct. A keyword gap tells you what topics to write about. A backlink gap tells you which domains link to your competitors but not to you, which is a link-building input, not a content one. The two analyses use similar language ("gap," "competitor," "intersection") but answer different questions and feed different parts of an SEO plan.

Worth being direct here: hrefStack's Competitor Intelligence Engine is built for the keyword side of this, the DataForSEO domain-intersection described above, not a backlink audit. If your immediate question is which sites to pursue for links rather than which topics to write next, that's a separate tool and a separate workflow, and conflating the two is how a content plan ends up trying to solve a link-building problem with blog posts.

Research before you write, not after

The filtered gap list is the input, not the output. Once a keyword clears the volume and difficulty filter, it feeds directly into the writing pipeline, which runs on LangGraph workflows using Groq's Llama 3.3 70B (with fallback models if one's unavailable), with image generation handled separately through Fireworks AI's Flux Schnell. The draft that comes out the other end started from a keyword a competitor already proved has demand, not a topic chosen because it sounded plausible.

Web research depth scales with plan: the STARTER and PRO tiers run live web research alongside the generation step, while the FREE tier writes from the model's training data without it. Either way, the gap analysis that picks the keyword in the first place runs the same way: before the draft, not as a report pulled afterward to explain it.

FAQ

Why would you want to run competitive analysis of keywords in the first place? Because it replaces two guesses (does anyone search this, can I rank for it) with one proof point: a competitor's existing ranking page. If they rank for it, the demand and the rough difficulty are both already established.

Which keywords are best to target from a competitor's gap list? The ones with the best ratio of search volume to reachable difficulty, not simply the highest-volume terms. A filter like volume above 100 and KD below 80 is a reasonable starting line for cutting out noise keywords and out-of-reach ones alike.

What's the difference between a keyword gap and a backlink gap? A keyword gap shows topics a competitor ranks for that you don't, which is a content input. A backlink gap shows domains linking to a competitor but not to you, which is a link-building input. They sound alike but answer different questions.

Do I need a spreadsheet to do this, or can software handle it? A spreadsheet works for a one-time comparison against a single competitor. It gets slow once you're tracking several competitors on a recurring basis, and it doesn't bridge into the actual writing step on its own, so the gap list often stalls as a list.

How do I steal keywords from competitors without copying their content? Domain-intersection only tells you which topics to cover, not what to say about them. You're targeting the same keyword because their ranking page proved the demand, then writing your own take on it, the same way any two sites can both rank for "best running shoes" with entirely different content.

If you want to see this gap list run against your own domain before deciding whether any of it is worth writing about, hrefStack's free tier runs the research step with no credit card required. Plan details, including what web research and article volume each tier includes, are on the pricing page. For a wider comparison of tools built for this kind of research, see our competitor analysis tools guide.

About Abdullah Javaid

[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop