Das Web-Abruf-Tool ermöglicht Claude, vollständige Inhalte von angegebenen Webseiten und PDF-Dokumenten abzurufen.
Das Web-Abruf-Tool befindet sich derzeit in der Beta-Phase. Um es zu aktivieren, verwenden Sie den Beta-Header web-fetch-2025-09-10 in Ihren API-Anfragen.
Bitte verwenden Sie dieses Formular, um Feedback zur Qualität der Modellreaktionen, der API selbst oder der Qualität der Dokumentation zu geben.
Das Aktivieren des Web-Abruf-Tools in Umgebungen, in denen Claude nicht vertrauenswürdige Eingaben zusammen mit sensiblen Daten verarbeitet, birgt Risiken der Datenexfiltration. Wir empfehlen, dieses Tool nur in vertrauenswürdigen Umgebungen oder bei der Verarbeitung nicht sensibler Daten zu verwenden.
Um Exfiltrationrisiken zu minimieren, darf Claude keine URLs dynamisch konstruieren. Claude kann nur URLs abrufen, die vom Benutzer explizit bereitgestellt wurden oder die aus vorherigen Web-Such- oder Web-Abruf-Ergebnissen stammen. Es besteht jedoch immer noch ein Restrisiko, das bei der Verwendung dieses Tools sorgfältig berücksichtigt werden sollte.
Wenn Datenexfiltration ein Problem darstellt, sollten Sie folgende Maßnahmen in Betracht ziehen:
max_uses, um die Anzahl der Anfragen zu begrenzenallowed_domains, um auf bekannte sichere Domänen zu beschränkenWeb-Abruf ist verfügbar auf:
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)Wenn Sie das Web-Abruf-Tool zu Ihrer API-Anfrage hinzufügen:
Das Web-Abruf-Tool unterstützt derzeit keine Websites, die dynamisch über Javascript gerendert werden.
Stellen Sie das Web-Abruf-Tool in Ihrer API-Anfrage bereit:
Das Web-Abruf-Tool unterstützt die folgenden Parameter:
{
"type": "web_fetch_20250910",
"name": "web_fetch",
// Optional: Begrenzen Sie die Anzahl der Abrufe pro Anfrage
"max_uses": 10,
// Optional: Nur von diesen Domänen abrufen
"allowed_domains": ["example.com", "docs.example.com"],
// Optional: Niemals von diesen Domänen abrufen
"blocked_domains": ["private.example.com"],
// Optional: Zitate für abgerufene Inhalte aktivieren
"citations": {
"enabled": true
},
// Optional: Maximale Inhaltslänge in Token
"max_content_tokens": 100000
}Der Parameter max_uses begrenzt die Anzahl der durchgeführten Web-Abrufe. Wenn Claude versucht, mehr Abrufe als zulässig durchzuführen, ist das web_fetch_tool_result ein Fehler mit dem Fehlercode max_uses_exceeded. Es gibt derzeit keine Standardbegrenzung.
Bei der Verwendung von Domänenfiltern:
example.com statt https://example.com)example.com umfasst docs.example.com)example.com/blog)allowed_domains oder blocked_domains verwenden, aber nicht beide in derselben Anfrage.Beachten Sie, dass Unicode-Zeichen in Domänennamen durch Homograph-Angriffe Sicherheitslücken schaffen können, bei denen visuell ähnliche Zeichen aus verschiedenen Skripten Domänenfilter umgehen können. Zum Beispiel kann аmazon.com (mit kyrillischem 'а') identisch mit amazon.com aussehen, stellt aber eine andere Domäne dar.
Beim Konfigurieren von Domänen-Zulassungs-/Blockierungslisten:
Der Parameter max_content_tokens begrenzt die Menge des Inhalts, der in den Kontext einbezogen wird. Wenn der abgerufene Inhalt diese Grenze überschreitet, wird er gekürzt. Dies hilft, die Token-Nutzung beim Abrufen großer Dokumente zu kontrollieren.
Die Grenze des Parameters max_content_tokens ist ungefähr. Die tatsächliche Anzahl der verwendeten Input-Token kann um einen kleinen Betrag variieren.
Im Gegensatz zur Web-Suche, bei der Zitate immer aktiviert sind, sind Zitate für Web-Abruf optional. Setzen Sie "citations": {"enabled": true}, um Claude zu ermöglichen, spezifische Passagen aus abgerufenen Dokumenten zu zitieren.
Wenn Sie API-Ausgaben direkt für Endbenutzer anzeigen, müssen Zitate zur ursprünglichen Quelle enthalten sein. Wenn Sie Änderungen an API-Ausgaben vornehmen, einschließlich durch Neuverarbeitung und/oder Kombination mit Ihrem eigenen Material, bevor Sie sie für Endbenutzer anzeigen, zeigen Sie Zitate wie angemessen basierend auf Rücksprache mit Ihrem Rechtsteam an.
Hier ist eine Beispiel-Antwortstruktur:
{
"role": "assistant",
"content": [
// 1. Claudes Entscheidung zum Abrufen
{
"type": "text",
"text": "I'll fetch the content from the article to analyze it."
},
// 2. Die Abrufanfrage
{
"type": "server_tool_use",
"id": "srvtoolu_01234567890abcdef",
"name": "web_fetch",
"input": {
"url": "https://example.com/article"
}
},
// 3. Abrufergebnisse
{
"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. Claudes Analyse mit Zitaten (falls aktiviert)
{
"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"
}Abrufergebnisse enthalten:
url: Die abgerufene URLcontent: Ein Dokumentblock mit dem abgerufenen Inhaltretrieved_at: Zeitstempel, wann der Inhalt abgerufen wurdeDas Web-Abruf-Tool speichert Ergebnisse zwischen, um die Leistung zu verbessern und redundante Anfragen zu reduzieren. Dies bedeutet, dass der zurückgegebene Inhalt möglicherweise nicht immer die neueste verfügbare Version unter der URL ist. Das Cacheverhalten wird automatisch verwaltet und kann sich im Laufe der Zeit ändern, um für verschiedene Inhaltstypen und Nutzungsmuster zu optimieren.
Bei PDF-Dokumenten wird der Inhalt als Base64-codierte Daten zurückgegeben:
{
"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"
}
}Wenn das Web-Abruf-Tool auf einen Fehler stößt, gibt die Claude API eine 200-Antwort (Erfolg) mit dem Fehler im Antwortkörper zurück:
{
"type": "web_fetch_tool_result",
"tool_use_id": "srvtoolu_a93jad",
"content": {
"type": "web_fetch_tool_error",
"error_code": "url_not_accessible"
}
}Dies sind die möglichen Fehlercodes:
invalid_input: Ungültiges URL-Formaturl_too_long: URL überschreitet maximale Länge (250 Zeichen)url_not_allowed: URL wird durch Domänenfilterungsregeln und Modellbeschränkungen blockierturl_not_accessible: Fehler beim Abrufen des Inhalts (HTTP-Fehler)too_many_requests: Ratenlimit überschrittenunsupported_content_type: Inhaltstyp nicht unterstützt (nur Text und PDF)max_uses_exceeded: Maximale Web-Abruf-Tool-Nutzung überschrittenunavailable: Ein interner Fehler ist aufgetretenAus Sicherheitsgründen kann das Web-Abruf-Tool nur URLs abrufen, die zuvor im Gesprächskontext erschienen sind. Dies umfasst:
Das Tool kann keine beliebigen URLs abrufen, die Claude generiert, oder URLs aus Container-basierten Server-Tools (Code Execution, Bash, usw.).
Web-Abruf funktioniert nahtlos mit Web-Suche für umfassende Informationsbeschaffung:
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"
}
)In diesem Workflow wird Claude:
Web-Abruf funktioniert mit Prompt-Caching. Um Prompt-Caching zu aktivieren, fügen Sie cache_control-Haltepunkte in Ihrer Anfrage hinzu. Zwischengespeicherte Abrufergebnisse können über Gesprächsrunden hinweg wiederverwendet werden.
import anthropic
client = anthropic.Anthropic()
# Erste Anfrage mit Web-Abruf
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"
}
)
# Claudes Antwort zum Gespräch hinzufügen
messages.append({
"role": "assistant",
"content": response1.content
})
# Zweite Anfrage mit Cache-Haltepunkt
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"
}
)
# Die zweite Antwort profitiert von zwischengespeicherten Abrufergebnissen
print(f"Cache read tokens: {response2.usage.get('cache_read_input_tokens', 0)}")Mit aktiviertem Streaming sind Abrufereignisse Teil des Streams mit einer Pause während des Inhaltabrufs:
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": ""}}
// Claudes Entscheidung zum Abrufen
event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "server_tool_use", "id": "srvtoolu_xyz789", "name": "web_fetch"}}
// Abruf-URL gestreamt
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "input_json_delta", "partial_json": "{\"url\":\"https://example.com/article\"}"}}
// Pause während Abruf ausgeführt wird
// Abrufergebnisse gestreamt
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..."}}}}}
// Claudes Antwort wird fortgesetzt...Sie können das Web-Abruf-Tool in die Messages Batches API einbeziehen. Web-Abruf-Tool-Aufrufe über die Messages Batches API werden genauso berechnet wie die in regulären Messages API-Anfragen.
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:
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
}]
}'