Are the language versions real translations
https://seolyticize.com /api/v1/tools/get_hreflang_parity Reads each language version of the client's pages (the groups the crawl's hreflang or /es/-style paths tie together) and scores every pair against its source 0–100: equal H2 and H3 counts; title, meta description and schema inLanguage actually localised (the language detected, not just declared); length within the band the language should take (German 25–35% longer than English, Japanese 10–25% shorter, in words); a stale translation (modified before its source); numbers, dates, prices and phone numbers written for the locale; and source-language sentences left untranslated. Unmeasured parts are null and the rest rescale. Each pair also carries a cultural adaptation check against its market's profile (DACH, Francophone, Hispanic, Japanese: formal address, hard-sell CTAs, Impressum or Mentions légales, local number, date and currency formats, US brands, statistics and laws, length against English), each failure a Medium 'Cultural Adaptation' finding, and machine-translation QA (body identical to the source, <html lang> against the detected language, a translated meta description over 160 characters, schema inLanguage, Google's translate widget). contentParity scores each group 30/30/25/15: the page exists in every declared language, title, meta and schema localised, structure (sections ±1, images and charts exact, FAQ items ±2), and freshness (≤7, 8–30, 31–90, 90+ days behind). A heuristic, and it says so. url picks the group containing that page; sourceLang which version the others are measured against (default the x-default one). Answers 'is our German site actually translated' and 'which translations are out of date'. Free: fetches the client's own pages.
Parameters
Idempotency-KeystringheaderRequest body
application/json
clientIdstringrequiredcrawlIdstringurlstringsourceLangstringmaxPairsinteger{
"clientId": "string",
"crawlId": "latest",
"url": null,
"sourceLang": null,
"maxPairs": 12
}Code samples
cURL
curl -X POST "https://seolyticize.com/api/v1/tools/get_hreflang_parity" \
-H "Authorization: Bearer $SEOLYTICIZE_API_KEY" \
-H "Idempotency-Key: <value>" \
-H "Content-Type: application/json" \
-d '{"clientId":"string","crawlId":"latest","url":null,"sourceLang":null,"maxPairs":12}'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_hreflang_parity
WWW-AuthenticatestringSame as 400 · POST /api/v1/tools/get_hreflang_parity
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_hreflang_parity
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_hreflang_parity
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_hreflang_parity
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_hreflang_parity
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerRetry-AfterintegerSame as 400 · POST /api/v1/tools/get_hreflang_parity
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-Resetinteger