Guide · 10 min read

How to rank in ChatGPT search

For developers and small SaaS teams: what ChatGPT search reads, how to make sure it can reach and find your pages, and how to tell whether it sends you anything.

Updated · By the Serpkin team

In short

  • Allow OAI-SearchBot (search) and ChatGPT-User (user-requested fetches) in robots.txt. Blocking GPTBot only opts you out of training, not search.
  • Check your CDN too: a Cloudflare AI crawler policy or firewall rule can block OpenAI's crawlers while robots.txt says allow.
  • ChatGPT draws on its own index plus outside search providers, Bing among them. Verify in Bing Webmaster Tools, submit your sitemap and send changes with IndexNow (Google doesn't use it).
  • Pages get cited for clear, specific answers, first-hand data and fair comparisons. Mentions across the web likely help; no one can promise a citation.
  • There's no ChatGPT webmaster report. Measure chatgpt.com referrals and utm_source=chatgpt.com, crawler hits in your logs, and regular spot checks.

To rank in ChatGPT search, three things have to be true. OpenAI's search crawler, OAI-SearchBot, must be allowed to reach your pages (in robots.txt and at your CDN). Your pages should be findable in the search indexes ChatGPT draws on, and Bing is the one you can do the most about: verify the site in Bing Webmaster Tools, submit your sitemap and send changed URLs with IndexNow. And the page has to be worth citing: a clear, specific answer, ideally with something others don't have. Nobody outside OpenAI controls which sources get cited, and OpenAI offers no webmaster report, so you measure with referral traffic and spot checks.

How ChatGPT search finds pages

When ChatGPT decides a question needs fresh information, it runs web searches, reads a set of candidate pages and writes an answer with links to its sources. Where those candidates come from is only partly public. OpenAI runs its own search crawler, OAI-SearchBot, and has said since launch that ChatGPT search also uses third-party search providers. Bing is the provider most often named.

Outside studies point in different directions, so read them as hints, not rules:

  • Seer Interactive, February 2025: in about 500 citations from roughly 100 questions, 87% or more matched Bing's top organic results for the same query (many in positions 11 to 20), versus 56% for Google. The authors call it a limited sample, and it was run on the SearchGPT prototype.
  • Glenn Gabe (GSQI), July to August 2026: a site with almost no Google visibility was cited heavily in ChatGPT. Bing deindexed it completely on July 10, 2026, and its ChatGPT citations kept growing, including for articles published after the deindexing. Losing Bing did not cut it off.
  • Peec, September 2026: an analysis of ChatGPT's server-side events reports OpenAI's own index plus at least eight external providers, including SERP scrapers and licensed local data, with Bing mostly visible in Deep Research sessions. It's one vendor's investigation and doesn't publish a sample size.

The practical reading: OpenAI's own crawler is the one input you fully control, Bing is a known input that costs an hour to cover, and ranking well in classic search (Google and Bing) helps you show up in whatever ChatGPT pulls in. You don't need to pick one.

  1. 1CrawlableOAI-SearchBot gets a 200 from robots.txt and your CDN.
  2. 2IndexedThe page is in OpenAI's index and in Bing (and Google).
  3. 3CandidateChatGPT's searches for a question return your page.
  4. 4CitedThe answer quotes or links your page because it helps.
The path from your site to a ChatGPT citation. Each step depends on the one before: a page OAI-SearchBot can't fetch, or that no index knows about, can't be a candidate.

Let OpenAI's crawlers in

OpenAI documents separate crawlers, and each robots.txt setting is independent. The two that matter for search visibility are OAI-SearchBot and ChatGPT-User. GPTBot is about training, a separate decision.

OpenAI's crawlers (from OpenAI's crawler docs, checked November 3, 2026)
User agentWhat it doesIf you block it
OAI-SearchBotFinds pages to show in ChatGPT search resultsYour pages won't be shown in ChatGPT search answers (they can still appear as plain navigational links)
ChatGPT-UserFetches a page when a user's request needs it, such as opening a link to answer a questionUsers can't get ChatGPT to read your page. OpenAI says robots.txt may not apply, since a user starts the visit
GPTBotCollects content that may be used to train OpenAI's modelsYour content is opted out of training. No effect on search

If you allow both OAI-SearchBot and GPTBot, OpenAI may use one crawl for both purposes. After you change robots.txt, OpenAI says it can take about 24 hours for search to adjust.

Check your robots.txt

A crawler follows only the most specific group that names it. If your file has User-agent: * with Disallow: / (common on sites that started as private betas), OAI-SearchBot is blocked unless it has its own group. Look at what is live:

Terminal
curl -s https://your-site.com/robots.txt | grep -i -A3 -E "user-agent: (\*|oai-searchbot|chatgpt-user|gptbot)"

A robots.txt that allows ChatGPT search and opts out of training looks like this:

public/robots.txt
# ChatGPT search: let OpenAI find and fetch pages
User-agent: OAI-SearchBot
Allow: /

User-agent: ChatGPT-User
Allow: /

# Optional and separate: opt out of model training
User-agent: GPTBot
Disallow: /

User-agent: *
Allow: /
Disallow: /api/

Sitemap: https://your-site.com/sitemap.xml

On Next.js, generate it from app/robots.ts instead so it can't drift from your config. userAgent takes a string or an array:

app/robots.ts
import type { MetadataRoute } from "next";

export default function robots(): MetadataRoute.Robots {
  return {
    rules: [
      { userAgent: ["OAI-SearchBot", "ChatGPT-User"], allow: "/" },
      { userAgent: "GPTBot", disallow: "/" }, // optional: no training
      { userAgent: "*", allow: "/", disallow: "/api/" },
    ],
    sitemap: "https://your-site.com/sitemap.xml",
  };
}

To test a specific URL against your rules for OAI-SearchBot, GPTBot, Bingbot and other crawlers, paste it into the free robots.txt tester. It shows which group and line decide.

Check your CDN and firewall

robots.txt is a request; your CDN is a wall. A firewall rule or bot setting can return 403 or a challenge page to OpenAI's crawlers while robots.txt says "allow", and nothing in your app logs will show it. On Cloudflare, look at two places:

  • AI Crawler and Agent access policies (formerly the AI bot policies). They are set by behavior: Search, Agent and Training. A "Block" on Search or Agent can turn away OAI-SearchBot and ChatGPT-User. Training is the category to block if you don't want GPTBot. New domains default to allow for all three, so a block is usually a setting someone turned on.
  • AI Crawl Control, which lists the AI crawlers hitting your site and lets you set allow or block rules per crawler.

On other hosts, check the firewall's bot protection and any rate limits. Then request your homepage with OAI-SearchBot's user agent:

Terminal
curl -s -o /dev/null -w "%{http_code}\n" \
  -A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot" \
  https://your-site.com/
Illustrative output
$ curl -s -o /dev/null -w "%{http_code}\n" -A "...OAI-SearchBot/1.4..." https://your-site.com/
403
# A 403, 429 or 503 here, or a 200 that is really a "Just a moment..." page, points at the CDN.

Get indexed in Bing

Most developers set up Google Search Console and never open Bing Webmaster Tools. Since Bing is one of the indexes ChatGPT is known to draw on, it's the cheapest step on this page.

  1. Import your site from Google Search Console

    In Bing Webmaster Tools, go to My Sites, choose Import, sign in to Google and approve access. Bing lists your verified properties with their sitemaps, and you pick which to bring over. Bing keeps re-checking ownership through that link, so if you later revoke access, verify another way (meta tag or DNS).

  2. Submit your sitemap

    Imports usually bring sitemaps along; check the Sitemaps page anyway. List only canonical URLs that return 200, and keep lastmod honest.

  3. Inspect a few key pages

    Use URL Inspection on your homepage, pricing page and best guides. If Bing hasn't indexed them, fix that before worrying about content.

  4. Turn on IndexNow

    Covered next. It tells Bing about changed URLs when you ship, instead of waiting for a recrawl.

Send changed URLs with IndexNow

IndexNow is a simple protocol: you publish a key file on your site, then POST URLs that changed. A submission to one endpoint is shared with all participating engines (Bing, Yandex, Seznam, Naver, Yep and others). Google is not a participant, so this does nothing for Google; keep your sitemap for that. Submitting doesn't guarantee a crawl or indexing.

First, create a key (8 to 128 characters: letters, digits and dashes) and serve it as a text file at your root. On Next.js, put it in public/:

Terminal
KEY=$(openssl rand -hex 16)
echo -n "$KEY" > public/$KEY.txt   # served at https://your-site.com/<key>.txt

After that file is live in production, submit URLs (up to 10,000 per POST):

Terminal
curl -s -i -X POST "https://api.indexnow.org/indexnow" \
  -H "Content-Type: application/json; charset=utf-8" \
  -d '{
    "host": "your-site.com",
    "key": "<your-key>",
    "urlList": [
      "https://your-site.com/pricing",
      "https://your-site.com/guides/new-guide"
    ]
  }'
IndexNow responses and what to do (from the IndexNow docs)
StatusMeaningWhat to do
200ReceivedNothing; it means received, not indexed
202Received, key check still pendingKeep the key file in place
400Bad request formatCheck the JSON body
403Key not valid (file missing, or it doesn't contain the key)Fetch /<key>.txt yourself and compare
422URLs don't belong to the host, or the key doesn't match the schemaSubmit only URLs on the same host
429Too many requests, possibly seen as spamBack off; submit only URLs that really changed

Wire the POST into your deploy step with the URLs that changed, not your whole sitemap on every build. If you use a coding agent, ask it to add this to your CI after production deploys succeed.

What gets cited

Access and indexing make you eligible. Being chosen is about the page. There is no published ChatGPT ranking factor list, so treat everything below as good practice that overlaps with classic SEO, not a formula. The Google side of this (what Google documents for AI Overviews, and the myths it rules out) is in how to get cited in AI Overviews; most of it carries over.

Answer the question in the first lines

ChatGPT runs searches for the question it's answering, then reads pages. A page whose first paragraph states the answer plainly ("Plan X costs $29 a month and includes...") is easier to quote than one that opens with a story. Use headings that match real questions, and keep each section about one thing.

Publish things only you can say

If ten pages say the same thing, any of them will do. Your own benchmarks, real pricing, setup times you measured, screenshots, a changelog with dates: that is the material an answer needs a source for. Date it and say how you got it.

Write the comparison pages people ask about

Questions like "best X for Y", "X vs Y" and "alternatives to X" are where ChatGPT names products. If you don't have a fair, specific page comparing yourself with the obvious alternatives (prices, limits, who each one suits), the answer will be built from someone else's.

Get mentioned elsewhere

Assistants learn about brands from the wider web, not just your site. For Google AI Overviews, an Ahrefs study of 75,000 brands (May 2025) found branded web mentions correlated with AI Overview visibility at 0.664, versus 0.218 for the number of backlinks. That's a correlation for a different product, not proof of cause, but the direction is plausible for ChatGPT too. Earn mentions the normal way: launch posts, integrations listed in partner docs, answers in communities where your users are, honest reviews.

Keep the content in the HTML

Many AI crawlers fetch raw HTML only. If your main copy loads in a useEffect, the crawler may see an empty shell. Check with curl that your H1 and main text are in the server response, or run the page through the free SEO checker. Sites built quickly with AI tools hit this often; see SEO for AI-built sites.

How to measure ChatGPT visibility

OpenAI has no equivalent of Search Console: no report of impressions or citations for your site. You piece it together from four sources.

Ways to see whether ChatGPT sends you anything
SourceWhat it tells youLimits
Referrals from chatgpt.comClicks from ChatGPT answers to your pagesMany visits arrive without a referrer
utm_source=chatgpt.comChatGPT often adds it to cited links, so tagged visits are attributableTagging has varied; third-party trackers reported drops in October 2026
Server or CDN logsWhether OAI-SearchBot and ChatGPT-User fetch your pages, and what status they getShows fetches, not citations
Bing Webmaster Tools AI PerformanceCitations in Microsoft Copilot, Bing's AI summaries and some partners; cited pages and grounding queriesMicrosoft surfaces only, not ChatGPT; public preview since February 2026; query data is a sample

In your analytics, build a segment or channel for sessions where the referrer contains chatgpt.com or utm_source equals chatgpt.com. Expect undercounting: some ChatGPT clicks will land in Direct. To see crawler activity, search your logs:

Terminal
# Fetches by OpenAI's crawlers, by status code
grep -E "OAI-SearchBot|ChatGPT-User" access.log | awk '{print $9}' | sort | uniq -c

On Vercel or other hosts without raw access logs, the log drains or your CDN's bot analytics give you the same view. Finally, ask ChatGPT the questions your customers ask, with search on, and note who gets cited. Do it on a schedule with the same prompts, because answers vary from run to run.

Where Serpkin helps

Serpkin's site audit flags search and AI-search crawlers that can't reach you. It reads your robots.txt for Googlebot, Bingbot, OAI-SearchBot, ChatGPT-User and other search crawlers, and requests your homepage with OAI-SearchBot's user agent to catch CDN blocks and challenge pages. If they're blocked, you get a mission for your coding agent with the fix. Blocking training crawlers like GPTBot is treated as your choice, never a problem.

For sites that have shipped a fix to production, Serpkin also offers a one-time mission to turn on IndexNow. After that, URLs a mission changed are sent to IndexNow when the mission is verified in production, and new sitemap URLs are sent as the site watch finds them. Serpkin doesn't track ChatGPT citations; its AI visibility checks cover Google AI Overviews. You can start a 7-day free trial.

ChatGPT search checklist

  • robots.txt allows OAI-SearchBot and ChatGPT-User (check the User-agent: * group too).
  • Your CDN or firewall returns 200 to OpenAI's crawlers; confirmed in bot analytics or logs, not just curl.
  • GPTBot decided on purpose: allowed or blocked, as a separate choice from search.
  • Site verified in Bing Webmaster Tools, sitemap submitted, key pages indexed.
  • IndexNow key file live and changed URLs submitted after each production deploy.
  • Main content in the server HTML, with the answer in the first paragraph.
  • Comparison and alternatives pages for the products people weigh you against.
  • Analytics segment for chatgpt.com referrals and utm_source=chatgpt.com.
  • Monthly spot check: your top questions asked in ChatGPT, citations noted.
Check a page nowFree: see what a crawler finds on any URL, with a prompt for your agent.

Questions

Does ChatGPT search use Bing?

Partly. OpenAI says ChatGPT search uses third-party search providers, and Bing is the best-known one. A 2025 Seer Interactive study found 87% of sampled citations matched Bing's top results, but 2026 analyses show OpenAI also uses its own index and other providers, and one site kept its ChatGPT citations after Bing deindexed it. Being in Bing helps; it isn't the whole story.

How do I get my website to show up in ChatGPT search?

Allow OAI-SearchBot in robots.txt and at your CDN, get your pages indexed in Bing (and Google), and publish pages that answer specific questions clearly. There's no submission form for ChatGPT search. OpenAI says robots.txt changes can take about 24 hours to apply.

Does blocking GPTBot remove my site from ChatGPT search?

No. GPTBot is OpenAI's training crawler. Search uses OAI-SearchBot, and OpenAI says each robots.txt setting is independent, so you can block GPTBot and still allow OAI-SearchBot.

Does llms.txt help you rank in ChatGPT?

There's no evidence it does. OpenAI's crawler documentation doesn't mention llms.txt, and it doesn't replace crawler access. If you publish one, make sure it returns 200 or a clean 404.

How can I track traffic from ChatGPT?

In analytics, segment sessions with a chatgpt.com referrer or utm_source=chatgpt.com. Some clicks arrive without either and show up as Direct, so treat the number as a floor. Server logs show whether OpenAI's crawlers fetch your pages.

Sources

Let your agent do the SEO work.

Serpkin finds the next fix from real search data, hands it to Claude Code, Codex or Cursor, and checks it after you ship.

npx serpkin
Start free