SEO Content Gap Analyzer - Keyword, Topic & Question Gaps avatar

SEO Content Gap Analyzer - Keyword, Topic & Question Gaps

Pricing

from $25.50 / 1,000 content gap analyses

Go to Apify Store
SEO Content Gap Analyzer - Keyword, Topic & Question Gaps

SEO Content Gap Analyzer - Keyword, Topic & Question Gaps

Give your page + 1-5 competitor pages. Returns the keyword phrases, topic clusters, questions, entities and non-keyword signals competitors emphasise that your page under-covers or omits - weighted by competitor consensus, scored, and prioritized into actions. Keyless, read-only, agent-callable.

Pricing

from $25.50 / 1,000 content gap analyses

Rating

0.0

(0)

Developer

Centor Prat

Centor Prat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Security

Limited permissions

Share

SEO Content Gap Analyzer — Keyword, Topic & Question Gaps vs Competitors

Find what the pages that out-rank you talk about that your page doesn't. Give your URL + 1–5 competitor URLs and get back the keyword phrases, topic clusters, questions, entities and non-keyword signals your competitors emphasise that your page under-covers or omits — weighted by competitor consensus, scored, and turned into a prioritized action list. Keyless, read-only, agent-callable.

Built for SEO/content teams, agencies, and AI agents doing content research at scale.

What it does

  • Fetches your page and each competitor page (read-only, exactly what a crawler does — no login, no keys).
  • Runs a prominence-weighted recognition layer: extracts text from every zone (title, meta, H1, H2–H6, anchor text, image alt, bold, body, JSON-LD) and scores 1–4-word phrases by where they appear — a word in a <title>/<h1> counts far more than one in the body.
  • Computes the gap: phrases multiple competitors emphasise that your page is missing or thin on (a single rival's brand word never counts as a gap).
  • Adds the expert layer a specialist would look at, not just "add keywords":
Output fieldWhat it tells you
contentGapScore0–100, how much of the competitors' topical consensus you're missing (higher = bigger gap)
coverageOfCompetitorTopicsthe inverse — % of competitor topics you already cover
missingPhrasesranked keyword phrases you omit / under-cover, with competitor consensus + weights
missingTopicsphrases clustered into whole subtopics you don't cover
questionIntentGapsquestions competitors answer (FAQ/How-to schema + ? headings) that you don't
entityGapsbrands/products/named entities competitors reference that you don't
nonKeywordGapsstructured-data types, thin content, Open Graph, HTTPS competitors have and you lack
prioritizedActionsa plain do-this-next list
competitors[]each competitor's word count, schema types and top phrases

Why not just ask an AI agent?

An agent can fetch one page and eyeball it. It can't reliably crawl several competitors, extract every zone, weight phrases by prominence, intersect them by consensus, cluster the remainder into subtopics and diff the structured-data/question coverage — deterministically and the same way every time. That tedious, error-prone-by-hand computation is exactly what this actor does. It's the expert, repeatable version, not "improve your wording".

Input

FieldTypeRequiredDescription
yourUrlstring✅The page you want to rank.
competitorUrlsarray of strings✅1–5 competing pages ranking for your topic.
webhookUrlstringIf set, the finished analysis is POSTed here as JSON.

Example input

{
"yourUrl": "https://www.python.org/about/",
"competitorUrls": [
"https://www.ruby-lang.org/en/about/",
"https://go.dev/doc/"
]
}

Output

One analysis record per run. Example output (trimmed, from a real run):

{
"yourUrl": "https://www.python.org/about/",
"signal": "large-content-gap",
"contentGapScore": 88,
"coverageOfCompetitorTopics": 12,
"competitorsAnalyzed": 2,
"yourWordCount": 663,
"competitorMedianWordCount": 1910,
"missingPhrases": [
{"phrase": "module", "status": "missing", "competitorConsensus": 2, "competitorsTotal": 2, "competitorWeight": 51.0, "yourWeight": 0.0, "gapScore": 51.0},
{"phrase": "documentation", "status": "under-covered", "competitorConsensus": 2, "competitorsTotal": 2, "competitorWeight": 57.0, "yourWeight": 15.0, "gapScore": 42.0}
],
"missingTopics": [
{"topic": "manual", "examplePhrases": ["reference manual", "manual"], "competitorConsensus": 2, "gapScore": 21.8}
],
"nonKeywordGaps": [
{"type": "thin-content", "detail": "Your page ~663 words vs competitor median ~1910.", "recommendation": "Competitors cover the topic more deeply; expand the thin sections."}
],
"prioritizedActions": [
"Target \"module\" - 2/2 competitors emphasise it; your page omits it.",
"Target \"documentation\" - 2/2 competitors emphasise it; you under-cover it."
],
"disclaimer": "Signals from read-only page text analysis, not live search-ranking data..."
}

Use cases

  • Content briefs — hand a writer the exact phrases, subtopics and questions to cover before writing.
  • Closing a ranking gap — see concretely why three competitors out-rank a thin page.
  • Agency audits — a repeatable, scored gap report per client page vs their named competitors.
  • AI content agents — one call returns structured gap data to feed into a drafting/optimization step.
  • Topic-cluster planning — spot entire subtopics the competitive set covers and you don't.

Ready-made tasks

For AI agents / MCP

Every public Apify actor is callable through the Apify MCP server — nothing to enable.

https://mcp.apify.com/?tools=actors,docs,centorprat/seo-content-gap-analyzer

Loads as the tool centorprat--seo-content-gap-analyzer. Call it with yourUrl + competitorUrls; it returns one structured gap analysis. Claude Code one-liner:

claude mcp add apify -- npx -y @apify/actors-mcp-server --actors centorprat/seo-content-gap-analyzer

Alerts / scheduling

Set webhookUrl and schedule the actor to re-run (e.g. weekly) — the fresh gap analysis is POSTed to Make/Zapier/your endpoint so you're told when a competitor adds coverage you're missing.

FAQ

Does it use real search-ranking / keyword-volume data? No. It's keyless by design: it compares the content of the pages you provide. A gap is a content-coverage difference to review, not proof a competitor outranks you. (You bring the competitor URLs — e.g. from a SERP you already looked at.)

How many competitors can I compare? 1–5 per run. More competitors = stronger consensus signal.

How are "gaps" decided? A phrase is a gap when multiple competitors emphasise it (by prominence-weighted zone) and your page is missing it or covers it far less. One rival's unique/brand term is filtered out.

Does it crawl a whole site? No — it analyses the exact pages you pass (one per URL), so it's fast and cheap. Point it at the specific competing pages.

What languages? Tokenisation is tuned for Latin-script content; it works best on English and similar.

Is it allowed / legal? It performs a single read-only GET per page, the same request any browser or search crawler makes. No logins, no bypassing paywalls, public pages only.

Why a score instead of a verdict? SEO is multi-factor. This measures content/topical coverage; it's one strong input, not the whole ranking truth — hence a signal, not a guarantee.

How fast? Typically a few seconds for a handful of pages.

What does it cost? Pay-per-event: one charge per completed analysis. Unreachable inputs aren't billed.

Can I get the raw per-competitor phrases? Yes — competitors[] includes each competitor's top phrases, word count and schema types.

Data & attribution

Analyses only the public HTML of the URLs you supply, fetched read-only. No third-party API, no keys, no personal data collected. Results are computed signals, not legal/commercial advice.

Part of our keyless SEO toolkit: