Webフェッチツール
特定のURLからコンテンツを取得して読み込み、ライブのWebコンテンツでClaudeのコンテキストを拡張します。
使用方法は製品によって異なります
toolsにweb_fetchツールを追加します。max_uses、citations、cache_controlは使用できません。Webフェッチツールを使用すると、Claudeは指定されたWebページやPDFドキュメントから完全なコンテンツを取得できます。
最新のWebフェッチツールバージョン(web_fetch_20260318)は 「dynamic filtering」(動的フィルタリング) をサポートしています。Claudeはコードを記述・実行して、取得したコンテンツがコンテキストウィンドウに到達する前にフィルタリングし、関連する情報のみを保持して残りを破棄できます。これにより、応答の品質を維持しながらトークン消費を削減できます。動的フィルタリングは、Claude 4.6以降のモデルおよびClaude Mythos Previewで利用できます。web_fetch_20260318では、エージェント型ワークフロー向けのレスポンスへの包含の制御も追加されています。その他のバージョン(動的フィルタリングとキャッシュバイパス向けのweb_fetch_20260309、動的フィルタリングのみのweb_fetch_20260209、基本的なフェッチ向けのweb_fetch_20250910)も利用できます。
Webフェッチ(動的フィルタリングの有無を問わず)は、Claude API、Claude Platform on AWS、Claude Models on Google Cloud (Anthropic managed)、およびMicrosoft Foundryで利用できます。Microsoft Foundryでは、Azureでホストされているデプロイメントは基本的なWebフェッチツール(web_fetch_20250910、動的フィルタリングなし)のみをサポートします。Anthropicでホストされているデプロイメントはすべてのバージョンをサポートします。
ゼロデータ保持の対象可否とallowed_callersによる回避策については、サーバーツールを参照してください。
モデルのサポートについては、ツールリファレンスを参照してください。
Webフェッチの仕組み
Webフェッチはサーバーツールです。APIがリクエスト中にコンテンツを取得し、その結果を会話に挿入します。ユーザー側で何かを実行したりtool_resultを返したりする必要はありません。例外は、Claudeが同じ並列ツール呼び出しのグループ内でWebフェッチとクライアントツールのいずれかを呼び出す場合です。この場合、APIはそのフェッチが実行される前にstop_reason: "tool_use"を含むレスポンスを返し、クライアントのtool_resultブロックを送り返した時点でフェッチを実行します。1つのターンでサーバーツールとクライアントツールを混在させるを参照してください。
APIリクエストにWebフェッチツールを追加すると、次のように動作します。
- Claudeは、プロンプトと利用可能なURLに基づいて、いつコンテンツをフェッチするかを判断します。
- APIは、指定されたURLから完全なテキストコンテンツを取得します。
- PDFの場合、APIはコンテンツをbase64エンコードされたデータとして返し、直接添付されたPDFドキュメントと同様に処理します。
- Claudeは取得したコンテンツを分析し、必要に応じて引用を含む応答を提供します。
Claudeがフェッチするタイミング
Claudeは、リクエストが特定のページやドキュメントを指している場合にフェッチします。
- 会話内(または以前のツール結果内)でURLが提供されている場合
- ユーザーがURLなしで特定のリソース(特定の記事、README、料金ページ、ドキュメントのセクションなど)を指定し、かつClaudeが最初にそれを見つけられるようWeb検索ツールも有効になっている場合(検索とフェッチの組み合わせを参照)
特定のページを参照しない一般的な知識に関する質問や自由回答形式の質問に対しては、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-5-5",
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フェッチの使用方法
組織のWebフェッチ設定がClaude Managed Agentsのセッションにどのように適用されるかについては、Web検索とWebフェッチのドメインを制限するを参照してください。
APIリクエストでWebフェッチツールを指定します。
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=4096,
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
"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: Don't fetch URLs that appear only in client-side tool results
"url_sources": {
"client_tool_results": { "type": "none" }
},
// 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パラメータは、1つのターン内で実行されるWebフェッチの回数を制限します。失敗したフェッチも制限回数にカウントされます。Claudeが許可された回数を超えてWebフェッチを直接呼び出した場合、web_fetch_tool_resultはmax_uses_exceededエラーコードを持つエラーになります。Claudeが許可された回数を超えてコード実行からWebフェッチを呼び出した場合、そのコード実行はエラーで終了します。デフォルトの制限はありません。
1つのターンは複数のリクエストにまたがる場合があります。リクエストがpause_turnの後に再開される場合、または最後のメッセージにtool_resultブロックのみが含まれる場合、そのリクエストはターンを継続します。そのターン内の以前のリクエストで行われたフェッチも制限回数にカウントされます。ただし、Claudeが動的フィルタリングを通じてコード実行からそれらを実行した場合は除きます。
ドメインフィルタリング
allowed_domainsおよびblocked_domainsによるドメインフィルタリングについては、サーバーツールを参照してください。
Claude Managed Agentsでは、エージェントのツールセットのweb_fetchエントリでこれらのフィールドを設定します。Web検索とWebフェッチのドメインを制限するを参照してください。
コンテンツの制限
max_content_tokensパラメータは、コンテキストに含まれるコンテンツの量を制限します。取得したコンテンツがこの制限を超えた場合、ツールはコンテンツを切り詰めます。これにより、大きなドキュメントをフェッチする際のトークン使用量を制御できます。この制限は概算であり、実際に使用される入力トークン数は、わずかに変動する場合があります。この制限はテキストコンテンツに適用され、PDFなどのバイナリコンテンツには適用されません。
取得したPDFによってリクエストがPDFのページ数またはサイズの制限を超える場合、web_fetch_tool_resultはcontent_too_largeエラーコードを持つエラーになります。会話内にすでに存在するPDFや画像もこれらの制限にカウントされるため、それらを削除するとフェッチが成功する場合があります。
Claude Managed Agentsでは、エージェントのツールセットのweb_fetchエントリでもmax_content_tokensを指定できます。Webツールの設定を参照してください。
キャッシュバイパス
use_cacheパラメータは、キャッシュされたコンテンツを返してもよいかどうかを制御します。キャッシュをバイパスして最新のコンテンツをフェッチするには、"use_cache": falseを設定します。デフォルトはtrueです。キャッシュをバイパスするとレイテンシが増加するため、ユーザーが明示的に最新のコンテンツを要求した場合や、頻繁に変化するソースをフェッチする場合にのみキャッシュを無効にしてください。
{
"tools": [
{
"type": "web_fetch_20260309",
"name": "web_fetch",
"use_cache": false
}
]
}レスポンスへの包含
response_inclusionパラメータは、フェッチ結果が同じレスポンス内で完了したコード実行呼び出しによって消費された場合に、フェッチ結果ブロックがAPIレスポンスにどのように表示されるかを制御します。"response_inclusion": "excluded"を設定すると、生のページコンテンツを必要としないエージェント型ワークフロー向けに、ネストされたserver_tool_useブロックと結果ブロックのペアがレスポンスから完全に除外されます。Claudeはこれらのブロックではなくコードの出力を読み取るため、トークン使用量には影響しません。デフォルトは"full"です。APIは、直接呼び出しの結果、または完了前に一時停止したコード実行呼び出しの結果を、次のリクエストで送り返せるよう常に完全な形で返します。
{
"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_sourcesが除外しているソースにのみ現れた(URL検証を参照)url_not_accessible: コンテンツのフェッチに失敗した(HTTPエラー)too_many_requests: レート制限を超えたunsupported_content_type: サポートされていないコンテンツタイプ(テキスト、HTML、PDFのみサポート)content_too_large: 取得したPDFによってリクエストが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をユーザーメッセージに含めてください。
URLソース
オプションのurl_sourcesパラメータを使用すると、3つの許可されたソースのいずれかをオフにしたり、ツール結果を特定のツールに限定したりできます。このパラメータにはソースごとに1つのキーがあり、すべてのキーのデフォルトは{"type": "all"}です。
user_input: ユーザーメッセージ内のURL。そのtypeは"all"または"none"です。client_tool_results: クライアント側ツールの結果内のURL。そのtypeは"all"、"none"、または次の例のようにツールを指定する"only"もしくは"except"フィルターです。server_tool_results: 以前のWeb検索またはWebフェッチの結果に含まれるURL。同じ値を取り、そのフィルターではweb_searchまたはweb_fetchを指定します。
たとえば、Claudeが記述したコードを実行するツールは、そのコードが出力するものを何でも返し、Claudeがコードに含めたURLも含まれます。そのツールの結果がソースとして扱われないようにするには、"except"フィルターでそのツールを指定します。
{
"tools": [
{
"type": "web_fetch_20260318",
"name": "web_fetch",
"url_sources": {
"client_tool_results": {
"type": "except",
"tools": [{ "type": "tool_reference", "name": "run_code" }]
}
}
},
{
"name": "run_code",
"description": "Run Python code and return its output",
"input_schema": {
"type": "object",
"properties": { "code": { "type": "string" } },
"required": ["code"]
}
}
]
}フィルターはツールをtool_referenceオブジェクトとして列挙します。各名前は、リクエストのtools配列内のツールと一致する必要があります。client_tool_resultsの場合はクライアントツール、server_tool_resultsの場合はサーバーツールです。一致しない場合、リクエストはエラーで失敗します。"except"の下では、後からtoolsに追加したツールはソースとして扱われます。"only"の下では扱われません。
run_code以外のクライアント側ツールも、Claudeが記述したテキストを返すことがあります(たとえば、それを引用するエラーメッセージなど)。すべてのクライアント側ツールの結果を除外するには、client_tool_resultsを{"type": "none"}に設定します。
URLがurl_sourcesが除外しているソースにのみ現れた場合、そのURLをフェッチするとurl_not_in_prior_contextエラーが返されます。
検索とフェッチの組み合わせ
Web検索ツールとWebフェッチツールの両方が有効になっていて、ユーザーがURLを提供せずに特定のページやドキュメントを指定した場合(たとえば、「anthropics/anthropic-sdk-pythonリポジトリのREADMEを読んでください」)、ClaudeはWeb検索を使用してそれを見つけ、その結果をフェッチします。次の例では、1つのリクエストで検索と分析を依頼しています。
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5-5",
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 runs
// 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フェッチツールはMessage Batches APIに含めることができます。Message 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フェッチツールは、Claude APIで追加コストなしで利用できます。会話コンテキストの一部となる取得済みコンテンツに対して、標準のトークンコストのみをお支払いいただきます。
過剰なトークンを消費する大きなコンテンツを誤って取得してしまうことを防ぐため、max_content_tokensパラメータを使用して、ユースケースと予算の考慮事項に基づいた適切な制限を設定してください。
一般的なコンテンツにおけるトークン使用量の例:
- 平均的なウェブページ(10 kB):約2,500トークン
- 大規模なドキュメントページ(100 kB):約25,000トークン
- 研究論文のPDF(500 kB):約125,000トークン
次のステップ
利用可能状況
Webフェッチツールはすべてのモデルで利用可能であり、ゼロデータ保持の対象です。
APIサポート
使用方法
リクエストのtoolsにweb_fetchツールを追加します。max_uses、ドメインリスト、citations、max_content_tokensなどの設定はそのツールに指定します。
- Claude API
- Claude Platform on AWS
- Claude Models on Google CloudAnthropic managed
- Microsoft FoundryHosted on Anthropic
- Microsoft FoundryHosted on Azure
web_fetch_20250910のみをサポートします。動的フィルタリング、レスポンスへの包含、キャッシュのバイパスは使用できません。使用方法
エージェントのツールセットの一部で、ツールセットを追加するとデフォルトで有効になります。ドメインリスト(パスなし)とmax_content_tokensはツールセットのweb_fetchエントリに指定します。max_uses、citations、cache_controlは使用できません。
- Claude API
- Claude Platform on AWS
データの取り扱い
データの取り扱いの概要対象エンドポイント
/v1/messagesweb_fetchツールを使用する場合
対象モデルを除く
取得したWebコンテンツがAPIレスポンスで返されます。Webフェッチの動的フィルタリングは、ZDRまたはHIPAAの適格対象ではありません。Webサイトの運営者は、独自のポリシーに従ってリクエストデータ(取得されたURLやリクエストのメタデータなど)を保持する場合があります。
このページは役に立ちましたか?