Lo strumento di ricerca web fornisce a Claude accesso diretto ai contenuti web in tempo reale, consentendogli di rispondere a domande con informazioni aggiornate che vanno oltre la sua data limite di conoscenza. La risposta include citazioni per le fonti tratte dai risultati di ricerca.
Con web_search_20260209 e versioni successive, Claude può scrivere ed eseguire codice che filtra i risultati di ricerca prima che raggiungano la finestra di contesto (filtraggio dinamico), mantenendo solo le informazioni rilevanti. Il filtraggio dinamico è disponibile con Claude 4.6 e modelli successivi e con Claude Mythos Preview.
Sono disponibili tre versioni dello strumento di ricerca web:
web_search_20250305: ricerca web di baseweb_search_20260209: aggiunge il filtraggio dinamicoweb_search_20260318: aggiunge il controllo di inclusione della risposta per i flussi di lavoro agenticiGli esempi in questa pagina utilizzano web_search_20250305 per la ricerca di base e web_search_20260318 per il filtraggio dinamico.
Per l'idoneità della ricerca web alla Zero Data Retention e la relativa configurazione allowed_callers, consulta Strumenti server.
Per il supporto dei modelli, consulta il Riferimento degli strumenti.
Quando aggiungi lo strumento di ricerca web alla tua richiesta API:
Claude effettua una ricerca quando la richiesta dipende da informazioni attuali, in evoluzione o esterne ai suoi dati di addestramento:
Claude risponde direttamente senza effettuare ricerche quando la richiesta si basa su conoscenze stabili:
L'attivazione è orientabile tramite il tuo prompt di sistema: puoi incoraggiare Claude a effettuare ricerche più prontamente o a preferire una risposta diretta. Per un vincolo rigido, usa max_uses per limitare il numero di ricerche per ciascuna richiesta.
Con la ricerca web di base, ogni risultato di ricerca viene caricato nella "context window" (finestra di contesto) di Claude, e gran parte di quel contenuto può essere irrilevante per la richiesta. Con web_search_20260209 o versioni successive, Claude scrive ed esegue invece codice che filtra prima i risultati, in modo che solo il contenuto rilevante raggiunga la finestra di contesto. Questo riduce l'uso di token nelle richieste con molte ricerche.
Il filtraggio dinamico esegue la ricerca web dall'interno dell'esecuzione di codice: su web_search_20260209 e versioni successive, il campo allowed_callers dello strumento ha come valore predefinito ["code_execution_20260120"], e quando il filtraggio dinamico viene eseguito, l'API predispone automaticamente l'esecuzione di codice necessaria per la richiesta. Non è necessario aggiungere tu stesso lo strumento di esecuzione di codice a tools. Non ci sono costi aggiuntivi per le chiamate di esecuzione di codice effettuate in questo modo, oltre ai costi standard dei token.
Per chiamare la ricerca web direttamente, senza filtraggio dinamico, imposta allowed_callers: ["direct"]. I modelli che non supportano la chiamata programmatica degli strumenti richiedono questa impostazione. Senza di essa, l'API restituisce un errore 400 che ti indica di impostarla.
I seguenti esempi utilizzano web_search_20260318:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-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)Fornisci lo strumento di ricerca web nella tua richiesta API:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-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)Lo strumento di ricerca web supporta i seguenti parametri:
{
"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"
}
}Tutte le versioni dello strumento di ricerca web accettano allowed_callers, che controlla se Claude chiama la ricerca web direttamente o dall'esecuzione di codice tramite il filtraggio dinamico. Su web_search_20260209 e versioni successive il valore predefinito è ["code_execution_20260120"] invece di ["direct"]. Consulta Strumenti server per sapere come configurarlo. web_search_20260318 e versioni successive accettano anche response_inclusion.
Il parametro max_uses limita il numero di ricerche eseguite. Se Claude tenta più ricerche di quelle consentite, il web_search_tool_result è un errore con il codice di errore max_uses_exceeded.
Le query fattuali semplici utilizzano in genere da 1 a 3 ricerche; le ricerche comparative o su più entità possono utilizzarne 10 o più. Per indicazioni sulla scelta di un valore, consulta Strumenti server.
Fornisci allowed_domains o blocked_domains, non entrambi. Se una richiesta include entrambi, l'API restituisce un errore 400. Le voci sono domini semplici con un percorso opzionale, ad esempio example.com o example.com/blog, senza schema.
Per le regole complete di filtraggio dei domini, consulta Filtraggio dei domini nella guida agli Strumenti server.
Il parametro user_location consente di localizzare i risultati di ricerca in base alla posizione di un utente. Fornisci almeno uno tra city, region, country o timezone.
type: Il tipo di posizione (deve essere approximate)city: Il nome della cittàregion: La regione o lo statocountry: Il codice paese a due lettere ISO 3166-1 alpha-2. L'API rifiuta i codici paese non supportati con un errore 400.timezone: L'ID del fuso orario IANA.Il parametro response_inclusion controlla come i blocchi dei risultati di ricerca appaiono nella risposta dell'API quando il risultato è stato consumato da una chiamata di esecuzione di codice completata nello stesso turno. Imposta "response_inclusion": "excluded" per eliminare completamente dalla risposta quelle coppie annidate di blocchi server_tool_use e di risultato, riducendo i costi dei token di output per i flussi di lavoro agentici che non hanno bisogno di restituire al client il contenuto grezzo della ricerca. Il valore predefinito è "full". I risultati provenienti da chiamate dirette, o da chiamate di esecuzione di codice che si sono interrotte prima del completamento, vengono sempre restituiti per intero in modo da poter essere rinviati nel turno successivo.
{
"tools": [
{
"type": "web_search_20260318",
"name": "web_search",
"response_inclusion": "excluded"
}
]
}Ecco un esempio di struttura della risposta:
{
"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"
}Questo esempio mostra una ricerca diretta. Quando una ricerca viene eseguita tramite il filtraggio dinamico, la risposta contiene anche i blocchi di risultato dello strumento di esecuzione di codice, e ogni coppia annidata server_tool_use e web_search_tool_result include un campo caller che identifica la chiamata di esecuzione di codice che l'ha generata.
I risultati di ricerca includono:
url: L'URL della pagina sorgentetitle: Il titolo della pagina sorgentepage_age: Quando il sito è stato aggiornato l'ultima voltaencrypted_content: Contenuto crittografato che devi restituire nelle conversazioni multi-turnoPer continuare una conversazione che contiene risultati di ricerca, rinvia i blocchi di contenuto dell'assistente esattamente come li hai ricevuti, incluso l'encrypted_content di ciascun risultato. L'API decrittografa quel contenuto nei turni successivi per ripristinare i risultati di ricerca nel contesto di Claude. Se encrypted_content è mancante o modificato, la richiesta fallisce con un errore di validazione 400.
Le citazioni sono sempre abilitate per la ricerca web, e ogni web_search_result_location include:
url: L'URL della fonte citatatitle: Il titolo della fonte citataencrypted_index: Un riferimento che deve essere restituito per le conversazioni multi-turnocited_text: Fino a 150 caratteri del contenuto citatoI campi di citazione della ricerca web cited_text, title e url non vengono conteggiati nell'utilizzo dei token di input o output.
Quando lo strumento di ricerca web incontra un errore (ad esempio il raggiungimento dei limiti di velocità), l'API di Claude restituisce comunque una risposta 200 (successo). L'errore è rappresentato all'interno del corpo della risposta utilizzando la seguente struttura:
{
"type": "web_search_tool_result",
"tool_use_id": "srvtoolu_a93jad",
"content": {
"type": "web_search_tool_result_error",
"error_code": "max_uses_exceeded"
}
}In caso di errore, content è un singolo oggetto di errore anziché un elenco di blocchi di risultato. Una ricerca che ha successo ma non trova risultati restituisce un elenco content vuoto, non un errore.
Questi sono i possibili codici di errore:
too_many_requests: Limite di velocità superatoinvalid_tool_input: Parametro della query di ricerca non validomax_uses_exceeded: Numero massimo di utilizzi dello strumento di ricerca web superatoquery_too_long: La query supera la lunghezza massimarequest_too_large: La richiesta di ricerca è troppo grande, in genere a causa di un lungo elenco di filtri di dominiounavailable: Si è verificato un errore internopause_turnL'API può mettere in pausa un turno di ricerca di lunga durata e restituire stop_reason: "pause_turn". Per continuare, rinvia il messaggio dell'assistente in pausa senza modifiche in una nuova richiesta.
Se Claude chiama la ricerca web e uno dei tuoi strumenti client nello stesso gruppo di chiamate parallele agli strumenti, l'API restituisce invece stop_reason: "tool_use" e non esegue ancora la ricerca. Per continuare, restituisci i risultati dello strumento client, e l'API eseguirà la ricerca nella richiesta successiva. Consulta Combinare strumenti server e strumenti client in un unico turno.
Per il ciclo lato server e la gestione di pause_turn, consulta Il ciclo lato server e pause_turn nella guida agli Strumenti server.
Per la memorizzazione nella cache delle definizioni degli strumenti tra i turni, consulta Uso degli strumenti con la cache dei prompt.
Con lo streaming abilitato, riceverai gli eventi di ricerca come parte dello stream. Ci sarà una pausa mentre la ricerca viene eseguita:
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)Puoi includere lo strumento di ricerca web nella Messages Batches API. Le chiamate allo strumento di ricerca web tramite la Messages Batches API hanno lo stesso prezzo di quelle nelle normali richieste della Messages API.
Per proteggere la capacità condivisa, la Batches API limita le richieste di ricerca web per organizzazione, quindi batch di grandi dimensioni con molte ricerche potrebbero richiedere più tempo per essere completati. Puoi vedere il limite di velocità della ricerca web della tua organizzazione nella pagina Rate limits della Claude Console. Per richiedere un limite più alto, contatta il team commerciale da quella pagina.
L'utilizzo della ricerca web viene addebitato in aggiunta all'utilizzo dei token:
{
"usage": {
"input_tokens": 105,
"output_tokens": 6039,
"cache_read_input_tokens": 7123,
"cache_creation_input_tokens": 7345,
"server_tool_use": {
"web_search_requests": 1
}
}
}La ricerca web è disponibile sull'API di Claude al costo di 10 $ per 1.000 ricerche, oltre ai costi standard dei token per i contenuti generati dalla ricerca. I risultati della ricerca web recuperati nel corso di una conversazione vengono conteggiati come token di input, sia nelle iterazioni di ricerca eseguite durante un singolo turno sia nei turni successivi della conversazione.
Ogni ricerca web viene conteggiata come un singolo utilizzo, indipendentemente dal numero di risultati restituiti. Se si verifica un errore durante la ricerca web, questa non verrà addebitata.
Recupera e leggi contenuti da URL specifici per arricchire il contesto di Claude con contenuti web in tempo reale.
Lavora con gli strumenti eseguiti da Anthropic: blocchi server_tool_use, continuazione pause_turn e filtraggio dei domini.
Elenco degli strumenti forniti da Anthropic e riferimento per le proprietà opzionali delle definizioni degli strumenti.
Was this page helpful?