API d'accès des robots IA
Une requête indique quels robots IA peuvent lire un site : GPTBot, OAI-SearchBot, ChatGPT-User, PerplexityBot, ClaudeBot, Google-Extended, Bingbot et Googlebot. Pour chacun, vous obtenez ce que dit robots.txt et ce que répond le serveur. C'est le résultat du contrôle gratuit des robots IA, en JSON. Sans clé, sans compte, CORS ouvert.
Requête
Une requête GET avec un paramètre :
GET https://citedby.eu/api/v1/ai-access?url=example.com
url: Un domaine ou une adresse complète, par exemple example.com ou https://example.com/boutique. Seul le site est contrôlé : le chemin, le port et www. sont ignorés.
Exemple
Le contrôle de theguardian.com le 24 octobre 2026 : un site public, pas un client de CitedBy, avec le résultat tel que l'API l'a renvoyé. Lancé un autre jour, il peut différer.
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"}Ce que contient la réponse
Chaque champ ci-dessous figure dans toute réponse réussie.
site: Le domaine contrôlé.checked_at: Le moment où CitedBy a fait le contrôle, en UTC. Un site contrôlé au cours des 6 dernières heures renvoie le résultat conservé : la date peut donc précéder votre requête.robots_txt.state: found, not_found, unreachable ou server_error. Une erreur serveur sur robots.txt oblige un robot à supposer qu'il n'a pas le droit d'explorer (RFC 9309) : tous les robots apparaissent alors comme bloqués.robots_txt.status: Le statut HTTP de la réponse de robots.txt.robots_txt.blocks_all_crawlers: true quand les règles pour tous les robots (*) ferment tout le site.summary: Combien des 8 robots peuvent lire le site (allowed), et les noms de ceux qui ne le peuvent pas (blocked).crawlers[].id: Le nom du robot.crawlers[].role: training (collecte du texte pour entraîner des modèles), search (peut citer vos pages dans ses réponses) ou user_fetch (ouvre une page quand quelqu'un le demande).crawlers[].robots_txt: allowed, disallowed ou not_read (robots.txt n'a pas pu être lu).crawlers[].robots_txt_rule: La règle de robots.txt qui ferme le site à ce robot, ou null.crawlers[].server: ok, blocked (le serveur répond à l'user-agent de ce robot par un refus ou une page de contrôle), down (une erreur) ou not_tested. Google-Extended n'est qu'un jeton de robots.txt : il n'est jamais testé sur le serveur.crawlers[].access: Le verdict pour ce robot, l'une des valeurs ci-dessous.report_url: La page de résultat complète du contrôle gratuit pour ce site.audit_url: Où auditer le site entier.attribution: Le texte et le lien à afficher quand vous montrez le résultat (voir les conditions).
Les valeurs d'accès
allowed signifie que robots.txt ne ferme pas le site au robot et que le serveur lui a répondu. Les autres disent ce qui bloque :
allowed: le robot peut lire le site.blocked_by_robots_txt: robots.txt ferme le site à ce robot.blocked_by_server: le serveur refuse l'user-agent de ce robot ou lui montre une page de contrôle.blocked_by_robots_txt_and_server: les deux.server_error: le serveur a répondu à ce robot par une erreur.
Bloquer un robot d'entraînement peut être un choix. L'API le signale comme bloqué et n'en fait pas un problème.
Erreurs
Un échec est une erreur, jamais une supposition. Le corps est du JSON : {"error": {"code", "message"}}.
missing_url: 400 : le paramètre url manque.bad_url: 400 : ce n'est pas l'adresse d'un site public (adresse privée, nom invalide, plus de 2 048 caractères).site_unreachable: 422 : le site n'a pas répondu à notre robot, l'accès ne peut donc pas être jugé. Rien n'est supposé : il n'y a pas de feu vert.rate_limited: 429 : limites ci-dessous dépassées. Retry-After indique combien de secondes attendre.busy: 503 : CitedBy exécute son nombre maximal de contrôles. Retry-After vaut 60 secondes.unavailable: 502 ou 503 : le contrôleur n'a pas répondu. Réessayez dans une minute.
Un site lent renvoie 202 avec {"status": "pending"} : le contrôle continue et son résultat est conservé. Redemandez après les secondes de Retry-After.
Limites
- 30 requêtes par heure et par adresse IP.
- 12 sites par heure au plus qui n'ont pas déjà été contrôlés dans les 6 dernières heures. Un site contrôlé pendant ce délai reçoit le résultat conservé et n'utilise pas ce quota.
- Ni clé ni inscription : les limites sont la seule barrière. Le résultat est conservé 6 heures.
Ce qu'elle ne renvoie pas
- Ni note ni score. L'API renvoie ce que montre le contrôle gratuit pour chaque robot.
- Ni exploration page par page, ni correctif exact par page, ni contrôle de llms.txt : ils sont dans l'audit.
- Elle teste la page d'accueil avec la chaîne user-agent de chaque robot, depuis notre propre adresse. Un pare-feu qui vérifie les plages d'adresses des éditeurs peut traiter les vrais robots autrement.
- Un robots.txt qui redirige vers un autre domaine n'est pas suivi : il apparaît comme not_found avec le statut de la redirection.
OpenAPI
La spécification est à https://citedby.eu/openapi.json. Chargez-la dans Postman, Insomnia ou un générateur de code.
Conditions d'utilisation
- Gratuite, y compris dans votre propre produit, sans clé ni compte.
- Si vous montrez nos résultats à d'autres personnes (une page, un rapport, un README, un outil), faites un lien vers CitedBy : https://citedby.eu/fr/ai-access-api ou le report_url du site. Le champ attribution contient le texte et le lien.
- Ne présentez pas le résultat comme votre propre contrôle et n'envoyez pas de rafales : les limites s'appliquent à chaque adresse, et nous pouvons les changer ou y mettre fin. Aucune promesse de disponibilité.
- Nous comptons les appels, en un nombre par jour. L'adresse depuis laquelle vous appelez sert aux limites et reste en mémoire, pas dans une base de données. Détails : Confidentialité.
Le même contrôle, autrement
- Le contrôle gratuit dans votre navigateur
- Serveur MCP pour Claude, Cursor et Codex
- Ligne de commande et GitHub Action
- Extension WordPress
- Un badge pour votre site
English · Français · Nederlands · Deutsch · Español
Besoin de plus que l'accès des robots ? Un audit CitedBy explore votre site, jusqu'à la limite de pages de votre formule, et donne le correctif exact. Voir les formules.