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-opus-4-6)claude-opus-4-5-20251101)claude-opus-4-1-20250805)claude-opus-4-20250514)claude-sonnet-4-5-20250929)claude-sonnet-4-20250514)claude-3-7-sonnet-20250219)claude-haiku-4-5-20251001)claude-3-5-haiku-latest)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-opus-4-6",
"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や、コンテナベースのサーバーツール(Code Execution、Bashなど)からのURLをフェッチすることはできません。
Webフェッチは、包括的な情報収集のためにWeb検索とシームレスに連携します:
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-6",
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-opus-4-6",
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-opus-4-6",
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:
Was this page helpful?