To check whether ChatGPT, Perplexity, Gemini or Grok cite your website, do two things: ask each assistant the questions your buyers actually ask and record which sources it links, then read your server logs for the AI crawler user-agents that fetched those pages — and verify each crawler is genuine, not a spoof. Below are the exact log lines, the user-agent strings to grep for, and how to prove a crawl is real.
Written by the Unsourced team · updated 16 July 2026 · every figure here comes from our own field data, cited inline.
Generative engines don't rank ten blue links; they assemble an answer and cite a handful of sources. Which sources they pick overlaps surprisingly little with classic search — and little with each other. In our own monitoring, the sources ChatGPT, Perplexity, Gemini and Bing cite for the same question overlap only about 16% of the time. So a top Google position is neither necessary nor sufficient for an AI citation. You have to check the assistants directly, and check whether their crawlers actually reached your pages.
Start with intent, not vanity. Write down the ten to twenty questions a real buyer would type when they're looking for what you do — not your brand name, the problem. Put each one to ChatGPT, Perplexity, Gemini and Grok, and record every source the answer links, plus whether your domain is among them.
Expect volatility. Rephrase the same question three ways and the cited sources often change, because these systems sample. That's exactly why a single "AI visibility score" is misleading: it blends four engines that mostly disagree, on a given day. Track the actual answers, per engine, over time — not one number.
When an assistant is able to cite you, it's usually because one of its crawlers fetched your page. Those fetches don't execute JavaScript, so Google Analytics and most tag-based tools never register them. The evidence lives in your raw server access logs. A real AI-crawler line looks like this:
34.211.7.42 - - [16/Jul/2026:14:02:11 +0000] "GET /pricing HTTP/1.1" 200 8241 "-" "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.2; +https://openai.com/gptbot" 52.34.169.11 - - [16/Jul/2026:14:03:44 +0000] "GET /guide HTTP/1.1" 200 15320 "-" "Mozilla/5.0 (compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)" 185.62.9.10 - - [16/Jul/2026:14:07:02 +0000] "GET /guide HTTP/1.1" 200 15320 "-" "Mozilla/5.0 (compatible; GPTBot/1.1; +https://openai.com/gptbot)" <- IP not in OpenAI's published range
On nginx or Apache, a one-line filter surfaces every AI hit:
grep -Ei "GPTBot|OAI-SearchBot|ChatGPT-User|PerplexityBot|ClaudeBot|Google-Extended|Bytespider|CCBot|Amazonbot|Applebot" /var/log/nginx/access.log
| Operator | User-agent | What it means if you see it |
|---|---|---|
| OpenAI | GPTBot | Fetches content to train OpenAI models |
| OpenAI | OAI-SearchBot | Indexes for ChatGPT Search — you can be cited |
| OpenAI | ChatGPT-User | Live fetch triggered by a user's prompt |
| Perplexity | PerplexityBot | Indexes pages for Perplexity answers |
| Perplexity | Perplexity-User | Live fetch for a specific user query |
| Anthropic | ClaudeBot | Fetches content to train Claude |
| Anthropic | Claude-User | Live fetch when Claude browses for a user |
Googlebot | Feeds Search and AI Overviews / AI Mode | |
Google-Extended | A robots.txt token, not a separate crawler — controls Gemini training use | |
| Microsoft | Bingbot | Feeds Bing and Copilot |
| Amazon | Amazonbot | Fetches for Amazon's AI |
| ByteDance | Bytespider | Fetches for ByteDance / TikTok AI |
| Common Crawl | CCBot | Open crawl reused by many model trainers |
| Apple | Applebot | Feeds Siri and Apple Intelligence |
Seeing OAI-SearchBot, PerplexityBot or ChatGPT-User is a stronger "you can be cited now" signal than a training crawler like GPTBot or CCBot, which feeds a model months before it answers anything.
A user-agent is just text, and anyone can type it. In our own field research across the sites we monitor, 5.4% of AI-crawler traffic was an impostor — a request wearing an AI brand's name from an address that brand never published. So treat every log line as a claim until you prove it two ways:
Either proof verifies a crawler; a contradiction marks an impostor; no published footprint means "unverifiable" — flagged honestly, never accused. You can run this on a single IP with our free AI crawler verifier, or see the full picture in our field report on 9,543 verified crawler visits.
One more distinction the logs settle: a citation can come from months-old training data, not a fresh read. If an assistant names you but your logs show no recent fetch from that operator, you're being cited from memory — which can go stale the moment you change the page. A verified crawl close to the citation is the fresher, more durable signal, and only your server logs can tell the two apart.
Everything above is a snapshot you can take by hand today. The limitation is that AI answers move constantly, so a snapshot is out of date quickly. Doing it continuously — running your buyer questions on a schedule, capturing every answer and citation, and tying each one to a verified crawl in your logs — is exactly what Unsourced automates. It's the difference between checking once and holding a running record you can act on.
See how Unsourced's server-side telemetry stacks up against the estimate-based approaches:
Unsourced runs your buyer questions across every major assistant, captures each answer and citation, and proves which crawler really fetched your page — Verified, Impostor or Unverifiable.
© Unsourced — the evidence layer for AI search. Figures cited here come from our own monitoring network; methodology available on request.