Caricamento in corso...
Caricamento in corso...
Last synced: Today, 22:00
Technical reference for the OpenClaw framework. Real-time synchronization with the official documentation engine.
Use this file to discover all available pages before exploring further.
The
web_searchOpenClaw also includes
x_searchweb_fetchweb_fetchweb_searchx_searchtextThis stores the provider and any needed credential. You can also set an env var (for example `BRAVE_API_KEY`) and skip this step for API-backed providers.
text```javascript} await web_search({ query: "OpenClaw plugin SDK" }); ``` For X posts, use: ```javascript} await x_search({ query: "dinner recipes" }); ```
Structured results with snippets. Supports `llm-context` mode, country/language filters. Free tier available.
Key-free fallback. No API key needed. Unofficial HTML-based integration.
Neural + keyword search with content extraction (highlights, text, summaries).
Structured results. Best paired with `firecrawl_search` and `firecrawl_scrape` for deep extraction.
AI-synthesized answers with citations via Google Search grounding.
AI-synthesized answers with citations via xAI web grounding.
AI-synthesized answers with citations via Moonshot web search.
Structured results via the MiniMax Coding Plan search API.
Search via a signed-in local Ollama host or the hosted Ollama API.
Structured results with content extraction controls and domain filtering.
Self-hosted meta-search. No API key needed. Aggregates Google, Bing, DuckDuckGo, and more.
Structured results with search depth, topic filtering, and `tavily_extract` for URL extraction.
| Provider | Result style | Filters | API key |
|---|---|---|---|
| Brave | Structured snippets | Country, language, time, text llm-context | text BRAVE_API_KEY |
| DuckDuckGo | Structured snippets | -- | None (key-free) |
| Exa | Structured + extracted | Neural/keyword mode, date, content extraction | text EXA_API_KEY |
| Firecrawl | Structured snippets | Via text firecrawl_search | text FIRECRAWL_API_KEY |
| Gemini | AI-synthesized + citations | -- | text GEMINI_API_KEY |
| Grok | AI-synthesized + citations | -- | text XAI_API_KEY |
| Kimi | AI-synthesized + citations | -- | text KIMI_API_KEYtext MOONSHOT_API_KEY |
| MiniMax Search | Structured snippets | Region ( text globaltext cn | text MINIMAX_CODE_PLAN_KEYtext MINIMAX_CODING_API_KEY |
| Ollama Web Search | Structured snippets | -- | None for signed-in local hosts; text OLLAMA_API_KEYtext https://ollama.com |
| Perplexity | Structured snippets | Country, language, time, domains, content limits | text PERPLEXITY_API_KEYtext OPENROUTER_API_KEY |
| SearXNG | Structured snippets | Categories, language | None (self-hosted) |
| Tavily | Structured snippets | Via text tavily_search | text TAVILY_API_KEY |
Direct OpenAI Responses models use OpenAI's hosted
web_searchtools.web.search.providerbraveweb_searchtools.web.search.enabled: falseCodex-capable models can optionally use the provider-native Responses
web_searchweb_searchtools.web.search.openaiCodexopenai-codex/*api: "openai-codex-responses"web_searchmode: "cached"tools.web.search.enabled: falsejson5{ tools: { web: { search: { enabled: true, openaiCodex: { enabled: true, mode: "cached", allowedDomains: ["example.com"], contextSize: "high", userLocation: { country: "US", city: "New York", timezone: "America/New_York", }, }, }, }, }, }
If native Codex search is enabled but the current model is not Codex-capable, OpenClaw keeps the normal managed
web_searchProvider lists in docs and setup flows are alphabetical. Auto-detection keeps a separate precedence order.
If no
providerAPI-backed providers first:
BRAVE_API_KEYplugins.entries.brave.config.webSearch.apiKeyMINIMAX_CODE_PLAN_KEYMINIMAX_CODING_API_KEYplugins.entries.minimax.config.webSearch.apiKeyGEMINI_API_KEYplugins.entries.google.config.webSearch.apiKeyXAI_API_KEYplugins.entries.xai.config.webSearch.apiKeyKIMI_API_KEYMOONSHOT_API_KEYplugins.entries.moonshot.config.webSearch.apiKeyPERPLEXITY_API_KEYOPENROUTER_API_KEYplugins.entries.perplexity.config.webSearch.apiKeyFIRECRAWL_API_KEYplugins.entries.firecrawl.config.webSearch.apiKeyEXA_API_KEYplugins.entries.exa.config.webSearch.apiKeyTAVILY_API_KEYplugins.entries.tavily.config.webSearch.apiKeyKey-free fallbacks after that:
ollama signinhttps://ollama.comOLLAMA_API_KEYSEARXNG_BASE_URLplugins.entries.searxng.config.webSearch.baseUrlIf no provider is detected, it falls back to Brave (you will get a missing-key error prompting you to configure one).
json5{ tools: { web: { search: { enabled: true, // default: true provider: "brave", // or omit for auto-detection maxResults: 5, timeoutSeconds: 30, cacheTtlMinutes: 15, }, }, }, }
Provider-specific config (API keys, base URLs, modes) lives under
plugins.entries.<plugin>.config.webSearch.*web_fetchtools.web.fetch.providerplugins.entries.firecrawl.config.webFetch.*When you choose Kimi during
openclaw onboardopenclaw configure --section webhttps://api.moonshot.ai/v1https://api.moonshot.cn/v1kimi-k2.6For
x_searchplugins.entries.xai.config.xSearch.*XAI_API_KEYtools.web.x_search.*openclaw doctor --fixopenclaw onboardopenclaw configure --section webx_searchx_searchtext```json5} { plugins: { entries: { brave: { config: { webSearch: { apiKey: "YOUR_KEY", // pragma: allowlist secret }, }, }, }, }, } ```
text```bash} export BRAVE_API_KEY="YOUR_KEY" ``` For a gateway install, put it in `~/.openclaw/.env`. See [Env vars](/help/faq#env-vars-and-env-loading).
| Parameter | Description |
|---|---|
text query | Search query (required) |
text count | Results to return (1-10, default: 5) |
text country | 2-letter ISO country code (e.g. "US", "DE") |
text language | ISO 639-1 language code (e.g. "en", "de") |
text search_lang | Search-language code (Brave only) |
text freshness | Time filter: text daytext weektext monthtext year |
text date_after | Results after this date (YYYY-MM-DD) |
text date_before | Results before this date (YYYY-MM-DD) |
text ui_lang | UI language code (Brave only) |
text domain_filter | Domain allowlist/denylist array (Perplexity only) |
text max_tokens | Total content budget, default 25000 (Perplexity only) |
text max_tokens_per_page | Per-page token limit, default 2048 (Perplexity only) |
x_searchx_searchjson5{ plugins: { entries: { xai: { config: { xSearch: { enabled: true, model: "grok-4-1-fast-non-reasoning", inlineCitations: false, maxTurns: 2, timeoutSeconds: 30, cacheTtlMinutes: 15, }, webSearch: { apiKey: "xai-...", // optional if XAI_API_KEY is set }, }, }, }, }, }
| Parameter | Description |
|---|---|
text query | Search query (required) |
text allowed_x_handles | Restrict results to specific X handles |
text excluded_x_handles | Exclude specific X handles |
text from_date | Only include posts on or after this date (YYYY-MM-DD) |
text to_date | Only include posts on or before this date (YYYY-MM-DD) |
text enable_image_understanding | Let xAI inspect images attached to matching posts |
text enable_video_understanding | Let xAI inspect videos attached to matching posts |
javascriptawait x_search({ query: "dinner recipes", allowed_x_handles: ["nytfood"], from_date: "2026-03-01", });
javascript// Per-post stats: use the exact status URL or status ID when possible await x_search({ query: "https://x.com/huntharo/status/1905678901234567890", });
javascript// 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"], });
If you use tool profiles or allowlists, add
web_searchx_searchgroup:webjson5{ tools: { allow: ["web_search", "x_search"], // or: allow: ["group:web"] (includes web_search, x_search, and web_fetch) }, }
web_search© 2024 TaskFlow Mirror
Powered by TaskFlow Sync Engine