Web search is a server-side tool: you declare it in the tools array, and the platform — not your code — executes the searches and feeds results back to the model mid-request. That "the platform executes it" detail is exactly why availability fragments across deployment surfaces. Client-implemented tools travel everywhere because you run them; server-side tools only exist where the operator has built the execution machinery.
The three tiers
| Platform | Web search | Notes |
|---|---|---|
| Claude API (1P) | Full | All variants, incl. newer _20260209-generation tooling |
| Claude Platform on AWS | Full | Same-day parity surface; server tools supported |
| Amazon Bedrock | Absent | No web search, web fetch, or code execution |
| Google Vertex AI | Basic only | web_search_20250305; no _20260209 dynamic filtering |
| Microsoft Foundry | Beta | Hosted-on-Anthropic deployments only |
Absent (Bedrock). Anthropic's Bedrock documentation lists web search among the server-side tools not supported there, alongside web fetch and code execution. A request declaring the tool won't degrade gracefully — there is simply no server-side search machinery on that surface. Teams on Bedrock that need grounded answers typically implement search as a client tool: the model requests a search, your code calls a search provider, and you return results (ideally as search_result content blocks, which Bedrock does support).
Basic (Vertex AI). Vertex supports web search, but only the web_search_20250305 variant. The newer _20260209 generation — the one with dynamic filtering — is not supported there. Google's own pricing page lists Claude web search at $10 per 1,000 searches, matching Anthropic's rate. If your prompt engineering leans on newer search-variant behavior, results on Vertex will differ, not just cost the same.
Full (1P and Claude Platform on AWS). Both Anthropic-operated surfaces support the tool fully at $10 per 1,000 searches plus standard token costs; each search counts as one use regardless of results returned, and errored searches are not billed. On Foundry, web search is in beta and — like all server-side tools there — available only on Hosted-on-Anthropic deployments; against an Azure-hosted deployment such requests return 400 by design.
Gate the tool at initialization, not per request
Platform capability is static for the lifetime of a deployment, so resolve it once when the process starts. A small capability map beats runtime probing — it's deterministic, testable, and doesn't burn a request to find out what you already know at deploy time:
WEB_SEARCH_BY_PLATFORM = {
"anthropic": {"type": "web_search_20260209", "name": "web_search"},
"claude_aws": {"type": "web_search_20260209", "name": "web_search"},
"vertex": {"type": "web_search_20250305", "name": "web_search"},
"bedrock": None, # server-side search unavailable
"foundry": None, # enable only for Hosted-on-Anthropic deployments
}
def build_tools(platform: str, base_tools: list) -> list:
ws = WEB_SEARCH_BY_PLATFORM[platform]
return base_tools + [ws] if ws else base_tools
Two design notes. First, when the tool is absent, decide explicitly what replaces it: a client-implemented search tool, a retrieval pipeline, or a prompt that tells the model it has no live web access (so it stops offering to search). Silent removal without prompt adjustment produces a model that confidently references "current" information it cannot fetch. Second, keep the variant string in the capability map, not scattered through prompt-building code — when Vertex or Foundry availability changes, you want one line to update.
Web fetch is even more restricted
Teams often pair web search with the web fetch tool — search finds pages, fetch pulls a specific URL's full content. Fetch is narrower still: available on the first-party API and Claude Platform on AWS, absent on both Bedrock and Vertex AI, and beta on Foundry. So on Vertex you can have Claude search but not retrieve a full page server-side, which changes how much you can ground answers in primary sources. Where it does exist, web fetch carries no per-use fee beyond standard token costs — but fetched pages can be large (Anthropic estimates a 500 kB PDF at roughly 125,000 tokens), so set max_content_tokens to cap what a single fetch can pull into your bill. Put fetch in the same per-platform capability map as search, and give each entry its own fallback story.
Where to go next
The web search tool reference covers request and response shapes; the three web-search versions explains what the variants differ on; and Vertex web search grounding goes deeper on the Google-side experience. For the whole availability picture, see the feature matrix.