API REFERENCE · GET · STABLE

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.

01 · OVERVIEW

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.
02 · PARAMETERS

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.
03 · RESPONSE

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`.
04 · EXAMPLE

Example response

Truncated but representative example for a real lookup:

Sample response
{
  "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": []
  }
}
05 · ERRORS

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.
06 · BEST PRACTICES

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.
07 · FAQ

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.