Naar hoofdinhoud gaan
De tool web_search doorzoekt het web met je geconfigureerde provider en retourneert resultaten. Resultaten worden per query 15 minuten gecachet (configureerbaar). OpenClaw bevat ook x_search voor X-posts (voorheen Twitter) en web_fetch voor lichtgewicht URL-ophaling. In deze fase blijft web_fetch lokaal, terwijl web_search en x_search onder de motorkap xAI Responses kunnen gebruiken.
web_search is een lichtgewicht HTTP-tool, geen browserautomatisering. Gebruik voor sites met veel JS of aanmeldingen de Webbrowser. Gebruik voor het ophalen van een specifieke URL Web Fetch.

Snel starten

1

Choose a provider

Kies een provider en voltooi eventuele vereiste configuratie. Sommige providers zijn zonder sleutel, terwijl andere API-sleutels gebruiken. Zie de providerpagina’s hieronder voor details.
2

Configure

openclaw configure --section web
Hiermee worden de provider en eventuele benodigde referenties opgeslagen. Je kunt ook een env var instellen (bijvoorbeeld BRAVE_API_KEY) en deze stap overslaan voor API-ondersteunde providers.
3

Use it

De agent kan nu web_search aanroepen:
await web_search({ query: "OpenClaw plugin SDK" });
Gebruik voor X-posts:
await x_search({ query: "dinner recipes" });

Een provider kiezen

Brave Search

Gestructureerde resultaten met fragmenten. Ondersteunt de modus llm-context en land-/taalfilters. Gratis laag beschikbaar.

Codex Hosted Search

Door AI gesynthetiseerde, onderbouwde antwoorden via je Codex app-server-account.

DuckDuckGo

Provider zonder sleutel. Geen API-sleutel nodig. Onofficiële HTML-gebaseerde integratie.

Exa

Neurale + trefwoordzoekopdracht met contentextractie (highlights, tekst, samenvattingen).

Firecrawl

Gestructureerde resultaten. Het best gecombineerd met firecrawl_search en firecrawl_scrape voor diepe extractie.

Gemini

Door AI gesynthetiseerde antwoorden met citaties via Google Search grounding.

Grok

Door AI gesynthetiseerde antwoorden met citaties via xAI web grounding.

Kimi

Door AI gesynthetiseerde antwoorden met citaties via Moonshot-webzoekopdracht; ongegronde chat-fallbacks mislukken expliciet.

MiniMax Search

Gestructureerde resultaten via de zoek-API van het MiniMax Token Plan.

Ollama Web Search

Zoek via een aangemelde lokale Ollama-host of de gehoste Ollama-API.

Parallel

Betaalde Parallel Search-API (PARALLEL_API_KEY); hogere snelheidslimieten en doelgerichte afstemming.

Parallel Search (Free)

Opt-in zonder sleutel. Parallel’s gratis Search MCP, met voor LLM geoptimaliseerde dichte fragmenten en geen API-sleutel.

Perplexity

Gestructureerde resultaten met controles voor contentextractie en domeinfiltering.

SearXNG

Zelfgehoste metazoekmachine. Geen API-sleutel nodig. Aggregeert Google, Bing, DuckDuckGo en meer.

Tavily

Gestructureerde resultaten met zoekdiepte, onderwerpfiltering en tavily_extract voor URL-extractie.

Providervergelijking

ProviderResultaatstijlFiltersAPI-sleutel
BraveGestructureerde fragmentenLand, taal, tijd, modus llm-contextBRAVE_API_KEY
Codex Hosted SearchDoor AI gesynthetiseerd + bron-URL’sDomeinen, contextgrootte, gebruikerslocatieGeen; gebruikt Codex/OpenAI-aanmelding
DuckDuckGoGestructureerde fragmentenGeen (zonder sleutel)
ExaGestructureerd + geëxtraheerdNeurale/trefwoordmodus, datum, contentextractieEXA_API_KEY
FirecrawlGestructureerde fragmentenVia de tool firecrawl_searchFIRECRAWL_API_KEY
GeminiDoor AI gesynthetiseerd + citatiesGEMINI_API_KEY
GrokDoor AI gesynthetiseerd + citatiesxAI OAuth, XAI_API_KEY of plugins.entries.xai.config.webSearch.apiKey
KimiDoor AI gesynthetiseerd + citaties; mislukt bij ongegronde chat-fallbacksKIMI_API_KEY / MOONSHOT_API_KEY
MiniMax SearchGestructureerde fragmentenRegio (global / cn)MINIMAX_CODE_PLAN_KEY / MINIMAX_CODING_API_KEY / MINIMAX_OAUTH_TOKEN
Ollama Web SearchGestructureerde fragmentenGeen voor aangemelde lokale hosts; OLLAMA_API_KEY voor directe https://ollama.com-zoekopdracht
ParallelDichte fragmenten gerangschikt voor LLM-contextPARALLEL_API_KEY (betaald)
Parallel Search (Free)Dichte fragmenten gerangschikt voor LLM-contextGeen (gratis Search MCP)
PerplexityGestructureerde fragmentenLand, taal, tijd, domeinen, contentlimietenPERPLEXITY_API_KEY / OPENROUTER_API_KEY
SearXNGGestructureerde fragmentenCategorieën, taalGeen (zelfgehost)
TavilyGestructureerde fragmentenVia de tool tavily_searchTAVILY_API_KEY

Automatische detectie

Native OpenAI-webzoekopdracht

Directe OpenAI Responses-modellen gebruiken automatisch OpenAI’s gehoste tool web_search wanneer OpenClaw-webzoekopdracht is ingeschakeld en er geen beheerde provider is vastgezet. Dit is provider-eigen gedrag in de gebundelde OpenAI-Plugin en geldt alleen voor native OpenAI API-verkeer, niet voor OpenAI-compatibele proxybasis-URL’s of Azure-routes. Stel tools.web.search.provider in op een andere provider zoals brave om de beheerde tool web_search voor OpenAI-modellen te behouden, of stel tools.web.search.enabled: false in om zowel beheerde zoekopdracht als native OpenAI-zoekopdracht uit te schakelen.

Native Codex-webzoekopdracht

De runtime van de Codex app-server gebruikt automatisch Codex’s gehoste tool web_search wanneer webzoekopdracht is ingeschakeld en er geen beheerde provider is geselecteerd. Native gehoste zoekopdracht en OpenClaw’s beheerde dynamische tool web_search sluiten elkaar uit, dus beheerde zoekopdracht kan native domeinbeperkingen niet omzeilen. OpenClaw gebruikt de beheerde tool wanneer gehoste zoekopdracht niet beschikbaar is, expliciet is uitgeschakeld of is vervangen door een geselecteerde beheerde provider. OpenClaw houdt Codex’s zelfstandige web.run-extensie uitgeschakeld omdat productie app-server-verkeer de door de gebruiker gedefinieerde namespace web weigert.
  • Configureer native zoekopdracht onder tools.web.search.openaiCodex
  • Stel tools.web.search.provider: "codex" in om Codex Hosted Search in te richten als de beheerde web_search-provider voor elk bovenliggend model. Elke aanroep voert een begrensde tijdelijke Codex app-server-turn uit en mislukt als Codex geen gehost webSearch-item emitteert.
  • mode: "cached" is de standaardvoorkeur, maar Codex vertaalt dit naar live externe toegang voor onbeperkte app-server-turns; stel "live" in om expliciet live toegang aan te vragen
  • Stel tools.web.search.provider in op een beheerde provider zoals brave om in plaats daarvan OpenClaw’s beheerde web_search te gebruiken
  • Stel tools.web.search.openaiCodex.enabled: false in om af te zien van door Codex gehoste zoekopdracht; andere beheerde providers blijven beschikbaar
  • Het beperken van het native tool-oppervlak van Codex houdt ook beheerde web_search beschikbaar
  • Wanneer allowedDomains is ingesteld, mislukt automatische beheerde fallback gesloten als gehoste zoekopdracht niet beschikbaar is, zodat de native allowlist niet kan worden omzeild
  • Tool-uitgeschakelde LLM-only-runs schakelen zowel native als beheerde zoekopdracht uit
  • tools.web.search.enabled: false schakelt zowel beheerde als native zoekopdracht uit
Persistente effectieve wijzigingen in het Codex-zoekbeleid starten een nieuwe gebonden thread, zodat een al geladen app-server-thread geen verouderde toegang tot gehoste zoekopdracht kan behouden. Tijdelijke beperkingen per turn gebruiken een tijdelijke beperkte thread en behouden de bestaande binding voor latere hervatting. Direct OpenAI ChatGPT Responses-verkeer kan ook OpenAI’s gehoste tool web_search gebruiken. Dat afzonderlijke pad blijft opt-in via tools.web.search.openaiCodex.enabled: true en geldt alleen voor geschikte openai/*-modellen die api: "openai-chatgpt-responses" gebruiken.
{
  tools: {
    web: {
      search: {
        enabled: true,
        // Optional: use Codex Hosted Search from non-Codex parent models too.
        provider: "codex",
        openaiCodex: {
          enabled: true,
          mode: "cached",
          allowedDomains: ["example.com"],
          contextSize: "high",
          userLocation: {
            country: "US",
            city: "New York",
            timezone: "America/New_York",
          },
        },
      },
    },
  },
}
Voor runtimes en providers die geen native Codex-zoekopdracht ondersteunen, kan Codex de beheerde web_search-fallback gebruiken via OpenClaw’s dynamische tool-namespace. Gebruik een expliciete beheerde provider wanneer je OpenClaw’s provider-specifieke netwerkcontroles nodig hebt in plaats van door Codex gehoste zoekopdracht. Door provider: "codex" te selecteren, schakel je de gebundelde codex-plugin in en worden de zelfde hierboven getoonde beperkingen voor tools.web.search.openaiCodex gebruikt. Authenticeer de Codex app-server eerst met openclaw models auth login --provider openai. De bovenliggende agent kan elk model of elke runtime gebruiken; alleen de begrensde zoekworker draait via Codex.

Netwerkveiligheid

Beheerde HTTP-aanroepen naar de web_search-provider gebruiken het afgeschermde fetch-pad van OpenClaw. Voor vertrouwde API-hosts van providers staat OpenClaw Surge-, Clash- en sing-box-fake-IP- DNS-antwoorden in 198.18.0.0/15 en fc00::/7 alleen toe voor die provider-hostnaam. Andere private, loopback-, link-local- en metadata-bestemmingen blijven geblokkeerd. Codex Hosted Search is de uitzondering: de begrensde worker delegeert netwerktoegang aan de gehoste web_search-tool van de Codex app-server. Deze automatische toelating geldt niet voor willekeurige web_fetch-URL’s. Schakel voor web_fetch tools.web.fetch.ssrfPolicy.allowRfc2544BenchmarkRange en tools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange alleen expliciet in wanneer je vertrouwde proxy eigenaar is van die synthetische bereiken.

Webzoekfunctie instellen

Providerlijsten in documentatie en setupflows staan op alfabetische volgorde. Automatische detectie behoudt een aparte volgorde van prioriteit. Als er geen provider is ingesteld, controleert OpenClaw providers in deze volgorde en gebruikt het de eerste die gereed is: Eerst API-ondersteunde providers:
  1. BraveBRAVE_API_KEY of plugins.entries.brave.config.webSearch.apiKey (volgorde 10)
  2. MiniMax SearchMINIMAX_CODE_PLAN_KEY / MINIMAX_CODING_API_KEY / MINIMAX_OAUTH_TOKEN / MINIMAX_API_KEY of plugins.entries.minimax.config.webSearch.apiKey (volgorde 15)
  3. Geminiplugins.entries.google.config.webSearch.apiKey, GEMINI_API_KEY, of models.providers.google.apiKey (volgorde 20)
  4. Grok — xAI OAuth, XAI_API_KEY, of plugins.entries.xai.config.webSearch.apiKey (volgorde 30)
  5. KimiKIMI_API_KEY / MOONSHOT_API_KEY of plugins.entries.moonshot.config.webSearch.apiKey (volgorde 40)
  6. PerplexityPERPLEXITY_API_KEY / OPENROUTER_API_KEY of plugins.entries.perplexity.config.webSearch.apiKey (volgorde 50)
  7. FirecrawlFIRECRAWL_API_KEY of plugins.entries.firecrawl.config.webSearch.apiKey (volgorde 60)
  8. ExaEXA_API_KEY of plugins.entries.exa.config.webSearch.apiKey; optioneel overschrijft plugins.entries.exa.config.webSearch.baseUrl het Exa-eindpunt (volgorde 65)
  9. TavilyTAVILY_API_KEY of plugins.entries.tavily.config.webSearch.apiKey (volgorde 70)
  10. Parallel — betaalde Parallel Search API via PARALLEL_API_KEY of plugins.entries.parallel.config.webSearch.apiKey; optioneel overschrijft plugins.entries.parallel.config.webSearch.baseUrl het eindpunt (volgorde 75)
Daarna geconfigureerde eindpuntproviders:
  1. SearXNGSEARXNG_BASE_URL of plugins.entries.searxng.config.webSearch.baseUrl (volgorde 200)
Providers zonder sleutel, zoals Parallel Search (Free), DuckDuckGo, Ollama Web Search en Codex Hosted Search, zijn alleen beschikbaar wanneer je ze expliciet selecteert met tools.web.search.provider of via openclaw configure --section web. OpenClaw stuurt beheerde web_search-query’s niet naar een provider zonder sleutel alleen omdat er geen API-ondersteunde provider is geconfigureerd. OpenAI Responses-modellen vormen een uitzondering: zolang tools.web.search.provider niet is ingesteld, gebruiken ze de native webzoekfunctie van OpenAI in plaats van de beheerde providers hierboven. Stel tools.web.search.provider in op parallel-free (of een andere provider) om ze via het beheerde pad te routeren.
Alle provider-sleutelvelden ondersteunen SecretRef-objecten. Plugin-gescopeerde SecretRefs onder plugins.entries.<plugin>.config.webSearch.apiKey worden opgelost voor de geïnstalleerde API-ondersteunde webzoekproviders, waaronder Brave, Exa, Firecrawl, Gemini, Grok, Kimi, MiniMax, Parallel, Perplexity en Tavily, ongeacht of de provider expliciet via tools.web.search.provider wordt gekozen of via automatische detectie wordt geselecteerd. In automatische-detectiemodus lost OpenClaw alleen de geselecteerde providersleutel op — niet-geselecteerde SecretRefs blijven inactief, zodat je meerdere providers geconfigureerd kunt houden zonder resolutiekosten te betalen voor de providers die je niet gebruikt.

Configuratie

{
  tools: {
    web: {
      search: {
        enabled: true, // default: true
        provider: "brave", // or omit for auto-detection
        maxResults: 5,
        timeoutSeconds: 30,
        cacheTtlMinutes: 15,
      },
    },
  },
}
Provider-specifieke configuratie (API-sleutels, basis-URL’s, modi) staat onder plugins.entries.<plugin>.config.webSearch.*. Gemini kan ook models.providers.google.apiKey en models.providers.google.baseUrl opnieuw gebruiken als fallbacks met lagere prioriteit na zijn specifieke webzoekconfiguratie en GEMINI_API_KEY. Zie de providerpagina’s voor voorbeelden. Grok kan ook een xAI OAuth-authenticatieprofiel van openclaw models auth login --provider xai --method oauth opnieuw gebruiken; API-sleutelconfiguratie blijft de fallback. tools.web.search.provider wordt gevalideerd tegen de webzoekprovider-id’s die door gebundelde en geïnstalleerde pluginmanifesten zijn gedeclareerd. Een typefout zoals "brvae" laat configuratievalidatie mislukken in plaats van stil terug te vallen op automatische detectie. Als een geconfigureerde provider alleen verouderd pluginbewijs heeft, zoals een achtergebleven plugins.entries.<plugin>-blok nadat een externe plugin van derden is verwijderd, houdt OpenClaw het opstarten veerkrachtig en meldt het een waarschuwing zodat je de plugin opnieuw kunt installeren of openclaw doctor --fix kunt uitvoeren om de verouderde configuratie op te ruimen. Providerselectie voor web_fetch-fallback staat hier los van:
  • kies deze met tools.web.fetch.provider
  • of laat dat veld weg en laat OpenClaw automatisch de eerste gereedstaande web-fetch- provider uit geconfigureerde referenties detecteren
  • niet-gesandboxte web_fetch kan geïnstalleerde pluginproviders gebruiken die contracts.webFetchProviders declareren; gesandboxte fetches staan gebundelde providers en geverifieerde officiële plugininstallaties toe, maar sluiten externe plugins van derden uit
  • de officiële Firecrawl-plugin biedt web-fetch-fallback, geconfigureerd onder plugins.entries.firecrawl.config.webFetch.*
Wanneer je Kimi kiest tijdens openclaw onboard of openclaw configure --section web, kan OpenClaw ook vragen om:
  • de Moonshot API-regio (https://api.moonshot.ai/v1 of https://api.moonshot.cn/v1)
  • het standaardmodel voor Kimi-webzoekopdrachten (standaard kimi-k2.6)
Configureer voor x_search plugins.entries.xai.config.xSearch.*. Het gebruikt hetzelfde xAI-authenticatieprofiel als chat, of de XAI_API_KEY / plugin-webzoekreferentie die door Grok-webzoekfunctie wordt gebruikt. Verouderde tools.web.x_search.*-configuratie wordt automatisch gemigreerd door openclaw doctor --fix. Wanneer je Grok kiest tijdens openclaw onboard of openclaw configure --section web, kan OpenClaw ook optionele x_search-setup aanbieden met dezelfde referentie. Dit is een aparte vervolgstap binnen het Grok-pad, geen aparte keuze voor een webzoekprovider op topniveau. Als je een andere provider kiest, toont OpenClaw de x_search-prompt niet.

API-sleutels opslaan

Voer openclaw configure --section web uit of stel de sleutel direct in:
{
  plugins: {
    entries: {
      brave: {
        config: {
          webSearch: {
            apiKey: "YOUR_KEY", // pragma: allowlist secret
          },
        },
      },
    },
  },
}

Toolparameters

ParameterBeschrijving
queryZoekquery (verplicht)
countTerug te geven resultaten (1-10, standaard: 5)
countryISO-landcode van 2 letters (bijv. “US”, “DE”)
languageISO 639-1-taalcode (bijv. “en”, “de”)
search_langZoektaalcode (alleen Brave)
freshnessTijdfilter: day, week, month, of year
date_afterResultaten na deze datum (YYYY-MM-DD)
date_beforeResultaten vóór deze datum (YYYY-MM-DD)
ui_langUI-taalcode (alleen Brave)
domain_filterDomein-allowlist/denylist-array (alleen Perplexity)
max_tokensTotale contentbudget, standaard 25000 (alleen Perplexity)
max_tokens_per_pageTokenlimiet per pagina, standaard 2048 (alleen Perplexity)
Niet alle parameters werken met alle providers. Brave llm-context-modus weigert ui_lang; date_before heeft ook date_after nodig omdat aangepaste Brave- freshness-bereiken zowel begin- als einddatums vereisen. Gemini, Grok en Kimi retourneren één gesynthetiseerd antwoord met citaties. Ze accepteren count voor compatibiliteit met gedeelde tools, maar het verandert de vorm van het grounded antwoord niet. Gemini behandelt day-freshness als een recency-hint; bredere freshness-waarden en expliciete datums stellen tijdbereiken voor Google Search-grounding in. Perplexity gedraagt zich op dezelfde manier wanneer je het Sonar/OpenRouter- compatibiliteitspad gebruikt (plugins.entries.perplexity.config.webSearch.baseUrl / model of OPENROUTER_API_KEY). SearXNG accepteert http:// alleen voor vertrouwde private-netwerk- of loopback-hosts; openbare SearXNG-eindpunten moeten https:// gebruiken. Firecrawl en Tavily ondersteunen alleen query en count via web_search — gebruik hun specifieke tools voor geavanceerde opties.
x_search doorzoekt X-berichten (voorheen Twitter) met xAI en retourneert AI-gesynthetiseerde antwoorden met citaties. Het accepteert query’s in natuurlijke taal en optionele gestructureerde filters. OpenClaw schakelt de ingebouwde xAI x_search- tool alleen in voor het verzoek dat deze toolaanroep bedient.
xAI documenteert x_search als ondersteuning voor keyword search, semantic search, user search en thread fetch. Voor engagementstatistieken per bericht, zoals reposts, antwoorden, bladwijzers of weergaven, verdient een gerichte lookup voor de exacte bericht-URL of status-ID de voorkeur. Brede zoekopdrachten op trefwoorden kunnen het juiste bericht vinden, maar retourneren minder volledige metadata per bericht. Een goed patroon is: lokaliseer eerst het bericht en voer daarna een tweede x_search-query uit die op dat exacte bericht is gericht.

x_search-configuratie

{
  plugins: {
    entries: {
      xai: {
        config: {
          xSearch: {
            enabled: true,
            model: "grok-4-1-fast-non-reasoning",
            baseUrl: "https://api.x.ai/v1", // optional, overrides webSearch.baseUrl
            inlineCitations: false,
            maxTurns: 2,
            timeoutSeconds: 30,
            cacheTtlMinutes: 15,
          },
          webSearch: {
            apiKey: "xai-...", // optional if an xAI auth profile or XAI_API_KEY is set
            baseUrl: "https://api.x.ai/v1", // optional shared xAI Responses base URL
          },
        },
      },
    },
  },
}
x_search post naar <baseUrl>/responses wanneer plugins.entries.xai.config.xSearch.baseUrl is ingesteld. Als dat veld wordt weggelaten, valt het terug op plugins.entries.xai.config.webSearch.baseUrl, daarna op de verouderde tools.web.search.grok.baseUrl en ten slotte op het openbare xAI-eindpunt.

x_search-parameters

ParameterBeschrijving
queryZoekopdracht (vereist)
allowed_x_handlesBeperk resultaten tot specifieke X-handles
excluded_x_handlesSluit specifieke X-handles uit
from_dateNeem alleen berichten op vanaf deze datum (YYYY-MM-DD)
to_dateNeem alleen berichten op tot en met deze datum (YYYY-MM-DD)
enable_image_understandingLaat xAI afbeeldingen inspecteren die aan overeenkomende berichten zijn gekoppeld
enable_video_understandingLaat xAI video’s inspecteren die aan overeenkomende berichten zijn gekoppeld

x_search-voorbeeld

await x_search({
  query: "dinner recipes",
  allowed_x_handles: ["nytfood"],
  from_date: "2026-03-01",
});
// Per-post stats: use the exact status URL or status ID when possible
await x_search({
  query: "https://x.com/huntharo/status/1905678901234567890",
});

Voorbeelden

// Basic search
await web_search({ query: "OpenClaw plugin SDK" });

// German-specific search
await web_search({ query: "TV online schauen", country: "DE", language: "de" });

// Recent results (past week)
await web_search({ query: "AI developments", freshness: "week" });

// Date range
await web_search({
  query: "climate research",
  date_after: "2024-01-01",
  date_before: "2024-06-30",
});

// Domain filtering (Perplexity only)
await web_search({
  query: "product reviews",
  domain_filter: ["-reddit.com", "-pinterest.com"],
});

Toolprofielen

Als je toolprofielen of toelatingslijsten gebruikt, voeg dan web_search, x_search of group:web toe:
{
  tools: {
    allow: ["web_search", "x_search"],
    // or: allow: ["group:web"]  (includes web_search, x_search, and web_fetch)
  },
}

Gerelateerd