Webフェッチツールを使用すると、Claudeが指定されたWebページとPDFドキュメントから完全なコンテンツを取得できます。
Webフェッチツールは現在ベータ版です。これを有効にするには、APIリクエストでベータヘッダー web-fetch-2025-09-10 を使用してください。
このフォームを使用して、モデルレスポンスの品質、API自体、またはドキュメントの品質に関するフィードバックを提供してください。
Claudeが信頼できない入力を機密データと一緒に処理する環境でWebフェッチツールを有効にすると、データ流出のリスクが生じます。このツールは信頼できる環境でのみ使用するか、機密でないデータを処理する場合のみ使用することをお勧めします。
流出リスクを最小化するために、Claudeは動的にURLを構築することは許可されていません。Claudeは、ユーザーによって明示的に提供されたURL、または以前のWeb検索またはWebフェッチ結果から得られたURLのみをフェッチできます。ただし、このツールを使用する場合は、慎重に検討する必要がある残存リスクがあります。
データ流出が懸念される場合は、以下を検討してください:
max_uses パラメータを使用してリクエスト数を制限するallowed_domains パラメータを使用して既知の安全なドメインに制限するWebフェッチは以下で利用可能です:
claude-sonnet-4-5-20250929)claude-sonnet-4-20250514)claude-3-7-sonnet-20250219)claude-haiku-4-5-20251001)claude-3-5-haiku-latest)claude-opus-4-5-20251101)claude-opus-4-1-20250805)claude-opus-4-20250514)APIリクエストにWebフェッチツールを追加すると:
Webフェッチツールは現在、Javascriptで動的にレンダリングされるWebサイトをサポートしていません。
APIリクエストにWebフェッチツールを提供します:
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "anthropic-beta: web-fetch-2025-09-10" \
--header "content-type: application/json" \
--data '{
"model": "claude-sonnet-4-5",
"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
}]
}'Webフェッチツールは以下のパラメータをサポートしています:
{
"type": "web_fetch_20250910",
"name": "web_fetch",
// オプション:リクエストごとのフェッチ数を制限
"max_uses": 10,
// オプション:これらのドメインからのみフェッチ
"allowed_domains": ["example.com", "docs.example.com"],
// オプション:これらのドメインからはフェッチしない
"blocked_domains": ["private.example.com"],
// オプション:フェッチされたコンテンツの引用を有効にする
"citations": {
"enabled": true
},
// オプション:最大コンテンツ長(トークン単位)
"max_content_tokens": 100000
}max_uses パラメータは実行されるWebフェッチの数を制限します。Claudeが許可されたフェッチ数を超えてフェッチしようとした場合、web_fetch_tool_result は max_uses_exceeded エラーコードを含むエラーになります。現在、デフォルト制限はありません。
ドメインフィルタを使用する場合:
https://example.com の代わりに example.com を使用)example.com は docs.example.com をカバーします)example.com/blog)allowed_domains または blocked_domains のいずれかを使用できますが、両方は使用できません。ドメイン名のUnicode文字は、異なるスクリプトの視覚的に類似した文字がドメインフィルタをバイパスできるホモグラフ攻撃を通じてセキュリティの脆弱性を作成する可能性があることに注意してください。たとえば、аmazon.com(キリル文字の「а」を使用)は amazon.com と同じに見えるかもしれませんが、別のドメインを表します。
ドメイン許可/ブロックリストを設定する場合:
max_content_tokens パラメータは、コンテキストに含まれるコンテンツの量を制限します。フェッチされたコンテンツがこの制限を超える場合、切り詰められます。これは大きなドキュメントをフェッチする場合のトークン使用量を制御するのに役立ちます。
max_content_tokens パラメータ制限は概算です。実際に使用される入力トークン数は少量変動する可能性があります。
Web検索では引用が常に有効になっていますが、Webフェッチでは引用はオプションです。"citations": {"enabled": true} を設定して、Claudeがフェッチされたドキュメントから特定の段落を引用できるようにします。
APIの出力をエンドユーザーに直接表示する場合、元のソースへの引用を含める必要があります。APIの出力を修正する場合(再処理や独自のマテリアルとの組み合わせを含む)、法務チームとの相談に基づいて適切に引用を表示してください。
レスポンス構造の例を次に示します:
{
"role": "assistant",
"content": [
// 1. Claudeのフェッチ決定
{
"type": "text",
"text": "I'll fetch the content from the article to analyze it."
},
// 2. フェッチリクエスト
{
"type": "server_tool_use",
"id": "srvtoolu_01234567890abcdef",
"name": "web_fetch",
"input": {
"url": "https://example.com/article"
}
},
// 3. フェッチ結果
{
"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の分析(引用が有効な場合)
{
"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:コンテンツが取得されたときのタイムスタンプWebフェッチツールは結果をキャッシュしてパフォーマンスを向上させ、冗長なリクエストを削減します。これは、返されるコンテンツが常にURLで利用可能な最新バージョンではない可能性があることを意味します。キャッシュ動作は自動的に管理され、異なるコンテンツタイプと使用パターンに対して最適化するために時間とともに変更される可能性があります。
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(成功)レスポンスを返し、エラーはレスポンスボディで表現されます:
{
"type": "web_fetch_tool_result",
"tool_use_id": "srvtoolu_a93jad",
"content": {
"type": "web_fetch_tool_error",
"error_code": "url_not_accessible"
}
}可能なエラーコードは以下の通りです:
invalid_input:無効なURL形式url_too_long:URLが最大長(250文字)を超えているurl_not_allowed:ドメインフィルタリングルールとモデル制限によってURLがブロックされているurl_not_accessible:コンテンツのフェッチに失敗した(HTTPエラー)too_many_requests:レート制限を超えているunsupported_content_type:サポートされていないコンテンツタイプ(テキストとPDFのみ)max_uses_exceeded:Webフェッチツールの最大使用回数を超えているunavailable:内部エラーが発生したセキュリティ上の理由から、Webフェッチツールは会話コンテキストに以前表示されたURLのみをフェッチできます。これには以下が含まれます:
このツールは、Claudeが生成した任意のURLや、コンテナベースのサーバーツール(コード実行、Bashなど)からのURLをフェッチすることはできません。
Webフェッチはweb検索とシームレスに連携して、包括的な情報収集を行います:
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-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}
}
],
extra_headers={
"anthropic-beta": "web-fetch-2025-09-10"
}
)このワークフローでは、Claudeは以下を実行します:
Webフェッチはプロンプトキャッシングで動作します。プロンプトキャッシングを有効にするには、リクエストに cache_control ブレークポイントを追加します。キャッシュされたフェッチ結果は会話ターン全体で再利用できます。
import anthropic
client = anthropic.Anthropic()
# Webフェッチを使用した最初のリクエスト
messages = [
{
"role": "user",
"content": "Analyze this research paper: https://arxiv.org/abs/2024.12345"
}
]
response1 = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=messages,
tools=[{
"type": "web_fetch_20250910",
"name": "web_fetch"
}],
extra_headers={
"anthropic-beta": "web-fetch-2025-09-10"
}
)
# Claudeのレスポンスを会話に追加
messages.append({
"role": "assistant",
"content": response1.content
})
# キャッシュブレークポイント付きの2番目のリクエスト
messages.append({
"role": "user",
"content": "What methodology does the paper use?",
"cache_control": {"type": "ephemeral"}
})
response2 = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=messages,
tools=[{
"type": "web_fetch_20250910",
"name": "web_fetch"
}],
extra_headers={
"anthropic-beta": "web-fetch-2025-09-10"
}
)
# 2番目のレスポンスはキャッシュされたフェッチ結果から利益を得ます
print(f"Cache read tokens: {response2.usage.get('cache_read_input_tokens', 0)}")ストリーミングが有効な場合、フェッチイベントはストリームの一部であり、コンテンツ取得中に一時停止します:
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のフェッチ決定
event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "server_tool_use", "id": "srvtoolu_xyz789", "name": "web_fetch"}}
// フェッチURLがストリーミングされる
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "input_json_delta", "partial_json": "{\"url\":\"https://example.com/article\"}"}}
// フェッチ実行中に一時停止
// フェッチ結果がストリーミングされる
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のレスポンスが続く...Messages Batches APIにWebフェッチツールを含めることができます。Messages Batches APIを通じたWebフェッチツール呼び出しは、通常のMessages APIリクエストと同じ価格です。
Web fetch usage has no additional charges beyond standard token costs:
"usage": {
"input_tokens": 25039,
"output_tokens": 931,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
"server_tool_use": {
"web_fetch_requests": 1
}
}The web fetch tool is available on the Claude API at no additional cost. You only pay standard token costs for the fetched content that becomes part of your conversation context.
To protect against inadvertently fetching large content that would consume excessive tokens, use the max_content_tokens parameter to set appropriate limits based on your use case and budget considerations.
Example token usage for typical content: