Keyword gap against competitors
https://seolyticize.com /api/v1/tools/get_domain_keyword_gap The keywords up to five competitors rank for in Google and the client does not (mode missing), that both rank for (shared), or where the client ranks below them (weak) — merged across the competitors, with volume, difficulty, CPC, intent, the client's position and each competitor's. Works for any domains, tracked or not, from DataForSEO's index; get_keyword_gap is the free reading from what the client's trackers already captured. Answers 'what do our competitors rank for that we don't' and 'where are we losing to them'. One read per competitor. A paid lookup on the client's account unless anyone read the same thing this week (spend says which); quote it with estimate_cost.
Parameters
Idempotency-KeystringheaderRequest body
application/json
clientIdstringrequiredtargetstringcompetitorsstring[]requiredmodestringminVolumeintegerlimitintegerlocationCodeintegerlanguageCodestringmaxCostMicrosintegerdryRunboolean{
"clientId": "string",
"target": null,
"competitors": [
"string"
],
"mode": "missing",
"minVolume": 0,
"limit": 200,
"locationCode": null,
"languageCode": null,
"maxCostMicros": 0,
"dryRun": true
}Code samples
cURL
curl -X POST "https://seolyticize.com/api/v1/tools/get_domain_keyword_gap" \
-H "Authorization: Bearer $SEOLYTICIZE_API_KEY" \
-H "Idempotency-Key: <value>" \
-H "Content-Type: application/json" \
-d '{"clientId":"string","target":null,"competitors":["string"],"mode":"missing","minVolume":0,"limit":200,"locationCode":null,"languageCode":null,"maxCostMicros":0,"dryRun":true}'TypeScript
Python
Go
PHP
Ruby
Java
Responses
data, and its meta.Example
{
"data": {},
"meta": {
"requestId": "string",
"costMicros": 0,
"cached": true,
"cachedFrom": "string",
"dataAsOf": "string",
"sources": [
"string"
],
"partial": true,
"next": [
{
"tool": "string",
"args": {},
"why": "string"
}
],
"nextCursor": "string",
"dryRun": true
}
}Schema
datarequiredmetaobjectrequiredShow child parameters
requestIdstringrequiredcostMicrosintegerrequiredcachedbooleanrequiredcachedFromstringdataAsOfstringsourcesstring[]partialbooleanrequirednextobject[]requiredShow child parameters
toolstringargsobjectwhystringnextCursorstringdryRunbooleanX-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerX-Request-IdstringExample
{
"error": "string",
"code": "string",
"next": "string",
"requestId": "string"
}Schema
errorstringrequiredcodestringnextstringrequestIdstringX-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_domain_keyword_gap
WWW-AuthenticatestringSame as 400 · POST /api/v1/tools/get_domain_keyword_gap
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_domain_keyword_gap
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_domain_keyword_gap
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_domain_keyword_gap
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_domain_keyword_gap
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerRetry-AfterintegerSame as 400 · POST /api/v1/tools/get_domain_keyword_gap
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-Resetinteger