Prova
5.000 ricerche
9,25 USD
1,85 USD/1K ricerche
- Integralo in un agente
- Stessa API del pack più grande
- I crediti non scadono mai
Caso d'uso · agenti AI · nome dello strumento web_search
Un agente che sa cercare ma non leggere tira a indovinare dagli snippet. Dagli un unico strumento che fa entrambe le cose: cerca sul web in tempo reale e restituisce le prime pagine in Markdown pulito, numerate così che il modello possa citarle.
Risposta rapida
Come do a un agente AI uno strumento di ricerca web che restituisce il contenuto delle pagine?
Incastona un'API di ricerca web come tool che riceve una query e restituisce fonti numerate con il testo delle loro pagine. LLMWebSearch lo fa in una sola chiamata: risultati ordinati da una ricerca in tempo reale, con le prime 3 pagine lette in Markdown, per un credito. I prezzi partono da 9,25 USD per 5.000 ricerche e scendono a 1,20 USD/1K ricerche. Senza KYC; paghi in criptovalute.
| Strumento | web_search(query, recent) che chiama POST https://llmwebsearch.com/api/v1/search |
|---|---|
| Restituisce | Fino a 20 risultati classificati; i primi 3 con il loro testo di pagina in Markdown |
| Controllo della lunghezza | max_chars per pagina, read per il numero di pagine, max_results per l'elenco |
| Costo | Un credito paga una ricerca: fino a 20 risultati classificati, con le pagine dei primi 3 lette e restituite come Markdown. Leggere da 4 a 10 pagine costa 2 crediti. Una chiamata che termina in errore non costa nulla |
| Filtri | Scegli il paese e la lingua dei risultati, un intervallo di tempo (ultimo giorno, settimana, mese o anno), risultati web o news, e i domini da includere o escludere |
| Integrazioni pronte all'uso | server MCP, OpenAI function calling, LangChain e LlamaIndex, n8n, OpenClaw |
Perché la risposta raramente è nello snippet. Una pagina di risultati offre un titolo e una o due righe scelte dal motore di ricerca. Il numero, la data o la regola che il tuo utente ha chiesto si trovano più in basso nella pagina.
Un agente che vede solo gli snippet ha due brutte opzioni. Può rispondere da un frammento e rischiare di sbagliare, oppure può chiamare un secondo tool per recuperare ogni pagina. La seconda opzione raddoppia i round trip e le definizioni dei tool.
Con LLMWebSearch, le prime pagine arrivano già lette. Navigazione, annunci e banner dei cookie vengono rimossi, così il modello spende i suoi token sul contenuto. I risultati rimanenti mantengono i loro snippet, che aiutano il modello a decidere se cercare di nuovo.
Tieni lo schema piccolo: un solo query obbligatorio e, al massimo, uno o due switch. I modelli chiamano i tool semplici in modo più affidabile. L'esempio qui sotto espone un flag recent che corrisponde a time_range=month; tutto il resto è fisso nel tuo codice.
La funzione restituisce testo semplice, non JSON. Ogni fonte inizia con un numero, un titolo e un URL, seguiti dal suo Markdown. Questa struttura rende naturali per il modello citazioni come [2].
Se il tuo agente ha già un tool chiamato web_search, come fanno Claude Code e OpenClaw, dai al tuo un altro nome, ad esempio search_web. Due tool con lo stesso nome confondono il modello.
import json
import os
import requests
API = "https://llmwebsearch.com/api/v1/search"
HEADERS = {"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]}
# Tool definition in the OpenAI function-calling format; most agent frameworks accept the same JSON schema.
WEB_SEARCH_TOOL = {
"type": "function",
"function": {
"name": "web_search",
"description": "Search the live web. Returns numbered sources; the first ones include the page text in Markdown.",
"parameters": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "A short search query, 3 to 8 words"},
"recent": {"type": "boolean", "description": "True to keep only results from the past month"},
},
"required": ["query"],
},
},
}
def web_search(query, recent=False, read=3, max_chars=4000):
"""Run one search (1 credit with read <= 3) and return compact text the model can cite."""
body = {"q": query, "max_results": 5, "read": read, "max_chars": max_chars}
if recent:
body["time_range"] = "month"
resp = requests.post(API, headers=HEADERS, json=body, timeout=60)
resp.raise_for_status()
lines = []
for r in resp.json()["results"]:
lines.append(f"[{r['position']}] {r['title']} — {r['url']}")
if r.get("content_status") == "ok":
lines.append(r["content"])
else:
lines.append(r.get("snippet", ""))
lines.append("")
return "\n".join(lines)
def run_tool_call(call):
"""Execute a tool call returned by the model and give back the text for the tool message."""
args = json.loads(call["function"]["arguments"])
return web_search(args["query"], recent=args.get("recent", False))Cerca quando la risposta dipende da fatti che cambiano o che il modello non può conoscere. Prezzi, versioni, leggi, orari ed eventi recenti rientrano nella categoria. Definizioni e conoscenze stabili di solito no.
Scrivi questa regola nel system prompt e aggiungi un budget. Tre abitudini aiutano:
Tre parametri decidono quanto testo arriva al modello. read imposta quante pagine vengono lette, da 0 a 10. max_chars limita ogni pagina, da 500 a 50.000 caratteri. max_results imposta quanti risultati vengono elencati, da 1 a 20.
Per un agente di chat, read=3 con max_chars=4000 restituisce circa 12.000 caratteri di testo di pagina per ricerca. Questo lascia spazio a diverse ricerche in una sola conversazione. Per un lavoro di ricerca che riassume man mano, pagine più lunghe vanno bene.
Il campo word_count ti dice quanto era lunga la pagina intera prima del taglio. L'agente può usarlo per decidere se recuperare altro con l'endpoint extract.
Il risultato torna comunque, con titolo, URL e snippet, ma senza contenuto. Un campo content_status spiega il motivo.
blocked_by_robots: il robots.txt del sito non consente il nostro reader.blocked_by_site_policy: Un sito che imposta Content-Signal: ai-input=no nel suo robots.txt tiene le sue pagine fuori dal contenuto dei tuoi risultati.target_refused: il sito ha risposto con un rifiuto; il suo stato è in target_status.fetch_failed o fetch_timeout: la pagina non si è caricata in tempo.Quando un sito respinge il nostro reader, il risultato torna senza contenuto e con lo status del sito: non risolviamo mai CAPTCHA, non accediamo agli account e non aggiriamo un blocco o un paywall. Di' all'agente di usare lo snippet, o un'altra fonte, quando una pagina torna vuota. La ricerca in sé costa comunque un credito, qualunque cosa sia successa a ciascuna pagina.
I tool integrati sono comodi ma danno meno controllo. Al 22 ottobre 2026, il tool web_search di OpenAI costa $10 per 1.000 chiamate più il contenuto di ricerca fatturato come token di input. Anche la ricerca web di Anthropic Claude costa $10 per 1.000 ricerche più i costi dei token. Il grounding di Gemini 3 include 5.000 ricerche gratuite al mese nel piano a pagamento, poi costa $14 per 1.000.
Questi tool restituiscono per lo più una risposta scritta con citazioni, non le pagine grezze. Inoltre legano la tua ricerca a un solo fornitore di modello. Un tool autonomo funziona con qualsiasi modello e ti lascia impostare la lunghezza di ogni pagina. Il confronto dei tool integrati ha la tabella completa.
Un credito per ricerca quando read è 3 o meno. Un assistente usato da un team, che risponde a 100 domande al giorno con 4 ricerche ciascuna, esegue circa 12.000 ricerche al mese. 25.000 ricerche a 41,25 USD copre quel mese e gran parte del successivo.
Un agente di coding usato da un solo sviluppatore può cercare 20 volte al giorno, ovvero circa 600 volte al mese. 5.000 ricerche a 9,25 USD allora dura diversi mesi, perché i crediti non scadono mai. La guida ai costi mostra i calcoli per carichi di lavoro più grandi.
Fai il prototipo con 5.000 ricerche; passa a 25.000 ricerche o 100.000 ricerche quando l'agente è in uso quotidiano.
5.000 ricerche
9,25 USD
1,85 USD/1K ricerche
25.000 ricerche
41,25 USD
1,65 USD/1K ricerche
100.000 ricerche
145 USD
1,45 USD/1K ricerche
In ogni piano: Prime 3 pagine lette come Markdown · Filtri per paese, lingua, tempo e dominio · Chiamate non riuscite non addebitate · I crediti non scadono mai
Sì, tramite un piccolo server MCP che espone la ricerca come tool. La pagina MCP ha il codice e la configurazione del client.
Sì. Lo schema qui sopra è JSON Schema puro, che Anthropic, Google, Mistral e i framework open source accettano con piccole modifiche. Il tool chiama solo il nostro endpoint HTTPS.
Conta le chiamate nel wrapper del tuo tool e restituisci un breve messaggio quando il budget è esaurito. Metti il budget anche nel system prompt, così il modello lo tiene presente.
Può provarci. Tratta il testo della pagina come dati: di' al modello nel system prompt di ignorare le istruzioni trovate dentro le fonti e non lasciare mai che una fonte scateni azioni da sola.
Da 1,20 USD/1K ricerche · senza KYC
Ottieni una chiave API