Is this the kind of page Google ranks here
https://seolyticize.com /api/v1/tools/get_sxo_gap Classifies the client's page and the top 10 results for its keyword into claude-seo's eight types (tool, local, comparison, product, landing, service, hybrid, else blog, in that order of precedence) and says how strongly Google agrees on one type (over 60% strong, 40–60% mixed, under 40% fragmented) and how bad the page's mismatch is, from an explicit page × results table (a blog where products, tools, local pages or landing pages rank is critical; a blog against comparisons high; a landing page where tools rank high), and which of the expected type's required elements the page has. A 0–100 gap score against the ranking pages: page type, depth, UX, schema, media and authority 15 each, freshness 10 (null parts drop out). keyword defaults to what the title and H1 share, else the page's top Search Console query. wireframe: true adds the page's sections now, the target outline and the target layout for the page type the results want (landing, blog, product, comparison, service, local, tool or hybrid; free); deep: true reads UX from the page rendered on a phone (H1 and CTA above the fold, tap targets, font size, overlaps, overlays) and authority from its E-E-A-T score beside domain authority, and rescores (free, slower); personas: true adds 4–7 searchers from People Also Ask, ads and related searches, each a full card (role, goal, emotional state, journey stage, key questions, intent) scored on relevance, clarity, trust and action (25 each) and rated 80 excellent, 60 good, 40 needs work, below a critical mismatch, a persona score weighted by each intent's share of the results, and 3–5 user stories ('As a …, I want to …, because …, but I'm blocked by …') with their evidence, from one metered Claude call. A heuristic, and it says so. Answers 'why doesn't this page rank' and 'what kind of page does Google want for this'. The results page is a paid lookup unless bought in the last day; quote with estimate_cost.
Parameters
Idempotency-KeystringheaderRequest body
application/json
clientIdstringrequiredurlstringrequiredkeywordstringpersonasbooleanwireframebooleandeepbooleanlocationCodeintegerlanguageCodestringmaxCostMicrosintegerdryRunboolean{
"clientId": "string",
"url": "string",
"keyword": null,
"personas": false,
"wireframe": true,
"deep": false,
"locationCode": null,
"languageCode": null,
"maxCostMicros": 0,
"dryRun": true
}Code samples
cURL
curl -X POST "https://seolyticize.com/api/v1/tools/get_sxo_gap" \
-H "Authorization: Bearer $SEOLYTICIZE_API_KEY" \
-H "Idempotency-Key: <value>" \
-H "Content-Type: application/json" \
-d '{"clientId":"string","url":"string","keyword":null,"personas":false,"wireframe":true,"deep":false,"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_sxo_gap
WWW-AuthenticatestringSame as 400 · POST /api/v1/tools/get_sxo_gap
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_sxo_gap
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_sxo_gap
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_sxo_gap
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_sxo_gap
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerRetry-AfterintegerSame as 400 · POST /api/v1/tools/get_sxo_gap
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-Resetinteger