SeoGrep
Tools Reference

keyword_gap

Find the Google organic keywords a competitor ranks for and your domain does not — each with its monthly search volume, the competitor's position, the…

Cost: 45 credits.

keyword_gap lists the Google organic keywords a competitor ranks for and you do not — each with its monthly search volume, the position the competitor holds, and the page holding it — powered by DataForSEO Labs. It works on any public domain, so you can run it for your own site or for one competitor against another. It is synchronous: the list comes back immediately, with no background job to poll.

What it does

Name your side in one of two ways — pass a target domain (a bare host or a full URL — it is canonicalized for you), or pass the project_id of one of your own projects and the domain is taken from it. Exactly one of the two: passing both is rejected rather than resolved by precedence, because the two can name different sites and guessing would bill you for a lookup of the one you did not mean. Then name one competitor — the rival to mine. Naming the target as its own competitor is rejected before anything is charged: a domain has no gap against itself.

Each row carries:

  • Keyword — the query the competitor ranks for.
  • Search volume — average monthly Google searches, and the order the list is sorted in, biggest opportunity first.
  • The competitor's position — where the rival ranks in the organic results.
  • Keyword difficulty — how hard the keyword is to rank for, on a 0–100 scale.
  • CPC and competition band — what advertisers pay for the same query, when DataForSEO has a figure.
  • The ranking page — the competitor URL that holds the position, and DataForSEO's estimate of the monthly visits it earns.

Only organic results are counted; paid placements are excluded. A metric DataForSEO has no value for is left out of the row rather than printed as a zero.

There is no "your position" column, and there cannot be

A keyword appears in this list precisely because your domain does not rank for it, so DataForSEO returns no ranking of yours to print. That absence is the result, not a missing measurement — which is why the tool does not render an empty column that would read as "we could not find your position". If you want the keywords you and a rival both rank for, that is a different question and a different tool: compare_competitors for the side-by-side picture, ranked_keywords for everything one domain ranks for.

Who can run it

keyword_gap needs a paid credit balance. It reads live data from a paid third-party provider, so it is not available on trial credits — buy any credit pack and it unlocks straight away. Your trial credits are untouched and keep working for crawls, audits, reports and Search Console tools.

If live DataForSEO access is unavailable on this deployment, the tool returns a clear "keyword gap analysis is not yet enabled on this deployment" message and charges you nothing — no credits are reserved or spent. SeoGrep never returns sample or placeholder figures dressed up as real data.

Example

Ask your MCP client in plain language:

What does competitor.com rank for that example.com doesn't?

Or keep it short:

Show me the top 25 keyword gaps between my project and rival.com.

Input

FieldTypeRequiredDescription
targetstringNoThe domain to analyse for keyword gaps, e.g. "example.com" or "https://example.com" — any public domain, including a competitor's. Pass this OR project_id, not both.
project_idstring (uuid)NoOne of your projects (from setup_project / list_projects) — the domain is taken from it. Pass this OR target, not both.
competitorstringYesThe rival to mine for gaps, e.g. "competitor.com" — the keywords it ranks for and your domain does not. One competitor per call.
limitintegerNoHow many gap keywords to return (1–1000, default 100), highest search volume first. The header always says how many gaps exist in total, so a shorter list never reads like the whole picture.
language_codestringNoLanguage code (default 'en').
location_codeintegerNoDataForSEO location code (default 2840 = United States).

Returns

A header naming your side — or, when you passed a project_id, the project it came from — the competitor, the language and location the rankings were read for, and how many of the total gap keywords are shown; then one block per keyword. A rival you already match on every keyword is reported as no gap found, plainly, and you are still charged for the delivered analysis.

An input that is not a public domain (the target or the competitor), a call naming neither target nor project_id (or both), a competitor equal to the target, and a project_id that is not yours are all rejected before anything is charged; while live data is off you get the "not yet enabled" message instead — also free.

Billing

One gap is one DataForSEO request, charged once, as a single tool call. If it fails, the whole call fails and you are not charged — a half-built list is never billed. Rankings are read for the United States in English unless you pass location_code and language_code.

On this page