AttestPage · Docs · Pricing · OpenAPI · llms.txt

Check AI crawler access

Last updated: 2026-10-19

POST /v1/access-check takes one page URL, reads the robots.txt of that site, and says for five AI crawlers whether they may fetch the page: GPTBot, ClaudeBot, PerplexityBot, Google-Extended and CCBot. For each crawler it gives allowed, the User-agent group used, the line that decided it, the group's Crawl-delay and the reason for the verdict. It also lists the robots.txt's Sitemap lines, reads its Content-Signal line, and says whether the site has an llms.txt. Price: US$0.002 per call.

Use it before you publish or link a page and want to know whether AI crawlers are allowed to read it, or before you tell a user why an AI tool could not fetch a page.

Only the site's /robots.txt and /llms.txt are fetched. The page itself is not fetched, and nothing is stored.

Request

curl -s -X POST https://vehcdj664efetfrsolne5umanq.srv.us/v1/access-check \
  -H 'Content-Type: application/json' \
  -d '{"url":"https://www.iana.org/help/example-domains"}'

The call is paid: the server answers 402 with the offer, and the call is charged US$0.002 once it is answered below 400.

FieldRequiredMeaning
urlyesThe http(s) page URL to judge, up to 2,048 characters. Its site's /robots.txt and /llms.txt are read; the page itself is not.

Unknown fields are refused with 400, and the call is not charged.

Response

{
  "url": "https://news.example.com/articles/1",
  "robots": { "url": "https://news.example.com/robots.txt", "http_status": 200, "served": true, "truncated": false },
  "crawlers": [
    { "crawler": "GPTBot", "allowed": false, "user_agent": "gptbot", "deciding_line": { "line": 3, "text": "Disallow: /" }, "crawl_delay": null, "reason": "rule_matched" },
    { "crawler": "ClaudeBot", "allowed": true, "user_agent": "*", "deciding_line": null, "crawl_delay": 10, "reason": "no_rule_matched" }
  ],
  "sitemaps": ["https://news.example.com/sitemap.xml"],
  "content_signal": { "search": "yes", "ai_input": "no", "ai_train": "no" },
  "llms_txt": { "url": "https://news.example.com/llms.txt", "http_status": 404, "served": false },
  "tier": "paid",
  "rail": "x402",
  "network": "eip155:8453",
  "receipt": "eyJhbGciOiJFZERTQSIs…"
}

The example above is illustrative. Another site gives other values.

How the verdict is reached

Errors

See Errors for every code and what it means. The codes specific to this route:

StatusCodeMeaningCharged
400invalid_urlurl is missing, is not an http(s) URL, or is refused by the URL guard. details.field is url.No
400bad_requestThe body is not a JSON object, or a field has the wrong type.No
422robots_too_largeThe site's robots.txt is over 2 MB, so its rules cannot be judged in full. details.robots_url names the file.No
502robots_unreachableThe robots.txt could not be read (timeout, DNS or connection error, redirect loop, or blocked). details.outcome says which.No

Every answer with status 400 or above is not charged.