Skip to content
CitedByAudit a site

AI crawler access API

One request tells you which AI crawlers can read a site: GPTBot, OAI-SearchBot, ChatGPT-User, PerplexityBot, ClaudeBot, Google-Extended, Bingbot and Googlebot. For each one you get what robots.txt says and what the server answers it. It is the result the free AI crawler check shows, as JSON. No key, no account, CORS open.

Request

One GET request with one parameter:

GET https://citedby.eu/api/v1/ai-access?url=example.com

Example

The check of theguardian.com on 24 October 2026: a public site, not a CitedBy customer, in the result as the API returned it. Run it on another day and the answer can differ.

curl "https://citedby.eu/api/v1/ai-access?url=theguardian.com"
{"api_version": "1", "site": "theguardian.com", "checked_at": "2026-10-24T17:27:07Z", "robots_txt": {"state": "found", "status": 200, "blocks_all_crawlers": false}, "summary": {"total": 8, "allowed": 6, "blocked": ["PerplexityBot", "ClaudeBot"]},
  "crawlers": [
    {"id": "GPTBot", "role": "training", "robots_txt": "allowed", "robots_txt_rule": null, "server": "ok", "access": "allowed"},
    {"id": "OAI-SearchBot", "role": "search", "robots_txt": "allowed", "robots_txt_rule": null, "server": "ok", "access": "allowed"},
    {"id": "ChatGPT-User", "role": "user_fetch", "robots_txt": "allowed", "robots_txt_rule": null, "server": "ok", "access": "allowed"},
    {"id": "PerplexityBot", "role": "search", "robots_txt": "disallowed", "robots_txt_rule": "Disallow: /", "server": "blocked", "access": "blocked_by_robots_txt_and_server"},
    {"id": "ClaudeBot", "role": "training", "robots_txt": "disallowed", "robots_txt_rule": "Disallow: /", "server": "blocked", "access": "blocked_by_robots_txt_and_server"},
    {"id": "Google-Extended", "role": "training", "robots_txt": "allowed", "robots_txt_rule": null, "server": "not_tested", "access": "allowed"},
    {"id": "Bingbot", "role": "search", "robots_txt": "allowed", "robots_txt_rule": null, "server": "ok", "access": "allowed"},
    {"id": "Googlebot", "role": "search", "robots_txt": "allowed", "robots_txt_rule": null, "server": "ok", "access": "allowed"}
  ],
  "report_url": "https://citedby.eu/tools/ai-crawler-check/theguardian.com?utm_source=api&utm_medium=api&utm_campaign=ai_access_api", "audit_url": "https://citedby.eu/?url=theguardian.com&source=api&utm_source=api&utm_medium=api&utm_campaign=ai_access_api", "attribution": {"text": "AI crawler access by CitedBy", "url": "https://citedby.eu/ai-access-api"}, "docs": "https://citedby.eu/ai-access-api"}

What the response holds

Every field below is in every successful response.

The access values

allowed means robots.txt does not close the site to the crawler and the server answered it. The others name what stands in the way:

Blocking a training crawler can be a choice. The API reports it as blocked and does not call it a problem.

Errors

A failure is an error, never a guess. The body is JSON: {"error": {"code", "message"}}.

A slow site returns 202 with {"status": "pending"}: the check keeps running and its result is stored. Ask again after the Retry-After seconds.

Limits

What it does not return

OpenAPI

The spec is at https://citedby.eu/openapi.json. Load it in Postman, Insomnia or a code generator.

Terms of use

Same check, other ways

English · Français · Nederlands · Deutsch · Español

Need more than crawler access? A CitedBy audit crawls your site, up to your plan's page limit, and gives you the exact fix. See the plans.