Get a content check
curl --request GET \
--url https://data.otterly.ai/v1/audits/geo/content-checks/{checkId} \
--header 'Authorization: Bearer <token>'{
"id": "01HXCONTENT5XY8Z2N3KQ7VAW4",
"workspaceId": "01HX7K2YV9D3M8N0G6Q5R4S3T2",
"url": "https://www.adidas.com/us/running",
"status": "completed",
"createdDate": "2026-01-13T09:46:46.251Z",
"structuralAnalysis": {
"overallScore": 68.3,
"categoryScores": {
"metadata": 92,
"technical": 100,
"structure": 64,
"content": 46
},
"metadata": {
"score": 92,
"breakdown": {
"titleTag": {
"maxScore": 30,
"score": 30
},
"openGraphTags": {
"maxScore": 15,
"score": 12
},
"metaDescription": {
"maxScore": 30,
"score": 25
},
"structuredData": {
"maxScore": 25,
"score": 25
}
}
},
"technical": {
"score": 100,
"breakdown": {
"mobileFriendlyIndicators": {
"maxScore": 30,
"score": 30
},
"validHtmlStructure": {
"maxScore": 40,
"score": 40
},
"robotsAndCrawling": {
"maxScore": 20,
"score": 20
},
"languageDeclaration": {
"maxScore": 10,
"score": 10
}
}
},
"structure": {
"score": 64,
"breakdown": {
"listsAndStructuredContent": {
"maxScore": 20,
"score": 0
},
"paragraphStructure": {
"maxScore": 15,
"score": 10
},
"headingHierarchy": {
"maxScore": 30,
"score": 30
},
"semanticElements": {
"maxScore": 25,
"score": 14
},
"navigationStructure": {
"maxScore": 10,
"score": 10
}
}
},
"content": {
"score": 46,
"breakdown": {
"richContentElements": {
"maxScore": 60,
"score": 36
},
"contentVariety": {
"maxScore": 40,
"score": 10
}
}
}
},
"dynamicContent": {
"differenceDescription": "Found 1/2 matching chunks. Missing 1 chunks from dynamic content.",
"score": 50
},
"serverBotAccess": {
"GPTBot": {
"userAgent": "Mozilla/5.0 (compatible; GPTBot/1.0; +https://openai.com/gptbot)",
"status": 200,
"ok": true
},
"PerplexityBot": {
"userAgent": "Mozilla/5.0 (compatible; PerplexityBot/1.0; +https://www.perplexity.ai/bot)",
"status": 200,
"ok": true
},
"ClaudeBot": {
"userAgent": "Mozilla/5.0 (compatible; ClaudeBot/1.0; +https://www.anthropic.com)",
"status": 200,
"ok": true
},
"Google-Extended": {
"userAgent": "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",
"status": 200,
"ok": true
}
}
}Audits
Get a content check
GET
/
v1
/
audits
/
geo
/
content-checks
/
{checkId}
Get a content check
curl --request GET \
--url https://data.otterly.ai/v1/audits/geo/content-checks/{checkId} \
--header 'Authorization: Bearer <token>'{
"id": "01HXCONTENT5XY8Z2N3KQ7VAW4",
"workspaceId": "01HX7K2YV9D3M8N0G6Q5R4S3T2",
"url": "https://www.adidas.com/us/running",
"status": "completed",
"createdDate": "2026-01-13T09:46:46.251Z",
"structuralAnalysis": {
"overallScore": 68.3,
"categoryScores": {
"metadata": 92,
"technical": 100,
"structure": 64,
"content": 46
},
"metadata": {
"score": 92,
"breakdown": {
"titleTag": {
"maxScore": 30,
"score": 30
},
"openGraphTags": {
"maxScore": 15,
"score": 12
},
"metaDescription": {
"maxScore": 30,
"score": 25
},
"structuredData": {
"maxScore": 25,
"score": 25
}
}
},
"technical": {
"score": 100,
"breakdown": {
"mobileFriendlyIndicators": {
"maxScore": 30,
"score": 30
},
"validHtmlStructure": {
"maxScore": 40,
"score": 40
},
"robotsAndCrawling": {
"maxScore": 20,
"score": 20
},
"languageDeclaration": {
"maxScore": 10,
"score": 10
}
}
},
"structure": {
"score": 64,
"breakdown": {
"listsAndStructuredContent": {
"maxScore": 20,
"score": 0
},
"paragraphStructure": {
"maxScore": 15,
"score": 10
},
"headingHierarchy": {
"maxScore": 30,
"score": 30
},
"semanticElements": {
"maxScore": 25,
"score": 14
},
"navigationStructure": {
"maxScore": 10,
"score": 10
}
}
},
"content": {
"score": 46,
"breakdown": {
"richContentElements": {
"maxScore": 60,
"score": 36
},
"contentVariety": {
"maxScore": 40,
"score": 10
}
}
}
},
"dynamicContent": {
"differenceDescription": "Found 1/2 matching chunks. Missing 1 chunks from dynamic content.",
"score": 50
},
"serverBotAccess": {
"GPTBot": {
"userAgent": "Mozilla/5.0 (compatible; GPTBot/1.0; +https://openai.com/gptbot)",
"status": 200,
"ok": true
},
"PerplexityBot": {
"userAgent": "Mozilla/5.0 (compatible; PerplexityBot/1.0; +https://www.perplexity.ai/bot)",
"status": 200,
"ok": true
},
"ClaudeBot": {
"userAgent": "Mozilla/5.0 (compatible; ClaudeBot/1.0; +https://www.anthropic.com)",
"status": 200,
"ok": true
},
"Google-Extended": {
"userAgent": "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",
"status": 200,
"ok": true
}
}
}Authorizations
Provide your API key as a Bearer token: Authorization: Bearer YOUR_API_KEY.
Path Parameters
Content check identifier.
Minimum string length:
1Example:
"01HX7K2YV9D3M8N0G6Q5R4S3T2"
Response
The content check.
Minimum string length:
1Example:
"01HX7K2YV9D3M8N0G6Q5R4S3T2"
Available options:
pending, completed, failed Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Per-bot probe results. Keys are crawler names as they appear in robots.txt / User-Agent (e.g. GPTBot, PerplexityBot, ClaudeBot, Google-Extended, OAI-SearchBot, ChatGPT-User); values describe whether each bot was able to fetch the resource.
Show child attributes
Show child attributes
⌘I