Webフェッチツール
特定のURLからコンテンツを取得して読み込み、ライブのWebコンテンツでClaudeのコンテキストを拡張します。
「web fetch tool」(Webフェッチツール)を使用すると、Claudeは指定されたWebページやPDFドキュメントから完全なコンテンツを取得できます。
最新のWebフェッチツールバージョン(web_fetch_20260318)は「dynamic filtering」(動的フィルタリング)をサポートしています。Claudeはコードを記述して実行し、取得したコンテンツが「context window」(コンテキストウィンドウ)に到達する前にフィルタリングして、関連する情報のみを保持し、残りを破棄できます。これにより、応答品質を維持しながらトークン消費を削減できます。動的フィルタリングは、Claude Fable 5.1、Claude Mythos 5.1、Claude Fable 5、Claude Mythos 5、Claude Mythos Preview、Claude Opus 4.8、Claude Opus 4.7、Claude Opus 4.6、Claude Sonnet 5、およびClaude Sonnet 4.6で利用できます。web_fetch_20260318では、エージェントワークフロー向けのレスポンスインクルージョン制御も追加されています。以前のバージョン(動的フィルタリングとキャッシュバイパスに対応するweb_fetch_20260309、動的フィルタリングのみに対応するweb_fetch_20260209、基本的なフェッチに対応するweb_fetch_20250910)も引き続き利用できます。
Webフェッチ(動的フィルタリングの有無を問わず)は、Claude API、Claude Platform on AWS、およびMicrosoft Foundryで利用できます。Microsoft Foundryでは、Azureでホストされているデプロイメントは基本的なWebフェッチツール(web_fetch_20250910、動的フィルタリングなし)のみをサポートします。Anthropicでホストされているデプロイメントはすべてのバージョンをサポートします。Webフェッチは現在、Amazon BedrockおよびGoogle Cloudでは利用できません。
Zero Data Retentionの適格性とallowed_callersの回避策については、サーバーツールを参照してください。
モデルのサポート状況については、ツールリファレンスを参照してください。
Webフェッチの仕組み
Webフェッチはサーバーツールです。APIがリクエスト中にコンテンツを取得し、結果を会話に挿入します。ユーザー側で何かを実行したり、tool_resultを返したりする必要はありません。例外は、Claudeが同じ並列ツール呼び出しグループ内でWebフェッチとクライアントツールの1つを呼び出す場合です。この場合、APIはそのフェッチが実行される前にstop_reason: "tool_use"でレスポンスを返し、クライアントのtool_resultブロックを送り返したときにフェッチを実行します。1つのターンでサーバーツールとクライアントツールを混在させるを参照してください。
APIリクエストにWebフェッチツールを追加すると、次のように動作します。
- Claudeは、プロンプトと利用可能なURLに基づいて、いつコンテンツをフェッチするかを判断します。
- APIは指定されたURLから完全なテキストコンテンツを取得します。
- PDFの場合、APIはコンテンツをbase64エンコードされたデータとして返し、直接添付されたPDFドキュメントと同様に処理します。
- Claudeは取得したコンテンツを分析し、オプションの引用付きで応答を提供します。
Claudeがフェッチするタイミング
Claudeは、リクエストが特定のページやドキュメントを指している場合にフェッチします。
- 会話内(または以前のツール結果内)にURLが提供されている場合
- ユーザーがURLなしで特定のリソース(特定の記事、README、料金ページ、ドキュメントのセクションなど)を指定し、かつWeb検索ツールも有効になっていて、Claudeが最初にそれを見つけられる場合(検索とフェッチの組み合わせを参照)
Claudeは、特定のページを参照しない一般知識の質問やオープンエンドな質問に対してはフェッチしません。「この記事を要約してください: <url>」はフェッチをトリガーします。「REST API設計のベストプラクティスは何ですか?」には直接回答します。
動的フィルタリング
Webページ全体やPDFをフェッチすると、特に大きなドキュメントから特定の情報のみが必要な場合、トークンをすぐに消費してしまいます。web_fetch_20260209以降では、Claudeはコードを記述して実行し、取得したコンテンツをコンテキストに読み込む前にフィルタリングできます。
この動的フィルタリングは、特に次のような場合に役立ちます。
- 長いドキュメントから特定のセクションを抽出する
- Webページの構造化データを処理する
- PDFから関連情報をフィルタリングする
- 大きなドキュメントを扱う際のトークンコストを削減する
動的フィルタリングを有効にするには、web_fetch_20260209またはそれ以降のバージョンを使用します。以下の例ではweb_fetch_20260318を使用しています。
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=4096,
messages=[
{
"role": "user",
"content": "Fetch the content at https://example.com/research-paper and extract the key findings.",
}
],
tools=[{"type": "web_fetch_20260318", "name": "web_fetch"}],
)
print(response)Webフェッチの使用方法
APIリクエストでWebフェッチツールを指定します。
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "Please analyze the content at https://example.com/article",
}
],
tools=[{"type": "web_fetch_20250910", "name": "web_fetch", "max_uses": 5}],
)
print(response)ツール定義
Webフェッチツールは以下のパラメータをサポートしています。
{
"type": "web_fetch_20250910",
"name": "web_fetch",
// Optional: Limit the number of fetches per request
"max_uses": 10,
// Optional: Only fetch from these domains
"allowed_domains": ["example.com", "docs.example.com"],
// Optional: Never fetch from these domains (cannot be combined with allowed_domains)
"blocked_domains": ["private.example.com"],
// Optional: Enable citations for fetched content
"citations": {
"enabled": true
},
// Optional: Maximum content length in tokens
"max_content_tokens": 100000
}以降のツールバージョンでは、さらに2つのオプションパラメータが追加されています。use_cacheにはweb_fetch_20260309以降が必要です(キャッシュバイパスを参照)。response_inclusionにはweb_fetch_20260318以降が必要です(レスポンスインクルージョンを参照)。
最大使用回数
max_usesパラメータは、実行されるWebフェッチの回数を制限します。失敗したフェッチも制限に対してカウントされます。Claudeが許可された回数を超えてフェッチを試みた場合、web_fetch_tool_resultはmax_uses_exceededエラーコードを持つエラーになります。現在、デフォルトの制限はありません。
ドメインフィルタリング
allowed_domainsとblocked_domainsによるドメインフィルタリングについては、サーバーツールを参照してください。
Claude Managed Agentsでは、これらのフィールドをエージェントツールセットのweb_fetchエントリに設定します。リストされる各ドメインはパスを含まないプレーンなホスト名である必要があります。Web検索とWebフェッチのドメインを制限するを参照してください。
コンテンツ制限
max_content_tokensパラメータは、コンテキストに含まれるコンテンツの量を制限します。取得したコンテンツがこの制限を超える場合、ツールはそれを切り詰めます。これは、大きなドキュメントをフェッチする際のトークン使用量の制御に役立ちます。この制限はテキストコンテンツに適用され、PDFなどのバイナリコンテンツには適用されません。
Claude Managed Agentsでは、エージェントツールセットのweb_fetchエントリもmax_content_tokensを受け付けます。Web検索とWebフェッチのドメインを制限するを参照してください。
キャッシュバイパス
use_cacheパラメータは、キャッシュされたコンテンツを返してよいかどうかを制御します。キャッシュをバイパスして最新のコンテンツをフェッチするには、"use_cache": falseを設定します。デフォルトはtrueです。キャッシュをバイパスすると「latency」(レイテンシ)が増加するため、ユーザーが明示的に最新のコンテンツを要求した場合、または急速に変化するソースをフェッチする場合にのみキャッシュを無効にしてください。
{
"tools": [
{
"type": "web_fetch_20260309",
"name": "web_fetch",
"use_cache": false
}
]
}レスポンスインクルージョン
response_inclusionパラメータは、同じターン内で完了したコード実行呼び出しによって結果が消費された場合に、フェッチ結果ブロックがAPIレスポンスにどのように表示されるかを制御します。"response_inclusion": "excluded"を設定すると、ネストされたserver_tool_useと結果ブロックのペアがレスポンスから完全に削除され、生のページコンテンツをクライアントにエコーバックする必要のないエージェントワークフローの出力トークンコストを削減できます。デフォルトは"full"です。直接呼び出しの結果、または完了前に一時停止したコード実行呼び出しの結果は、次のターンで送り返せるように常に完全な形で返されます。
{
"tools": [
{
"type": "web_fetch_20260318",
"name": "web_fetch",
"response_inclusion": "excluded"
}
]
}引用
引用が常に有効になっているWeb検索とは異なり、Webフェッチでは引用はオプションであり、デフォルトでは無効になっています。Claudeが取得したドキュメントから特定の箇所を引用できるようにするには、"citations": {"enabled": true}を設定します。
レスポンス
レスポンス構造の例を以下に示します。
{
"role": "assistant",
"content": [
// 1. Claude's decision to fetch
{
"type": "text",
"text": "I'll fetch the content from the article to analyze it."
},
// 2. The fetch request
{
"type": "server_tool_use",
"id": "srvtoolu_01234567890abcdef",
"name": "web_fetch",
"input": {
"url": "https://example.com/article"
}
},
// 3. Fetch results
{
"type": "web_fetch_tool_result",
"tool_use_id": "srvtoolu_01234567890abcdef",
"content": {
"type": "web_fetch_result",
"url": "https://example.com/article",
"content": {
"type": "document",
"source": {
"type": "text",
"media_type": "text/plain",
"data": "Full text content of the article..."
},
"title": "Article Title",
"citations": { "enabled": true }
},
"retrieved_at": "2025-08-25T10:30:00Z"
}
},
// 4. Claude's analysis with citations (if enabled)
{
"text": "Based on the article, ",
"type": "text"
},
{
"text": "the main argument presented is that artificial intelligence will transform healthcare",
"type": "text",
"citations": [
{
"type": "char_location",
"document_index": 0,
"document_title": "Article Title",
"start_char_index": 1234,
"end_char_index": 1456,
"cited_text": "Artificial intelligence is poised to revolutionize healthcare delivery..."
}
]
}
],
"id": "msg_a930390d3a",
"usage": {
"input_tokens": 25039,
"output_tokens": 931,
"server_tool_use": {
"web_fetch_requests": 1
}
},
"stop_reason": "end_turn"
}フェッチ結果
フェッチ結果には以下が含まれます。
url: フェッチされたURLcontent: 取得したコンテンツを含むドキュメントブロックretrieved_at: コンテンツが取得された時点のタイムスタンプ
PDFドキュメントの場合、コンテンツはbase64エンコードされたデータとして返されます。
{
"type": "web_fetch_tool_result",
"tool_use_id": "srvtoolu_02",
"content": {
"type": "web_fetch_result",
"url": "https://example.com/paper.pdf",
"content": {
"type": "document",
"source": {
"type": "base64",
"media_type": "application/pdf",
"data": "JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmo..."
},
"citations": { "enabled": true }
},
"retrieved_at": "2025-08-25T10:30:02Z"
}
}エラー
Webフェッチツールでエラーが発生した場合、Claude APIは200(成功)レスポンスを返し、エラーはレスポンス本文内で表現されます。Claudeはエラー結果を確認し、ターンを続行します。例:
{
"type": "web_fetch_tool_result",
"tool_use_id": "srvtoolu_a93jad",
"content": {
"type": "web_fetch_tool_result_error",
"error_code": "url_not_accessible"
}
}発生しうるエラーコードは以下のとおりです。
invalid_tool_input: 不正な形式のURLやHTTP(S)以外のスキームなど、無効なツール入力url_too_long: URLが最大長(250文字)を超えているurl_not_allowed: ドメインフィルタリングルール(組織の設定を含む)、またはプライベートアドレス、robots.txt、お客様が提供していない認証情報を含むと思われるURLなどのAnthropic側の制限によってURLがブロックされたurl_not_in_prior_context: URLが会話内に以前出現していない(URL検証を参照)url_not_accessible: コンテンツの取得に失敗した(HTTPエラー)too_many_requests: レート制限を超過したunsupported_content_type: サポートされていないコンテンツタイプ(テキスト、HTML、PDFのみ対応)max_uses_exceeded: Webフェッチツールの最大使用回数を超過したunavailable: 内部エラーが発生した
URL検証
セキュリティ上の理由から、Webフェッチツールは会話コンテキスト内に以前出現したURLのみをフェッチできます。これには以下が含まれます。
- ユーザーメッセージ内のURL
- クライアント側のツール結果内のURL
- 以前のWeb検索またはWebフェッチの結果から得られたURL
このツールは、Claude自身の出力にのみ現れるURLや、システムプロンプトにのみ現れるURLをフェッチできません。システムプロンプト内のURLをフェッチ可能にするには、そのURLをユーザーメッセージにも含めてください。コード実行、MCPコネクタ、ツール検索など、他のサーバーサイドツールの結果も許可されたソースではありません。クライアントサイドのツール結果は、Claudeが生成したテキストをそのまま返している場合(たとえば、入力を出力するコマンドや、入力を引用するエラーメッセージなど)でも、許可されたソースです。
また、このツールは、APIキーやパスワードなどの認証情報を含むと思われるURLを、その認証情報がシステムプロンプトまたはユーザーメッセージのテキストに含まれていない限り拒否します。認証情報がツール結果にのみ現れる場合は、この条件を満たしません。この場合、結果はurl_not_allowedエラーになります。このようなURLをフェッチするには、ユーザーメッセージにそのURLを含めてください。
検索とフェッチの組み合わせ
Web検索ツールとWebフェッチツールの両方が有効になっていて、ユーザーがURLを提供せずに特定のページやドキュメントを指定した場合(例:「anthropics/anthropic-sdk-pythonリポジトリのREADMEを読んでください」)、ClaudeはWeb検索を使用してそれを見つけ、その結果をフェッチします。次の例では、1つのリクエストで検索と分析を依頼しています。
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=4096,
messages=[
{
"role": "user",
"content": "Find recent articles about quantum computing and analyze the most relevant one in detail",
}
],
tools=[
{"type": "web_search_20250305", "name": "web_search", "max_uses": 3},
{
"type": "web_fetch_20250910",
"name": "web_fetch",
"max_uses": 5,
"citations": {"enabled": True},
},
],
)
print(response)このワークフローでは、Claudeは次のように動作します。
- Web検索を使用して関連する記事を見つけます。
- 最も有望な結果を選択します。
- Webフェッチを使用して完全なコンテンツを取得します。
- 引用付きの詳細な分析を提供します。
プロンプトキャッシング
ターンをまたいでツール定義をキャッシュするには、プロンプトキャッシングを使用したツール使用を参照してください。
ストリーミング
ストリーミングを有効にすると、フェッチイベントはストリームの一部となり、コンテンツ取得中は一時停止します。
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 fetch
event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "server_tool_use", "id": "srvtoolu_xyz789", "name": "web_fetch"}}
// Fetch URL streamed
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "input_json_delta", "partial_json": "{\"url\":\"https://example.com/article\"}"}}
// Pause while fetch executes
// Fetch results streamed
event: content_block_start
data: {"type": "content_block_start", "index": 2, "content_block": {"type": "web_fetch_tool_result", "tool_use_id": "srvtoolu_xyz789", "content": {"type": "web_fetch_result", "url": "https://example.com/article", "content": {"type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "Article content..."}}}}}
// Claude's response continues...バッチリクエスト
WebフェッチツールはMessages Batches APIに含めることができます。Messages Batches API経由のWebフェッチツール呼び出しは、通常のMessages APIリクエストと同じ料金です。
使用量と料金
Web fetch(ウェブフェッチ)の使用には、標準のトークンコスト以外に追加料金はかかりません。
{
"usage": {
"input_tokens": 25039,
"output_tokens": 931,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
"server_tool_use": {
"web_fetch_requests": 1
}
}
}Web fetchツールは、Claude APIで追加コストなしで利用できます。会話コンテキストの一部となる取得済みコンテンツに対して、標準のトークンコストのみをお支払いいただきます。
過剰なトークンを消費する大きなコンテンツを誤って取得してしまうことを防ぐため、max_content_tokensパラメータを使用して、ユースケースと予算の考慮事項に基づいた適切な制限を設定してください。
一般的なコンテンツにおけるトークン使用量の例:
- 平均的なウェブページ(10 kB):約2,500トークン
- 大規模なドキュメントページ(100 kB):約25,000トークン
- 研究論文のPDF(500 kB):約125,000トークン
次のステップ
Was this page helpful?