LiveOpenAI Ads, now in Cresva.See how
Skip to content
Back to Guides
Agent Commerce11 min read6 chapters

OAI-SearchBot and Robots.txt: Visibility Baseline

The five-minute audit that decides whether ChatGPT can see your products: OpenAI's four bots, the Cloudflare category trap, and how to verify.

Shubham Raghav

Chapter 1The Five-Minute Audit

Open your site's robots.txt file. Search for the string OAI-SearchBot. If it is not present, your products are visible to ChatGPT by default. That is the right state. If OAI-SearchBot is present under a Disallow directive, your products are structurally invisible to every ChatGPT recommendation, including the paid ones you are about to bid on. Brands have spent six figures on OpenAI Ads while the bot that delivers the recommendation was blocked at the file that takes ten seconds to fix.

This is the most common visibility failure on the channel, and it does not show up in any analytics tool. CPC numbers look normal. Spend draws down. CAC reads high. The cause is a one-line config decision made years ago to block AI crawlers by default. The validator below evaluates your live file in place. Paste, read the per-crawler verdict, fix the one that matters.

Robots.txt is binary. Either OAI-SearchBot is allowed and ChatGPT can recommend your products, or it is not and no amount of ad spend changes that. The fix takes ten seconds once the diagnosis is right.

Interactive

Robots.txt visibility check

Paste your live robots.txt. The validator evaluates each AI crawler your file can control, and marks the two user-initiated agents it cannot. The default content shows the most common DTC failure: OAI-SearchBot explicitly disallowed.

OAI-SearchBot

BLOCKED

Surfaces websites in search results in ChatGPT's search features. This is the one that decides whether you can be recommended.

User-agent: OAI-SearchBot → Disallow: /

OAI-AdsBot

ALLOWED

Validates the safety of web pages submitted as ads on ChatGPT. If you are buying OpenAI Ads, this bot has to reach your landing pages.

User-agent: *. No rule matches /. Default allow.

GPTBot

BLOCKED

Crawls content that may be used in training OpenAI's generative AI foundation models. Most DTC brands prefer to block this, separately from OAI-SearchBot.

User-agent: GPTBot → Disallow: /

ChatGPT-User

Fetches pages for certain user actions in ChatGPT and Custom GPTs, in response to a person asking.

Robots.txt does not govern this agent, so this file cannot answer for it.

ClaudeBot

ALLOWED

Collects web content that may be used to train Anthropic's models. The Claude equivalent of GPTBot.

User-agent: *. No rule matches /. Default allow.

Claude-SearchBot

ALLOWED

Indexes content to improve Claude search results. Allow if you want surfacing in Claude's product recommendations.

User-agent: *. No rule matches /. Default allow.

Claude-User

ALLOWED

Fetches a page when a Claude user asks a question that needs it. Anthropic documents this one as respecting robots.txt.

User-agent: *. No rule matches /. Default allow.

PerplexityBot

ALLOWED

Surfaces and links websites in Perplexity results. Not used to crawl content for foundation models.

User-agent: *. No rule matches /. Default allow.

Perplexity-User

Fetches a page when a Perplexity user asks a question.

Robots.txt does not govern this agent, so this file cannot answer for it.

Googlebot

ALLOWED

Google's primary crawler. Reference point; almost certainly already allowed.

User-agent: *. No rule matches /. Default allow.

Critical: OAI-SearchBot is blocked.

OAI-SearchBot blocked means your products are structurally invisible to ChatGPT recommendations, paid ones included. Remove the Disallow under User-agent: OAI-SearchBot before spending on the channel.

Chapter 2OAI-SearchBot Is Not GPTBot

OpenAI documents four bots and they do different jobs. Treating them as one category is the mistake that costs brands the channel. Blocking the training crawler, GPTBot, is a defensible decision. Blocking the search crawler alongside it, OAI-SearchBot, which is what most blanket rules do, removes you from ChatGPT recommendations entirely.

BotWhat it doesObeys robots.txt
OAI-SearchBotSurfaces websites in search results in ChatGPT's search features. This is the one that decides whether you can be recommended.Yes
OAI-AdsBotValidates the safety of web pages submitted as ads on ChatGPT. If you are buying OpenAI Ads, this bot has to reach your landing pages.Yes
GPTBotCrawls content that may be used in training OpenAI's generative AI foundation models.Yes
ChatGPT-UserFetches pages for certain user actions in ChatGPT and Custom GPTs, in response to a person asking.No, see below

Two of those rows deserve more than a table cell. The first is OAI-AdsBot. If you are running or about to run OpenAI Ads, this is not a footnote. OpenAI uses it to validate the safety of pages submitted as ads, so a bot rule or WAF policy that blocks it can stall your ads at review while your robots.txt looks correct for search. Brands audit for OAI-SearchBot and stop, because until recently that was the whole story.

The second is ChatGPT-User, and it is the reason robots.txt is not a single switch across all four. OpenAI is explicit that because those actions are initiated by a user, robots.txt rules may not apply to it. So robots.txt governs the three crawling bots; the user-initiated fetch is a different contract. Bot table and robots.txt behaviour per OpenAI's crawler documentation, developers.openai.com/api/docs/bots, retrieved 3 August 2026.

Brands that read the AI-crawler-blocking discourse from 2023 to 2024 often defaulted to blocking everything, on the reasonable theory that they did not want their content used to train competitors' models. That logic still applies to GPTBot. It does not apply to OAI-SearchBot, and it actively works against you on OAI-AdsBot if you are buying the channel.

The right default for most DTC brands

User-agent: GPTBot, Disallow: / on one block. User-agent: OAI-SearchBot, Allow: / on a second. User-agent: OAI-AdsBot, Allow: / on a third if you are running ads. Distinct User-agent groups, distinct rules. The validator above flags any file that conflates them.
If your robots.txt blocks OpenAI's bots indiscriminately, you opted out of the channel at the file system level. The fix is additive: keep GPTBot blocked if you prefer, but add explicit OAI-SearchBot and OAI-AdsBot Allow blocks above any wildcard rule.

Chapter 3The CDN-Level Trap

Robots.txt is necessary but not always sufficient. The second place visibility leaks is the CDN. Many bot-management defaults at Cloudflare, Akamai, and Fastly classify OAI-SearchBot as part of the broader AI-crawler category and block it at the WAF layer regardless of what your robots.txt says.

The check is straightforward. Find your CDN's bot-management or WAF rules. Look for any rule that blocks OAI-SearchBot, GPTBot collectively, or “AI bots” as a category. Explicitly allow OAI-SearchBot. The robots.txt fix means nothing if the CDN drops the request before it reaches your origin.

Cloudflare specifically

Cloudflare retired the single block-all-AI-bots switch on 1 July 2026 and replaced it with three categories. Search is any behaviour that collects or indexes your content so it can answer questions about it later. Training is a crawler taking your content to train or fine-tune a model. Agent is automated behaviour acting in real time on a person's behalf. OAI-SearchBot sits in Search, and Search is allowed by default. From 15 September 2026, new domains onboarding to Cloudflare block Training and Agent by default on pages that display ads, while Search stays allowed. Category model and dates per Cloudflare, blog.cloudflare.com, 1 July 2026.

If you enabled the old switch, it did not migrate away

The three-category model is the current default, not a retroactive fix. A domain that turned on the old “AI Scrapers and Crawlers” rule any time after summer 2024 is still running whatever that rule was set to, and that rule predates OAI-SearchBot's split from GPTBot. Open the dashboard and read the Search category directly rather than assuming the July change reset it for you.

This is not hypothetical. Six recognisable DTC brands in our public registry answer every request with a 403, from a crawler user agent and a desktop Chrome user agent alike, with the recorded evidence brand by brand: six DTC stores an AI assistant cannot read.

Chapter 4JSON-LD and Server-Side Rendering

Robots.txt is the binary switch. JSON-LD Product schema markup with server-side rendering is the quality dial. The crawler can reach your page. What it sees when it gets there is the next problem.

OAI-SearchBot reads structured product data the same way every modern crawler does, through the JSON-LD blob embedded in the page HTML. If your product pages are client-rendered (React or Vue mounted into an empty div), the crawler sees the empty shell and walks away with nothing usable. Server-side rendering is not optional for products you want surfaced. Next.js App Router does this by default. Older SPA implementations often do not.

Minimum JSON-LD fields the indexer reads

  • Product name and brand (canonical names, not marketing copy).

  • Description (server-rendered, complete, not truncated).

  • Image URL (canonical, accessible without auth).

  • Price and price currency (current, not promotional).

  • Availability (in stock, out of stock, preorder).

  • GTIN, MPN, or SKU where applicable. Identifiers fix many ambiguity errors.

  • Aggregate rating and review count. Recommendation rate correlates with review density.

Missing fields do not block indexing, but they reduce the likelihood of a recommendation against a competitor whose schema is complete. The product-feed optimization guide covers the schema-completeness work in detail.

Chapter 5Verifying Visibility

After the robots.txt fix and the JSON-LD audit, the only honest test of visibility is to ask ChatGPT directly. Pick five questions a buyer in your category would ask. Run them through ChatGPT. Note which brands surface, in what order, with what reasoning. Repeat the same five queries a week later. The variance gives you a sense of how stable your recommendation slot is.

If competitor brands surface and yours does not despite a clean robots.txt and complete JSON-LD, the issue is brand authority, not technical. The model recommends the brands it has more signal density for. Reviews, expert citations, editorial coverage, and third-party validation are the inputs that fix this. The technical baseline is necessary but not sufficient. The agent-visibility playbook covers the brand-authority side in detail.

The technical baseline gets the crawler in. Brand-authority density determines whether the model picks you over a competitor with the same baseline. Most DTC brands optimizing for ChatGPT recommendation are missing the technical layer; the ones with the technical layer in place often miss the authority layer next.

Chapter 6Other Invisibility Traps

Four failure modes show up after robots.txt is in place. Each is meaningful drag on recommendation rate. Each is fixable inside a week.

The post-robots.txt checklist

  • Stale sitemap.xml lastmod dates. The crawler reads cached content as authoritative when the lastmod says nothing changed. Update sitemap.xml on every product change.

  • Aggressive CDN cache headers. Long max-age values tell the crawler your page has not changed. If you ship daily catalog updates, your TTL should reflect that.

  • JSON-LD that contradicts the visible page (price mismatch, availability mismatch, stale review count). The crawler reads JSON-LD as canonical; mismatches lose the recommendation.

  • Missing structured-data fields the indexer specifically benefits from. Aggregate rating, GTIN, and brand entity are the three most-often-missed.

If you are walking through this list against your own site and finding two or three issues, that is normal. Most DTC brands start from a default-blocked or partially-blocked state because the 2023 AI-crawler discourse told operators to block aggressively, and nobody revisited the decision when OpenAI started recommending products in late 2025. The five-minute audit catches the legacy decision before it costs you another quarter of spend. If your unit economics are the question, the ChatGPT Ads unit-economics guide runs the math.

The five-minute audit above is the manual version. The free growth audit runs the same checks against a URL you give it, robots.txt and CDN bot rules included, and tells you which of them your store currently fails.

Written by Shubham Raghav, Founder & CEO, Cresva. Questions? Email us.