Map topics to pages
https://seolyticize.com /api/v1/tools/get_topic_map The client's topics from Search Console (non-branded queries, optionally containing a seed) plus any extra keywords, grouped into clusters and pillars, each mapped to the pages Google shows for it: no_page (write it), one_page, or several_pages (impressions split between pages — merge or fix internal links). Answers 'what should we write next', 'which topics have no page' and 'where are our pages competing'. method serp_overlap clusters by results-page overlap (one paid lookup per keyword unless bought in the last day); search_console clusters by the page each query lands on, free.
Parameters
Idempotency-KeystringheaderRequest body
application/json
clientIdstringrequiredseedstringdaysintegerextraKeywordsstring[]methodstringlimitintegerminSharedintegerlocationCodeintegerlanguageCodestringmaxCostMicrosintegerdryRunboolean{
"clientId": "string",
"seed": null,
"days": 90,
"extraKeywords": [],
"method": "serp_overlap",
"limit": 100,
"minShared": 3,
"locationCode": null,
"languageCode": null,
"maxCostMicros": 0,
"dryRun": true
}Code samples
cURL
curl -X POST "https://seolyticize.com/api/v1/tools/get_topic_map" \
-H "Authorization: Bearer $SEOLYTICIZE_API_KEY" \
-H "Idempotency-Key: <value>" \
-H "Content-Type: application/json" \
-d '{"clientId":"string","seed":null,"days":90,"extraKeywords":[],"method":"serp_overlap","limit":100,"minShared":3,"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_topic_map
WWW-AuthenticatestringSame as 400 · POST /api/v1/tools/get_topic_map
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_topic_map
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_topic_map
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_topic_map
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_topic_map
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerRetry-AfterintegerSame as 400 · POST /api/v1/tools/get_topic_map
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-Resetinteger