Audit one product page
https://seolyticize.com /api/v1/tools/audit_product_page Reads one product page now and scores it 0–100 (a heuristic, said so in the answer) from six weighted parts, each check pass, warn or fail with the reason, or null when it cannot be judged (then left out and the weights rescaled): Product schema (25, the completeness validate_product_schema gives), title and meta (15: a title under 60 characters, a meta description under 155 with a price and a call to action), images (20: at least 3, each at least 50,000 pixels where the page declares sizes, alt text), content (20: 200 words or more, not the manufacturer's copy — pass manufacturerText to compare — a specifications table, reviews), linking (10: breadcrumbs, a link to its category, related products) and technical (10: status 200, indexable, a self canonical, a viewport, HTTPS). Answers 'what is wrong with this product page' and 'why does this product not rank'. Free.
Parameters
Idempotency-KeystringheaderRequest body
application/json
clientIdstringrequiredurlstringrequiredmanufacturerTextstring{
"clientId": "string",
"url": "string",
"manufacturerText": null
}Code samples
cURL
curl -X POST "https://seolyticize.com/api/v1/tools/audit_product_page" \
-H "Authorization: Bearer $SEOLYTICIZE_API_KEY" \
-H "Idempotency-Key: <value>" \
-H "Content-Type: application/json" \
-d '{"clientId":"string","url":"string","manufacturerText":null}'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/audit_product_page
WWW-AuthenticatestringSame as 400 · POST /api/v1/tools/audit_product_page
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/audit_product_page
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/audit_product_page
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/audit_product_page
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/audit_product_page
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerRetry-AfterintegerSame as 400 · POST /api/v1/tools/audit_product_page
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-Resetinteger