Claude’s web search runs on Brave Search. Anthropic’s subprocessor registry says so, and the first part of this study confirms it independently, in the data. But the provider is only the first question. Brave hands Claude roughly 20 results per search, and Claude’s final answer cites a handful. Something in the middle decides which pages survive.
This study measures that something at every step: 1,100 Claude Sonnet 5 responses, their 2,290 searches, 45,043 matched Brave results, 21,203 delivered pages, and full downloads of all 34,491 result URLs.
Methodology
Six steps, each producing data the next step is checked against. The prompts come from a larger industry research project: each asks for the top sites or providers for a specific buyer scenario, across 100 industries with 11 prompt variants each.
- Run 1,100 prompts through Claude Sonnet 5 (claude-sonnet-5) with Anthropic’s web search tool enabled. The API response records everything: every search query, every result the tool returned, the answer text, and structured citations quoting the exact text spans cited.
- Extract the four layers from each response: the recommended domains, the citations, the citation sources, and the 2,290 fanout search queries (2,282 unique).
- Execute all 2,282 queries on the Brave Search API within 24 hours of the original responses, 20 results per query. Every query returned a result file: 100% coverage.
- Run the same prompts with web search turned off, roughly 10 times per industry and persona pair (10,538 responses). This is the memory baseline: what the model recommends with no search at all.
- Compare every stage against the others: Claude’s delivered results against Brave’s rankings, citations against delivered results, recommendations against the Brave data and against the memory baseline.
- Download all 34,491 unique result URLs and check every recommended brand against the actual text of the pages Claude’s tool delivered.
Matching rules throughout: URL matching ignores scheme, www, and trailing slashes but keeps paths and query strings; host matching compares registrable hostnames.
Three caveats up front:
- This is one model (Claude Sonnet 5) on one prompt family. The citation-selection numbers describe this corpus, not every Claude use case.
- The 24-hour gap between Claude’s searches and my Brave queries means both indexes moved a little. That makes the match rates below more impressive, not less.
- 13.4% of result URLs did not download (a small set of hosts blocks crawlers outright). Where that matters, numbers are reported both overall and for the subset of responses where every page downloaded.
The Short Answer
- Claude’s search tool takes Brave’s web results and filters roughly 20 down to 9, mostly by Brave’s own ranking, with a measurable preference for fresh pages.
- It fetches about 4 KB of page content per survivor and hands that to the model. That is the model’s entire window onto the web: across all 1,100 responses there is not one tool call besides web search, and outbound links from fetched pages are never followed.
- The model cites about half of those pages. Two things predict which half: whether a page showed up in more than one of the response’s searches, and whether it belongs to a brand Claude decided to recommend.
- Everything else tested, including Brave’s FAQ, video, and discussion results, snippet text, and how often a domain appears in the response, showed little or no effect. If a page is not in Brave’s web top 10 for the kind of query Claude writes, it effectively does not exist to Claude.
- The chain closes. Checked against the downloaded pages, 93.0% of everything Claude recommends is linked or named in the text its search tool delivered, and at full page coverage only 1.5% of recommendations look like pure model memory. Claude is not guessing. It reads the pages and repeats what they say.
The Queries Claude Writes
Claude averages 2.1 searches per response, and the queries are plain keyword strings averaging 9.2 words. Search operators are essentially absent: across 2,290 searches, 1 site: operator, 3 uses of OR, and 8 quoted phrases. The structure is rigid, and it shows up clearest in the first and last words of the 2,282 unique queries. First words:
| First word | Queries | Share |
|---|---|---|
| best | 1,172 | 51.4% |
| top | 396 | 17.4% |
| enterprise | 27 | 1.2% |
| b2b | 19 | 0.8% |
| largest | 18 | 0.8% |
| affordable | 13 | 0.6% |
| managed | 12 | 0.5% |
| most | 10 | 0.4% |
“Best” and “top” together open 68.7% of all queries. The ten most common first words cover 73.8%, and nothing outside this table exceeds 1.2%. Last words:
| Last word | Queries | Share |
|---|---|---|
| 2026 | 410 | 18.0% |
| reviews | 107 | 4.7% |
| comparison | 76 | 3.3% |
| 2025 | 66 | 2.9% |
| management | 28 | 1.2% |
| compliance | 22 | 1.0% |
| review | 21 | 0.9% |
| companies | 15 | 0.7% |
| rankings / ranking | 28 | 1.2% |
The suffixes look small individually, but they stack: 20.9% of queries end with a year, and adding the evaluation words (“reviews”, “review”, “comparison”, “rankings”, “ranking”) brings it to 31.0%. 28.1% of queries contain a year somewhere. Endings like “management” and “compliance” are industry vocabulary, not template.
The pattern stops there. There is no deeper template: after “best”, the most common second word appears just 2.8% of the time. The formula is an opener (“best” or “top”), the topic vocabulary of whatever the user asked about, and an optional year or evaluation word. That is the recipe for the queries Claude will run for your category.
Confirming the Brave Connection
The paper trail is public:
- Anthropic’s Trust Center lists Brave Search as a subprocessor supporting web search across its products.
- Its Claude for Government documentation is more direct: the web search connector “calls the Brave Search API” and transmits only the reformulated query string.
- When native web search launched in March 2025, Simon Willison documented a freshly added Brave subprocessor entry, matching result sets, and a tool schema parameter literally named BraveSearchParams.
(One exception for precision: Anthropic’s help documentation says Claude’s image search is powered by Bing, not Brave.)
What the documentation does not tell you is how faithfully the tool relays Brave’s results. That is measurable. Of the 21,203 results Claude’s search tool delivered, 95.8% appear in Brave’s top 20 web results for the identical query, matched URL for URL. At the hostname level it is 97.1%. Only 6 of 2,290 searches had zero overlap, and 5 of those were queries where Brave’s API itself returned no web results (heavy operator queries that Brave choked on).
99.3% of the 20,310 URL-matched results carry byte-for-byte identical titles in Claude’s search tool and Brave’s API. Same index, same snippeting pipeline.
Our data: 1,100 Claude Sonnet 5 responses vs matched Brave SERPs, July 2026.
Rank order agrees as well: the mean Spearman correlation between Claude’s result ordering and Brave’s is 0.735, positive for 98.3% of queries. Claude’s average result at position 1 sits at Brave position 1.9; Claude’s position 10 sits at Brave position 10.6. Claude’s result list is Brave’s result list, lightly filtered.
The Parts of Brave That Do Nothing
A Brave API response is bigger than 20 web links. In this corpus, 74.1% of responses include an FAQ section (15.2 results on average), 73.1% a discussions section of forum and Reddit threads (6.7 results), and 53.3% a videos section (5.1 results). I tested each section against what Claude retrieved and cited. None of them matter:
- Discussions: 0.1% of Claude’s delivered URLs appear in the discussions section, and the number that appear there exclusively (not also in web results) is zero. Uptake: 16 out of 11,306.
- Videos: zero video results were delivered to Claude. Not a small number. Zero, out of 6,271.
- FAQ: this one looks like a signal at first. 17.3% of Claude’s delivered URLs appear in Brave’s FAQ section. But 99.4% of FAQ result URLs duplicate URLs already in the web section. The FAQ section contributed 5 exclusive URLs out of 21,203 delivered.
Appearing in multiple sections does not help either. Controlling for rank, a web result whose host also shows up in other sections gets selected at 87.3% in positions 1-5, versus 87.1% for hosts that appear nowhere else. Same for holding multiple web slots: a host with 3 or more of the 20 positions gets each one selected at roughly the same rate as anyone else.
Brave’s FAQ, discussion, and video sections together contributed 5 exclusive URLs out of the 21,203 results delivered to Claude. Every path from Brave to Claude runs through the 20 organic web results.
Our data: 43,472 non-web section results tested across 2,290 searches.
How 20 Results Become 9
A scale note first: the figures in this section are per query. A typical response runs 2.1 searches, so roughly 41 Brave results are in play per response. The tool delivers 19.3 of them (18.0 unique pages once cross-query overlap is removed), and the model goes on to cite 9.8. Per individual query it is about 20 in, 8.9 out.
So which 9 of Brave’s 20? Selection rate tracks Brave’s ranking closely:
| Brave rank | 1 | 3 | 5 | 7 | 10 | 12 | 15 | 20 |
|---|---|---|---|---|---|---|---|---|
| Delivered to Claude | 89.4% | 88.4% | 82.1% | 73.8% | 46.1% | 26.0% | 12.5% | 4.0% |
It is not a simple cutoff, though. Only 6.3% of queries take Brave’s list exactly as ranked. The filter skips things, and the skips are not random. Two features stand out after controlling for rank:
- Freshness. Among Brave’s top 5 results, pages older than 24 months get delivered 74.7% of the time versus 86.5% for pages under 6 months old. The penalty holds in positions 6-10 (55.2% versus 64.8%). Pages with no date at all do best of anyone, at 93.8% in the top 5.
- Title relevance. In positions 6-10, results whose title contains most of the query’s content words get delivered 72.0% of the time versus 60.9% when the title contains few of them.
No meaningful effect: whether Brave attached extra snippets to the result, and PDF versus HTML (a modest penalty on a small sample). This filtering happens inside the search tool, before the model sees anything. The delivered results and the citation-source pool are the same thing by construction, so this filter is the entire answer to “how does a search result become a citation source.”
What Claude Actually Reads
Each delivered result carries roughly 4 KB of page content (median 3.9 KB across all 21,203 results). Far more than a search snippet, far less than a full page: the tool fetches pages and hands the model a condensed extract of each one.
The citation data proves the model reads those extracts rather than the search snippets. Claude’s structured citations quote the exact text span being cited, and I checked 12,052 of those spans against the complete text of the Brave response for the same queries: every description, extra snippet, FAQ answer, and discussion excerpt. 55.7% of the quoted spans appear nowhere in any of it. More than half of what Claude cites can only have come from the fetched page content.
At the same time, the model never leaves the walls of the tool. 98.7% of citation URLs are exactly URLs the tool delivered, 1.0% are deep links the model wrote to a delivered host, and 0.2% (27 citations out of 10,835) point at hosts that were never delivered at all.
This also settles whether a site can get cited by being mentioned in other sites’ content, for example inside a “best of” snippet on someone else’s page. The answer is no. Only 8.9% of Brave web results mention any other domain in their snippet text, and across the entire corpus exactly one cited host existed only as a text mention. To be cited, you have to be a search result yourself.
Does Claude Follow the Links?
The scenario worth testing explicitly: Claude retrieves a “best CRM software” listicle and learns which ten vendors it recommends. Does it then follow the listicle’s outbound links to check those vendors’ own sites? If it did, URLs that Brave never returned would flow into the pipeline somewhere. Four measurements close this off:
- Tool calls. Across all 1,100 responses there are 2,290 tool calls, and every single one is a web search. No fetch call, no browse call, zero exceptions. The mechanism for following a link does not appear in this data.
- Delivered URLs. 95.8% match Brave’s top 20 exactly. Of the rest, 1.3% are a different URL on a host in the same query’s top 20 and 0.5% are hosts from another of the response’s searches, both consistent with rank movement. That leaves 2.4% (501 URLs) on hosts absent from every SERP in the response: the ceiling for any kind of discovery, and its size matches one day of index drift, not a browsing behavior.
- Citations. 98.7% are exactly delivered URLs. 109 are model-written deep links on delivered hosts, and 27 out of 10,835 point at hosts that were never delivered at all.
- Recommended brands. 37.4% had a page of their own delivered. Another 6.2% were in Brave’s results but filtered out by the tool. 2.1% appeared only as a domain mention in snippet text. The remaining 54.4% (5,983 recommendation slots) are absent from the entire Brave response for that answer.
54.4% of the brands Claude recommends never appear anywhere in the Brave data for that response. Not as a result, not as a snippet mention. Their names travel from the text of fetched listicle pages into the answer.
Our data: 11,000 recommendation slots across 1,100 responses.
That last number needs one more step. Claude never opened those brands’ sites, so the names came from one of two places: the text of the pages Claude did read, or the model’s own memory from training. I cannot check the pages directly in the response data, because the page content there is stored encrypted. But this dataset contains another way to separate the two.
Memory or Page Text? The No-Search Baseline
The same industry and persona prompts were also run without web search, roughly 10 times each: 10,538 responses where the model recommends brands from training memory alone. If a brand shows up in the memory-only runs, memory can explain it. If a brand never shows up in ten memory-only runs, memory almost certainly did not produce it. Comparing each fanout answer to its baseline:
- 52.9% of the search-grounded recommendations also appear in the memory-only runs, and 42.7% appear in at least half of them. Roughly half of the “searched” answer is what the model would have said anyway.
- 47.1% never appear in the memory-only runs. Search put those brands into the answer.
- The displacement runs both directions: 52.3% of the brands the model consistently recommends from memory disappear once search results arrive.
Now the 54.4% of recommended brands that never appear in the Brave data can be split. 60.4% of them do show up in the memory-only runs, so memory can account for them (33.3% of all recommendation slots). The remaining 2,366 slots, 21.9% of all recommendations, appear nowhere in the Brave data and in none of the memory-only runs. Only one source is left: the text of the pages the search tool fetched.
21.9% of everything Claude recommends can only be explained by the text of the fetched pages: absent from Brave’s results, absent from its snippets, and absent from ten memory-only runs of the same prompt.
Our data: 10,820 fanout recommendation slots vs 10,538 no-search responses.
One reading note: the test is asymmetric. A brand missing from ten memory runs is strong evidence memory did not produce it. A brand present in the memory pool is weaker evidence the other way, because the model may still have taken it from the page text. So 21.9% is the floor for page-text-sourced recommendations, not the ceiling. Up to this point, though, the page-text conclusion rested on elimination. The last step was to stop inferring and go read the pages.
Downloading the Pages to Check
I downloaded all 34,491 unique Brave result URLs through a proxy network. 86.6% returned HTTP 200, and the failures concentrate exactly where you would expect. At the host level, 89.4% of the 15,786 distinct hosts allowed every URL through, 9.0% blocked everything, and almost nothing sits in between. The complete blockers include g2.com, clutch.co, statista.com, tripadvisor.com, and homedepot.com; reddit.com let through 11.8% of 930 URLs, gartner.com 15.0%, yelp.com 17.3%, forbes.com 40.5%. (These blocks apply to my crawler, not Claude’s: every result Claude’s tool delivered arrived with fetched page content attached, so Anthropic’s fetcher got through where mine sometimes could not.)
Then the direct test: for every one of the 11,000 recommendation slots, is the brand linked or named in the downloaded text of the pages delivered for that response? Overall, 93.0% are, rising to 95.8% among responses where every delivered page downloaded successfully. The bucket that matters most is the one the previous section could only argue by elimination, brands absent from all Brave data and absent from memory:
Of the brands Claude recommends with no trace in Brave’s data and no trace in ten memory-only runs, 86.4% are named or linked in the downloaded text of the pages its search tool delivered. Restricted to responses where every page downloaded, it is 90.4%.
Our data: 2,380 recommendation slots checked against 17,002 downloaded pages.
How those brands appear in the pages matters for anyone doing this work: in that bucket, 83.7% are named in the page text while only 41.7% are linked. Plain-text mentions outnumber links two to one, and since Claude never follows links anyway, the mention is what does the work.
The downloaded pages also settle the memory question with a hard number. Among the 1,420 recommendation slots where every delivered page downloaded, just 1.5% (22 slots) have zero page evidence while sitting in the model’s memory pool. Those are the plausible pure-memory recommendations, and they are a rounding error. Another 2.7% (38 slots) have zero evidence anywhere, and that list includes schwab.com and fidelity.com, brands that would unquestionably be named in any brokerage roundup: pages that changed in the ten days between Claude’s run and my download, or pages that render with JavaScript my crawler does not execute. There is no measurable population of recommendations where Claude ignored the research and substituted its own judgment.
What Lowers a Page’s Odds
Before the positive signals, the penalties. These are the measured factors that reduce a page’s chances of surviving the pipeline, each compared at equal Brave rank where that matters:
- Content older than 24 months. Among Brave’s top 5 results, pages older than two years get delivered 74.7% of the time versus 86.5% for pages under six months. In positions 6-10 it is 55.2% versus 64.8%. A consistent 10-12 point penalty for stale content, at identical rank.
- Ranking below position 10. Delivery falls from 46.1% at Brave rank 10 to 26.0% at rank 12, 12.5% at rank 15, and 4.0% at rank 20. Page two of Brave might as well not exist.
- A title that does not match the query. In positions 6-10, results whose title contains few of the query’s content words get delivered 60.9% of the time versus 72.0% for strong-match titles. The same gap shows up again at citation time: 49.3% versus 56.4%.
- Flooding the results with one host. When 3 or more delivered pages share a host, each one’s citation rate drops to 45.3%, below the 51.2% baseline and below the 55.1% rate for hosts with two pages. Extra slots do not compound; past two they dilute.
- PDFs. In positions 6-10, PDFs get delivered 48.0% of the time versus 63.7% for regular pages. The sample is small (42 PDFs in the top 10 across the corpus), but the direction is consistent.
- Existing only outside the web results. Presence in Brave’s FAQ, discussion, or video sections, or as a brand mention inside other sites’ snippet text, produced effectively zero deliveries and zero citations, as covered above.
Which Delivered Pages Get Cited
The model cites 51.2% of the pages it receives. I tested every feature I could compute for its effect on that rate. Two dominate:
| Feature | Citation rate | Baseline |
|---|---|---|
| Page returned by 2+ of the response’s searches | 80.5% | 48.9% (single search) |
| Page on a domain Claude ends up recommending | 73.9% | 42.3% (third-party host) |
| Page shown in positions 1-3 of its result block | 59.7% | 44.9% (positions 7-10) |
A page returned by two or more of a response’s searches gets cited 80.5% of the time. A page returned by one search: 48.9%. Corroboration across queries is the strongest citation signal in the data.
Our data: 19,763 delivered pages, 1,438 of them returned by multiple searches.
The weak signals matter just as much. Title keyword overlap with the query moves the rate from 49.3% to 56.4%, small. And the multi-section presence that did nothing for selection also does roughly nothing for citation (56.7% versus 50.3%, most of it explained by which hosts those are).
From Citations to Recommendations
These prompts end with Claude recommending about 10 domains each, 11,000 recommendation slots across the corpus. The citations split 40.2% on the recommended brands’ own domains and 59.8% on third-party pages: the listicles, review roundups, and comparison articles that rank for “best X” queries.
The more surprising number is how rarely Claude touches the brands it recommends. Only 37.4% of recommended domains had even one of their own pages delivered by the search tool, and only 33.0% got one of their pages cited. Most of the time, Claude recommends a brand based entirely on what third-party pages say about it. The brand’s own site never enters the conversation.
Where in the List Do Winners Sit?
If the recommendations come out of listicles, does position inside the listicle matter? Is the #1 item in a top-10 list worth more than the #10 item? The downloaded pages can answer this. I ran every delivered page through trafilatura, which extracts the main article content with its links in document order. The outbound-linked domains in the main content become ranked candidates: first linked domain is position 1, second is position 2, and so on. Restricting to list-like pages (5 or more candidates: 3,575 pages, 42,508 candidate slots), the recommendation rate by article position:
| Article position | 1 | 2 | 3 | 4-5 | 6-10 | 11+ |
|---|---|---|---|---|---|---|
| Recommended by Claude | 21.9% | 24.4% | 24.8% | 22.1% | 17.5% | 7.6% |
Two findings. First, being #1 in the list buys nothing over being #3 or #5: positions 1 through 5 all convert at 22 to 25%. The cliff comes after position 10, where the rate collapses to 7.6%. Being in the first ten items is what matters, not being at the top of them. Second, the Brave rank of the page barely moves this table: a position-1 item converts at 22.2% when the page ranks 1-5 in Brave and 19.9% when it ranks 11-20. Brave rank decides whether the page gets delivered at all; once Claude is reading it, list position takes over.
One scope note: this measures linked items, because link order is the reliable way to read list position out of 14,000 heterogeneous pages. Brands named but never linked are not in these denominators; the earlier finding that mentions outnumber links two to one still stands.
What to Do With This
The pipeline is narrow and each stage is measurable, which makes the practical work unusually concrete. If you want Claude Sonnet to cite or recommend you:
- Rank in Brave’s web top 10 for “best/top + your category” queries. Selection falls off a cliff after position 10 (46.1% at rank 10, 4.0% at rank 20). Brave has its own index and its own webmaster tools; treat it as a first-class search engine, because for Claude it is the only one.
- Target the query template, prefix and suffix. The openers are “best” (51.4% of queries) and “top” (17.4%); nothing else exceeds 1.2%. The endings that matter are a year (20.9%) and the evaluation words “reviews”, “review”, “comparison”, “rankings” (another 10.1%). A recurring middle shape is “for {segment}”: “best banks for startups”, “best renters insurance for seniors”. Cross those three parts with your category vocabulary, check your Brave rankings against each one, and refresh the year variants when the calendar turns.
- Keep pages dated and current. Pages older than 24 months take a 10-12 point selection penalty at equal rank. Update the content and the visible date.
- Cover adjacent queries. The 31-point corroboration bonus means a page that ranks for several related queries (“best X for startups”, “top X 2026”, “X comparison”) gets cited at 80% instead of 49%. Breadth across the query family beats a single ranking.
- Get named in the third-party pages that already rank. 59.8% of citations are listicles and reviews, and most recommendations are grounded only in third-party coverage. Being present in the roundups that hold Brave’s top 10 is worth more than most on-site work. And the body text carries you: recommended brands are named in plain text 83.7% of the time versus linked 41.7%, and Claude never follows links regardless. An unlinked mention counts exactly as much as a linked one. What matters is being named, prominently enough to survive a condensed extract of the page.
- Be in the first ten items, not necessarily at the top. Inside the ranked lists, positions 1-5 convert to recommendations at 22-25% and positions 6-10 at 17.5%; after position 10 the rate drops to 7.6%. Fighting from #5 to #1 in a roundup buys nothing. Falling off the first ten items costs two thirds of your odds.
- Find out which half you are in. Run your category prompt against Claude with web search turned off. If your brand comes back, you are in the model’s memory, and your risk is displacement: half of consistent memory picks get dropped when search arrives. If it does not come back, the fetched pages are your only way in, and everything above is the whole game.
- Stop optimizing the things that do not matter here. Brave’s FAQ, video, and discussion sections contribute nothing. Snippet mentions of your brand on other sites cannot produce a citation. Multiple slots in one result page do not compound.
The Chain, End to End
- Claude Sonnet 5 writes about 2 plain keyword queries per answer: 69% start with “best” or “top”, 21% end with a year.
- Brave returns about 20 web results per query. The FAQ, discussion, and video sections it also returns are ignored entirely.
- A filter inside the search tool keeps about 9 of the 20, following Brave’s ranking closely (89% at rank 1, 46% at rank 10, 4% at rank 20), with a preference for fresh pages and relevant titles.
- Each survivor is fetched and delivered to the model as a 4 KB content extract, and the extracts are what the model actually reads: 56% of its quoted citations appear nowhere in the search results’ own text. It never makes any tool call besides web search and never follows a page’s outbound links.
- The model cites half of what it receives, favoring pages that multiple searches corroborated (80.5% versus 48.9%) and the official domains of brands it recommends (73.9% versus 42.3%).
- 54% of the brands it recommends appear nowhere in the Brave data at all. Against the no-search baseline, 53% of final recommendations match what the model says from memory alone; search rewrites the other 47%.
- Downloading the 34,491 result pages closes the loop: 93.0% of everything Claude recommends is linked or named in the delivered pages’ text, the no-trace brands confirm at 90.4% under full page coverage, and pure-memory recommendations measure 1.5%.
- Six in ten citations land on third-party listicles and reviews, and 63% of recommended brands never have a single page of their own enter the pipeline. Inside those lists, any spot in the first ten items converts at roughly one in five; below the tenth item, one in thirteen.
- Ranking in Brave’s web top 10 for the query template is the gate everything else sits behind.
All numbers come from 1,100 Claude Sonnet 5 responses collected in early July 2026, their 2,290 web searches, matched Brave Search API results for all 2,282 unique queries fetched within 24 hours, 10,538 no-search control responses, and full downloads of the 34,491 result URLs. Every percentage is reproducible from the raw response, SERP, and page data.