Essayez
5 000 requêtes
9,25 $US
1,85 $US/1K requêtes
- Branchez-le sur un agent
- La même API que le plus grand pack
- Les crédits n'expirent jamais
Cas d'usage · agents IA · nom de l'outil web_search
Un agent qui peut chercher mais pas lire devine à partir des extraits. Donnez-lui un seul outil qui fait les deux : il cherche sur le web en direct et renvoie les premières pages en Markdown propre, numérotées pour que le modèle puisse les citer.
Réponse rapide
Comment donner à un agent IA un outil de recherche web qui renvoie le contenu des pages ?
Enveloppez une API de recherche web comme un outil qui prend une requête et renvoie des sources numérotées avec le texte de leurs pages. LLMWebSearch le fait en un appel : des résultats classés issus d'une recherche en direct, avec les 3 premières pages lues en Markdown, pour un crédit. Les prix commencent à 9,25 $US pour 5 000 requêtes et descendent à 1,20 $US/1K requêtes. Sans KYC ; payez en crypto.
| Outil | web_search(query, recent) appelant POST https://llmwebsearch.com/api/v1/search |
|---|---|
| Renvoie | Jusqu'à 20 résultats classés ; les 3 premiers avec le texte de leur page en Markdown |
| Contrôle de la longueur | max_chars par page, read pour le nombre de pages, max_results pour la liste |
| Coût | Un crédit paie une recherche : jusqu'à 20 résultats classés, avec les pages des 3 premiers lues et renvoyées en Markdown. Lire 4 à 10 pages coûte 2 crédits. Un appel qui se termine sur une erreur ne coûte rien |
| Filtres | Choisissez le pays et la langue des résultats, une plage temporelle (jour, semaine, mois ou année écoulés), des résultats web ou news, et des domaines à inclure ou à exclure |
| Intégrations prêtes à l'emploi | Serveur MCP, Appel de fonctions OpenAI, LangChain et LlamaIndex, n8n, OpenClaw |
Parce que la réponse se trouve rarement dans le snippet. Une page de résultats donne un titre et une ou deux lignes choisies par le moteur de recherche. Le chiffre, la date ou la règle que votre utilisateur demande se trouve plus bas dans la page.
Un agent qui ne voit que des snippets a deux mauvaises options. Il peut répondre à partir d'un fragment et risquer de se tromper, ou appeler un second outil pour récupérer chaque page. La seconde option double les allers-retours et les définitions d'outils.
Avec LLMWebSearch, les premières pages arrivent déjà lues. La navigation, les publicités et les bannières de cookies sont supprimées, donc le modèle dépense ses tokens sur le contenu. Les autres résultats conservent leurs snippets, ce qui aide le modèle à décider s'il doit relancer une recherche.
Gardez un schéma minimal : un seul query requis et, au maximum, un ou deux commutateurs. Les modèles appellent plus fiablement des outils simples. L'exemple ci-dessous expose un flag recent qui correspond à time_range=month ; tout le reste est fixé dans votre code.
La fonction renvoie du texte brut, pas du JSON. Chaque source commence par un numéro, un titre et une URL, suivis de son Markdown. Cette disposition rend les citations comme [2] naturelles pour le modèle.
Si votre agent embarque déjà un outil nommé web_search, comme c'est le cas de Claude Code et OpenClaw, donnez au vôtre un autre nom, par exemple search_web. Deux outils portant le même nom perturbent le modèle.
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))Recherchez lorsque la réponse dépend de faits qui changent ou que le modèle ne peut pas connaître. Les prix, les versions, les lois, les horaires et les événements récents en font partie. Les définitions et les connaissances stables, généralement non.
Écrivez cette règle dans le prompt système, et ajoutez un budget. Trois habitudes aident :
Trois paramètres décident de la quantité de texte qui atteint le modèle. read définit combien de pages sont lues, de 0 à 10. max_chars plafonne chaque page, de 500 à 50 000 caractères. max_results définit combien de résultats sont listés, de 1 à 20.
Pour un agent de chat, read=3 avec max_chars=4000 renvoie environ 12 000 caractères de texte de page par recherche. Cela laisse de la place pour plusieurs recherches dans une même conversation. Pour une tâche de recherche approfondie qui résume au fur et à mesure, des pages plus longues conviennent.
Le champ word_count vous indique la longueur de la page complète avant la coupe. L'agent peut s'en servir pour décider s'il doit récupérer davantage avec l'endpoint extract.
Le résultat revient quand même, avec son titre, son URL et son snippet, mais sans contenu. Un champ content_status en indique la raison.
blocked_by_robots : le robots.txt du site n'autorise pas notre lecteur.blocked_by_site_policy : Un site qui définit Content-Signal: ai-input=no dans son robots.txt garde ses pages hors du contenu de vos résultats.target_refused : le site a répondu par un refus ; son statut est dans target_status.fetch_failed ou fetch_timeout : la page ne s'est pas chargée à temps.Quand un site refuse notre lecteur, le résultat revient sans contenu et avec le statut du site : nous ne résolvons jamais de CAPTCHA, ne nous connectons pas à des comptes et ne contournons ni un blocage ni un paywall. Dites à l'agent d'utiliser le snippet, ou une autre source, quand une page revient vide. La recherche elle-même coûte toujours un crédit, quel que soit le sort de chaque page.
Les outils intégrés sont pratiques mais vous laissent moins de contrôle. Au 22 octobre 2026, l'outil web_search d'OpenAI coûte 10 $ pour 1 000 appels, plus le contenu de recherche facturé comme tokens d'entrée. La recherche web de Claude chez Anthropic coûte aussi 10 $ pour 1 000 recherches, plus les coûts de tokens. Le grounding de Gemini 3 inclut 5 000 recherches gratuites par mois sur l'offre payante, puis coûte 14 $ pour 1 000.
Ces outils renvoient le plus souvent une réponse rédigée avec citations, et non les pages brutes. Ils lient aussi votre recherche à un seul fournisseur de modèle. Un outil autonome fonctionne avec n'importe quel modèle et vous laisse fixer la longueur de chaque page. Le comparatif des outils intégrés contient le tableau complet.
Un crédit par recherche quand read vaut 3 ou moins. Un assistant utilisé par une équipe, qui répond à 100 questions par jour avec 4 recherches chacune, effectue environ 12 000 recherches par mois. 25 000 requêtes à 41,25 $US couvre ce mois-ci et la majeure partie du suivant.
Un agent de code utilisé par un développeur peut rechercher 20 fois par jour, soit environ 600 fois par mois. 5 000 requêtes à 9,25 $US dure alors plusieurs mois, car les crédits n'expirent jamais. Le guide des coûts montre le calcul pour des volumes plus importants.
Prototypez avec 5 000 requêtes ; passez à 25 000 requêtes ou 100 000 requêtes une fois l'agent utilisé au quotidien.
5 000 requêtes
9,25 $US
1,85 $US/1K requêtes
25 000 requêtes
41,25 $US
1,65 $US/1K requêtes
100 000 requêtes
145 $US
1,45 $US/1K requêtes
Dans chaque formule: 3 meilleures pages lues en Markdown · Filtres par pays, langue, heure et domaine · Appels échoués non facturés · Les crédits n'expirent jamais
Oui, via un petit serveur MCP qui expose la recherche comme un outil. La page MCP contient le code et la configuration du client.
Oui. Le schéma ci-dessus est du JSON Schema simple, qu'Anthropic, Google, Mistral et les frameworks open source acceptent avec de légères modifications. L'outil appelle uniquement notre endpoint HTTPS.
Comptez les appels dans votre wrapper d'outil et renvoyez un court message une fois le budget épuisé. Mettez aussi le budget dans le prompt système, pour que le modèle le prenne en compte.
Il peut essayer. Traitez le texte des pages comme des données : dites au modèle dans le prompt système d'ignorer les instructions trouvées dans les sources, et ne laissez jamais une source déclencher des actions de sa propre initiative.
À partir de 1,20 $US/1K requêtes · sans KYC
Obtenir une clé API