OpenAI's Crawlers: GPTBot, OAI-SearchBot, ChatGPT-User (and OAI-AdsBot)
OpenAI runs separate bots for separate jobs: GPTBot (training), OAI-SearchBot (search), ChatGPT-User (user-fetch), and OAI-AdsBot. Here's what each does, whether to block it, and how to verify it by IP range.
OpenAI’s Crawlers: GPTBot, OAI-SearchBot, ChatGPT-User (and OAI-AdsBot)
By Andrej Ruckij · June 17, 2026
TL;DR: OpenAI runs four separate bots, and the difference is the whole game: GPTBot (training — block to opt out), OAI-SearchBot (search — allow to stay citable in ChatGPT), ChatGPT-User (user-fetch — never block, it’s a visitor), and OAI-AdsBot (ad-landing-page validation). All respect robots.txt and publish IP ranges, so you can verify them.
A cluster under the AI crawler directory. OpenAI separates its bots more cleanly than most vendors, which makes a precise allow/block policy straightforward.
The four OpenAI bots
| User-agent | Job | Respects robots.txt | IP ranges | Recommendation |
|---|---|---|---|---|
GPTBot | Train OpenAI’s models | Yes | openai.com/gptbot.json | Block to opt out of training |
OAI-SearchBot | Index for ChatGPT search | Yes | openai.com/searchbot.json | Allow (drives citations) |
ChatGPT-User | Fetch a page a user asked about | Yes | openai.com/chatgpt-user.json | Never block (it’s a visitor) |
OAI-AdsBot | Validate ad landing pages | Yes | — | Allow (or block if you don’t run OpenAI ads) |
GPTBot — the training crawler
GPTBot (currently GPTBot/1.3) gathers content to train OpenAI’s models. It’s the canonical block target because training gives nothing back — no link, no traffic. See glossary/gptbot for the definition and should-i-block-gptbot for the decision. Blocking it stops future training crawls; content already in past training sets stays.
OAI-SearchBot — the one to allow
OAI-SearchBot (OAI-SearchBot/1.3) indexes content so ChatGPT can cite it in search answers, with a link back. This is the bot that makes you visible in ChatGPT — block it and you disappear from ChatGPT search. The whole point of separating it from GPTBot is that you can block training while staying citable. The full distinction is in gptbot-vs-oai-searchbot.
ChatGPT-User — never block
ChatGPT-User fires when a real person asks ChatGPT to open your specific page. That’s a visitor with intent, not a harvesting crawler. Blocking it turns away a potential customer mid-decision.
OAI-AdsBot — the newer one
OAI-AdsBot validates the landing pages behind ads in OpenAI’s surfaces. It’s neither training nor search nor user-fetch — a fourth, narrower job. Allow it if you advertise through OpenAI; otherwise it’s low-stakes either way.
Recommended robots.txt
User-agent: GPTBot
Disallow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: ChatGPT-User
Allow: /
Because all of OpenAI’s bots respect robots.txt, this is honored without a firewall rule. For non-compliant scrapers (which OpenAI’s bots are not), see robots-txt-vs-waf-ai-bots. And verify a bot claiming to be OpenAI against the published IP-range files above — the user-agent name alone is spoofable.
Key takeaways
- Four bots, four jobs: GPTBot (training), OAI-SearchBot (search), ChatGPT-User (user-fetch), OAI-AdsBot (ads).
- Block GPTBot to opt out of training; allow OAI-SearchBot to stay in ChatGPT; never block ChatGPT-User.
- All respect robots.txt and publish IP ranges for verification.
Related articles
- ai-crawler-user-agents-directory — the full cross-vendor bot table
- gptbot-vs-oai-searchbot — the training-vs-search distinction
- should-i-block-gptbot — the block decision
- anthropic-crawlers — the equivalent for Anthropic’s bots
- glossary/gptbot — the definition