OpenAI search index JavaScript: Not documented

OAI-SearchBot: User Agent, robots.txt, and What It Can Actually Read

What OAI-SearchBot is, its exact user agent, how it differs from GPTBot, and the honest answer on whether it executes JavaScript.

User-agent token
OAI-SearchBot
Full user-agent
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36; compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot
Operated by
OpenAI
What it does
Crawls and indexes pages so they can be surfaced and linked in ChatGPT search results
Executes JavaScript
Not documented OpenAI's bot documentation does not mention JavaScript, rendering, or headless browsing anywhere on the page. The only public measurement is Vercel's December 2024 crawler study, which observed OpenAI's crawler fetching JavaScript files on 11.50% of requests on its nextjs.org sample without executing them.
Obeys robots.txt
Yes
Documentation
developers.openai.com

Block OAI-SearchBot

User-agent: OAI-SearchBot
Disallow: /

Allow OAI-SearchBot

User-agent: OAI-SearchBot
Allow: /

OAI-SearchBot is the crawler that decides whether ChatGPT can cite you. It is not the training crawler. OpenAI runs those as separate agents with separate tokens, and telling them apart is the single most valuable thing on this page.

Most people who block “the OpenAI bot” mean they do not want their writing used to train a model. Then they write one blanket rule, catch the search crawler in it, and remove themselves from the answer surface they were trying to get into.

What it is for

OpenAI’s bot documentation declares distinct agents with distinct jobs. Two matter most for visibility.

User agentJob
OAI-SearchBotSurfaces and links sites in ChatGPT search results
GPTBotCrawls content to train foundation models

OpenAI documents a third, user-triggered agent on the same page, which fetches a page live because someone in a conversation asked for it. Three agents, three decisions. You are allowed to answer them differently, and you probably should.

If citation traffic matters to you, OAI-SearchBot is the one you want in. See /bots/ for the same breakdown across every other operator.

Can it read JavaScript

OpenAI has never said, and that silence is the honest answer.

I read the current bot documentation in full. It gives exact user agent strings, explains what each crawler does, and tells you how to control them with robots.txt. It does not contain the word JavaScript. Nothing about rendering, headless browsers, or how a page is fetched and parsed. There is no commitment either way.

The only public experiment worth citing is Vercel’s rise of the AI crawler study, published 17 December 2024 and never updated since. It instrumented real traffic and found that OpenAI’s crawler fetched JavaScript files on 11.50% of requests on its nextjs.org sample without executing them. Fetching a script is not running it. The bytes came down the wire and nothing happened with them.

So the position is: not documented, and the one public measurement points at no execution. That measurement is now twenty months old and carries no update note, so treat it as a strong lead rather than a guarantee.

The practical conclusion does not depend on resolving the question. If your headline, your pricing, and your product description only exist after a client-side framework hydrates, you are betting your presence in ChatGPT on a behaviour nobody has committed to. Server-render it and the question stops mattering. The longer version of that argument is in AI crawlers and JavaScript rendering.

How to control it with robots.txt

OpenAI documents robots.txt as the control surface for its crawlers, and names each agent separately so you can be precise.

Block the search crawler entirely, which is rarely what you want:

User-agent: OAI-SearchBot
Disallow: /

The far more common intent is: stay citable, keep training out, hide the private areas.

User-agent: OAI-SearchBot
Allow: /
Disallow: /account/
Disallow: /checkout/

User-agent: GPTBot
Disallow: /

That is two rules doing two different jobs. A single User-agent: * block cannot express it.

What to check after you change it

Directives are requests until your logs confirm them. After a robots.txt change, grep your access logs for the OAI-SearchBot token and confirm the behaviour matches what you asked for.

While you are in there, verify the requests are genuine. The user agent header is free text, and scrapers wear OpenAI’s name because it gets them through soft filters. OpenAI publishes crawler IP ranges. Check the source IP, not the string.

The last check is the one people skip. Fetch your own key pages with JavaScript disabled and read what comes back. If the page is close to empty, no robots.txt rule is going to help you, because the crawler you just invited in has nothing to take away.

Does OAI-SearchBot execute JavaScript?

OpenAI does not say. Its bot documentation covers user agents, purposes, and robots.txt control, and never mentions JavaScript, rendering, or headless browsing. The only public measurement is Vercel's December 2024 study, which found OpenAI's crawler fetched JavaScript files on 11.50% of requests on its nextjs.org sample without executing them. Build so it does not matter: put your content in the initial HTML.

Is blocking OAI-SearchBot the same as opting out of AI training?

No, and confusing the two is the most expensive mistake on this page. OAI-SearchBot builds the index behind ChatGPT search. GPTBot is the crawler that collects data for training foundation models. Blocking OAI-SearchBot removes you from a surface that cites and links sources, while doing nothing at all about training.

How do I confirm a request claiming to be OAI-SearchBot is real?

The user agent header is free text and trivially forged. OpenAI publishes IP ranges for its crawlers, so check the source IP of the request against them rather than trusting the string. If the IP does not match, you are looking at a scraper wearing OpenAI's name.

Your check is running.