Claude APIのWeb Fetchツール(web fetch tool)を使うと、会話中に登場した特定のURLについて、そのページ本文やPDFの中身をAnthropic側が取得してClaudeに読み込ませることができます。Web検索が「情報を探す」ためのツールであるのに対し、Web Fetchは「指定した1ページを丸ごと読む」ためのツールです。記事の要約、ドキュメントの解析、PDF論文からの情報抽出などに向いています。本ページはAnthropic公式ドキュメントの非公式な日本語訳・要約です。
Web Fetchツールとは
Web Fetchツールは、Anthropicがサーバー側で実行する「組み込みツール(server tool)」のひとつです。リクエストのtoolsに追加しておくと、Claudeが必要と判断したときに指定URLの内容をAnthropic側が取得し、その本文を会話に差し込んでから回答を続けます。開発者がtool_resultを返す必要はありません。
取得できるのはテキスト(HTML)とPDFです。PDFの場合はbase64エンコードされたデータとして返り、直接添付したPDFと同じように扱われます。なお、現時点ではJavaScriptで動的に描画されるページには対応していません。
重要な制約として、Claudeが自分でURLを組み立てて任意のページを取得することはできません。取得できるのは、ユーザーのメッセージ・クライアント側ツールの結果・過去のWeb検索/Web Fetchの結果など、会話にすでに登場したURLだけです。これはデータ持ち出し(exfiltration)のリスクを抑えるための仕組みです。
基本的な使い方
Messages APIのtools配列にWeb Fetchツールを追加します。ツールタイプと名前を指定し、max_usesで1リクエストあたりの取得回数の上限を設定できます。
{
"model": "claude-opus-4-8",
"max_tokens": 1024,
"tools": [
{
"type": "web_fetch_20250910",
"name": "web_fetch",
"max_uses": 5
}
],
"messages": [
{ "role": "user", "content": "https://example.com/article の内容を分析して" }
]
}
「この記事を要約して: <URL>」のように具体的なページを指し示すと取得が起きますが、「REST API設計のベストプラクティスは?」のような一般的な質問では取得せず、Claudeがそのまま回答します。
新しいバージョン(web_fetch_20260209以降)では「動的フィルタリング」に対応し、取得した長いドキュメントをコンテキストに載せる前にClaudeがコードを書いて必要な部分だけ抽出できます。大きなPDFや長文ページのトークン消費を抑えたいときに有効です。利用可能なモデルや最新のバージョン番号は公式ドキュメントで確認してください。
ツール定義とパラメータ
Web Fetchツールでは、主に次のパラメータを指定できます。いずれも任意です。
max_uses: 1リクエストあたりの取得回数の上限。失敗した取得も回数に数えられ、超過するとmax_uses_exceededエラーになります。既定の上限はありません。allowed_domains: ここに挙げたドメインからのみ取得を許可します。blocked_domains: ここに挙げたドメインからは取得しません(allowed_domainsとは併用できません)。citations:{"enabled": true}で、取得した文書からの引用を有効化します(Web検索と違い、Web Fetchでは既定で無効)。max_content_tokens: コンテキストに含めるテキスト量の上限(トークン数)。超過分は切り詰められ、大きな文書でのトークン使用量を抑えられます(PDFなどのバイナリには適用されません)。
{
"type": "web_fetch_20250910",
"name": "web_fetch",
"max_uses": 10,
"allowed_domains": ["example.com", "docs.example.com"],
"citations": { "enabled": true },
"max_content_tokens": 100000
}
さらに新しいバージョンでは、キャッシュを使わず最新を取得するuse_cacheや、エージェント処理で生の取得結果を応答から省くresponse_inclusionといったパラメータも追加されています。
レスポンスと引用の構造
Web Fetchを使った応答には、Claudeが取得を決めた発言、取得リクエスト(server_tool_use)、取得結果(web_fetch_tool_result)が順に含まれます。取得結果には、取得したURL(url)、本文を収めた文書ブロック(content)、取得時刻(retrieved_at)が入ります。
citationsを有効にしておくと、回答本文の該当箇所に、出典文書のタイトルや引用箇所(cited_text)を示す引用が付きます。取得結果をそのままユーザーに見せるときは、出典として引用を併せて表示するのが基本です。
エラー時は、HTTPとしては200が返り、本文の中にエラーが表現されます(Claudeはそのエラーを見てターンを続けます)。代表的なエラーコードには次のものがあります。
url_not_in_prior_context: 会話にまだ登場していないURLを取得しようとした。url_not_allowed: ドメインフィルタや内部制限(プライベートアドレスやrobots.txtなど)でブロックされた。url_not_accessible: 取得に失敗した(HTTPエラー)。unsupported_content_type: 対応外の形式(テキスト・HTML・PDF以外)。max_uses_exceeded: 取得回数の上限を超えた。
検索と取得の組み合わせ
Web検索ツールとWeb Fetchツールを両方有効にしておくと、ユーザーがURLを示さずに「anthropics/anthropic-sdk-python リポジトリのREADMEを読んで」のように具体的なページ名だけを挙げた場合でも、Claudeはまずweb searchでそのページを探し、続いてweb fetchで本文を取得して分析できます。
"tools": [
{ "type": "web_search_20250305", "name": "web_search", "max_uses": 3 },
{ "type": "web_fetch_20250910", "name": "web_fetch", "max_uses": 5,
"citations": { "enabled": true } }
]
この組み合わせにより、「探す→読む→引用つきで詳しく答える」という一連の流れを、1回のAPIリクエストの中で完結させられます。
料金とセキュリティ上の注意
Web Fetchツール自体には追加料金はかかりません。かかるのは、取得した本文が会話コンテキストに載ることによる通常のトークン料金だけです。目安として、10kBのページで約2,500トークン、100kBのドキュメントで約25,000トークン、500kBの論文PDFで約125,000トークンほどになります。大きなコンテンツを不用意に取り込まないよう、max_content_tokensで上限を設けておくと安全です。
セキュリティ面では、信頼できない入力と機微なデータを同じ会話で扱う環境でWeb Fetchを有効にすると、データ持ち出しのリスクがあります。Anthropicは対策として、Claudeが任意のURLを組み立てられない仕組みにしていますが、残存リスクは残ります。必要に応じて、ツール自体を無効化する、max_usesで回数を制限する、allowed_domainsで信頼できるドメインに限定する、といった対策を検討してください。最新の対応モデル・バージョン・制限は必ずAnthropic公式ドキュメントで確認してください。