# AI crawler access test: can answer engines read these vendors?

> 8 of 8 tool sites reachable from our build machine on 2026-09-27. 2 of 8 restrict any checked AI crawler in robots.txt. 5 of 8 ship an /llms.txt (claude-code, cursor, github-copilot, gemini-cli, kiro). Median homepage TTFB: kiro fastest at 21ms, opencode slowest at 542ms.

Human page: https://testedactually.com/ai-coding-assistants/benchmarks/ai-coding-assistants-ai-crawler-access/
Mirror: https://testedactually.com/ai-coding-assistants/benchmarks/ai-coding-assistants-ai-crawler-access.md
Updated: 2026-09-27

Methodology: https://testedactually.com/ai-coding-assistants/benchmarks/ai-coding-assistants-ai-crawler-access/ — script: `scripts/crawler-test.mjs`, n=8 tools × 3 runs, run 2026-09-27.

**AI crawler access test: can answer engines read these vendors? — n=8 tools, 3 runs per tool**

| Tool | TTFB ms (median) | HTML KB | /llms.txt | AI crawler policy | Blocked bots |
| --- | --- | --- | --- | --- | --- |
| [claude-code](/ai-coding-assistants/claude-code/) | 98 | 320.8 | yes | open | none |
| [codex](/ai-coding-assistants/codex/) | 68 | — | no | open | none |
| [cursor](/ai-coding-assistants/cursor/) | 73 | 617.8 | yes | open | none |
| [github-copilot](/ai-coding-assistants/github-copilot/) | 31 | 562.7 | yes | partial | Bytespider |
| [opencode](/ai-coding-assistants/opencode/) | 542 | 65.3 | no | open | none |
| [gemini-cli](/ai-coding-assistants/gemini-cli/) | 29 | 562.7 | yes | partial | Bytespider |
| [kilo](/ai-coding-assistants/kilo/) | 371 | 482 | no | open | none |
| [kiro](/ai-coding-assistants/kiro/) | 21 | 281.6 | yes | open | none |

### Methodology

- Fetch https://<domain>/robots.txt with a plain HTTP GET and a desktop user agent.
- Parse User-agent groups line by line; a bot is blocked only if a group naming it (or the * wildcard) contains a 'Disallow: /' rule.
- Bots checked: GPTBot, ClaudeBot, CCBot, PerplexityBot, Google-Extended, Applebot-Extended, Bytespider.
- Policy: blocked = GPTBot, ClaudeBot, and CCBot all disallowed from /; partial = at least one checked bot disallowed; open = no restrictions; unknown = robots.txt unreachable.
- Fetch https://<domain>/llms.txt; llmsTxt = HTTP 200.
- Fetch the homepage 3 times; TTFB is time to response headers; report the median. HTML size is the decoded body length of the last successful fetch.

### Limitations

- Single machine, single network location — TTFB is directional, not global CDN truth.
- n=3 runs per tool; we report the median, not a distribution.
- Simplified robots.txt parsing: bot names matched case-insensitively, only Disallow rules read, path wildcards beyond 'Disallow: /' not modeled.
- Homepage only; vendor pricing pages may have different crawler policies.
- Snapshot of 2026-09-27; vendors change crawler policies without notice.
