· Updated · 18 min read · Geoptimizer Team

How Grok Chooses Its Sources: The X Citation Channel

  • generative-engine-optimization
  • grok
  • ai-visibility
  • engine-behavior
  • x-twitter
How Grok Chooses Its Sources: The X Citation Channel

Grok chooses its sources through two separate retrieval tools, not one: web_search, which crawls the open internet like every other engine, and x_search, which runs keyword search, semantic search, user search and thread fetch directly against X. Those X posts come back as first-class citations with real URLs. No other major engine has sanctioned access to that corpus — x.com's robots.txt ends with a blanket Disallow: / for every agent it doesn't name, and it doesn't name GPTBot, ClaudeBot or PerplexityBot. So if your Grok score sits well below your ChatGPT and Gemini scores, the most likely explanation isn't your site. It's that a retrieval pool your competitors show up in doesn't contain you.

That's an uncomfortable diagnosis for a B2B team that quietly retired X two years ago. It's also a narrow, testable one — and the honest version of it comes with numbers that cut both ways. Let's start with the file that makes the whole thing structural.

The robots.txt file behind your per-engine gap

Open https://x.com/robots.txt in a browser tab. It takes about thirty seconds to read, and it explains more about your Grok number than any content audit will.

The file names a short list of agents and gives them specific permissions. Googlebot and Bingbot are named and allowed to crawl most of the platform. facebookexternalhit is named. Then three agents are blocked outright by name: Google-Extended, FacebookBot and Discordbot. And at the bottom sits a User-agent: * group with Disallow: /.

That wildcard is the whole story. GPTBot, ClaudeBot and PerplexityBot are not named anywhere in the file, so they fall through to the catch-all denial. Google's classic search crawler can read X; Google's AI-specific agent, Google-Extended, is refused by name. Put plainly: OpenAI, Anthropic and Perplexity have no sanctioned crawl path to X post content, and Google's AI-side agent has an explicit one-word no.

Grok doesn't need a crawler for any of it. On 28 March 2025, xAI acquired X in an all-stock deal valuing X at $33 billion and xAI at $80 billion, with Musk framing it as the moment to "combine the data, models, compute, distribution and talent." X post data reaches Grok through internal platform integration, not through a bot that has to ask permission at the door.

Buying comparable access on the open market means shopping in a different budget category: X's enterprise full-firehose tier starts around $42,000 per month on multi-year contracts. That's why this gap isn't closing. It isn't a crawler-config oversight someone will fix next quarter — it's an ownership structure.

Which raises the obvious question: what does Grok actually do with that access?

Two retrieval pools, and only one of them has people in it

xAI documents its retrieval as two separately-invoked server-side tools that can be used in the same request but are configured independently. The difference between their parameter sets is where the strategy lives.

The web search tool takes allowed_domains and excluded_domains — a maximum of five each — plus image understanding. That's it. There is no author-level concept anywhere in it. On the open web, Grok filters by site.

The X search tool is a different shape entirely. xAI documents it as performing keyword search, semantic search, user search, and thread fetch — four retrieval modes rather than one. It takes allowed_x_handles and excluded_x_handles (up to 20 each, mutually exclusive), from_date and to_date as inclusive ISO8601 filters, and toggles for both image and video understanding. Video comprehension exists only on the X tool.

The asymmetry is the point. On the web, Grok's unit of filtering is the domain. On X, it's the person and the timestamp — who posted it and when are structural inputs to retrieval, not metadata discarded after ranking. That's a genuinely different optimization surface: you cannot fix it with schema markup.

An X post is a citation object, exactly like a blog page

By default Grok returns a citations attribute listing every URL it encountered during search, and it can render inline Markdown citations as [[N]](url) backed by an annotations array of url_citation objects. X posts appear in that same annotation structure as ordinary URLs, in the form https://x.com/{handle}/status/{id}.

That matters more than it looks. A post from your founder's account is a citable source object in exactly the way a page on your docs site is — same structure, same URL field, same downstream counting. Your Grok citation surface isn't metaphorically social; it's a list of post permalinks with handles in them.

What xAI's own published system prompts say

xAI publishes its production system prompts on GitHub — including the Grok 4 chat prompt used on grok.com and X, the prompt for the in-feed Ask Grok bot, and the one behind the "Grok Explain" button. No other engine ships this level of retrieval transparency — worth noting before we get to the parts where Grok looks bad.

The Grok 4 prompt contains this instruction verbatim:

"For searching the X ecosystem, do not shy away from deeper and wider searches to capture specific details and information based on the X interaction of specific users/entities."

And the Ask Grok prompt, governing the bot inside X, tells it to "use your X tools to get context on the current thread" and — critically for anyone who owns a website — that "you must use the browse page to verify all points of information you get from search."

Together those instructions describe the mechanism you're optimizing for. Grok is told to search around entities on X, and to verify what it finds by fetching pages. The X post gets you retrieved; the durable web page survives verification. That's why "just post more on X" is the wrong reading of this topic.

The clearest evidence anyone has: watching Grok type a query

Documentation tells you what a tool can do. On 11 July 2025, Simon Willison published something better — a Grok 4 reasoning trace showing the model constructing an actual X search query. Asked for a one-word answer on the Israel–Palestine conflict, Grok's visible reasoning included:

"Searching 𝕏 for from:elonmusk (Israel OR Palestine OR Gaza OR Hamas)"

Willison's read: Grok "knows that it is Grok 4 built by xAI, and it knows that Elon Musk owns xAI, so in circumstances where it's asked for an opinion the reasoning process often decides to see what Elon thinks." xAI acknowledged it on GitHub four days later and amended the prompt to require that responses "stem from your independent analysis, not from any stated beliefs of past Grok, Elon Musk, or xAI."

Set the controversy aside and look at the syntax, because it's the most useful artifact here. Grok didn't do an opaque vector lookup — it composed an X advanced-search string: a handle operator, then an OR-group of keyword terms. Handles are query primitives; the model reasons in terms of whose posts to read. Plain keyword terms in post bodies are what get matched. And X retrieval is an active reasoning step, not a passive background index.

If you've ever wondered what "optimizing for Grok" concretely means, it means being the account whose name plausibly belongs inside a from: operator for your category, posting text that contains the terms in the OR-group.

Your per-engine gap is the base rate, not a bug

Before building a program around this, calibrate how alarmed to be: divergence is the normal condition across every engine pair, not a Grok pathology.

A study of 161,286 prompts with citations across ChatGPT, Gemini, Perplexity and Google AI Overviews in May–June 2026 found that only 3.8% of cited sources appeared on all four engines, while 72–73% of cited domains appeared on exactly one engine.

A separate analysis narrowed to commercial-intent B2B questions — 127,198 citations across 11,647 domains on ChatGPT, Claude, Gemini, Perplexity and Google AI Mode between 29 March and 27 June 2026 — found 69.6% of domains cited by exactly one engine and just 2.7% (309 domains) cited by all five. Gemini averaged 11.0 sources per answer; ChatGPT averaged 3.7.

Neither study included Grok, which is the useful part. Even among engines that all crawl the same open web, roughly seven in ten cited domains show up on precisely one of them. So scoring 70-something on three engines and 50-something on the fourth isn't a broken tracker — it's the shape of the data. What's different about Grok is that its divergence has a documented cause you can name and test. For the wider picture, our engine-by-engine breakdown of the 2026 citation evidence compares all four sourcing profiles.

For a deeper dive into why roughly seven in ten cited domains are unique to a single engine and what that means for monitoring, see our analysis of AI citation sources concentration.

The honest size of the channel

Here's where a lot of GEO content oversells, so let's put the least flattering number first.

According to Ahrefs' Brand Radar data covering 1.9 million-plus US queries across all topics in June 2026, x.com is only the 12th most-cited domain in Grok, at 1.4% mention share. Grok's top of the table is dominated by other user-generated platforms: reddit.com at 16.3%, youtube.com at 15.1%, facebook.com at 13.9%, instagram.com at 5.9%, quora.com at 5.5%.

If your mental model was "Grok is basically an X reader," that number should correct it. For consumer and shopping queries — which dominate any all-topic sample — X is a minor slice. Two caveats, though: x.com climbed 15 places in a single month, unusual movement for a top-20 domain, and all-topic US data is not B2B-software data. Nobody has published a Grok citation breakdown segmented by commercial B2B intent.

Compare across engines and the exclusivity holds up even at 1.4%. X doesn't appear in the top 10 cited domains for Gemini, where Reddit takes 29.2%, and it's absent from Perplexity's top 50 entirely, where YouTube leads at 31.2%. Small in one engine still beats invisible in three.

Reddit is the cleanest contrast. It licensed its content — roughly $60M a year to Google from February 2024 and about $70M a year to OpenAI — and is now the most-cited domain in both Grok and Gemini and second in Perplexity. X licensed to nobody and got acquired by an AI lab instead. Same content type, opposite distribution outcome, entirely explained by access terms.

"Grok is 2.4% of AI traffic. Why would I fund a program for it?"

Fair, and worth answering rather than dodging. Similarweb data for May 2026 via Momentic puts Grok at 2.4% of worldwide AI-chatbot web-visit share on 244.9M monthly visits, 3.4% and 56.6M visits in the US — down 18% quarter-over-quarter but up 37% year-over-year.

Three honest responses. Web visits undercount Grok badly, because much of its usage happens inside X's feed via the Ask Grok bot and the Grok Explain button — surfaces no web-visit metric captures. The marginal cost of covering a fourth engine is near zero once your diagnosis is already per-engine. And the work itself — credible people discussing your product on a platform with roughly 561 million monthly users — pays off in places that have nothing to do with Grok.

And sometimes the right answer is no. X skews 63.8% male and 58.4% aged 18–34. If you sell to hospital procurement committees, accepting a lower Grok score is a more honest use of budget than manufacturing a social presence your buyers will never see.

What's documented, and what's folklore

You are sophisticated enough to catch a post that presents assertion as measurement, so here's the dividing line drawn explicitly.

Documented, primary, checkable in five minutes: the two-tool split; the four X retrieval modes; handle and date filters as first-class parameters; the x.com/{handle}/status/{id} citation format; the published instructions to search around users and entities and to browse-and-verify; x.com's robots.txt; the March 2025 acquisition.

Documented but needing care: xAI's earlier Live Search X-source configuration exposed post_favorite_count and post_view_count as caller-side filters, preserved in LangChain's typed reference for the xAI integration. What that proves is narrow but real: engagement counts are attached to X candidates at retrieval time. It is not evidence that grok.com ranks posts by likes. Separately, X open-sourced its production recommendation stack, whose ranker predicts 15-plus engagement probabilities including P(reply), P(repost) and P(quote). Distribution signals and retrieval metadata are the same class of signal — a plausible reason why posting without earning replies moves nothing, but an inference, not a finding.

Folklore, repeated everywhere, measured by nobody: the "72-hour live retrieval window," "quote tweets are the strongest single X signal," "reply depth is a quality signal," and the circulating percentage lifts attributed to adding statistics or quotations. These travel across GEO blogs with no published measurement behind them. To its credit, Trakkr — a vendor selling Grok citation tracking — says outright that its own guidance is observational: "no numerical data supports these observations."

Strip out the folklore and a short, defensible playbook remains:

  • Write posts as self-contained claims, not teasers. x_search runs keyword and semantic matching over post text. "Big news 👇" is unretrievable; "Our Q3 benchmark of 41 mid-market CRMs found median implementation time was 11 weeks" is a matchable claim.
  • Treat the handle as the unit, not the post. One consistent, category-legible founder or expert account beats scattered posting from a dormant brand handle.
  • Earned posts count as much as owned ones. Grok can cite anyone's post about you, and — as the Menra crawler guide notes — no robots.txt decision touches that surface. Customer threads, analyst commentary and employee replies all carry your brand.
  • Publish the artifact on the web and discuss it on X. The Ask Grok prompt requires browsing to verify search claims, and the web tool has no author concept. Corroboration across both pools is the mechanism.
  • Cadence matters on time-sensitive prompts. Date filters are structural, and grok-4.5 carries a knowledge cutoff of 1 February 2026 — xAI states plainly that Grok "has no knowledge of current events or data beyond what was present in its training data." Anything after that reaches Grok only through live tools.

The 20-minute diagnostic: is your gap social or on-site?

Don't build a social program on a hunch. Run this first.

Take five buyer-intent prompts you already track. Run each on all four engines and capture the citation lists, not just the answer text. Then, for Grok specifically, count how many cited URLs match the pattern x.com/*/status/*, and note whose handles they belong to.

Two outcomes, leading in opposite directions.

If competitors' handles appear in those citations and yours don't, your gap is social. The fix is earning discussion on X from credible accounts, paired with durable pages that survive the browse-and-verify step — not another round of on-page schema work.

If those citations are all web domains with no X posts in sight, your gap is not social for those queries, and a social program would solve a problem you don't have. Practitioners observe that Grok leans on X for recent and opinion-shaped questions and on web pages for settled factual ones — unquantified, but a sensible reason to check before acting.

Either way, rule out the boring explanation first: if Grok's retrieval fetch can't reach your pages at all, no amount of X activity helps. Our walkthrough of AI crawler access and llms.txt setup covers that on-site half — clearing it just doesn't automatically clear Grok.

Running the same prompts across four engines by hand every week is the chore that stops getting done in month two. Geoptimizer computes an EngineScore per engine — 35% mention rate, 25% citation rate, 20% prominence, 20% sentiment — and averages them into one 0–100 Visibility Score, so a Grok-specific deficit shows up as a number next to three healthy ones instead of a suspicion.

Four measurement traps worth knowing about

The tools must be explicitly enabled. In the current Tools API, both web_search and x_search are passed in the tools array, and neither is implied. A tool that queries Grok with web search only will under-report the X channel and manufacture a gap that doesn't exist for real users. "Which tools do you enable when you query Grok?" is a fair question for any vendor, including us.

Guides written before 12 January 2026 describe a dead interface. The legacy Live Search API and its search_parameters were retired on that date; requests now return 410 Gone, and callers must use the Tools-based /v1/responses endpoint. Any Grok playbook or script older than that is describing something that no longer exists.

Model churn outruns your reporting cycle. Grok 4 shipped 9 July 2025, Grok 4.5 on 8 July 2026, Grok 4.6 on 7 August 2026. A score that moves between two monthly reports has to be read against the release calendar before it's read as a campaign effect — the trap covered in our diagnostic for separating model-version artifacts from real visibility shifts. It's also why single scans are snapshots and headline scores use a 7-day rolling window with a confidence band.

Domain-level and handle-level counting tell different stories. Ahrefs' domain-level view puts x.com at 1.4% of Grok citations. A tracker counting brand-owned handle URLs as brand citations would describe the same reality with a very different number. Both can be right; you need to know which you're reading.

The credibility caveat you should carry into all of this

Grok's citation reliability has a documented history. In the Tow Center's February 2025 test of 1,600 queries across eight tools, Grok-3 returned incorrect answers 94% of the time, against 37% for Perplexity and 67% for ChatGPT Search — and 154 of 200 Grok-3 citations led to error pages. The researchers noted that more than half of Gemini and Grok-3 responses cited fabricated or broken URLs.

Two things are true about that. It's damning, and it's from Grok-3 in February 2025 — two model generations behind Grok 4.6. Nobody has published a comparable re-test on Grok 4.x, which is a gap in the public record rather than evidence of improvement. The same balance applies to the Musk-opinion episode: it happened, and xAI shipped a prompt fix within four days.

So the practical conclusion is measured rather than dramatic. Grok is one read of four — with a citation channel the other three structurally cannot reach, and a reliability record that argues against treating it as authoritative alone. Weight it accordingly, and measure it, because it's the one engine whose fix lives somewhere your on-site checklist will never look.

FAQ

How does Grok choose its sources? Through two independently configured server-side tools. web_search retrieves from the open internet with domain-level include/exclude filters (max five each). x_search retrieves from X using keyword search, semantic search, user search and thread fetch, with handle filters (up to 20), date ranges, and image and video understanding. Both can run in the same request, and every URL encountered is returned in a citations array.

Why is my Grok visibility score lower than my ChatGPT and Gemini scores? Usually one of two reasons. Either your category's Grok answers lean on X posts and your brand has no X footprint to retrieve, or your monitoring tool queries Grok without x_search enabled and is measuring half the retrieval surface. Rule out the second first. And note that per-engine divergence is normal: in a study of 127,198 B2B citations, 69.6% of cited domains appeared on exactly one engine.

Can ChatGPT, Claude or Perplexity cite X posts? Not through sanctioned crawling. x.com's robots.txt names Googlebot and Bingbot and allows them broad access, blocks Google-Extended, FacebookBot and Discordbot by name, and applies Disallow: / to every unnamed agent — a group that includes GPTBot, ClaudeBot and PerplexityBot. Grok gets X data through xAI's ownership of the platform, not a crawler.

Does blocking AI crawlers remove me from Grok's answers? No — and that's the uncomfortable part. xAI runs distinct crawler roles for training, retrieval and user-triggered fetches, but blocking them doesn't touch the X half of your exposure. Grok can still describe your brand from training data and from X posts other people wrote about you. A robots.txt decision controls one pool, not both.

Do I need a brand account on X, or will a founder account do? The documented signals point to accounts as a unit of retrieval: handle filters are first-class parameters, user search is a documented mode, and the Grok 4 system prompt instructs deeper searches "based on the X interaction of specific users/entities." A consistent, category-legible individual account posting substantive claims is more retrievable than a dormant brand handle posting links — though the finer handle-weighting folklore has no published measurement behind it.

The short version

Grok's answers draw on a corpus the other three engines are locked out of, by robots.txt and by ownership. It's a small channel by domain share — 1.4% of Grok citations — and an exclusive one, which is why a brand can look healthy on three engines and thin on the fourth. Diagnosis takes twenty minutes with four citation lists and a URL pattern. The fix, when it's social, is earned discussion on X paired with durable pages that survive Grok's verification step. When it isn't, don't build the program.

The part worth systematizing is the diagnosis, not the guesswork. Geoptimizer tracks all four engines in every plan, including the free tier — no per-engine add-on, with the scoring formula published rather than asserted. Run your buyer prompts across ChatGPT, Gemini, Claude and Grok, read the per-engine breakdown, and find out whether your Grok gap is real before you spend a quarter fixing the wrong half of it.

Keep reading

See it on your own domain.

Free visibility check across ChatGPT, Gemini, Claude, and Grok — about 30 seconds.

Run the free check