curl --request POST \
--url https://api.iotools.cloud/v1/tool/ai-bot-access-tester \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"robots": "User-agent: *\nDisallow: /admin/\n\nUser-agent: GPTBot\nDisallow: /\n\nUser-agent: CCBot\nDisallow: /\n\nUser-agent: Google-Extended\nDisallow: /\n\nUser-agent: PerplexityBot\nAllow: /\n\nSitemap: https://example.com/sitemap.xml",
"testUrl": "/",
"purpose": "all"
}
'{
"tool": "ai-bot-access-tester",
"tool_version": "1.0.1",
"outputs": {
"summary": "3 of 33 AI crawlers blocked from /",
"results": [
{
"crawler": "GPTBot",
"operator": "OpenAI",
"purpose": "Model training",
"access": "Blocked",
"deciding-rule": "Disallow: / (line 5)"
},
{
"crawler": "ClaudeBot",
"operator": "Anthropic",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "anthropic-ai",
"operator": "Anthropic",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Google-Extended",
"operator": "Google",
"purpose": "Model training",
"access": "Blocked",
"deciding-rule": "Disallow: / (line 11)"
},
{
"crawler": "GoogleOther",
"operator": "Google",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Applebot-Extended",
"operator": "Apple",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "meta-externalagent",
"operator": "Meta",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "FacebookBot",
"operator": "Meta",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "CCBot",
"operator": "Common Crawl",
"purpose": "Model training",
"access": "Blocked",
"deciding-rule": "Disallow: / (line 8)"
},
{
"crawler": "Bytespider",
"operator": "ByteDance",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Amazonbot",
"operator": "Amazon",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Diffbot",
"operator": "Diffbot",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Omgilibot",
"operator": "Webz.io",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Webzio-Extended",
"operator": "Webz.io",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "ImagesiftBot",
"operator": "Hive",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "AI2Bot",
"operator": "Allen Institute for AI",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "cohere-ai",
"operator": "Cohere",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "PanguBot",
"operator": "Huawei",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Timpibot",
"operator": "Timpi",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Kangaroo Bot",
"operator": "Kangaroo LLM",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "SemrushBot-OCOB",
"operator": "Semrush",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "OAI-SearchBot",
"operator": "OpenAI",
"purpose": "AI search",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Claude-SearchBot",
"operator": "Anthropic",
"purpose": "AI search",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "PerplexityBot",
"operator": "Perplexity",
"purpose": "AI search",
"access": "Allowed",
"deciding-rule": "Allow: / (line 14)"
},
{
"crawler": "Applebot",
"operator": "Apple",
"purpose": "AI search",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "DuckAssistBot",
"operator": "DuckDuckGo",
"purpose": "AI search",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "YouBot",
"operator": "You.com",
"purpose": "AI search",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "ChatGPT-User",
"operator": "OpenAI",
"purpose": "User-triggered",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Claude-User",
"operator": "Anthropic",
"purpose": "User-triggered",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Perplexity-User",
"operator": "Perplexity",
"purpose": "User-triggered",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "meta-externalfetcher",
"operator": "Meta",
"purpose": "User-triggered",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "MistralAI-User",
"operator": "Mistral AI",
"purpose": "User-triggered",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Google-CloudVertexBot",
"operator": "Google",
"purpose": "User-triggered",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
}
],
"snippet": "# Blocks the 30 AI crawlers still allowed to fetch /.\n# Append to robots.txt at the site root.\n\nUser-agent: ClaudeBot\nDisallow: /\n\nUser-agent: anthropic-ai\nDisallow: /\n\nUser-agent: GoogleOther\nDisallow: /\n\nUser-agent: Applebot-Extended\nDisallow: /\n\nUser-agent: meta-externalagent\nDisallow: /\n\nUser-agent: FacebookBot\nDisallow: /\n\nUser-agent: Bytespider\nDisallow: /\n\nUser-agent: Amazonbot\nDisallow: /\n\nUser-agent: Diffbot\nDisallow: /\n\nUser-agent: Omgilibot\nDisallow: /\n\nUser-agent: Webzio-Extended\nDisallow: /\n\nUser-agent: ImagesiftBot\nDisallow: /\n\nUser-agent: AI2Bot\nDisallow: /\n\nUser-agent: cohere-ai\nDisallow: /\n\nUser-agent: PanguBot\nDisallow: /\n\nUser-agent: Timpibot\nDisallow: /\n\nUser-agent: Kangaroo Bot\nDisallow: /\n\nUser-agent: SemrushBot-OCOB\nDisallow: /\n\nUser-agent: OAI-SearchBot\nDisallow: /\n\nUser-agent: Claude-SearchBot\nDisallow: /\n\nUser-agent: PerplexityBot\nDisallow: /\n\nUser-agent: Applebot\nDisallow: /\n\nUser-agent: DuckAssistBot\nDisallow: /\n\nUser-agent: YouBot\nDisallow: /\n\nUser-agent: ChatGPT-User\nDisallow: /\n\nUser-agent: Claude-User\nDisallow: /\n\nUser-agent: Perplexity-User\nDisallow: /\n\nUser-agent: meta-externalfetcher\nDisallow: /\n\nUser-agent: MistralAI-User\nDisallow: /\n\nUser-agent: Google-CloudVertexBot\nDisallow: /"
},
"credits_used": 3,
"credits_remaining": null
}AI Bot Access Tester
Check which AI crawlers your robots.txt blocks. Tests GPTBot, ClaudeBot, Google-Extended, PerplexityBot, CCBot and 28 more against a pasted robots.txt using RFC 9309 precedence, grouped by whether the bot trains models, powers AI search, or fetches on a user’s behalf — and emits a ready-to-paste block for the ones still allowed.
curl --request POST \
--url https://api.iotools.cloud/v1/tool/ai-bot-access-tester \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"robots": "User-agent: *\nDisallow: /admin/\n\nUser-agent: GPTBot\nDisallow: /\n\nUser-agent: CCBot\nDisallow: /\n\nUser-agent: Google-Extended\nDisallow: /\n\nUser-agent: PerplexityBot\nAllow: /\n\nSitemap: https://example.com/sitemap.xml",
"testUrl": "/",
"purpose": "all"
}
'{
"tool": "ai-bot-access-tester",
"tool_version": "1.0.1",
"outputs": {
"summary": "3 of 33 AI crawlers blocked from /",
"results": [
{
"crawler": "GPTBot",
"operator": "OpenAI",
"purpose": "Model training",
"access": "Blocked",
"deciding-rule": "Disallow: / (line 5)"
},
{
"crawler": "ClaudeBot",
"operator": "Anthropic",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "anthropic-ai",
"operator": "Anthropic",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Google-Extended",
"operator": "Google",
"purpose": "Model training",
"access": "Blocked",
"deciding-rule": "Disallow: / (line 11)"
},
{
"crawler": "GoogleOther",
"operator": "Google",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Applebot-Extended",
"operator": "Apple",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "meta-externalagent",
"operator": "Meta",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "FacebookBot",
"operator": "Meta",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "CCBot",
"operator": "Common Crawl",
"purpose": "Model training",
"access": "Blocked",
"deciding-rule": "Disallow: / (line 8)"
},
{
"crawler": "Bytespider",
"operator": "ByteDance",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Amazonbot",
"operator": "Amazon",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Diffbot",
"operator": "Diffbot",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Omgilibot",
"operator": "Webz.io",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Webzio-Extended",
"operator": "Webz.io",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "ImagesiftBot",
"operator": "Hive",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "AI2Bot",
"operator": "Allen Institute for AI",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "cohere-ai",
"operator": "Cohere",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "PanguBot",
"operator": "Huawei",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Timpibot",
"operator": "Timpi",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Kangaroo Bot",
"operator": "Kangaroo LLM",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "SemrushBot-OCOB",
"operator": "Semrush",
"purpose": "Model training",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "OAI-SearchBot",
"operator": "OpenAI",
"purpose": "AI search",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Claude-SearchBot",
"operator": "Anthropic",
"purpose": "AI search",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "PerplexityBot",
"operator": "Perplexity",
"purpose": "AI search",
"access": "Allowed",
"deciding-rule": "Allow: / (line 14)"
},
{
"crawler": "Applebot",
"operator": "Apple",
"purpose": "AI search",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "DuckAssistBot",
"operator": "DuckDuckGo",
"purpose": "AI search",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "YouBot",
"operator": "You.com",
"purpose": "AI search",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "ChatGPT-User",
"operator": "OpenAI",
"purpose": "User-triggered",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Claude-User",
"operator": "Anthropic",
"purpose": "User-triggered",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Perplexity-User",
"operator": "Perplexity",
"purpose": "User-triggered",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "meta-externalfetcher",
"operator": "Meta",
"purpose": "User-triggered",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "MistralAI-User",
"operator": "Mistral AI",
"purpose": "User-triggered",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
},
{
"crawler": "Google-CloudVertexBot",
"operator": "Google",
"purpose": "User-triggered",
"access": "Allowed",
"deciding-rule": "* (default group) — no matching rule"
}
],
"snippet": "# Blocks the 30 AI crawlers still allowed to fetch /.\n# Append to robots.txt at the site root.\n\nUser-agent: ClaudeBot\nDisallow: /\n\nUser-agent: anthropic-ai\nDisallow: /\n\nUser-agent: GoogleOther\nDisallow: /\n\nUser-agent: Applebot-Extended\nDisallow: /\n\nUser-agent: meta-externalagent\nDisallow: /\n\nUser-agent: FacebookBot\nDisallow: /\n\nUser-agent: Bytespider\nDisallow: /\n\nUser-agent: Amazonbot\nDisallow: /\n\nUser-agent: Diffbot\nDisallow: /\n\nUser-agent: Omgilibot\nDisallow: /\n\nUser-agent: Webzio-Extended\nDisallow: /\n\nUser-agent: ImagesiftBot\nDisallow: /\n\nUser-agent: AI2Bot\nDisallow: /\n\nUser-agent: cohere-ai\nDisallow: /\n\nUser-agent: PanguBot\nDisallow: /\n\nUser-agent: Timpibot\nDisallow: /\n\nUser-agent: Kangaroo Bot\nDisallow: /\n\nUser-agent: SemrushBot-OCOB\nDisallow: /\n\nUser-agent: OAI-SearchBot\nDisallow: /\n\nUser-agent: Claude-SearchBot\nDisallow: /\n\nUser-agent: PerplexityBot\nDisallow: /\n\nUser-agent: Applebot\nDisallow: /\n\nUser-agent: DuckAssistBot\nDisallow: /\n\nUser-agent: YouBot\nDisallow: /\n\nUser-agent: ChatGPT-User\nDisallow: /\n\nUser-agent: Claude-User\nDisallow: /\n\nUser-agent: Perplexity-User\nDisallow: /\n\nUser-agent: meta-externalfetcher\nDisallow: /\n\nUser-agent: MistralAI-User\nDisallow: /\n\nUser-agent: Google-CloudVertexBot\nDisallow: /"
},
"credits_used": 3,
"credits_remaining": null
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Response
Tool output
Show child attributes
Show child attributes
The tool's slug, echoing the {slug} in the request path.
Output-contract version for this tool.
Credits this call consumed, after any settlement refund. 0 when metering is disabled.
Credits left in the current monthly allowance, or null when metering is disabled.
Correlation id, also sent as x-request-id.
Was this page helpful?