Claude's web search tool works differently from ChatGPT's and Perplexity's in one specific way that changes how you should write: citations are always on. There is no setting a developer can flip to turn them off, and every source Claude uses gets attributed with a URL, a title, and a short quoted snippet capped at 150 characters. That cap alone should change how you write your answer paragraphs. Add in a newer capability called dynamic filtering, where Claude's own code decides what search results are even worth reading before it writes an answer, and "ranking well enough to appear in results" stops being the same thing as "surviving into the response." This guide walks through how Claude's web search tool actually works, straight from Anthropic's own developer documentation, and what each mechanic means for how you structure content.
One caveat worth stating up front: this describes the API-level behavior documented for Claude's web search tool, the same tool that powers web search inside Claude.ai and inside third-party products built on the Claude API. Anthropic has not published a separate ranking methodology for "Claude the consumer app" the way Google publishes guidance for Search. Everything below is what's actually documented, not a reverse-engineered guess.
How does Claude's web search tool actually cite sources?
When Claude runs a web search and uses a result in its answer, the response includes a web_search_result_location citation object with four fields: the source url, the title, an encrypted_index reference (used internally for multi-turn conversations), and cited_text, up to 150 characters of the actual content Claude is quoting. Per Anthropic's documentation, citations are always enabled for web search: a developer building on the Claude API cannot switch them off, and none of the citation fields (cited_text, title, url) count toward token usage.
That 150-character cap is the detail most content teams miss. It's not a paraphrase budget, it's a hard limit on how much of your sentence gets lifted verbatim into the answer. If your answer-bearing sentence only makes sense with the sentence before and after it, whatever gets pulled into that 150-character window may not read as a coherent standalone claim once it lands in someone's Claude conversation.
What are the three versions of Claude's web search tool, and what does each one add?
Anthropic has shipped three tool versions, each layering on a new capability rather than replacing the previous one:
| Tool version | What it adds |
|---|---|
web_search_20250305 | Basic web search with citations |
web_search_20260209 | Adds dynamic filtering |
web_search_20260318 | Adds response inclusion control, for agentic workflows |
Dynamic filtering, introduced in web_search_20260209, is the one worth paying attention to for GEO. It's available with Claude 4.6 and later models.
What is dynamic filtering, and why does it matter more than ranking in results?
With the basic tool version, every search result gets loaded into Claude's context window, whether or not it ends up useful. With web_search_20260209 or later, Claude instead writes and runs code that filters the results before they reach its context window, keeping only what's judged relevant. Anthropic's own docs frame this plainly: the point is to cut down on irrelevant content reaching Claude at all.
This is a real shift from how most people think about AI citation. The usual framing is "show up in search results, then win on content quality." Dynamic filtering adds a step in between: Claude's own code runs a relevance pass on the raw results before Claude, the model, ever reasons over them for the answer. A page can be technically present in the search results and still get filtered out before it's considered.
Does freshness affect what Claude cites?
It's a visible signal, not just an assumption. Each search result Claude receives carries a page_age field showing when the source was last updated. Anthropic's own example response shows this in practice: a Wikipedia result returned with "page_age": "April 30, 2025" alongside the content. Whether or not page_age factors into Claude's own relevance judgment or the dynamic filtering pass isn't spelled out in the docs, but the field existing at all means freshness data is part of what Claude has to work with when deciding what to use. Keeping a genuine last-updated date current, not just a cosmetic one, is a low-cost way to make sure that field says what you want it to say.
Can a domain get blocked from Claude's web search results?
Yes, and it can happen at two different levels, only one of which is about your own site.
At the request level, whoever is calling the Claude API can set either allowed_domains or blocked_domains on the web search tool (Anthropic's docs are explicit that a request can use one or the other, not both). That means a developer building a product on Claude might scope web search to a narrow allowlist that never includes your domain, for reasons that have nothing to do with your site's quality.
At the organization level, Claude Console administrators can disable web search entirely for their organization, or restrict which domains it's allowed to search, independent of any individual request. If web search is disabled for an org, any request that includes the tool fails outright with a 400 error, not a quiet result-level omission.
The practical read: if a specific product built on Claude never seems to cite you, it isn't automatically a signal about your content. It could be a domain restriction a developer set up on their own toolset, upstream of anything you control.
Why does Anthropic call citations a legal and attribution matter, not just a UX feature?
Anthropic's documentation puts this in explicit terms: when API outputs are shown to end users, "citations must be included to the original source." If a developer modifies, reprocesses, or combines Claude's output with other material before showing it to end users, Anthropic's guidance is to make citation display decisions "based on consultation with your legal team."
That's a stronger statement than most platforms make about citations. It signals that Anthropic treats attribution as a structural requirement for anyone building on the API, not a nice-to-have. For a business trying to get cited, it's a reason to expect citation behavior in Claude-based products to stay consistent rather than get quietly stripped out as products iterate.
Claude's citations are mandatory, capped at 150 characters per quote, and increasingly filtered by code before the model even sees your page. The move that matters most: write the sentence that answers each question as a complete, self-contained claim near the top of the section, not spread across a paragraph. That sentence needs to survive an automated relevance filter and still make sense quoted alone in under 150 characters.
Getting cited by Claude sits alongside, not instead of, getting cited by ChatGPT and Perplexity. Each platform's retrieval and citation mechanics differ enough that content built for one doesn't automatically transfer. If you haven't covered the other two yet, see how to get cited by ChatGPT and how to optimize for Perplexity for the platform-specific mechanics on each.
Is web search always on for Claude?
No. Web search is a tool a developer has to include in an API request for Claude to use it, and Claude decides per-query whether searching is worth it based on the conversation. What's always on, once the tool is included and a search happens, is citations: Anthropic's docs state citations are always enabled for web search and can't be disabled.
Does Claude's web search tool cost extra?
Yes. Web search on the Claude API costs $10 per 1,000 searches, on top of standard token costs for the search-generated content that gets added to the conversation. Each search counts as one use regardless of how many results it returns, and Anthropic's docs note that a search which errors out isn't billed.
What's the difference between web_search_20250305 and web_search_20260209?
web_search_20250305 is the original, basic version: web search with the always-on citations described above. web_search_20260209 adds dynamic filtering, where Claude writes and runs code to filter search results before they reach its context window, available with Claude 4.6 and later models. web_search_20260318 adds a further capability, response inclusion control, aimed at agentic workflows.
Does blocking web search for my domain mean something is wrong with my content?
Not necessarily. Domain-level blocking can happen upstream of your content entirely, either through a specific product's allowed_domains/blocked_domains configuration or through an organization-wide restriction set in the Claude Console. Neither of those reflects a judgment about your page.
Source: Anthropic, Web search tool documentation, retrieved and independently verified 2026-09-06.
This post is part of our GEO Optimization guide. Related reading: ChatGPT vs Gemini, Product Pages Beat Blogs for B2B AI, 1 in 10 AI Citations Are From Self-Promo.

Walid founded AY Rank to help businesses dominate AI search. He leads the GEO methodology and oversees client strategy across 50+ cities in Europe, Middle East, and North Africa.
Full Bio →


