Claude Platform Docs
MessagesTools

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:

  1. Claude bestimmt anhand des Prompts und der verfügbaren URLs, wann Inhalte abgerufen werden sollen.
  2. Die API ruft den vollständigen Textinhalt von der angegebenen URL ab.
  3. Bei PDFs gibt die API den Inhalt als base64-kodierte Daten zurück und verarbeitet ihn wie ein direkt angehängtes PDF-Dokument.
  4. 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:

JSON
{
  "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:

Output
{
  "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 wurde
  • content: Ein Dokumentblock, der den abgerufenen Inhalt enthält
  • retrieved_at: Zeitstempel, wann der Inhalt abgerufen wurde

Bei PDF-Dokumenten wird der Inhalt als base64-kodierte Daten zurückgegeben:

Output
{
  "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:

Output
{
  "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)-Schema
  • url_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 und robots.txt
  • url_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 überschritten
  • unsupported_content_type: Inhaltstyp nicht unterstützt (nur Text, HTML und PDF)
  • max_uses_exceeded: Maximale Anzahl der Web-Fetch-Tool-Nutzungen überschritten
  • unavailable: 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:

  1. Verwendet Claude Web Search, um relevante Artikel zu finden.
  2. Wählt die vielversprechendsten Ergebnisse aus.
  3. Verwendet Web Fetch, um den vollständigen Inhalt abzurufen.
  4. 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:

Output
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?