「zero data retention」(ゼロデータ保持)、すなわちZDRがこの機能にどのように適用されるかについては、APIとデータ保持を参照してください。
ウェブ検索ツールは、Claudeにリアルタイムのウェブコンテンツへの直接アクセスを提供し、知識のカットオフを超えた最新情報で質問に答えられるようにします。レスポンスには、検索結果から引用されたソースの引用が含まれます。
web_search_20260209以降のバージョンでは、Claudeは検索結果がコンテキストウィンドウに到達する前にフィルタリングするコードを記述して実行でき(動的フィルタリング)、関連する情報のみを保持します。動的フィルタリングは、Claude 4.6以降のモデルおよびClaude Mythos Previewで利用できます。
ウェブ検索ツールには3つのバージョンがあります。
web_search_20250305: 基本的なウェブ検索web_search_20260209: 動的フィルタリングを追加web_search_20260318: エージェント型ワークフロー向けのレスポンス包含制御を追加このページの例では、基本的な検索にはweb_search_20250305を、動的フィルタリングにはweb_search_20260318を使用しています。
Claude Mythos Previewでは、ウェブ検索はClaude API、Google Cloud、Microsoft Foundryでサポートされています。Amazon BedrockまたはClaude Platform on AWS上のMythos Previewでは、ウェブ検索は利用できません。
ウェブ検索のZero Data Retention(ゼロデータ保持)の適格性と関連するallowed_callersの設定については、サーバーツールを参照してください。
モデルのサポートについては、ツールリファレンスを参照してください。
APIリクエストにウェブ検索ツールを追加すると、次のように動作します。
Claudeは、リクエストが最新の情報、変化する情報、または訓練データの範囲外の情報に依存する場合に検索します。
Claudeは、リクエストが安定した知識に基づく場合、検索せずに直接回答します。
検索のトリガーはシステムプロンプトで制御できます。Claudeがより積極的に検索するように促すことも、直接回答することを優先するように促すこともできます。厳密な制約が必要な場合は、max_usesを使用して各リクエストの検索回数に上限を設定してください。
基本的なウェブ検索では、すべての検索結果がClaudeのコンテキストウィンドウに読み込まれ、そのコンテンツの多くはリクエストに関係がない場合があります。web_search_20260209以降では、Claudeは代わりに結果を先にフィルタリングするコードを記述して実行するため、関連するコンテンツのみがコンテキストウィンドウに到達します。これにより、検索を多用するリクエストでのトークン使用量が削減されます。
動的フィルタリングは、コード実行の内部からウェブ検索を実行します。web_search_20260209以降では、ツールのallowed_callersフィールドはデフォルトで["code_execution_20260120"]になり、動的フィルタリングが実行されると、APIはリクエストに必要なコード実行を自動的にプロビジョニングします。コード実行ツールを自分でtoolsに追加する必要はありません。この方法で行われるコード実行の呼び出しには、標準のトークンコスト以外の追加料金はかかりません。
動的フィルタリングなしでウェブ検索を直接呼び出すには、allowed_callers: ["direct"]を設定します。プログラマティックツール呼び出しをサポートしていないモデルでは、この設定が必要です。設定しない場合、APIは設定するように指示する400エラーを返します。
ウェブ検索ツール(動的フィルタリングの有無にかかわらず)は、Claude API、Claude Platform on AWS、およびMicrosoft Foundryで利用できます。Microsoft Foundryでは、ウェブ検索にはHosted on Anthropicデプロイメントが必要です。Google Cloudでは、基本的なウェブ検索ツール(動的フィルタリングなし)のみが利用できます。Amazon Bedrockではウェブ検索は利用できません。
以下の例ではweb_search_20260318を使用しています。
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5",
max_tokens=4096,
messages=[
{
"role": "user",
"content": "Search for the current prices of AAPL and GOOGL, then calculate which has a better P/E ratio.",
}
],
tools=[{"type": "web_search_20260318", "name": "web_search"}],
)
print(response)ウェブ検索は、管理者がClaude Consoleで無効にしていない限り、組織で有効になっています。管理者は検索対象のドメインを制限することもできます。無効になっている場合、このツールを含むリクエストは、検索結果内のエラーコードではなく、ウェブ検索が有効になっていないことを示す400 invalid_request_errorで失敗します。
APIリクエストでウェブ検索ツールを指定します。
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[{"role": "user", "content": "What's the weather in NYC?"}],
tools=[{"type": "web_search_20250305", "name": "web_search", "max_uses": 5}],
)
print(response)ウェブ検索ツールは以下のパラメータをサポートしています。
{
"type": "web_search_20250305",
"name": "web_search",
// Optional: Limit the number of searches per request
"max_uses": 5,
// Optional: Only include results from these domains.
// Use allowed_domains or blocked_domains, not both.
"allowed_domains": ["example.com", "trusteddomain.org"],
// Optional: Never include results from these domains
"blocked_domains": ["untrustedsource.com"],
// Optional: Localize search results
"user_location": {
"type": "approximate",
"city": "San Francisco",
"region": "California",
"country": "US",
"timezone": "America/Los_Angeles"
}
}すべてのウェブ検索ツールのバージョンはallowed_callersを受け付けます。これは、Claudeがウェブ検索を直接呼び出すか、動的フィルタリングを通じてコード実行から呼び出すかを制御します。web_search_20260209以降では、デフォルトが["direct"]ではなく["code_execution_20260120"]になります。設定方法については、サーバーツールを参照してください。web_search_20260318以降では、response_inclusionも受け付けます。
max_usesパラメータは、実行される検索の回数を制限します。Claudeが許可された回数を超えて検索を試みた場合、web_search_tool_resultはmax_uses_exceededエラーコードを持つエラーになります。
単純な事実確認のクエリでは通常1〜3回の検索を使用します。比較や複数のエンティティにわたる調査では10回以上使用することがあります。値の選択に関するガイダンスについては、サーバーツールを参照してください。
allowed_domainsまたはblocked_domainsのいずれか一方を指定してください。両方を指定することはできません。リクエストに両方が含まれている場合、APIは400エラーを返します。エントリは、スキームを含まない、オプションのパス付きのドメインのみです(例: example.comやexample.com/blog)。
ドメインフィルタリングの完全なルールについては、サーバーツールガイドのドメインフィルタリングを参照してください。
user_locationパラメータを使用すると、ユーザーの位置情報に基づいて検索結果をローカライズできます。city、region、country、timezoneのうち少なくとも1つを指定してください。
type: 位置情報のタイプ(approximateである必要があります)city: 都市名region: 地域または州country: 2文字のISO 3166-1 alpha-2国コード。APIはサポートされていない国コードを400エラーで拒否します。timezone: IANAタイムゾーンID。web_search_20260318以降が必要です。
response_inclusionパラメータは、同じターン内で完了したコード実行の呼び出しによって結果が消費された場合に、検索結果ブロックがAPIレスポンスにどのように表示されるかを制御します。"response_inclusion": "excluded"を設定すると、ネストされたserver_tool_useと結果ブロックのペアがレスポンスから完全に削除され、生の検索コンテンツをクライアントに返す必要のないエージェント型ワークフローの出力トークンコストを削減できます。デフォルトは"full"です。直接呼び出しの結果、または完了前に一時停止したコード実行呼び出しの結果は、次のターンで送り返せるように常に完全な形で返されます。
{
"tools": [
{
"type": "web_search_20260318",
"name": "web_search",
"response_inclusion": "excluded"
}
]
}レスポンス構造の例を以下に示します。
{
"role": "assistant",
"content": [
// 1. Claude's decision to search
{
"type": "text",
"text": "I'll search for when Claude Shannon was born."
},
// 2. The search query used
{
"type": "server_tool_use",
"id": "srvtoolu_01WYG3ziw53XMcoyKL4XcZmE",
"name": "web_search",
"input": {
"query": "claude shannon birth date"
}
},
// 3. Search results
{
"type": "web_search_tool_result",
"tool_use_id": "srvtoolu_01WYG3ziw53XMcoyKL4XcZmE",
"content": [
{
"type": "web_search_result",
"url": "https://en.wikipedia.org/wiki/Claude_Shannon",
"title": "Claude Shannon - Wikipedia",
"encrypted_content": "EqgfCioIARgBIiQ3YTAwMjY1Mi1mZjM5LTQ1NGUtODgxNC1kNjNjNTk1ZWI3Y...",
"page_age": "April 30, 2025"
}
]
},
{
"text": "Based on the search results, ",
"type": "text"
},
// 4. Claude's response with citations
{
"text": "Claude Shannon was born on April 30, 1916, in Petoskey, Michigan",
"type": "text",
"citations": [
{
"type": "web_search_result_location",
"url": "https://en.wikipedia.org/wiki/Claude_Shannon",
"title": "Claude Shannon - Wikipedia",
"encrypted_index": "Eo8BCioIAhgBIiQyYjQ0OWJmZi1lNm..",
"cited_text": "Claude Elwood Shannon (April 30, 1916 – February 24, 2001) was an American mathematician, electrical engineer, computer scientist, cryptographer and i..."
}
]
}
],
"id": "msg_a930390d3a",
"usage": {
"input_tokens": 6039,
"output_tokens": 931,
"server_tool_use": {
"web_search_requests": 1
}
},
"stop_reason": "end_turn"
}この例は直接検索を示しています。検索が動的フィルタリングを通じて実行される場合、レスポンスにはコード実行ツールの結果ブロックも含まれ、ネストされた各server_tool_useとweb_search_tool_resultのペアには、それを実行したコード実行呼び出しを識別するcallerフィールドが含まれます。
検索結果には以下が含まれます。
url: ソースページのURLtitle: ソースページのタイトルpage_age: サイトが最後に更新された日時encrypted_content: マルチターンの会話で返す必要がある暗号化されたコンテンツ検索結果を含む会話を継続するには、各結果のencrypted_contentを含め、アシスタントのコンテンツブロックを受け取ったとおりに正確に送り返してください。APIは後のターンでそのコンテンツを復号し、Claudeのコンテキストに検索結果を復元します。encrypted_contentが欠落していたり変更されていたりすると、リクエストは400バリデーションエラーで失敗します。
ウェブ検索では引用が常に有効になっており、各web_search_result_locationには以下が含まれます。
url: 引用元のURLtitle: 引用元のタイトルencrypted_index: マルチターンの会話で返す必要がある参照cited_text: 引用されたコンテンツの最大150文字ウェブ検索の引用フィールドであるcited_text、title、urlは、入力トークンや出力トークンの使用量にはカウントされません。
API出力をエンドユーザーに直接表示する場合は、元のソースへの引用を含める必要があります。API出力に変更を加える場合(再処理や独自の素材との組み合わせを含む)は、エンドユーザーに表示する前に、法務チームと相談のうえ適切に引用を表示してください。
ウェブ検索ツールがエラー(レート制限への到達など)に遭遇した場合でも、Claude APIは200(成功)レスポンスを返します。エラーは、以下の構造を使用してレスポンスボディ内で表現されます。
{
"type": "web_search_tool_result",
"tool_use_id": "srvtoolu_a93jad",
"content": {
"type": "web_search_tool_result_error",
"error_code": "max_uses_exceeded"
}
}エラーの場合、contentは結果ブロックのリストではなく、単一のエラーオブジェクトになります。成功したものの結果が一致しなかった検索は、エラーではなく空のcontentリストを返します。
発生する可能性のあるエラーコードは以下のとおりです。
too_many_requests: レート制限を超過invalid_tool_input: 無効な検索クエリパラメータmax_uses_exceeded: ウェブ検索ツールの最大使用回数を超過query_too_long: クエリが最大長を超過request_too_large: 検索リクエストが大きすぎる(通常はドメインフィルタリストが長いことが原因)unavailable: 内部エラーが発生pause_turn停止理由APIは長時間実行される検索ターンを一時停止し、stop_reason: "pause_turn"を返すことがあります。継続するには、一時停止したアシスタントメッセージを変更せずに新しいリクエストで送り返してください。
Claudeが同じ並列ツール呼び出しのグループ内でウェブ検索とクライアントツールの両方を呼び出した場合、APIは代わりにstop_reason: "tool_use"を返し、検索はまだ実行されません。継続するには、クライアントツールの結果を返すと、APIは次のリクエストで検索を実行します。1つのターンでサーバーツールとクライアントツールを混在させるを参照してください。
サーバーサイドループとpause_turnの処理については、サーバーツールガイドのサーバーサイドループとpause_turnを参照してください。
ターンをまたいでツール定義をキャッシュする方法については、プロンプトキャッシングを使用したツール使用を参照してください。
ストリーミングを有効にすると、ストリームの一部として検索イベントを受け取ります。検索の実行中は一時停止が発生します。
event: message_start
data: {"type": "message_start", "message": {"id": "msg_abc123", "type": "message"}}
event: content_block_start
data: {"type": "content_block_start", "index": 0, "content_block": {"type": "text", "text": ""}}
// Claude's decision to search
event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "server_tool_use", "id": "srvtoolu_xyz789", "name": "web_search"}}
// Search query streamed
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "input_json_delta", "partial_json": "{\"query\":\"latest quantum computing breakthroughs 2025\"}"}}
// Pause while search executes
// Search results streamed
event: content_block_start
data: {"type": "content_block_start", "index": 2, "content_block": {"type": "web_search_tool_result", "tool_use_id": "srvtoolu_xyz789", "content": [{"type": "web_search_result", "title": "Quantum Computing Breakthroughs in 2025", "url": "https://example.com"}]}}
// Claude's response with citations (omitted in this example)Messages Batches APIにウェブ検索ツールを含めることができます。Messages Batches APIを通じたウェブ検索ツールの呼び出しは、通常のMessages APIリクエストと同じ価格です。
共有キャパシティを保護するため、Batches APIは組織ごとにウェブ検索リクエストをスロットリングします。そのため、多数の検索を含む大規模なバッチは完了までに時間がかかる場合があります。組織のウェブ検索のレート制限は、Claude ConsoleのLimitsページで確認できます。より高い制限をリクエストするには、そのページから営業にお問い合わせください。
ウェブ検索の使用料は、トークン使用料に加えて課金されます。
{
"usage": {
"input_tokens": 105,
"output_tokens": 6039,
"cache_read_input_tokens": 7123,
"cache_creation_input_tokens": 7345,
"server_tool_use": {
"web_search_requests": 1
}
}
}ウェブ検索はClaude APIで1,000回の検索あたり10ドルで利用でき、これに加えて検索で生成されたコンテンツに対する標準のトークン料金がかかります。会話全体を通じて取得されたウェブ検索結果は、単一のターン中に実行された検索の反復処理においても、その後の会話ターンにおいても、入力トークンとしてカウントされます。
各ウェブ検索は、返される結果の数に関係なく、1回の使用としてカウントされます。ウェブ検索中にエラーが発生した場合、そのウェブ検索は課金されません。
特定のURLからコンテンツを取得して読み取り、ライブのウェブコンテンツでClaudeのコンテキストを拡張します。
Anthropicが実行するツールを扱います: server_tool_useブロック、pause_turnの継続、ドメインフィルタリング。
Anthropicが提供するツールのディレクトリと、オプションのツール定義プロパティのリファレンス。
Was this page helpful?