AI Readiness Scan API — /api/v1/domain/ai-ready
Runs five checks: robots.txt AI-bot policies (GPTBot, ClaudeBot, PerplexityBot, etc.), llms.txt presence and validity, JSON-LD structured data, SSR vs CSR content rendering, and meta/sitemap completeness. Returns a 0–100 score, letter grade, strategy classification, and a prioritized fix plan. Expensive — counts as 5 credits.
What AI Readiness Scan does
Runs five checks: robots.txt AI-bot policies (GPTBot, ClaudeBot, PerplexityBot, etc.), llms.txt presence and validity, JSON-LD structured data, SSR vs CSR content rendering, and meta/sitemap completeness. Returns a 0–100 score, letter grade, strategy classification, and a prioritized fix plan. Expensive — counts as 5 credits.
- Method GET
- Path /api/v1/domain/ai-ready
- Stability STABLE
- Version v2026-05-15
- Summary Score a domain's discoverability and crawlability for AI search engines.
Request parameters
Pass these as query-string parameters (or, where indicated, in the request headers). Required params marked required.
- domain (required) — string Apex domain to scan.
Response schema
All successful responses follow the standard `{ success: true, data: {...} }` envelope. Notable fields on the data object for this endpoint:
- data.domain — string Normalized domain.
- data.score — integer Composite 0–100 score.
- data.grade — string Letter grade derived from score.
- data.strategy — string Classification: `no_policy`, `block_all`, `selective_allow`, `open`.
- data.checks.robots_txt — object Per-bot verdict (training + search bots), sitemap directive, sub-score.
- data.checks.llms_txt — object Existence, content type, parsed structure, link checks.
- data.checks.structured_data — object Detected schema.org types and counts.
- data.checks.content_accessibility — object Rendering mode, body length, meta presence.
- data.checks.meta_sitemap — object Sitemap existence, URL count, validity.
- data.recommendations — array<object> Prioritized fix plan with `lift`, `time_estimate`, `title`, `body`.
Example response
Truncated but representative example for a real lookup:
{
"success": true,
"data": {
"domain": "google.com",
"score": 32,
"grade": "F",
"strategy": "no_policy",
"checks": {
"robots_txt": {
"exists": true,
"score": 15
},
"llms_txt": {
"exists": false,
"http_status": 404,
"score": 0
},
"structured_data": {
"json_ld_count": 0,
"score": 0
},
"content_accessibility": {
"rendering": "partially_rendered",
"score": 10
},
"meta_sitemap": {
"sitemap_exists": true,
"score": 7
}
},
"recommendations": []
}
}Error codes
Errors return HTTP status codes paired with stable machine-readable codes. Match on the code field rather than the human-readable message.
- 400 VALIDATION_ERROR Invalid domain.
- 504 NAVIGATION_TIMEOUT Headless render exceeded 30s — retry.
Implementation tips
Patterns we recommend when integrating this endpoint:
- Run weekly per monitored domain — content + crawler signals shift often.
- Use the `strategy` field to A/B test policy changes against AI-search visibility.
- Pair with `/api/v1/domain/snapshot` to verify what AI crawlers actually see.
Frequently asked questions
- Which AI crawlers are checked? Training: GPTBot, ClaudeBot, anthropic-ai, Google-Extended, CCBot, Meta-ExternalAgent, Bytespider, Applebot-Extended, cohere-ai, Diffbot, Omgilibot, FacebookBot, img2dataset. Search: OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User, DuckAssistBot, YouBot.
- What's a good score? 85+ for content sites that want AI traffic. <40 means AI search is likely missing your content.