Anthropic's web search tool lets Claude ground its answers in live web results, with citations attached automatically. The Message Batches API lets you submit large sets of requests for asynchronous processing instead of calling the API one request at a time. The official docs confirm the two compose: web search works inside batched jobs. This article covers what that costs, how it is throttled, and why the combination is effectively a first-party-surface feature.
How a batched search request looks
Nothing about the tool definition changes inside a batch — each request in the batch simply includes the web search tool the way a real-time request would. On Claude Platform on AWS:
from anthropic import AnthropicAWS
client = AnthropicAWS()
batch = client.messages.batches.create(requests=[
{"custom_id": f"company-{i}",
"params": {
"model": "claude-sonnet-5",
"max_tokens": 1024,
"tools": [{"type": "web_search_20260318",
"name": "web_search", "max_uses": 3}],
"messages": [{"role": "user",
"content": f"Find the current CEO of {name}."}]}}
for i, name in enumerate(companies)])
Setting max_uses matters more in batches than anywhere else: at batch scale, an agentic model that decides to search five times per item instead of once multiplies your search bill by five with nobody watching. Past the cap, further searches fail with the error code max_uses_exceeded.
Pricing: the search fee does not get a batch discount
Web search costs $10 per 1,000 searches, plus standard token costs for the search-generated content. Each search counts as one use regardless of how many results it returns, and errored searches are not billed. Inside the Message Batches API, the docs are explicit that searches are billed at the same per-search price — batching your requests does not discount the $10 per 1,000 search fee. Budget the two components separately: token costs for the requests themselves, and the flat per-search fee on top, driven by however many searches the model actually performs across the whole batch. Remember also that retrieved search results are billed as input tokens, both in the turn that performs the search and again in any subsequent turns where they remain in context.
Throttling: a per-organization limit on batched searches
The web search documentation notes that batched search calls are subject to per-organization throttling. Anthropic does not publish a specific number in the docs, so treat it as a design constraint rather than a quota you can plan against precisely: a batch of 50,000 requests that each search three times will not execute 150,000 searches at arbitrary speed. Practical consequences for pipeline design:
- Expect search-heavy batches to complete more slowly than token-only batches of the same size.
- Keep
max_useslow (1–3) so throughput is spent on breadth, not depth. - If multiple teams in the same organization run search-heavy batches, they share the throttle — coordinate scheduling.
Why this doesn't work on Bedrock or Vertex
Two independent availability gaps stack here. First, the Message Batches API is an Anthropic endpoint available on the Claude API and Claude Platform on AWS — it is not available on Amazon Bedrock, Google Vertex AI, or Microsoft Foundry. Second, the web search tool itself is not available on Bedrock at all, and Vertex AI offers only the basic web_search_20250305 variant. So on Bedrock the combination fails twice over, and on Vertex the searching half exists but the batching half does not.
Be careful with the phrase "no batch on Bedrock/Vertex," though: both clouds offer their own cloud-native batch inference for Claude — S3-based on Bedrock, BigQuery/GCS-based on Vertex with 50% batch pricing. Those are different mechanisms from Anthropic's Message Batches API, and neither is documented to include Anthropic's server-side web search tool. If your workload is "batch plus live web grounding," the documented homes for it are the first-party Claude API and Claude Platform on AWS. On Foundry, web search exists for Hosted on Anthropic deployments, but the Message Batches API is not available there at all. See batch availability across platforms and the Bedrock batch workaround for the alternatives.
Where to go next
For the tool's full parameter surface — domain allow/block lists, user_location, dynamic filtering — see the web search tool deep dive; for batch fundamentals, start with batch processing and the feature matrix.