Skip to Content

AI Crawler Checker

REST endpoints for AI Crawler Checker. Base URL https://api.competlab.com; every request needs a CL-API-Key header (see Authentication). Responses wrap in { item } or { items }; errors in { error }.

Check AI crawler accessibility for a domain

POST/v1/tools/ai-crawler-checker

Check which AI crawlers are allowed, disallowed, or unconfigured on any public domain. Inspects robots.txt for major AI bots (GPTBot, ClaudeBot, Google-Extended, PerplexityBot, and more), checks meta tags and the presence of /llms.txt, and surfaces an accessibility verdict, opt-in/opt-out strategy detection, and how the domain compares to industry peers. Optionally tailor the analysis to a specific industry. Stateless live check — no project required, no data is persisted. Suitable for AI readiness audits, content-strategy reviews, and pre-launch compliance checks.

Returns · { item }

Request bodyapplication/json

FieldTypeDescription
domainstringTarget domain to check for AI-crawler accessibility. Accepts a bare hostname or a full URL — normalized (lowercased, scheme and path stripped) before checking.
industrystringIndustry context used to tailor crawler recommendations and benchmarks. Defaults to “other” when omitted. Values: news-media, arts-entertainment, law-government, finance-healthcare, saas-tech, ecommerce, other.

Request

curl -X POST "https://api.competlab.com/v1/tools/ai-crawler-checker" \ -H "CL-API-Key: YOUR_COMPETLAB_API_KEY" \ -H "Content-Type: application/json" \ -d '{"domain":"stripe.com","industry":"saas-tech"}'

Response 200 OK

{ "item": { "domain": "competlab.com", "fetchedAt": "2026-05-16T14:30:00.000Z", "industry": "saas-tech", "crawlers": [ { "userAgent": "GPTBot", "displayName": "GPTBot", "operator": "OpenAI", "category": "training", "status": "blocked", "matchingDirective": "Disallow: /" } ], "robotsTxt": { "found": true, "content": "User-agent: GPTBot\nDisallow: /\n\nUser-agent: *\nAllow: /\n", "statusCode": 200 }, "metaTags": [ { "name": "robots", "content": "noai, noimageai" } ], "headers": { "xRobotsTag": "noai, noimageai" }, "llmsTxt": { "found": true, "sectionCount": 12, "linkCount": 47, "approxTokens": 1850 }, "llmsFullTxt": { "found": true, "sectionCount": 12, "linkCount": 47, "approxTokens": 1850 }, "accessibility": { "score": 65, "label": "Mixed Access", "interpretation": "Selective access — training bots blocked, retrieval bots allowed. Common pattern for content-led brands protecting IP while staying answer-engine visible.", "color": "orange" }, "strategy": { "type": "block-training-allow-retrieval", "label": "Block training, allow retrieval", "description": "You're blocking AI model training crawlers (GPTBot, ClaudeBot) while allowing retrieval bots (ChatGPT-User, PerplexityBot). Protects IP, maintains answer-engine visibility." }, "industryPosition": { "industryLabel": "SaaS / Tech", "industryAvgBlockRate": 42, "typicalScoreRange": [ 55, 80 ], "position": "average", "insight": "Your access score of 65 sits in the typical SaaS / Tech range (55–80). 42% of peers block at least one AI bot." }, "recommendations": [ { "id": "ip-protection", "title": "Add llms.txt for retrieval-bot context", "description": "ChatGPT-User and PerplexityBot can fetch your homepage but lack a curated context file. Add /llms.txt with key pages and definitions to improve citation quality.", "priority": "medium" } ], "robotsSnippet": "User-agent: GPTBot\nDisallow: /\n\nUser-agent: ClaudeBot\nDisallow: /\n" } }

Errors

StatusCodeMeaning
400invalid_parametersBad request — the payload failed validation.
401api_key_missing · api_key_invalid · api_key_revoked · api_key_expired · insufficient_scopeThe CL-API-Key is missing, malformed, revoked, expired, or lacks the required scope.
429rate_limit_exceededRate limit exceeded — retry with backoff.
502bad_gatewayUpstream fetch failed (e.g. the target page could not be retrieved).

Every error uses the shared { error: { code, message, status } } envelope; code is one of the values listed above.

{ "error": { "code": "invalid_parameters", "message": "Domain is required", "status": 400 } }

Transient failures (429, 5xx) are safe to retry with exponential backoff.

Last updated on