How Claude Picks Sources: The Search Tool and Its Citations
99Visibility Research · Updated October 21, 2026 · 7 min read
Short answer
Claude cites a web page only when it runs a search, and Claude itself decides when to search. In apps built on the API, the integrator's system prompt steers that choice. On claude.ai, web search is a user toggle. Each result exposes a url, a title and a page_age field. Claude cites text spans, quoting up to 150 characters as cited_text, rather than citing whole pages.
Key takeaways
- Claude searches at its own discretion, steered by the integrator's system prompt, and claude.ai search is a user toggle with no published default.
- Anthropic's web search results expose url, title and page_age, but no vendor states that page_age influences which sources get picked.
- Claude citations point to text spans with a cited_text excerpt of up to 150 characters, so the sentence on your page matters more than the page as a whole.
- Simon Willison reported in March 2025 that Anthropic added Brave Search as a subprocessor, which is a signal about the index, not a documented spec.
- The controls in your hands are access controls: ClaudeBot, Claude-SearchBot and Claude-User are separate agents, and Claude's crawlers do not execute JavaScript.
Claude decides when to search
Claude doesn't search the web for every question. Retrieval is per query and discretionary, and as of October 2026 three different things govern it depending on where Claude runs.
- In the Claude API, Claude decides whether to call the web search tool. The integrator's system prompt steers that decision. The same question can trigger a search in one app and not in another.
- On claude.ai, web search is a user toggle. Anthropic publishes no default for it, so you can't assume a given consumer answer was grounded.
- Org-level API defaults don't describe consumer behavior. A setting that applies to developers says nothing about what a claude.ai user sees.
This matters because a Claude answer comes from one of two places. With search off, Claude answers from what the model learned in training, frozen at a cutoff. Nothing you publish this quarter reaches that answer. With search on, your page can enter the answer through retrieval and citation. Our guide to how AI search picks sources separates those stages in more detail.
The practical rule: if a Claude answer shows no citations, you don't know whether it searched. Treat uncited answers as possibly parametric, and don't read them as a verdict on your site.
What a Claude search result exposes
Anthropic's web search tool documentation lists the fields each result returns. As of October 2026, those include:
url: the address of the pagetitle: the page titlepage_age: described by Anthropic as "When the site was last updated"
The page_age field gets a lot of attention, and it's easy to over-read. Exposure is not weighting. Anthropic does not state that page_age affects which results Claude uses or cites. The date is also usually something the publisher declares, which makes it easy to change without changing the page.
The freshness studies that circulate don't close the gap. Seer's July 2026 study found 75% of cited pages had been updated within a year, but it had no control group of uncited pages. Without a base rate for the general web, that number can't show that engines reward freshness.
What to do: keep your visible date, sitemap lastmod and Last-Modified header consistent with each other. Treat that as hygiene. Don't bump dates hoping Claude will pick the page. For a full field-by-field read, see what Claude's web search tool docs reveal.
How Claude citations work: text spans and cited_text
Claude cites text spans, not whole sources. Each citation carries a cited_text excerpt of up to 150 characters from the page it used. Perplexity, by contrast, cites whole sources by an integer index. The two units don't measure the same thing, which is why a single blended score across engines can mislead. Our explainer on whether AI engines cite whole pages or sentences compares the formats.
Three consequences follow for a marketing lead.
The quotable sentence is the unit
Because Claude quotes a short span, a clear factual sentence on a fetchable page gives it something to quote. Stating a specific fact (a price, a number, a one-line definition) is the only on-page practice with a positive experimental signal. That is a reason to state facts plainly, not a promise of a citation.
Retrieved is not the same as cited
The API exposes the results Claude retrieved separately from the spans it cited. A page can be retrieved and never cited. Mechanistic research (arXiv:2606.28358) also found citation output can be changed without changing the sources, so a citation count is a noisy proxy for influence. If you run queries through the API, log retrieved and cited sources separately.
Spans let you check accuracy
A cited_text excerpt shows exactly which sentence Claude leaned on. Compare it with your page. If Claude states a wrong price next to a span from an outdated page, you know which page to fix.
Which index sits behind Claude search
Simon Willison reported in March 2025 that Anthropic's Trust Center listed Brave Search as a subprocessor, around the launch of Claude web search. That's a meaningful signal about where Claude's results may come from. It is not a current, documented description of how Claude retrieves pages, and it doesn't tell you how results are ranked or filtered before Claude sees them.
Read it this way:
- Being findable in the index Claude queries is a precondition for being retrieved.
- Anthropic publishes no list of ranking factors for its search results.
- The query Claude sends may not match what the user typed. Engines commonly generate their own search queries, and nobody outside the operator sees them.
If you want to dig into this, start with what search engine Claude uses. Then check whether your key pages appear for the topics you care about in that index, without assuming that a result there guarantees a Claude citation.
The crawlers and controls you actually control
The levers with evidence behind them are access levers. They work by removing blocks, not by adding markup. Anthropic documents separate agents with separate roles:
- ClaudeBot: collects content for training.
- Claude-SearchBot: crawls to improve Claude's search results.
- Claude-User: fetches pages when a user's request triggers it.
robots.txt rules are per agent. A blanket AI block written to stop training can also shut out search crawling. If you want to opt out of training but stay eligible for Claude search, a rule set looks like this:
User-agent: ClaudeBot
Disallow: /
User-agent: Claude-SearchBot
Allow: /
Two further gates sit below robots.txt.
- JavaScript rendering. Vercel found Claude's crawlers fetch JavaScript files (23.84% of requests) but don't execute them, and an independent retest in June 2026 found Claude-SearchBot doesn't render JavaScript either. Pricing or product facts that only appear after hydration may be invisible to Claude. Put them in the server-rendered HTML.
- Firewall and CDN. A WAF or bot manager can return 403 to a crawler that robots.txt allows. Anthropic warns that IP blocking "impedes our ability to read your robots.txt file." The AI Crawler Checker requests a page as each AI crawler and shows which ones your firewall turns away.
One caution: third-party pages can carry injected instructions aimed at AI agents. That's a manipulation tactic and a reputational risk if it targets your brand. Never use it on your own site.
What Anthropic does not document
Be clear about the limits before you act on any Claude visibility number.
| Documented | Not documented |
|---|---|
| Claude decides when to search; system prompts steer it | How often Claude searches on claude.ai |
| claude.ai search is a user toggle | The toggle's default |
| Results expose url, title, page_age | Whether page_age affects selection |
| Citations are spans with cited_text up to 150 characters | How Claude chooses which span to cite |
| Separate agents: ClaudeBot, Claude-SearchBot, Claude-User | How search results are ranked |
The consumer app also moves. A 99Visibility snapshot from September 2026 recorded Sonnet 5 as the reported default for Free and Pro (a secondary source) and Opus 5 as selectable. The model a user gets can change without notice.
So a low Claude score often reflects measurement conditions as much as your site: search off, a different model, or a query Claude never searched for. Our note on why Claude scores low in a visibility report walks through the causes. Then fix what you control: crawler access, server-rendered facts, and consistent facts across your own pages. You can check whether AI quotes your site accurately using the cited spans.
Frequently asked questions
Does page_age mean Claude prefers recently updated pages?
Not as far as anyone has documented. Anthropic exposes page_age in search results, but it doesn't say the field influences which sources Claude uses. The freshness studies that get quoted have no control group of uncited pages, so they can't show a preference. Keep your dates accurate and consistent across the page, sitemap and headers. Don't change dates to chase citations, because that only changes a field you declare yourself.
Can Claude cite content that loads with client-side JavaScript?
Probably not reliably. Vercel found Claude's crawlers download JavaScript files but don't execute them, and a June 2026 retest found the same for Claude-SearchBot. Content that only appears after the page hydrates may never reach Claude's index. Server-render the facts that matter, such as pricing, product names and definitions, so they exist in the raw HTML. Then compare the raw HTML with the rendered page to find gaps.
Does blocking ClaudeBot remove my site from Claude search answers?
Anthropic documents ClaudeBot as a training crawler and Claude-SearchBot as the crawler that improves search results, so they serve different purposes. Blocking ClaudeBot addresses training use. Search-side crawling is governed by Claude-SearchBot. Check both entries in your robots.txt, and check that your firewall doesn't block either agent. Allowing a crawler buys eligibility only, never a guaranteed citation.
Is a Claude answer the same in the app and the API?
Not necessarily. On claude.ai, the user controls the search toggle and can pick among models. In the API, the integrator's system prompt steers whether Claude searches, and the developer picks the model. The same question can produce a grounded answer in one place and a parametric one in another. When you measure Claude, record the model and whether search ran.
What does Claude's web search tool cost developers?
As of October 2026, Anthropic charges $10 per 1,000 searches plus normal token costs. Searches that error are not billed, and the citation fields are not billed as tokens. That makes it practical to log both the retrieved results and the cited spans for a set of buyer questions, which is the most direct way to see how Claude treats your pages.
Sources
- Web search tool - Claude Platform Docs
- Does Anthropic crawl data from the web, and how can site owners block the crawler?
- Anthropic Trust Center: Brave Search added as a subprocessor
- The rise of the AI crawler - Vercel
- [2606.28358] How Do LLMs Cite? A Mechanistic Interpretation of Attribution in Retrieval-Augmented Generation
This page is AI-assisted. It was written from a verified evidence base and checked against our editorial policy. Engine behaviour changes often; facts are as of October 21, 2026.