Web-Fetch-Tool
Rufe Inhalte von bestimmten URLs ab und lies sie, um Claudes Kontext mit Live-Webinhalten zu erweitern.
Das Web-Fetch-Tool ermöglicht es Claude, vollständige Inhalte von angegebenen Webseiten und PDF-Dokumenten abzurufen.
Die neueste Version des Web-Fetch-Tools (web_fetch_20260318) unterstützt „dynamic filtering“ (dynamisches Filtern): Claude kann Code schreiben und ausführen, um abgerufene Inhalte zu filtern, bevor sie das „context window“ (Kontextfenster) erreichen, sodass nur relevante Informationen behalten und der Rest verworfen wird. Dies reduziert den Token-Verbrauch bei gleichbleibender Antwortqualität. Dynamisches Filtern ist verfügbar mit Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5, Claude Mythos Preview, Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, Claude Sonnet 5 und Claude Sonnet 4.6. web_fetch_20260318 fügt außerdem die Steuerung der Response Inclusion für agentische Workflows hinzu. Die vorherigen Versionen (web_fetch_20260309 für dynamisches Filtern und Cache-Umgehung, web_fetch_20260209 nur für dynamisches Filtern, web_fetch_20250910 für einfaches Abrufen) bleiben verfügbar.
Web Fetch (mit und ohne dynamisches Filtern) ist auf der Claude API, der Claude Platform on AWS und Microsoft Foundry verfügbar. Auf Microsoft Foundry unterstützen auf Azure gehostete Deployments nur das einfache Web-Fetch-Tool (web_fetch_20250910, ohne dynamisches Filtern). Bei Anthropic gehostete Deployments unterstützen alle Versionen. Web Fetch ist derzeit nicht auf Amazon Bedrock oder Google Cloud verfügbar.
Zur Berechtigung für Zero Data Retention und zum allowed_callers-Workaround siehe Server-Tools.
Zur Modellunterstützung siehe die Tool-Referenz.
So funktioniert Web Fetch
Web Fetch ist ein Server-Tool: Die API ruft den Inhalt während der Anfrage ab und fügt die Ergebnisse in die Konversation ein. Du führst nichts aus und gibst kein tool_result zurück. Die Ausnahme ist, wenn Claude Web Fetch und eines deiner Client-Tools in derselben Gruppe paralleler Tool-Aufrufe aufruft: Die API gibt die Antwort mit stop_reason: "tool_use" zurück, bevor dieser Abruf ausgeführt wurde, und führt den Abruf dann aus, wenn du die tool_result-Blöcke des Clients zurücksendest. Siehe Server-Tools und Client-Tools in einem Zug mischen.
Wenn du das Web-Fetch-Tool zu deiner API-Anfrage hinzufügst:
- Claude bestimmt anhand des Prompts und der verfügbaren URLs, wann Inhalte abgerufen werden sollen.
- Die API ruft den vollständigen Textinhalt von der angegebenen URL ab.
- Bei PDFs gibt die API den Inhalt als base64-kodierte Daten zurück und verarbeitet ihn wie ein direkt angehängtes PDF-Dokument.
- Claude analysiert den abgerufenen Inhalt und liefert eine Antwort mit optionalen Zitaten.
Wann Claude abruft
Claude ruft ab, wenn die Anfrage auf eine bestimmte Seite oder ein bestimmtes Dokument verweist:
- Eine URL wird in der Konversation (oder einem vorherigen Tool-Ergebnis) bereitgestellt
- Der Benutzer nennt eine bestimmte Ressource (einen bestimmten Artikel, eine README, eine Preisseite oder einen Dokumentationsabschnitt) ohne URL, und das Web-Search-Tool ist ebenfalls aktiviert, sodass Claude sie zuerst finden kann (siehe Kombinierte Suche und Abruf)
Claude ruft nicht ab bei Allgemeinwissens- oder offenen Fragen, die nicht auf eine bestimmte Seite verweisen. „Fasse diesen Artikel zusammen: <url>" löst einen Abruf aus. „Was sind Best Practices für das Design von REST-APIs?“ wird direkt beantwortet.
Dynamisches Filtern
Das Abrufen vollständiger Webseiten und PDFs kann schnell Token verbrauchen, insbesondere wenn nur bestimmte Informationen aus großen Dokumenten benötigt werden. Mit web_fetch_20260209 oder neuer kann Claude Code schreiben und ausführen, um den abgerufenen Inhalt zu filtern, bevor er in den Kontext geladen wird.
Dieses dynamische Filtern ist besonders nützlich für:
- Das Extrahieren bestimmter Abschnitte aus langen Dokumenten
- Das Verarbeiten strukturierter Daten von Webseiten
- Das Filtern relevanter Informationen aus PDFs
- Das Reduzieren von Token-Kosten bei der Arbeit mit großen Dokumenten
Um dynamisches Filtern zu aktivieren, verwende web_fetch_20260209 oder eine beliebige neuere Version. Die folgenden Beispiele verwenden web_fetch_20260318:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
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)So verwendest du Web Fetch
Stelle das Web-Fetch-Tool in deiner API-Anfrage bereit:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
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}],
)
print(response)Tool-Definition
Das Web-Fetch-Tool unterstützt die folgenden Parameter:
{
"type": "web_fetch_20250910",
"name": "web_fetch",
// Optional: Limit the number of fetches per request
"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: Enable citations for fetched content
"citations": {
"enabled": true
},
// Optional: Maximum content length in tokens
"max_content_tokens": 100000
}Neuere Tool-Versionen fügen zwei weitere optionale Parameter hinzu: use_cache erfordert web_fetch_20260309 oder neuer (siehe Cache-Umgehung), und response_inclusion erfordert web_fetch_20260318 oder neuer (siehe Response Inclusion).
Maximale Nutzungen
Der Parameter max_uses begrenzt die Anzahl der durchgeführten Web-Abrufe. Fehlgeschlagene Abrufe werden auf das Limit angerechnet. Wenn Claude mehr Abrufe versucht als erlaubt, ist das web_fetch_tool_result ein Fehler mit dem Fehlercode max_uses_exceeded. Derzeit gibt es kein Standardlimit.
Domain-Filterung
Zur Domain-Filterung mit allowed_domains und blocked_domains siehe Server-Tools.
Bei Claude Managed Agents setzt du diese Felder im web_fetch-Eintrag des Agent-Toolsets, wobei jede aufgeführte Domain ein einfacher Hostname ohne Pfad sein muss; siehe Web-Search- und Web-Fetch-Domains einschränken.
Inhaltslimits
Der Parameter max_content_tokens begrenzt die Menge an Inhalt, die in den Kontext aufgenommen wird. Wenn der abgerufene Inhalt dieses Limit überschreitet, kürzt das Tool ihn. Dies hilft, die Token-Nutzung beim Abrufen großer Dokumente zu kontrollieren. Das Limit gilt für Textinhalte, nicht für binäre Inhalte wie PDFs.
Bei Claude Managed Agents akzeptiert der web_fetch-Eintrag des Agent-Toolsets ebenfalls max_content_tokens; siehe Web-Search- und Web-Fetch-Domains einschränken.
Cache-Umgehung
Der Parameter use_cache steuert, ob zwischengespeicherte Inhalte zurückgegeben werden dürfen. Setze "use_cache": false, um den Cache zu umgehen und frische Inhalte abzurufen. Der Standardwert ist true. Deaktiviere das Caching nur, wenn der Benutzer ausdrücklich frische Inhalte anfordert oder wenn sich schnell ändernde Quellen abgerufen werden, da das Umgehen des Caches die „latency“ (Latenz) erhöht.
{
"tools": [
{
"type": "web_fetch_20260309",
"name": "web_fetch",
"use_cache": false
}
]
}Response Inclusion
Der Parameter response_inclusion steuert, wie Fetch-Ergebnisblöcke in der API-Antwort erscheinen, wenn das Ergebnis von einem abgeschlossenen Code-Execution-Aufruf im selben Zug konsumiert wurde. Setze "response_inclusion": "excluded", um diese verschachtelten Paare aus server_tool_use- und Ergebnisblöcken vollständig aus der Antwort zu entfernen, was die Output-Token-Kosten für agentische Workflows reduziert, die rohe Seiteninhalte nicht an den Client zurückgeben müssen. Der Standardwert ist "full". Ergebnisse aus direkten Aufrufen oder aus Code-Execution-Aufrufen, die vor dem Abschluss pausiert haben, werden immer vollständig zurückgegeben, damit sie im nächsten Zug zurückgesendet werden können.
{
"tools": [
{
"type": "web_fetch_20260318",
"name": "web_fetch",
"response_inclusion": "excluded"
}
]
}Zitate
Anders als bei Web Search, wo Zitate immer aktiviert sind, sind Zitate bei Web Fetch optional und standardmäßig deaktiviert. Setze "citations": {"enabled": true}, damit Claude bestimmte Passagen aus abgerufenen Dokumenten zitieren kann.
Antwort
Hier ist ein Beispiel für eine Antwortstruktur:
{
"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"
}Fetch-Ergebnisse
Fetch-Ergebnisse enthalten:
url: Die URL, die abgerufen wurdecontent: Ein Dokumentblock, der den abgerufenen Inhalt enthältretrieved_at: Zeitstempel, wann der Inhalt abgerufen wurde
Bei PDF-Dokumenten wird der Inhalt als base64-kodierte 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"
}
}Fehler
Wenn das Web-Fetch-Tool auf einen Fehler stößt, gibt die Claude API eine 200-Antwort (Erfolg) zurück, wobei der Fehler im Antwort-Body dargestellt wird. Claude sieht das Fehlerergebnis und setzt den Zug fort. Zum Beispiel:
{
"type": "web_fetch_tool_result",
"tool_use_id": "srvtoolu_a93jad",
"content": {
"type": "web_fetch_tool_result_error",
"error_code": "url_not_accessible"
}
}Dies sind die möglichen Fehlercodes:
invalid_tool_input: Ungültige Tool-Eingabe, etwa eine fehlerhafte URL oder ein Nicht-HTTP(S)-Schemaurl_too_long: URL überschreitet die maximale Länge (250 Zeichen)url_not_allowed: URL durch Domain-Filterregeln (einschließlich der Einstellungen deiner Organisation) oder durch Anthropic-seitige Einschränkungen blockiert, etwa private Adressen undrobots.txturl_not_in_prior_context: URL ist zuvor nicht in der Konversation aufgetaucht (siehe URL-Validierung)url_not_accessible: Inhalt konnte nicht abgerufen werden (HTTP-Fehler)too_many_requests: Ratenlimit überschrittenunsupported_content_type: Inhaltstyp nicht unterstützt (nur Text, HTML und PDF)max_uses_exceeded: Maximale Anzahl der Web-Fetch-Tool-Nutzungen überschrittenunavailable: Ein interner Fehler ist aufgetreten
URL-Validierung
Aus Sicherheitsgründen kann das Web-Fetch-Tool nur URLs abrufen, die zuvor im Konversationskontext aufgetaucht sind. Dazu gehören:
- URLs in Benutzernachrichten
- URLs in clientseitigen Tool-Ergebnissen
- URLs aus vorherigen Web-Search- oder Web-Fetch-Ergebnissen
Das Tool kann keine beliebigen URLs abrufen, die Claude generiert, oder URLs aus containerbasierten Server-Tools (wie Code Execution und Bash).
Kombinierte Suche und Abruf
Wenn sowohl das Web-Search- als auch das Web-Fetch-Tool aktiviert sind und der Benutzer eine bestimmte Seite oder ein bestimmtes Dokument nennt, ohne eine URL anzugeben (zum Beispiel „lies die README aus dem Repository anthropics/anthropic-sdk-python“), verwendet Claude Web Search, um sie zu finden, und ruft dann das Ergebnis ab. Das folgende Beispiel fordert eine Suche und eine Analyse in einer Anfrage an:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
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)In diesem Workflow:
- Verwendet Claude Web Search, um relevante Artikel zu finden.
- Wählt die vielversprechendsten Ergebnisse aus.
- Verwendet Web Fetch, um den vollständigen Inhalt abzurufen.
- Liefert eine detaillierte Analyse mit Zitaten.
Prompt-Caching
Um Tool-Definitionen über Züge hinweg zu cachen, siehe Tool-Nutzung mit Prompt-Caching.
Streaming
Bei aktiviertem Streaming sind Fetch-Ereignisse Teil des Streams, mit einer Pause während des Inhaltsabrufs:
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 executes
// 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...Batch-Anfragen
Du kannst das Web-Fetch-Tool in die Messages Batches API einbinden. Web-Fetch-Tool-Aufrufe über die Messages Batches API werden genauso abgerechnet wie solche in regulären Messages-API-Anfragen.
Nutzung und Preise
Die Nutzung von Web Fetch verursacht keine zusätzlichen Gebühren über die Standard-Token-Kosten hinaus:
{
"usage": {
"input_tokens": 25039,
"output_tokens": 931,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
"server_tool_use": {
"web_fetch_requests": 1
}
}
}Das Web-Fetch-Tool ist auf der Claude API ohne zusätzliche Kosten verfügbar. Du zahlst nur die Standard-Token-Kosten für die abgerufenen Inhalte, die Teil deines Gesprächskontexts werden.
Um dich davor zu schützen, versehentlich große Inhalte abzurufen, die übermäßig viele Token verbrauchen würden, verwende den Parameter max_content_tokens, um angemessene Limits basierend auf deinem Anwendungsfall und deinen Budgetüberlegungen festzulegen.
Beispielhafter Token-Verbrauch für typische Inhalte:
- Durchschnittliche Webseite (10 kB): ~2.500 Token
- Große Dokumentationsseite (100 kB): ~25.000 Token
- Forschungsarbeit als PDF (500 kB): ~125.000 Token
Nächste Schritte
Führe Python- und Bash-Code in einem Sandbox-Container aus, um Daten zu analysieren, Dateien zu generieren und Lösungen iterativ zu verbessern.
Arbeite mit von Anthropic ausgeführten Tools: server_tool_use-Blöcke, pause_turn-Fortsetzung und Domain-Filterung.
Verzeichnis der von Anthropic bereitgestellten Tools und Referenz für optionale Eigenschaften von Tool-Definitionen.
Was this page helpful?