Das Web-Abruf-Tool ermöglicht es 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 Modellantworten, der API selbst oder der Qualität der Dokumentation zu geben.

Die Aktivierung des Web-Abruf-Tools in Umgebungen, in denen Claude nicht vertrauenswürdige Eingaben zusammen mit sensiblen Daten verarbeitet, birgt Risiken für die Datenexfiltration. Wir empfehlen, dieses Tool nur in vertrauenswürdigen Umgebungen oder beim Umgang mit nicht-sensiblen Daten zu verwenden.

Um Exfiltrationsrisiken zu minimieren, ist es Claude nicht erlaubt, URLs dynamisch zu konstruieren. Claude kann nur URLs abrufen, die explizit vom Benutzer 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, erwägen Sie:

  • Das Web-Abruf-Tool vollständig zu deaktivieren
  • Den Parameter max_uses zu verwenden, um die Anzahl der Anfragen zu begrenzen
  • Den Parameter allowed_domains zu verwenden, um auf bekannte sichere Domains zu beschränken

Unterstützte Modelle

Web-Abruf ist verfügbar auf:

  • Claude Opus 4.1 (claude-opus-4-1-20250805)
  • Claude Opus 4 (claude-opus-4-20250514)
  • Claude Sonnet 4 (claude-sonnet-4-20250514)
  • Claude Sonnet 3.7 (claude-3-7-sonnet-20250219)
  • Claude Sonnet 3.5 v2 (veraltet) (claude-3-5-sonnet-latest)
  • Claude Haiku 3.5 (claude-3-5-haiku-latest)

Wie Web-Abruf funktioniert

Wenn Sie das Web-Abruf-Tool zu Ihrer API-Anfrage hinzufügen:

  1. Claude entscheidet basierend auf der Eingabeaufforderung und verfügbaren URLs, wann Inhalte abgerufen werden sollen.
  2. Die API ruft den vollständigen Textinhalt von der angegebenen URL ab.
  3. Für PDFs wird eine automatische Textextraktion durchgeführt.
  4. Claude analysiert den abgerufenen Inhalt und liefert eine Antwort mit optionalen Zitaten.

Wie man Web-Abruf verwendet

Stellen Sie das Web-Abruf-Tool in Ihrer API-Anfrage bereit:

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-1-20250805",
        "max_tokens": 1024,
        "messages": [
            {
                "role": "user",
                "content": "Bitte analysieren Sie den Inhalt unter https://example.com/article"
            }
        ],
        "tools": [{
            "type": "web_fetch_20250910",
            "name": "web_fetch",
            "max_uses": 5
        }]
    }'

Tool-Definition

Das Web-Abruf-Tool unterstützt die folgenden Parameter:

JSON
{
  "type": "web_fetch_20250910",
  "name": "web_fetch",

  // Optional: Begrenzen Sie die Anzahl der Abrufe pro Anfrage
  "max_uses": 10,

  // Optional: Nur von diesen Domains abrufen
  "allowed_domains": ["example.com", "docs.example.com"],

  // Optional: Niemals von diesen Domains 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
}

Max uses

Der Parameter max_uses begrenzt die Anzahl der durchgeführten Web-Abrufe. Wenn Claude versucht, mehr Abrufe durchzuführen als erlaubt, wird das web_fetch_tool_result ein Fehler mit dem Fehlercode max_uses_exceeded sein. Es gibt derzeit keine Standardbegrenzung.

Domain-Filterung

Bei der Verwendung von Domain-Filtern:

  • Domains sollten nicht das HTTP/HTTPS-Schema enthalten (verwenden Sie example.com anstatt https://example.com)
  • Subdomains sind automatisch enthalten (example.com umfasst docs.example.com)
  • Subpfade werden unterstützt (example.com/blog)
  • Sie können entweder allowed_domains oder blocked_domains verwenden, aber nicht beide in derselben Anfrage.

Seien Sie sich bewusst, dass Unicode-Zeichen in Domain-Namen Sicherheitslücken durch Homograph-Angriffe schaffen können, bei denen visuell ähnliche Zeichen aus verschiedenen Schriftsystemen Domain-Filter umgehen können. Zum Beispiel kann аmazon.com (mit kyrillischem ‘а’) identisch mit amazon.com aussehen, stellt aber eine andere Domain dar.

Bei der Konfiguration von Domain-Erlaubnis-/Sperrlisten:

  • Verwenden Sie wenn möglich nur ASCII-Domain-Namen
  • Bedenken Sie, dass URL-Parser Unicode-Normalisierung unterschiedlich handhaben können
  • Testen Sie Ihre Domain-Filter mit potenziellen Homograph-Variationen
  • Überprüfen Sie regelmäßig Ihre Domain-Konfigurationen auf verdächtige Unicode-Zeichen

Inhaltsbegrenzungen

Der Parameter max_content_tokens begrenzt die Menge an Inhalt, die in den Kontext einbezogen wird. Wenn der abgerufene Inhalt diese Grenze überschreitet, wird er abgeschnitten. Dies hilft dabei, die Token-Nutzung beim Abrufen großer Dokumente zu kontrollieren.

Die Begrenzung des Parameters max_content_tokens ist ungefähr. Die tatsächliche Anzahl der verwendeten Eingabe-Token kann um einen kleinen Betrag variieren.

Zitate

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.

Beim Anzeigen von Web-Ergebnissen oder Informationen aus Web-Ergebnissen für Endbenutzer müssen Inline-Zitate in Ihrer Benutzeroberfläche deutlich sichtbar und anklickbar gemacht werden.

Antwort

Hier ist ein Beispiel für eine Antwortstruktur:

{
  "role": "assistant",
  "content": [
    // 1. Claudes Entscheidung zum Abrufen
    {
      "type": "text",
      "text": "Ich werde den Inhalt des Artikels abrufen, um ihn zu analysieren."
    },
    // 2. Die Abruf-Anfrage
    {
      "type": "server_tool_use",
      "id": "srvtoolu_01234567890abcdef",
      "name": "web_fetch",
      "input": {
        "url": "https://example.com/article"
      }
    },
    // 3. Abruf-Ergebnisse
    {
      "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": "Vollständiger Textinhalt des Artikels..."
          },
          "title": "Artikel-Titel",
          "citations": {"enabled": true}
        },
        "retrieved_at": "2025-08-25T10:30:00Z"
      }
    },
    // 4. Claudes Analyse mit Zitaten (falls aktiviert)
    {
      "text": "Basierend auf dem Artikel, ",
      "type": "text"
    },
    {
      "text": "ist das Hauptargument, dass künstliche Intelligenz das Gesundheitswesen transformieren wird",
      "type": "text",
      "citations": [
        {
          "type": "char_location",
          "document_index": 0,
          "document_title": "Artikel-Titel",
          "start_char_index": 1234,
          "end_char_index": 1456,
          "cited_text": "Künstliche Intelligenz ist bereit, die Gesundheitsversorgung zu revolutionieren..."
        }
      ]
    }
  ],
  "id": "msg_a930390d3a",
  "usage": {
    "input_tokens": 25039,
    "output_tokens": 931,
    "server_tool_use": {
      "web_fetch_requests": 1
    }
  },
  "stop_reason": "end_turn"
}

Abruf-Ergebnisse

Abruf-Ergebnisse umfassen:

  • url: Die URL, die abgerufen wurde
  • content: Ein Dokumentblock, der den abgerufenen Inhalt enthält
  • retrieved_at: Zeitstempel, wann der Inhalt abgerufen wurde

Das Web-Abruf-Tool speichert Ergebnisse zwischen, um die Leistung zu verbessern und redundante Anfragen zu reduzieren. Das bedeutet, dass der zurückgegebene Inhalt möglicherweise nicht immer die neueste Version ist, die unter der URL verfügbar ist. Das Cache-Verhalten wird automatisch verwaltet und kann sich im Laufe der Zeit ändern, um für verschiedene Inhaltstypen und Nutzungsmuster zu optimieren.

Für PDF-Dokumente 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-Abruf-Tool auf einen Fehler stößt, gibt die Anthropic API eine 200 (Erfolg) Antwort mit dem im Antworttext dargestellten Fehler 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-Format
  • url_too_long: URL überschreitet maximale Länge (250 Zeichen)
  • url_not_allowed: URL durch Domain-Filterregeln und Modellbeschränkungen blockiert
  • url_not_accessible: Fehler beim Abrufen des Inhalts (HTTP-Fehler)
  • too_many_requests: Rate-Limit überschritten
  • unsupported_content_type: Inhaltstyp nicht unterstützt (nur Text und PDF)
  • max_uses_exceeded: Maximale Web-Abruf-Tool-Nutzung überschritten
  • unavailable: Ein interner Fehler ist aufgetreten

URL-Validierung

Aus Sicherheitsgründen kann das Web-Abruf-Tool nur URLs abrufen, die zuvor im Gesprächskontext erschienen sind. Dies umfasst:

  • URLs in Benutzernachrichten
  • URLs in clientseitigen Tool-Ergebnissen
  • URLs aus vorherigen Web-Such- oder Web-Abruf-Ergebnissen

Das Tool kann keine beliebigen URLs abrufen, die Claude generiert oder URLs aus containerbasierten Server-Tools (Code-Ausführung, Bash, etc.).

Kombinierte Suche und Abruf

Web-Abruf funktioniert nahtlos mit Web-Suche für umfassende Informationsbeschaffung:

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-opus-4-1-20250805",
    max_tokens=4096,
    messages=[
        {
            "role": "user",
            "content": "Finden Sie aktuelle Artikel über Quantencomputing und analysieren Sie den relevantesten im 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 Arbeitsablauf wird Claude:

  1. Web-Suche verwenden, um relevante Artikel zu finden
  2. Die vielversprechendsten Ergebnisse auswählen
  3. Web-Abruf verwenden, um vollständige Inhalte abzurufen
  4. Detaillierte Analyse mit Zitaten bereitstellen

Prompt-Caching

Web-Abruf funktioniert mit Prompt-Caching. Um Prompt-Caching zu aktivieren, fügen Sie cache_control-Haltepunkte in Ihre Anfrage ein. Zwischengespeicherte Abruf-Ergebnisse können über Gesprächsrunden hinweg wiederverwendet werden.

import anthropic

client = anthropic.Anthropic()

# Erste Anfrage mit Web-Abruf
messages = [
    {
        "role": "user",
        "content": "Analysieren Sie diese Forschungsarbeit: https://arxiv.org/abs/2024.12345"
    }
]

response1 = client.messages.create(
    model="claude-opus-4-1-20250805",
    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": "Welche Methodik verwendet die Arbeit?",
    "cache_control": {"type": "ephemeral"}
})

response2 = client.messages.create(
    model="claude-opus-4-1-20250805",
    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 Abruf-Ergebnissen
print(f"Cache-Lese-Token: {response2.usage.get('cache_read_input_tokens', 0)}")

Streaming

Mit aktiviertem Streaming sind Abruf-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": ""}}

// 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 der Abruf ausgeführt wird

// Abruf-Ergebnisse 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": "Artikel-Inhalt..."}}}}}

// Claudes Antwort setzt sich fort...

Batch-Anfragen

Sie können das Web-Abruf-Tool in die Messages Batches API einbeziehen. Web-Abruf-Tool-Aufrufe über die Messages Batches API werden genauso bepreist wie die in regulären Messages API-Anfragen.

Nutzung und Preise

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 Anthropic 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:

  • Average web page (10KB): ~2,500 tokens
  • Large documentation page (100KB): ~25,000 tokens
  • Research paper PDF (500KB): ~125,000 tokens