API voor AI-crawlertoegang
Eén verzoek zegt welke AI-crawlers een site kunnen lezen: GPTBot, OAI-SearchBot, ChatGPT-User, PerplexityBot, ClaudeBot, Google-Extended, Bingbot en Googlebot. Per crawler krijg je wat robots.txt zegt en wat de server antwoordt. Het is het resultaat van de gratis AI-crawlercheck, als JSON. Zonder sleutel, zonder account, CORS open.
Verzoek
Eén GET-verzoek met één parameter:
GET https://citedby.eu/api/v1/ai-access?url=example.com
url: Een domein of een volledig adres, bijvoorbeeld example.com of https://example.com/winkel. Alleen de site wordt gecontroleerd: pad, poort en www. vallen weg.
Voorbeeld
De check van theguardian.com op 24 oktober 2026: een openbare site, geen klant van CitedBy, met het resultaat zoals de API het gaf. Op een andere dag kan het antwoord verschillen.
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"}Wat het antwoord bevat
Elk veld hieronder staat in elk geslaagd antwoord.
site: Het gecontroleerde domein.checked_at: Wanneer CitedBy de check deed, in UTC. Een site die in de laatste 6 uur is gecontroleerd geeft het bewaarde resultaat, dus dit kan eerder zijn dan je verzoek.robots_txt.state: found, not_found, unreachable of server_error. Een serverfout op robots.txt betekent dat een crawler moet aannemen dat hij niet mag crawlen (RFC 9309): elke crawler staat dan als geblokkeerd.robots_txt.status: De HTTP-status waarmee robots.txt antwoordde.robots_txt.blocks_all_crawlers: true als de regels voor alle crawlers (*) de hele site afsluiten.summary: Hoeveel van de 8 crawlers de site kunnen lezen (allowed) en de namen van wie dat niet kan (blocked).crawlers[].id: De naam van de crawler.crawlers[].role: training (verzamelt tekst om modellen te trainen), search (kan je pagina's noemen in antwoorden) of user_fetch (opent een pagina als iemand ernaar vraagt).crawlers[].robots_txt: allowed, disallowed of not_read (robots.txt kon niet worden gelezen).crawlers[].robots_txt_rule: De robots.txt-regel die de site voor deze crawler afsluit, of null.crawlers[].server: ok, blocked (de server antwoordt de user-agent van deze crawler met een weigering of een controlepagina), down (een fout) of not_tested. Google-Extended is alleen een robots.txt-token en wordt dus nooit op de server getest.crawlers[].access: Het oordeel voor deze crawler, een van de waarden hieronder.report_url: De volledige resultaatpagina van de gratis check voor deze site.audit_url: Waar je de hele site laat doorlichten.attribution: De tekst en link om te tonen als je het resultaat laat zien (zie de voorwaarden).
De toegangswaarden
allowed betekent dat robots.txt de site niet voor de crawler afsluit en dat de server hem antwoordde. De andere waarden zeggen wat in de weg staat:
allowed: de crawler kan de site lezen.blocked_by_robots_txt: robots.txt sluit de site voor deze crawler af.blocked_by_server: de server wijst de user-agent van deze crawler af of toont hem een controlepagina.blocked_by_robots_txt_and_server: allebei.server_error: de server antwoordde deze crawler met een fout.
Een trainingscrawler blokkeren kan een keuze zijn. De API meldt het als geblokkeerd en noemt het geen probleem.
Fouten
Een mislukking is een fout, nooit een gok. De inhoud is JSON: {"error": {"code", "message"}}.
missing_url: 400: de parameter url ontbreekt.bad_url: 400: geen openbaar siteadres (een privéadres, een ongeldige naam, meer dan 2.048 tekens).site_unreachable: 422: de site antwoordde onze crawler niet, dus de toegang kan niet worden beoordeeld. Er wordt niets geraden: er is geen groen licht.rate_limited: 429: boven de limieten hieronder. Retry-After zegt hoeveel seconden je moet wachten.busy: 503: CitedBy voert zijn maximale aantal checks uit. Retry-After is 60 seconden.unavailable: 502 of 503: de checker antwoordde niet. Probeer het over een minuut opnieuw.
Een trage site geeft 202 met {"status": "pending"}: de check loopt door en het resultaat wordt bewaard. Vraag opnieuw na de seconden van Retry-After.
Limieten
- 30 verzoeken per uur per IP-adres.
- Hoogstens 12 sites per uur die niet in de laatste 6 uur al zijn gecontroleerd. Een site die in die tijd is gecontroleerd krijgt het bewaarde resultaat en gebruikt deze ruimte niet.
- Geen sleutel en geen aanmelding: de limieten zijn de enige drempel. Het resultaat wordt 6 uur bewaard.
Wat ze niet teruggeeft
- Geen cijfer en geen score. De API geeft wat de gratis check per crawler toont.
- Geen crawl per pagina, geen exacte oplossing per pagina en geen llms.txt-check: die zitten in de audit.
- Ze test de homepage met de user-agent-tekst van elke crawler, vanaf ons eigen adres. Een firewall die de IP-bereiken van de aanbieders controleert kan de echte crawlers anders behandelen.
- Een robots.txt die naar een ander domein doorverwijst wordt niet gevolgd: hij staat als not_found met de status van de doorverwijzing.
OpenAPI
De spec staat op https://citedby.eu/openapi.json. Laad hem in Postman, Insomnia of een codegenerator.
Gebruiksvoorwaarden
- Gratis te gebruiken, ook in je eigen product, zonder sleutel of account.
- Laat je onze resultaten aan anderen zien (een pagina, een rapport, een README, een tool), link dan naar CitedBy: https://citedby.eu/nl/ai-access-api of de report_url van de site. Het veld attribution bevat de tekst en de link.
- Presenteer het resultaat niet als je eigen check en stuur geen stortvloeden: de limieten gelden per adres en we kunnen ze wijzigen of beëindigen. Geen belofte over beschikbaarheid.
- We tellen de aanroepen, als één getal per dag. Het adres waarvandaan je aanroept dient voor de limieten en blijft in het geheugen, niet in een database. Meer in Privacy.
Dezelfde check, op andere manieren
- De gratis check in je browser
- MCP-server voor Claude, Cursor en Codex
- Opdrachtregel en GitHub Action
- WordPress-plugin
- Een badge voor je site
English · Français · Nederlands · Deutsch · Español
Meer nodig dan crawlertoegang? Een CitedBy-audit crawlt je site, tot de paginalimiet van je abonnement, en geeft je de exacte oplossing. Zie de abonnementen.