Screenshots and layout checks at four screen sizes
https://seolyticize.com /api/v1/tools/capture_page_screenshots Renders one of the client's pages in a real browser at 1920×1080, 1366×768, 768×1024 and 375×812 (viewports narrows it), stores a PNG of each first screen (links last a day) and checks the layout there: whether the H1, the primary call to action and the hero image are above the fold, horizontal scrolling, tap targets under 24×24 px (fail) and under 48×48 (warn) — inline text links excepted — the base font size under 16px, overlapping controls and clipped text, and a fixed overlay covering over half the screen on load (cookie and consent banners excepted). parity (default on) also fetches the page as Googlebot smartphone and as desktop Chrome and compares words, links, headings and structured data types, since Google indexes the mobile version. Answers 'does the page work on a phone', 'is the CTA above the fold' and 'does Google's mobile crawler see the same page'. No vendor charge; it renders pages on the client's behalf, so it needs project:manage.
Parameters
Idempotency-KeystringheaderRequest body
application/json
clientIdstringrequiredurlstringrequiredviewportsstring[]parityboolean{
"clientId": "string",
"url": "string",
"viewports": [
"1920x1080",
"1366x768",
"768x1024",
"375x812"
],
"parity": true
}Code samples
cURL
curl -X POST "https://seolyticize.com/api/v1/tools/capture_page_screenshots" \
-H "Authorization: Bearer $SEOLYTICIZE_API_KEY" \
-H "Idempotency-Key: <value>" \
-H "Content-Type: application/json" \
-d '{"clientId":"string","url":"string","viewports":["1920x1080","1366x768","768x1024","375x812"],"parity":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/capture_page_screenshots
WWW-AuthenticatestringSame as 400 · POST /api/v1/tools/capture_page_screenshots
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/capture_page_screenshots
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/capture_page_screenshots
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/capture_page_screenshots
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/capture_page_screenshots
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerRetry-AfterintegerSame as 400 · POST /api/v1/tools/capture_page_screenshots
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-Resetinteger