---
title: Web-Search-Tool
url: https://platform.claude.com/docs/de/agents-and-tools/tool-use/web-search-tool
description: Gib Claude Zugriff auf aktuelle Webinhalte mit zitierten Quellen, optionaler dynamischer Filterung und Domain-Kontrollen.
---

<Note>
  Um zu erfahren, wie „zero data retention“ (Null-Datenspeicherung), oder ZDR, auf diese Funktion angewendet wird, siehe [API und Datenspeicherung](https://platform.claude.com/docs/de/manage-claude/api-and-data-retention).
</Note>

Das Web-Search-Tool gibt Claude direkten Zugriff auf Webinhalte in Echtzeit und ermöglicht es ihm, Fragen mit aktuellen Informationen jenseits seines Wissensstichtags zu beantworten. Die Antwort enthält Zitate für Quellen, die aus den Suchergebnissen stammen.

Mit `web_search_20260209` und späteren Versionen kann Claude Code schreiben und ausführen, der die Suchergebnisse filtert, bevor sie das „context window“ (Kontextfenster) erreichen (**dynamische Filterung**), sodass nur relevante Informationen erhalten bleiben. Dynamische Filterung ist mit Claude 4.6 und späteren Modellen sowie [Claude Mythos Preview](https://anthropic.com/glasswing) verfügbar.

Drei Versionen des Web-Search-Tools sind verfügbar:

* `web_search_20250305`: einfache Websuche
* `web_search_20260209`: fügt [dynamische Filterung](https://platform.claude.com/docs/de/agents-and-tools/tool-use/web-search-tool#dynamic-filtering) hinzu
* `web_search_20260318`: fügt die Steuerung der [Antworteinbeziehung](https://platform.claude.com/docs/de/agents-and-tools/tool-use/web-search-tool#response-inclusion) für agentische Workflows hinzu

Die Beispiele auf dieser Seite verwenden `web_search_20250305` für die einfache Suche und `web_search_20260318` für die dynamische Filterung.

<Note>
  Für [Claude Mythos Preview](https://anthropic.com/glasswing) wird die Websuche auf der Claude API, Google Cloud und Microsoft Foundry unterstützt. Die Websuche ist für Mythos Preview auf Amazon Bedrock oder [Claude Platform on AWS](https://platform.claude.com/docs/de/build-with-claude/claude-platform-on-aws) nicht verfügbar.
</Note>

Zur Zero-Data-Retention-Berechtigung der Websuche und der zugehörigen `allowed_callers`-Konfiguration siehe [Server-Tools](https://platform.claude.com/docs/de/agents-and-tools/tool-use/server-tools#zdr-and-allowed-callers).

Zur Modellunterstützung siehe die [Tool-Referenz](https://platform.claude.com/docs/de/agents-and-tools/tool-use/tool-reference).

Um zu prüfen, ob ein Modell die Websuche akzeptiert, bevor du eine Anfrage sendest, lies seinen Wert `capabilities.server_tools.web_search.supported` aus der Models API aus. [Die Models API verwenden](https://platform.claude.com/docs/de/models/overview#using-the-models-api) beschreibt das Feld.

## So funktioniert die Websuche

Wenn du das Web-Search-Tool zu deiner API-Anfrage hinzufügst:

1. Claude entscheidet anhand des Prompts, wann gesucht wird.
2. Die API führt die Suchen aus und stellt Claude die Ergebnisse bereit. Dieser Vorgang kann sich innerhalb einer einzelnen Anfrage mehrfach wiederholen.
3. Am Ende seines Zugs liefert Claude eine abschließende Antwort mit zitierten Quellen.

### Wann Claude sucht

Claude sucht, wenn die Anfrage von Informationen abhängt, die aktuell sind, sich ändern oder außerhalb seiner Trainingsdaten liegen:

* Aktuelle Ereignisse, Nachrichten oder Ankündigungen
* Aktuelle Preise, Kurse, Spielstände oder Statistiken
* Informationen über bestimmte Organisationen, Personen oder Produkte, die sich geändert haben könnten
* Ausdrückliche Aufforderungen, etwas zu suchen oder nachzuschlagen

Claude antwortet direkt ohne Suche, wenn die Anfrage auf stabilem Wissen beruht:

* Etablierte Fakten, Mathematik, naturwissenschaftliche Grundlagen oder Programmierkonzepte
* Kreatives Schreiben oder Brainstorming
* Analyse von Inhalten, die bereits im Gespräch bereitgestellt wurden
* Gesprächsbeiträge und Begrüßungen

Das Auslösen ist über deinen System-Prompt steuerbar: Du kannst Claude dazu anregen, bereitwilliger zu suchen oder bevorzugt direkt zu antworten. Für eine harte Beschränkung verwende `max_uses`, um die Anzahl der Suchen pro Anfrage zu begrenzen.

### Dynamische Filterung

Bei der einfachen Websuche wird jedes Suchergebnis in Claudes Kontextfenster geladen, und ein Großteil dieser Inhalte kann für die Anfrage irrelevant sein. Mit `web_search_20260209` oder später schreibt und führt Claude stattdessen Code aus, der die Ergebnisse zuerst filtert, sodass nur relevante Inhalte das Kontextfenster erreichen. Das reduziert den Token-Verbrauch bei suchintensiven Anfragen.

Die dynamische Filterung führt die Websuche innerhalb der [Code-Ausführung](https://platform.claude.com/docs/de/agents-and-tools/tool-use/code-execution-tool) aus: Bei `web_search_20260209` und später ist das Feld `allowed_callers` des Tools standardmäßig auf `["code_execution_20260120"]` gesetzt, und wenn die dynamische Filterung läuft, stellt die API die für die Anfrage benötigte Code-Ausführung automatisch bereit. Du musst das Code-Execution-Tool nicht selbst zu `tools` hinzufügen. Für auf diese Weise durchgeführte Code-Execution-Aufrufe fallen über die üblichen Token-Kosten hinaus keine zusätzlichen Gebühren an.

Um die Websuche direkt, ohne dynamische Filterung, aufzurufen, setze `allowed_callers: ["direct"]`. Modelle, die kein programmatisches Tool-Calling unterstützen, erfordern diese Einstellung. Ohne sie gibt die API einen 400-Fehler zurück, der dich auffordert, sie zu setzen.

<Note>
  Das Web-Search-Tool (mit und ohne dynamische Filterung) ist auf der Claude API, [Claude Platform on AWS](https://platform.claude.com/docs/de/build-with-claude/claude-platform-on-aws) und [Microsoft Foundry](https://platform.claude.com/docs/de/build-with-claude/claude-in-microsoft-foundry) verfügbar. Auf Microsoft Foundry unterstützen [auf Azure gehostete](https://platform.claude.com/docs/de/build-with-claude/claude-in-microsoft-foundry#additional-features-not-supported-when-hosted-on-azure) Deployments nur das einfache Web-Search-Tool (`web_search_20250305`, ohne dynamische Filterung). Bei Anthropic gehostete Deployments unterstützen alle Versionen. Auf Google Cloud ist nur das einfache Web-Search-Tool (ohne dynamische Filterung) verfügbar. Die Websuche ist auf Amazon Bedrock nicht verfügbar.
</Note>

Die folgenden Beispiele verwenden `web_search_20260318`:

<CodeGroup>
  ```bash cURL
  curl https://api.anthropic.com/v1/messages \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "content-type: application/json" \
    -d '{
      "model": "claude-opus-5-5",
      "max_tokens": 4096,
      "messages": [
        {
          "role": "user",
          "content": "Search for the current prices of AAPL and GOOGL, then calculate which has a better P/E ratio."
        }
      ],
      "tools": [{
        "type": "web_search_20260318",
        "name": "web_search"
      }]
    }'
  ```

  ```bash CLI
  ant messages create <<'YAML'
  model: claude-opus-5-5
  max_tokens: 4096
  messages:
    - role: user
      content: >-
        Search for the current prices of AAPL and GOOGL, then calculate
        which has a better P/E ratio.
  tools:
    - type: web_search_20260318
      name: web_search
  YAML
  ```

  ```python Python
  client = anthropic.Anthropic()

  response = client.messages.create(
      model="claude-opus-5-5",
      max_tokens=4096,
      messages=[
          {
              "role": "user",
              "content": "Search for the current prices of AAPL and GOOGL, then calculate which has a better P/E ratio.",
          }
      ],
      tools=[{"type": "web_search_20260318", "name": "web_search"}],
  )
  print(response)
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const response = await client.messages.create({
    model: "claude-opus-5-5",
    max_tokens: 4096,
    messages: [
      {
        role: "user",
        content:
          "Search for the current prices of AAPL and GOOGL, then calculate which has a better P/E ratio."
      }
    ],
    tools: [{ type: "web_search_20260318", name: "web_search" }]
  });

  console.log(response);
  ```

  ```csharp C#
  AnthropicClient client = new();

  var parameters = new MessageCreateParams
  {
      Model = Model.ClaudeOpus5_5,
      MaxTokens = 4096,
      Messages = [new() { Role = Role.User, Content = "Search for the current prices of AAPL and GOOGL, then calculate which has a better P/E ratio." }],
      Tools = [new ToolUnion(new WebSearchTool20260318())]
  };

  var message = await client.Messages.Create(parameters);
  Console.WriteLine(message);
  ```

  ```go Go
  client := anthropic.NewClient()

  response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
  	Model:     anthropic.ModelClaudeOpus5_5,
  	MaxTokens: 4096,
  	Messages: []anthropic.MessageParam{
  		anthropic.NewUserMessage(anthropic.NewTextBlock("Search for the current prices of AAPL and GOOGL, then calculate which has a better P/E ratio.")),
  	},
  	Tools: []anthropic.ToolUnionParam{
  		{OfWebSearchTool20260318: &anthropic.WebSearchTool20260318Param{}},
  	},
  })
  if err != nil {
  	log.Fatal(err)
  }
  fmt.Println(response)
  ```

  ```java Java
  import com.anthropic.models.messages.WebSearchTool20260318;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      MessageCreateParams params = MessageCreateParams.builder()
          .model(Model.CLAUDE_OPUS_5_5)
          .maxTokens(4096L)
          .addUserMessage("Search for the current prices of AAPL and GOOGL, then calculate which has a better P/E ratio.")
          .addTool(WebSearchTool20260318.builder().build())
          .build();

      Message response = client.messages().create(params);
      IO.println(response);
  }
  ```

  ```php PHP
  $client = new Client();

  $message = $client->messages->create(
      maxTokens: 4096,
      messages: [
          ['role' => 'user', 'content' => 'Search for the current prices of AAPL and GOOGL, then calculate which has a better P/E ratio.'],
      ],
      model: 'claude-opus-5-5',
      tools: [
          [
              'type' => 'web_search_20260318',
              'name' => 'web_search',
          ],
      ],
  );

  echo $message;
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

  message = client.messages.create(
    model: "claude-opus-5-5",
    max_tokens: 4096,
    messages: [
      { role: "user", content: "Search for the current prices of AAPL and GOOGL, then calculate which has a better P/E ratio." }
    ],
    tools: [{
      type: "web_search_20260318",
      name: "web_search"
    }]
  )
  puts message
  ```
</CodeGroup>

## So verwendest du die Websuche

<Note>
  Die Websuche ist für deine Organisation aktiviert, sofern ein Administrator sie nicht in der [Claude Console](https://platform.claude.com/settings/capabilities) deaktiviert hat. Dort kann er auch einschränken, welche Domains durchsucht werden. Ist die Websuche deaktiviert, schlägt eine Anfrage mit dem Tool mit einem 400-`invalid_request_error` fehl, der meldet, dass die Websuche nicht aktiviert ist. Es wird also kein [Fehlercode](https://platform.claude.com/docs/de/agents-and-tools/tool-use/web-search-tool#errors) innerhalb eines Suchergebnisses zurückgegeben.
</Note>

Diese Einstellungen auf Organisationsebene in der Claude Console gelten nur für Anfragen an die Messages API. Sitzungen von [Claude Managed Agents](https://platform.claude.com/docs/de/managed-agents/overview) verwenden stattdessen die Listen `allowed_domains` und `blocked_domains` pro Tool im Agent-Toolset; siehe [Domains für Websuche und Web-Fetch einschränken](https://platform.claude.com/docs/de/managed-agents/tools-web-restrictions). Für eine Sitzung in einer Cloud-Umgebung mit `limited`-Networking gilt außerdem `allowed_hosts` der Umgebung für `web_search` und `web_fetch`; siehe [Networking](https://platform.claude.com/docs/de/managed-agents/environments#networking). Die Listen pro Tool schränken diese Tools innerhalb der von `allowed_hosts` erlaubten Hosts weiter ein.

Stelle das Web-Search-Tool in deiner API-Anfrage bereit:

<CodeGroup>
  ```bash cURL
  curl https://api.anthropic.com/v1/messages \
    -H "x-api-key: $ANTHROPIC_API_KEY" \
    -H "anthropic-version: 2023-06-01" \
    -H "content-type: application/json" \
    -d '{
      "model": "claude-opus-5-5",
      "max_tokens": 1024,
      "messages": [
        {
          "role": "user",
          "content": "What is the weather in NYC?"
        }
      ],
      "tools": [{
        "type": "web_search_20250305",
        "name": "web_search",
        "max_uses": 5
      }]
    }'
  ```

  ```bash CLI
  ant messages create \
    --model claude-opus-5-5 \
    --max-tokens 1024 \
    --message '{role: user, content: What is the weather in NYC?}' \
    --tool '{type: web_search_20250305, name: web_search, max_uses: 5}'
  ```

  ```python Python
  client = anthropic.Anthropic()

  response = client.messages.create(
      model="claude-opus-5-5",
      max_tokens=1024,
      messages=[{"role": "user", "content": "What's the weather in NYC?"}],
      tools=[{"type": "web_search_20250305", "name": "web_search", "max_uses": 5}],
  )
  print(response)
  ```

  ```typescript TypeScript
  const client = new Anthropic();

  const response = await client.messages.create({
    model: "claude-opus-5-5",
    max_tokens: 1024,
    messages: [
      {
        role: "user",
        content: "What's the weather in NYC?"
      }
    ],
    tools: [
      {
        type: "web_search_20250305",
        name: "web_search",
        max_uses: 5
      }
    ]
  });

  console.log(response);
  ```

  ```csharp C#
  AnthropicClient client = new();

  var parameters = new MessageCreateParams
  {
      Model = Model.ClaudeOpus5_5,
      MaxTokens = 1024,
      Messages = [new() { Role = Role.User, Content = "What's the weather in NYC?" }],
      Tools = [new ToolUnion(new WebSearchTool20250305() { MaxUses = 5 })]
  };

  var message = await client.Messages.Create(parameters);
  Console.WriteLine(message);
  ```

  ```go Go
  client := anthropic.NewClient()

  response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
  	Model:     anthropic.ModelClaudeOpus5_5,
  	MaxTokens: 1024,
  	Messages: []anthropic.MessageParam{
  		anthropic.NewUserMessage(anthropic.NewTextBlock("What's the weather in NYC?")),
  	},
  	Tools: []anthropic.ToolUnionParam{
  		{OfWebSearchTool20250305: &anthropic.WebSearchTool20250305Param{
  			MaxUses: anthropic.Int(5),
  		}},
  	},
  })
  if err != nil {
  	log.Fatal(err)
  }
  fmt.Println(response)
  ```

  ```java Java
  import com.anthropic.models.messages.WebSearchTool20250305;

  void main() {
      AnthropicClient client = AnthropicOkHttpClient.fromEnv();

      MessageCreateParams params = MessageCreateParams.builder()
          .model(Model.CLAUDE_OPUS_5_5)
          .maxTokens(1024L)
          .addUserMessage("What's the weather in NYC?")
          .addTool(WebSearchTool20250305.builder()
              .maxUses(5L)
              .build())
          .build();

      Message response = client.messages().create(params);
      IO.println(response);
  }
  ```

  ```php PHP
  $client = new Client();

  $message = $client->messages->create(
      maxTokens: 1024,
      messages: [
          ['role' => 'user', 'content' => "What's the weather in NYC?"],
      ],
      model: 'claude-opus-5-5',
      tools: [
          [
              'type' => 'web_search_20250305',
              'name' => 'web_search',
              'max_uses' => 5,
          ],
      ],
  );

  echo $message;
  ```

  ```ruby Ruby
  client = Anthropic::Client.new

  message = client.messages.create(
    model: "claude-opus-5-5",
    max_tokens: 1024,
    messages: [
      { role: "user", content: "What's the weather in NYC?" }
    ],
    tools: [{
      type: "web_search_20250305",
      name: "web_search",
      max_uses: 5
    }]
  )
  puts message
  ```
</CodeGroup>

## Tool-Definition

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

```json JSON
{
  "type": "web_search_20250305",
  "name": "web_search",

  // Optional: Limit the number of searches per request
  "max_uses": 5,

  // Optional: Only include results from these domains.
  // Use allowed_domains or blocked_domains, not both.
  "allowed_domains": ["example.com", "trusteddomain.org"],

  // Optional: Never include results from these domains
  "blocked_domains": ["untrustedsource.com"],

  // Optional: Localize search results
  "user_location": {
    "type": "approximate",
    "city": "San Francisco",
    "region": "California",
    "country": "US",
    "timezone": "America/Los_Angeles"
  }
}
```

Alle Versionen des Web-Search-Tools akzeptieren `allowed_callers`, das steuert, ob Claude die Websuche direkt oder aus der Code-Ausführung über [dynamische Filterung](https://platform.claude.com/docs/de/agents-and-tools/tool-use/web-search-tool#dynamic-filtering) aufruft. Bei `web_search_20260209` und später ist der Standardwert `["code_execution_20260120"]` statt `["direct"]`. Siehe [Server-Tools](https://platform.claude.com/docs/de/agents-and-tools/tool-use/server-tools#zdr-and-allowed-callers) zur Konfiguration. `web_search_20260318` und später akzeptieren außerdem [`response_inclusion`](https://platform.claude.com/docs/de/agents-and-tools/tool-use/web-search-tool#response-inclusion).

### Maximale Nutzungen

Der Parameter `max_uses` begrenzt die Anzahl der durchgeführten Suchen. Wenn Claude mehr Suchen versucht als erlaubt, ist das `web_search_tool_result` ein Fehler mit dem Fehlercode `max_uses_exceeded`.

Einfache Faktenabfragen verwenden typischerweise 1–3 Suchen; vergleichende Recherchen oder Recherchen zu mehreren Entitäten können 10 oder mehr verwenden. Hinweise zur Wahl eines Werts findest du unter [Server-Tools](https://platform.claude.com/docs/de/agents-and-tools/tool-use/server-tools).

### Domain-Filterung

Gib entweder `allowed_domains` oder `blocked_domains` an, nicht beides. Enthält eine Anfrage beides, gibt die API einen 400-Fehler zurück. Einträge sind reine Domains mit optionalem Pfad, zum Beispiel `example.com` oder `example.com/blog`, ohne Schema.

Die vollständigen Regeln zur Domain-Filterung findest du unter [Domain-Filterung](https://platform.claude.com/docs/de/agents-and-tools/tool-use/server-tools#domain-filtering) im Leitfaden zu Server-Tools.

Setze diese Felder bei [Claude Managed Agents](https://platform.claude.com/docs/de/managed-agents/overview) im `web_search`-Eintrag des Agent-Toolsets; siehe [Domains für Websuche und Web-Fetch einschränken](https://platform.claude.com/docs/de/managed-agents/tools-web-restrictions).

### Lokalisierung

Mit dem Parameter `user_location` kannst du Suchergebnisse anhand des Standorts eines Nutzers lokalisieren. Gib mindestens eines von `city`, `region`, `country` oder `timezone` an.

* `type`: Der Typ des Standorts (muss `approximate` sein)
* `city`: Der Name der Stadt
* `region`: Die Region oder der Bundesstaat
* `country`: Der zweibuchstabige Ländercode nach [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Die API lehnt nicht unterstützte Ländercodes mit einem 400-Fehler ab.
* `timezone`: Die [IANA-Zeitzonen-ID](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).

Bei Claude Managed Agents akzeptiert der `web_search`-Eintrag des Agent-Toolsets ein `user_location`-Objekt mit denselben Feldern. Die API lehnt einen nicht unterstützten `country`-Code mit einem 400-Fehler ab, wenn du den Agenten erstellst oder aktualisierst oder wenn du eine Sitzung erstellst oder aktualisierst, die diese Einstellung angibt. Siehe die [Einstellungen der Web-Tools](https://platform.claude.com/docs/de/managed-agents/tools-web-restrictions#settings).

### Antworteinbeziehung

<Note>
  Erfordert `web_search_20260318` oder später.
</Note>

Der Parameter `response_inclusion` steuert, wie Suchergebnisblöcke in der API-Antwort erscheinen, wenn das Ergebnis von einem abgeschlossenen [Code-Execution](https://platform.claude.com/docs/de/agents-and-tools/tool-use/code-execution-tool)-Aufruf im selben Zug verarbeitet wurde. Setze `"response_inclusion": "excluded"`, um diese verschachtelten Paare aus `server_tool_use`- und Ergebnisblöcken vollständig aus der Antwort zu entfernen und so die Output-Token-Kosten für agentische Workflows zu senken, die rohe Suchinhalte 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 wurden, werden immer vollständig zurückgegeben, damit sie im nächsten Zug zurückgesendet werden können.

```json JSON
{
  "tools": [
    {
      "type": "web_search_20260318",
      "name": "web_search",
      "response_inclusion": "excluded"
    }
  ]
}
```

## Antwort

Hier ist ein Beispiel für die Antwortstruktur:

```json Output
{
  "role": "assistant",
  "content": [
    // 1. Claude's decision to search
    {
      "type": "text",
      "text": "I'll search for when Claude Shannon was born."
    },
    // 2. The search query used
    {
      "type": "server_tool_use",
      "id": "srvtoolu_01WYG3ziw53XMcoyKL4XcZmE",
      "name": "web_search",
      "input": {
        "query": "claude shannon birth date"
      }
    },
    // 3. Search results
    {
      "type": "web_search_tool_result",
      "tool_use_id": "srvtoolu_01WYG3ziw53XMcoyKL4XcZmE",
      "content": [
        {
          "type": "web_search_result",
          "url": "https://en.wikipedia.org/wiki/Claude_Shannon",
          "title": "Claude Shannon - Wikipedia",
          "encrypted_content": "EqgfCioIARgBIiQ3YTAwMjY1Mi1mZjM5LTQ1NGUtODgxNC1kNjNjNTk1ZWI3Y...",
          "page_age": "April 30, 2025"
        }
      ]
    },
    {
      "text": "Based on the search results, ",
      "type": "text"
    },
    // 4. Claude's response with citations
    {
      "text": "Claude Shannon was born on April 30, 1916, in Petoskey, Michigan",
      "type": "text",
      "citations": [
        {
          "type": "web_search_result_location",
          "url": "https://en.wikipedia.org/wiki/Claude_Shannon",
          "title": "Claude Shannon - Wikipedia",
          "encrypted_index": "Eo8BCioIAhgBIiQyYjQ0OWJmZi1lNm..",
          "cited_text": "Claude Elwood Shannon (April 30, 1916 – February 24, 2001) was an American mathematician, electrical engineer, computer scientist, cryptographer and i..."
        }
      ]
    }
  ],
  "id": "msg_a930390d3a",
  "usage": {
    "input_tokens": 6039,
    "output_tokens": 931,
    "server_tool_use": {
      "web_search_requests": 1
    }
  },
  "stop_reason": "end_turn"
}
```

Dieses Beispiel zeigt eine direkte Suche. Wenn eine Suche über [dynamische Filterung](https://platform.claude.com/docs/de/agents-and-tools/tool-use/web-search-tool#dynamic-filtering) läuft, enthält die Antwort zusätzlich die Ergebnisblöcke des [Code-Execution-Tools](https://platform.claude.com/docs/de/agents-and-tools/tool-use/code-execution-tool), und jedes verschachtelte Paar aus `server_tool_use` und `web_search_tool_result` trägt ein `caller`-Feld, das den Code-Execution-Aufruf identifiziert, der es ausgelöst hat.

### Suchergebnisse

Suchergebnisse enthalten:

* `url`: Die URL der Quellseite
* `title`: Der Titel der Quellseite
* `page_age`: Wann die Seite zuletzt aktualisiert wurde
* `encrypted_content`: Verschlüsselter Inhalt, den du in mehrzügigen Gesprächen zurückgeben musst

Um ein Gespräch fortzusetzen, das Suchergebnisse enthält, sende die Content-Blöcke des Assistenten genau so zurück, wie du sie erhalten hast, einschließlich des `encrypted_content` jedes Ergebnisses. Die API entschlüsselt diesen Inhalt in späteren Zügen, um die Suchergebnisse in Claudes Kontext wiederherzustellen. Fehlt `encrypted_content` oder wurde es verändert, schlägt die Anfrage mit einem 400-Validierungsfehler fehl.

### Zitate

Zitate sind für die Websuche immer aktiviert, und jede `web_search_result_location` enthält:

* `url`: Die URL der zitierten Quelle
* `title`: Der Titel der zitierten Quelle
* `encrypted_index`: Eine Referenz, die für mehrzügige Gespräche zurückgegeben werden muss
* `cited_text`: Bis zu 150 Zeichen des zitierten Inhalts

Die Zitatfelder der Websuche `cited_text`, `title` und `url` zählen nicht zur Input- oder Output-Token-Nutzung.

<Note>
  Wenn du API-Ausgaben direkt Endnutzern anzeigst, müssen Zitate zur Originalquelle enthalten sein. Wenn du Änderungen an API-Ausgaben vornimmst, einschließlich durch Weiterverarbeitung oder Kombination mit eigenem Material, bevor du sie Endnutzern anzeigst, zeige Zitate in angemessener Weise nach Rücksprache mit deinem Rechtsteam an.
</Note>

### Fehler

Wenn das Web-Search-Tool auf einen Fehler stößt (etwa das Erreichen von Ratenlimits), gibt die Claude API dennoch eine 200-Antwort (Erfolg) zurück. Der Fehler wird im Antwort-Body mit der folgenden Struktur dargestellt:

```json Output
{
  "type": "web_search_tool_result",
  "tool_use_id": "srvtoolu_a93jad",
  "content": {
    "type": "web_search_tool_result_error",
    "error_code": "max_uses_exceeded"
  }
}
```

Bei einem Fehler ist `content` ein einzelnes Fehlerobjekt statt einer Liste von Ergebnisblöcken. Eine Suche, die erfolgreich ist, aber keine Ergebnisse findet, gibt eine leere `content`-Liste zurück, keinen Fehler.

Dies sind die möglichen Fehlercodes:

* `too_many_requests`: Ratenlimit überschritten
* `invalid_tool_input`: Ungültiger Suchanfrageparameter
* `max_uses_exceeded`: Maximale Anzahl an Nutzungen des Web-Search-Tools überschritten
* `query_too_long`: Anfrage überschreitet die maximale Länge
* `request_too_large`: Die Suchanfrage ist zu groß, typischerweise wegen einer langen Domain-Filterliste
* `unavailable`: Ein interner Fehler ist aufgetreten

### Stop-Reason `pause_turn`

Die API kann einen lang laufenden Suchzug pausieren und `stop_reason: "pause_turn"` zurückgeben. Um fortzufahren, sende die pausierte Assistenten-Nachricht unverändert in einer neuen Anfrage zurück.

Wenn Claude die Websuche und eines deiner Client-Tools in derselben Gruppe paralleler Tool-Aufrufe aufruft, gibt die API stattdessen `stop_reason: "tool_use"` zurück und führt die Suche noch nicht aus. Um fortzufahren, gib die Ergebnisse des Client-Tools zurück, und die API führt die Suche in der nächsten Anfrage aus. Siehe [Server-Tools und Client-Tools in einem Zug mischen](https://platform.claude.com/docs/de/agents-and-tools/tool-use/server-tools#mixing-server-tools-and-client-tools-in-one-turn).

Zur serverseitigen Schleife und zur Behandlung von `pause_turn` siehe [Die serverseitige Schleife und pause\_turn](https://platform.claude.com/docs/de/agents-and-tools/tool-use/server-tools#the-server-side-loop-and-pause-turn) im Leitfaden zu Server-Tools.

## Prompt-Caching

Um Tool-Definitionen über Züge hinweg zu cachen, siehe [Tool-Nutzung mit Prompt-Caching](https://platform.claude.com/docs/de/agents-and-tools/tool-use/tool-use-with-prompt-caching).

## Streaming

Bei aktiviertem Streaming erhältst du Suchereignisse als Teil des Streams. Während die Suche läuft, gibt es eine Pause:

```sse 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 search

event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "server_tool_use", "id": "srvtoolu_xyz789", "name": "web_search"}}

// Search query streamed
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "input_json_delta", "partial_json": "{\"query\":\"latest quantum computing breakthroughs 2025\"}"}}

// Pause while search executes

// Search results streamed
event: content_block_start
data: {"type": "content_block_start", "index": 2, "content_block": {"type": "web_search_tool_result", "tool_use_id": "srvtoolu_xyz789", "content": [{"type": "web_search_result", "title": "Quantum Computing Breakthroughs in 2025", "url": "https://example.com"}]}}

// Claude's response with citations (omitted in this example)
```

## Batch-Anfragen

Du kannst das Web-Search-Tool in der [Messages Batches API](https://platform.claude.com/docs/de/build-with-claude/batch-processing) verwenden. Aufrufe des Web-Search-Tools über die Messages Batches API werden genauso abgerechnet wie in regulären Messages-API-Anfragen.

Um gemeinsam genutzte Kapazität zu schützen, drosselt die Batches API Websuchanfragen pro Organisation, sodass große Batches mit vielen Suchen länger bis zum Abschluss brauchen können. Das Ratenlimit deiner Organisation für die Websuche findest du auf der Seite [Ratenlimits](https://platform.claude.com/usage/limits) in der Claude Console. Um ein höheres Limit anzufordern, kontaktiere den Vertrieb über diese Seite.

## Nutzung und Preise

Die Nutzung der „web search“ (Websuche) wird zusätzlich zur Token-Nutzung berechnet:

```json
{
  "usage": {
    "input_tokens": 105,
    "output_tokens": 6039,
    "cache_read_input_tokens": 7123,
    "cache_creation_input_tokens": 7345,
    "server_tool_use": {
      "web_search_requests": 1
    }
  }
}
```

Die Websuche ist auf der Claude API für **10 $ pro 1.000 Suchen** verfügbar, zuzüglich der Standard-Token-Kosten für durch die Suche generierte Inhalte. Websuchergebnisse, die im Verlauf einer Konversation abgerufen werden, werden als Input-Token gezählt – sowohl bei Suchiterationen, die innerhalb eines einzelnen Turns ausgeführt werden, als auch in nachfolgenden Konversations-Turns.

Jede Websuche zählt als eine Nutzung, unabhängig von der Anzahl der zurückgegebenen Ergebnisse. Wenn während der Websuche ein Fehler auftritt, wird die Websuche nicht in Rechnung gestellt.

## Nächste Schritte

<CardGroup cols={3}>
  <Card title="Web-Fetch-Tool" icon="link" href="https://platform.claude.com/docs/de/agents-and-tools/tool-use/web-fetch-tool">
    Rufe Inhalte von bestimmten URLs ab und lies sie, um Claudes Kontext mit Live-Webinhalten anzureichern.
  </Card>

  <Card title="Server-Tools" icon="tool" href="https://platform.claude.com/docs/de/agents-and-tools/tool-use/server-tools">
    Arbeite mit von Anthropic ausgeführten Tools: server\_tool\_use-Blöcke, pause\_turn-Fortsetzung und Domain-Filterung.
  </Card>

  <Card title="Tool-Referenz" icon="book" href="https://platform.claude.com/docs/de/agents-and-tools/tool-use/tool-reference">
    Verzeichnis der von Anthropic bereitgestellten Tools und Referenz für optionale Eigenschaften von Tool-Definitionen.
  </Card>
</CardGroup>
