Which AI Assistants Can Read Your API Docs? robots.txt and AI Citations in 2026
A planted-URL test asked five AI assistants to open one page. Here is what each did with robots.txt, what each vendor says, and what docs teams should set.
Citon10 min read

Short answer
Do AI assistants respect robots.txt when a user asks them to open a page?
Mostly not, and three vendors say so in writing. When a person asks an assistant to open a page, the request comes from a user-triggered fetcher, not a crawler. OpenAI, Google and Perplexity each state that these fetches may skip or generally ignore robots.txt. Anthropic says its bots honour it. A small public test on 2026-10-09 matched that split: Claude read robots.txt first, ChatGPT read it only after its first fetch, and Grok never read it at all. For a docs team, robots.txt decides which crawlers can index you for citation. It does not decide who can read a page a user hands over.
Paste a link to your API reference into an assistant and ask it a question about the page. Something fetches that page. Whether it read your robots.txt first depends on which assistant you asked, and for most of them the honest answer is that robots.txt was never meant to apply.
A small public test posted on 2026-10-09 made that visible. The author gave five assistants each their own unlinked URL, asked each one in a fresh chat to open it and read back a code, and logged every request. The author is plain that it was a few runs per assistant on one day. Read at that size, it is still a clear picture of what happens between a user's prompt and your server.
This post is for developer-tool and API companies that want ChatGPT, Claude, Gemini, Perplexity and Grok to read and cite their docs. It covers what the test observed per assistant, what each vendor's own documentation says about user-triggered fetches, and what a docs team should actually decide in robots.txt.
The short version
A user-triggered fetch is not a crawl, and most vendors document it as exempt from robots.txt. One public test on 2026-10-09 gave each of five assistants a secret URL and watched the logs. Claude read robots.txt first and honoured it. ChatGPT fetched the page, then its search crawler read robots.txt and the next request was refused. Gemini and Grok never read it, and Grok arrived from 59 different addresses. For a docs team the decision is about crawlers: allow the search and fetch agents, decide training separately, and stop expecting robots.txt to gate a page a user pastes in.
At a glance
What each assistant did in the test, and what its vendor documents
| Assistant | In the 2026-10-09 test | What the vendor documents |
|---|---|---|
| Claude | Read robots.txt first, refused the blocked page | Bots honour robots.txt |
| ChatGPT | Fetched first, crawler read robots.txt about 76 seconds later | User fetches may not follow robots.txt |
| Gemini | Never read robots.txt | User-triggered fetchers generally ignore it |
| Perplexity | Crawler read robots.txt, page never fetched | User fetches generally ignore it |
| Grok | Never read robots.txt, 59 addresses in 6 requests | No crawler page found |
What did the planted-URL test actually measure?
The test separated one question from all the noise around it: when a user asks an assistant to open a page, which requests arrive, and does any of them read robots.txt first? Each assistant got a secret URL linked from nowhere, so anything that requested it had to be that assistant acting on the prompt.
The setup was simple on purpose. A logging script sat in front of the site and recorded every request: path, user agent, address and time. The author then asked each assistant to open its link and report a code printed on the page. Across the five assistants in the 2026-10-09 post, 3 of 5 requested the planted page without reading robots.txt first, and one, Perplexity, never requested it at all.
Size matters here. The author says it was a few runs each, on one day, and every figure in this post from that test should be read as "this happened" rather than "this is the rate". For a rate, the closer source is the academic study posted on 2026-07-19, which ran ten assistants through four robots.txt conditions across 200 trials and reported substantial variation between them.
Worth knowing
One test, read at its real size
The planted-URL test is one person, a few runs per assistant, one day. It is good evidence that each behaviour happened, and weak evidence about how often it happens. The 2026 academic study ran ten assistants through four robots.txt conditions across 200 trials and also found wide variation, which is the safer headline.
r/SEO, 2026-10-09, and arXiv 2607.14447 v2, 2026-07-19
Which AI assistants read robots.txt before opening a page?
Claude was the only assistant that read robots.txt before touching the site and then honoured it. When the page was disallowed it refused and said it would not try to work around the rule. ChatGPT, Gemini and Grok, 3 of the 5, requested the planted page without reading robots.txt first, per the test write-up of 2026-10-09.
ChatGPT went straight to the disallowed page on its first visit to a brand new site without reading robots.txt. About 76 seconds later, OAI-SearchBot arrived and read robots.txt. The next time the author asked, ChatGPT refused the page without sending a request at all. In a reply on the same thread on 2026-10-09, the author reads this as ChatGPT reusing the crawler's saved copy of the rules, and says that cannot be proven from logs.
Gemini arrived with a user agent that read only "Google" and never requested robots.txt. The author reported that the addresses were not on Google's published lists. Perplexity sent its crawler to read robots.txt and the homepage, never fetched the planted page, and told the author the link might be phishing.
Grok is where the logs got strange. Every request brought 9 to 12 different addresses, most within a few seconds, all claiming to be Chrome or Safari. Over 6 requests the author counted 59 addresses and no reuse, and none of them requested robots.txt, per the same 2026-10-09 post. The addresses came from hosting companies and small ISPs in Brazil, Mexico and Poland, with a couple inside a commercial proxy network's registered range.
One planted URL, one request from Grok
Access log: /p/grok-secret
9 to 12
Distinct addresses for one request
59
Addresses over 6 requests
0
robots.txt reads
Chrome or Safari
User agent claimed
- Every address new, none reused across requests
- Hosting companies and small ISPs in Brazil, Mexico and Poland
- No published IP list to check them against
- robots.txt never requested before or after
Blocking by user agent only stops the agents that tell you their name.
What does each vendor say its user-triggered fetchers do?
The vendor pages explain most of the test before you reach the logs. The key distinction is between a crawler, which visits on a schedule, and a user-triggered fetcher, which reads one page because a person asked. We read each first-party page on 2026-10-14 and recorded the exact wording for the fetcher.
OpenAI's crawler page, read 2026-10-14, says of ChatGPT-User that because these actions are initiated by a user, robots.txt rules may not apply. It also says ChatGPT-User is not used to decide what appears in search, and it publishes 4 IP range files, one per agent. So the ChatGPT first fetch in the test is the documented behaviour, not a violation.
Google's user-triggered fetchers page, last updated 2026-08-19, says these fetchers generally ignore robots.txt rules because the fetch was requested by a user. It lists Google-Agent and the Gemini Notebook fetcher and publishes 3 IP range files. The bare "Google" user agent in the test does not match the strings on that page, which is the part that is still unexplained.
Perplexity's bot page, read 2026-10-14, says Perplexity-User generally ignores robots.txt rules because a user requested the fetch, and that a change can take up to 24 hours to apply. It publishes 2 IP range files. Anthropic's article, dated 2026-04-07, says its bots honour robots.txt and that disabling Claude-User stops Claude retrieving your content for a user query. It publishes 1 IP list.
For xAI we found no crawler or fetcher documentation in its developer docs. We read the xAI developer sitemap on 2026-10-14: 0 of its 236 URLs mention crawling, robots, fetching or user agents, while a control path matched 25. That is absence of documentation, not a statement from xAI, but it means there is no stated rule to hold Grok's behaviour against.
What each vendor's own page says about user-triggered fetches
| Vendor | User fetch agent | robots.txt for that agent | Published IP files | Source |
|---|---|---|---|---|
| OpenAI | ChatGPT-User | May not apply | 4 | measured |
| Google-Agent, Gemini Notebook | Generally ignored | 3 | measured | |
| Perplexity | Perplexity-User | Generally ignored | 2 | measured |
| Anthropic | Claude-User | Honoured | 1 | measured |
| xAI | None documented | Not documented | 0 | measured |
n = 5 · as of 2026-10-14
Method: We read each first-party page on 2026-10-14 and recorded the wording for the user-triggered agent and the number of IP range files it links. The xAI row records that 0 of 236 URLs in its developer sitemap concern crawling. A page can change after this date, so re-read it before relying on a row.
From the field
The crawler and the fetcher are different requests
Every assistant that cites live pages runs at least two kinds of request. A crawler builds an index on a schedule, and that is what decides whether a page can be cited. A fetcher reads one page because a person asked. Vendors treat the second as the person's own visit, which is why three of the four that document one, OpenAI, Google and Perplexity on pages read 2026-10-14, exempt it from robots.txt.
OpenAI, Google, Anthropic and Perplexity pages, read 2026-10-14
Crawlers decide citation, fetchers decide a pasted link
A page gets cited in an answer because a search crawler indexed it earlier, not because a fetcher read it once. So the robots.txt rules that matter for AI citations are the ones aimed at OAI-SearchBot, Claude-SearchBot, PerplexityBot and Googlebot. We covered the OpenAI half of that in detail in which crawler decides whether ChatGPT can cite you, and the same split into search, fetch and training agents holds at every vendor page we read on 2026-10-14.
There is a sign that the index matters more each month. One site owner reported on 2026-10-10 that ChatGPT-User fetches fell from about 433k in June to under 70k in September, while referrals from ChatGPT held at about 1,900 in both months. That is one site, but it fits the test: ChatGPT refusing a page from a stored copy of the rules, and answering from an index more often than from a live read.
Three jobs, three agents
What each kind of agent does and whether robots.txt reaches it
| Search index crawler | User-triggered fetcher | Training crawler | |
|---|---|---|---|
| When it runs | On a schedule | When a person asks about a page | On a schedule |
| What it decides for you | Whether you can be cited | Whether a pasted link gets read | Whether future models learn your docs |
| robots.txt, per the vendors | Honoured by every vendor that documents one | Exempt or may not apply at OpenAI, Google and Perplexity | Honoured where documented |
One site's logs
ChatGPT-User fetches per month on one site
| Point | Value (k) |
|---|---|
| June | 433 k |
| September | 70 k |
robots.txt was written for programs that wander the web on their own. A fetch with a person waiting on the other end is a different request, and most vendors now say so in plain words.
Should an API company block AI assistants in robots.txt?
Usually not. Allow the search crawlers, allow the user fetchers, and decide training on its own terms. That is the whole policy for a documentation site that wants to be cited, and it follows from the vendor pages rather than from any one test.
Allow the search crawlers because they are the only agents that decide whether a page can appear as a citation. Allow the user fetchers because a block there mostly affects the one vendor that honours it, Anthropic per its 2026-04-07 article, and leaves the others unaffected. Treat GPTBot, ClaudeBot and Google-Extended as a separate licensing question about future models, not a switch for today's answers.
The common failure is not a deliberate block. A read of 500 small B2B startups posted on 2026-10-13 found that of the 471 that answered, 3 blocked an AI answer crawler, and one of those 3 disallowed every agent with a single wildcard rule. The more likely problem on a docs host is an edge or firewall default that returns a 403 to an agent your robots.txt allows.
If you want a shape to start from, this is the structure with agent names read from each vendor page on 2026-10-14. Re-read those pages before you copy any name, because rosters change.
# Search crawlers: these decide whether docs can be cited
User-agent: OAI-SearchBot
User-agent: Claude-SearchBot
User-agent: PerplexityBot
Allow: /
# User-triggered fetchers: a person asked for this page
User-agent: ChatGPT-User
User-agent: Claude-User
User-agent: Perplexity-User
Allow: /
# Training crawlers: a separate licensing decision
# (change Allow to Disallow if you decide against training)
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
Allow: /
The robots.txt decision for a documentation site
| Agent type | Examples | Default for docs | Why | Source |
|---|---|---|---|---|
| Search index crawler | OAI-SearchBot, Claude-SearchBot, PerplexityBot, Googlebot | Allow | This is the crawl that makes a page citable in answers | derived |
| User-triggered fetcher | ChatGPT-User, Claude-User, Perplexity-User | Allow | A block mostly breaks the one vendor that honours it | derived |
| Training crawler | GPTBot, ClaudeBot, Google-Extended | Decide separately | A licensing choice, not a citation switch | derived |
| Unidentified browser traffic | Rotating addresses with a Chrome user agent | Not a robots.txt question | It never reads the file | derived |
Can robots.txt stop someone pasting my page into ChatGPT?
At most vendors, no. robots.txt is a request, read voluntarily, by agents that choose to identify themselves. It cannot stop a user-triggered fetch at the three vendors whose pages, read 2026-10-14, document one as exempt (OpenAI, Google, Perplexity), and it cannot stop an agent that never requests the file, which is what Grok did in all 6 requests in the 2026-10-09 test.
It also cannot override your edge. If a firewall returns a 403, the robots.txt line that says Allow is never consulted. And it cannot remove a page from a model that was already trained on it. A page that must stay private needs authentication, not a disallow rule. A page that must be cited needs to be reachable by the search crawlers at the network level as well as in the file.
For docs teams, the practical reading is reassuring. Your API reference is public, you want it read, and the agents that matter for citation are the polite, documented ones. The unidentified traffic is a bandwidth and analytics question, not a citation one.
How do I test which AI assistants read my pages?
You do not need to trust anyone's logs, including the ones in this post. The test costs one afternoon and a few unlinked pages, and it answers the question for your own host, your own edge rules and today's versions of each assistant.
Mint one unlinked URL per assistant with a short code on each page. Do not open the links yourself, because the test author did exactly that on the first run (r/SEO, 2026-10-09) and the only visitor in the logs was their own browser. Ask each assistant in a fresh chat to open its link and report the code, note the time, and match requests to prompts by timing rather than by user agent.
Then repeat it on another day. Answers moved between identical runs in our own measurement too: the same 12 queries changed outcome on 7 of them across 5 repeats, as published on 2026-07-27 in why a single AI visibility score is noise. Assistant output moves between runs, so one afternoon is one draw.
STEPS
How to run the planted-URL test on your own docs host
Mint one unlinked URL per assistant
First
Put a short code on each page and link it from nowhere, so the only visitor can be the assistant you hand it to.
Do not open the links yourself
Second
On the first run the test author opened every link in a browser before pasting it, and the only visitor in the logs was them (r/SEO, 2026-10-09).
Ask in a fresh chat
Third
Ask the assistant to open the URL and report the code. Note the time to the second.
Log every request
Fourth
Record path, user agent, address and time for the page and for robots.txt, then match by timing.
Repeat on another day
Fifth
One day is one draw. Run it again before treating any behaviour as a pattern.
Where this sits in the work of getting cited
Being readable is the first link in a chain, not the result. A docs page also has to say something an assistant can lift, and the assistant has to reach for it when a buyer asks a question that does not contain your name. Our posts on whether llms.txt moves AI citations and making your docs agent-readable cover the next two links.
What we sell is the measured version of that chain for developer tools and APIs. Our answer engine optimization work starts with a crawlability and citability check of exactly the kind this post describes, then measures citation share against a held-out set of queries left unworked, so a change in access is judged by what it did to the answers.
Methodology: what we read and what we did not
Every behaviour attributed to an assistant in this post is the test author's report from the r/SEO post of 2026-10-09 and its comment replies, read in full on 2026-10-14. We did not rerun the test. Every statement about what a vendor's agent is supposed to do comes from that vendor's own page, read on 2026-10-14, with the page date where one is shown.
The limits are the test's limits. It is one person, a few runs per assistant, one day, and the author says the data on hand could not group the Grok addresses any further. The 2026-07-19 study of ten assistants is the better guide to how much behaviour varies. Nothing in this post measures whether allowing or blocking an agent changes citation share, which is a separate question with its own design.
Sources
Every number above, and where it came from. A figure without a row here is one we should not have printed.
- The planted-URL test, r/SEO
- One person gave each assistant its own unlinked URL, asked it to open the page in a fresh chat, and logged every request. Posted 2026-10-09. The author calls it a small test, a few runs each, on one day. Read in full, with its comment thread, on 2026-10-14.
- OpenAI, Overview of OpenAI Crawlers
- First-party page for GPTBot, OAI-SearchBot, ChatGPT-User and OAI-AdsBot. States that for ChatGPT-User, because the actions are initiated by a user, robots.txt rules may not apply. Publishes four IP range files. Read 2026-10-14; the page carries no updated date.
- Google, User-triggered fetchers
- First-party page. States that because the fetch was requested by a user, these fetchers generally ignore robots.txt rules. Lists Google-Agent and the Gemini Notebook fetcher and three IP range files. Page last updated 2026-08-19, read 2026-10-14.
- Anthropic, crawler and site-owner article
- First-party article for ClaudeBot, Claude-User and Claude-SearchBot. States that the bots honour robots.txt directives and publishes one IP list. Dated 2026-04-07 on the page, read 2026-10-14.
- Perplexity, Perplexity Crawlers
- First-party page for PerplexityBot and Perplexity-User. States that Perplexity-User generally ignores robots.txt rules because a user requested the fetch, and that changes can take up to 24 hours to apply. Read 2026-10-14; no updated date shown.
- Lopez-Fonseca et al., Do Generative AI Assistants Respect robots.txt?
- Academic study of ten assistants under four robots.txt conditions across 200 trials, using server logs and secret codes. Version 2 posted 2026-07-19. Reports substantial variation across assistants.
- xAI developer documentation sitemap
- We read the sitemap on 2026-10-14. 236 page URLs, 0 with crawl, robot, fetch or user-agent in the path, against a control of 25 URLs that matched a known product path. Absence of a page, not a statement from xAI.
Questions about AI assistants and robots.txt
- Do AI assistants respect robots.txt when a user asks them to open a page?
- Mostly not. OpenAI, Google and Perplexity each document that a fetch a user asks for may skip or generally ignore robots.txt, because the person is treated as the visitor. Anthropic says its bots honour robots.txt. A small public planted-URL test on 2026-10-09 matched that split, with Claude the only assistant that read the file first and then honoured it.
- Does ChatGPT read robots.txt?
- Its crawlers do. ChatGPT-User, the agent that opens a page when you ask, is documented as possibly exempt. In the [2026-10-09 test](https://reddit.com/r/SEO/comments/1x1no5q/made_secret_urls_to_see_which_ais_actually/), the first fetch skipped robots.txt, the search crawler read it about 76 seconds later, and the next request was refused.
- Does Grok respect robots.txt?
- In the [2026-10-09 test](https://reddit.com/r/SEO/comments/1x1no5q/made_secret_urls_to_see_which_ais_actually/) it never requested robots.txt, and one request arrived from 9 to 12 addresses posing as Chrome or Safari. We found no crawler or fetcher documentation in xAI's developer docs on 2026-10-14, so there is nothing to hold it to.
- Should an API company block AI assistants in robots.txt?
- Usually not. Allow the search crawlers, because they decide whether your docs can be cited, and allow the user fetchers. Decide training crawlers as a separate licensing question. Blocking user fetchers mostly affects the one vendor that honours the block.
- Can robots.txt stop a user from pasting my page into an assistant?
- At most vendors, no. OpenAI, Google and Perplexity describe a user-triggered fetch as the user's own request, so a disallow line may not apply to it. Anthropic is the exception and honours the file. If a page must not be read by anyone, it needs authentication or an edge rule, not a line in robots.txt.
- How do I check which assistants actually read my pages?
- Mint one unlinked URL per assistant with a short code on the page, ask each assistant to open it in a fresh chat, and log every request with its time, user agent and address. Match requests to prompts by timing. Do not open the link yourself first, and repeat the run on another day before trusting a pattern.
Keep reading
AI citations
GPTBot, OAI-SearchBot, and Which Crawler Actually Decides Whether ChatGPT Can Cite You
OpenAI runs four crawlers and only one of them decides whether ChatGPT search can cite you. Which one it is, and why the popular warning runs backwards.
46 min read
AI citations
Google Moved Links Up in AI Mode on Oct 15. What It Changes for Getting Cited
Google's October 15 update moves AI Mode inline links higher and tests an official-site box. Which changes add citation surface, and how to measure them.
13 min read
AI citations
AI Overview Optimization: What Actually Changes
Google ranks first for "AI Overview optimization" and says no special optimization exists. What the docs state, what the studies measured, what nobody tested.
42 min read