How to Rank in ChatGPT (What Actually Influences It)

- ChatGPT doesn't have a public ranking system you can optimize against, but you can see which crawlers fetch your content and how often.
- The measurable part is visibility: how often OpenAI's indexing crawler, OAI-SearchBot, visits your site and whether ChatGPT-User fetches pages live.
- Documented factors include robots.txt access, page speed, and clear HTML content. Citations and recommendations are not guaranteed by any metric.
- Your goal should be to maximize clean, factual, fetchable content, then measure what actually happens.
- Kymo shows you which AI crawlers visit and what they do, so you're not guessing.
How to rank in ChatGPT is a question with a frustrating answer: there's no public ranking system, no score, and no way to know exactly why one page gets cited over another. What you can influence is visibility. If ChatGPT's crawlers can't read your page, or don't find it, you have zero chance. If they fetch it cleanly and quickly, you have a shot. That's the part you can measure and improve.
Here's what's documented, what's inferred, and what you should actually do.
First, get the model right: indexing and live fetches are different jobs
OpenAI runs three separate agents that touch your site, and they do different things.
| Crawler token | Category | What it does | Traffic it sends |
|---|---|---|---|
| GPTBot | training | Bulk crawls for model training data | None |
| OAI-SearchBot | indexing | Builds a search index for later answers | Can lead to referral traffic |
| ChatGPT-User | ai_answer | Live fetch when a person asks a question | Can lead to referral traffic |
The distinction matters. When someone asks ChatGPT a question and it pulls your page in that moment, that's ChatGPT-User. When OpenAI's indexer spiders your site ahead of time so it can answer faster later, that's OAI-SearchBot. The training crawler, GPTBot, is gathering data for model weights, not for answering questions. Blocking GPTBot does not remove you from ChatGPT answers, because OAI-SearchBot and ChatGPT-User are separate tokens. Our bot taxonomy breaks down all the operators and their agents.
What actually influences whether ChatGPT fetches your page
Documented factors are thin on the ground. OpenAI doesn't publish a ranking algorithm. But we know a few things with reasonable confidence.
Access is the baseline. If your robots.txt blocks a crawler, it doesn't fetch. That's a documented behavior, and it's the most direct lever you have. Our robots.txt for AI crawlers guide gives you copy-paste rules for each token. The control tokens like Google-Extended and Applebot-Extended are not crawlers themselves. They're robots.txt directives that tell an operator how content already crawled may be used. Disallowing one of those doesn't stop a visit because there is no visit. Nobody "visits" via a control token.
The indexing crawler is the workhorse. OAI-SearchBot is OpenAI's search index crawler. It works ahead of time, like Googlebot. When it crawls your site, your pages enter an index that ChatGPT can draw from. If it never crawls you, live fetches are the only way you appear, and those depend on a user asking something that points at you.
Live fetches happen when you're relevant to a question. ChatGPT-User fetches a page because one person asked something right now. That means your content needs to be findable, linkable, and structured so a model can extract the answer. This is where the inferred factors come in.
The inferred stuff: structure, clarity, and citations
Nobody has published proof that a certain content structure improves ChatGPT visibility. But there are strong signals from how the system behaves.
- Clear headings and factual prose help. Models extract answers from text. If your page buries the answer in a wall of marketing fluff, a live fetch gets less useful material.
- Citations come from pages that are already on the web and fetchable. ChatGPT cites what its crawlers can read. If your page requires JavaScript rendering to show content, you're making it harder than it needs to be. Plain HTML wins.
- Quoted text and precise definitions matter. When a model needs a single sentence to answer a question, pages that contain that sentence, phrased plainly, are more likely to be chosen. This is inference, not documented fact, but it's a reasonable one.
The honest position is this: you can't climb a ChatGPT ranking, because no such ladder exists. You can maximize your surface area, keep your content accessible, and then watch what actually gets fetched.
Measure first, then adjust
You cannot improve what you do not measure. This is the core of why we built Kymo. Most site owners have no idea whether GPTBot crawled them last week, or whether ChatGPT-User fetched their pricing page in the last month. That's a blind spot you can close.
Kymo shows you which crawlers visit, when, and what they fetch. The AI crawler tracking is a server-side receiver that classifies user agents into three buckets: ai_answer for live fetches, indexing for search-index crawlers, and training for bulk data collection. You see the difference between a live answer fetch and a routine index crawl. That distinction is the difference between "someone asked about you" and "the index is updating."
The AI Visibility report goes further. It shows which pages AI assistants fetch, the likely prompts behind those fetches, and confirmed click-throughs from AI referrals. That's observable data, not a guess.
Tracking this doesn't count against your event limit, by the way. AI crawler events are separate from human analytics. So you can watch both without burning your monthly volume. The Kymo documentation explains exactly how classification works if you want the technical detail.
What about Perplexity, Claude, and the rest?
The same logic applies across all the AI engines. Perplexity has two agents: PerplexityBot, which indexes, and Perplexity-User, which fetches live. No training crawler exists because Perplexity doesn't build foundation models. Anthropic runs ClaudeBot for training, Claude-SearchBot for indexing, and Claude-User for live fetches. The SearchBot and the -User agent are never the same category, and mixing them up leads to bad decisions about what to block and what to allow.
One note on compliance: Perplexity-User is documented as exempt from robots.txt because a user asked for the fetch. Cloudflare published evidence in August 2025 of undeclared Perplexity crawlers, which Perplexity disputed. That's a contested finding, not a settled fact. Treat it as such. If you want to control access, the indexer is the token you can actually block and see results from.
The difference between SEO, GEO, and just having good content
Search engine optimization is about ranking in a list. Generative engine optimization, or GEO, is about being included in an answer. The mechanics overlap: crawlability, clarity, and relevance all matter. But the measurement is different. You don't get a position report from ChatGPT. You get the occasional citation and some referral traffic.
Our GEO vs SEO piece digs into what's different and what still works. The short version is that SEO still matters because AI systems lean on traditional search indexes. Googlebot's behavior is still relevant even if nobody types a query into Google. And bingbot, YandexBot, Baiduspider, and Slurp all still crawl because their operators feed search results into products you use.
For a small business, this means continuing to do the fundamentals well. Clear pages, fast responses, sensible robots.txt rules, and an understanding of what each crawler wants. The Small Business Guide to AEO walks through the practical steps without the hype.
Track your campaigns like you track everything else
UTM parameters work for AI referral traffic the same way they work for Google. When ChatGPT sends you a visitor, you want to know which page they landed on and what question they asked. Our UTM parameter guide shows how to tag links so you can attribute traffic properly. Kymo tracks UTM source, medium, and campaign as standard fields, so the data lands in the same dashboard as everything else.
And if you're not sure where to start, run the free AI visibility check on your own site. It reads a URL from public signals, no installation needed, and tells you whether AI crawlers can already see you.
What to actually do this week
- Check your robots.txt. Make sure OAI-SearchBot, PerplexityBot, and Claude-SearchBot aren't blocked. Also check that you haven't accidentally blocked ChatGPT-User, which would stop live answer fetches. The nuance with Applebot-Extended is a good example: it's a control token, not a crawler, so adding it to a crawler table would be a category error.
- Make sure your key pages render without JavaScript. If you're behind a heavy framework, the content might be invisible to crawlers that don't execute scripts.
- Write answers on your pages. If someone asks "how much does X cost", the answer should appear on the pricing page in plain text, not behind a contact form.
- Measure. Install Kymo or use the free check to see what's actually happening. The dashboard pauses if you exceed your event limit, but your data stays safe, and the AI tracking doesn't count toward the cap anyway.
Do this if you're a small business that's losing discovery to AI answers: run the free AI visibility check on your site to see what crawlers can already access, then start tracking continuously to see which AI engines actually fetch your pages and what they send back. You'll know exactly where you stand instead of guessing.
Start free → 14-day free trial. No card required.