OpenClawSkills
GitHub
Tools & Skills • TutorialHeader.readTime

Web Tools

Web search + fetch tools (Brave Search API, Perplexity direct/OpenRouter)

OpenClaw ships two lightweight web tools:

- ''web_search'' — Search the web via Brave Search API (default) or Perplexity Sonar (direct or via OpenRouter).

- ''web_fetch'' — HTTP fetch + readable extraction (HTML → markdown/text).

These are not browser automation. For JS-heavy sites or logins, use the

''Browser tool''.

Tutorial.step

How it works

- ''web_search'' calls your configured provider and returns results.

- Brave (default): returns structured results (title, URL, snippet).

- Perplexity: returns AI-synthesized answers with citations from real-time web search.

- Results are cached by query for 15 minutes (configurable).

- ''web_fetch'' does a plain HTTP GET and extracts readable content

(HTML → markdown/text). It does not execute JavaScript.

- ''web_fetch'' is enabled by default (unless explicitly disabled).

Tutorial.step

Choosing a search provider

| Provider | Pros | Cons | API Key |

| - | -- | -- |

| ''perplexity/sonar'' | Fast Q&A with web search | Quick lookups |

| ''perplexity/sonar-pro'' (default) | Multi-step reasoning with web search | Complex questions |

| ''perplexity/sonar-reasoning-pro'' | Chain-of-thought analysis | Deep research |

Tutorial.step

web_search

Search the web using your configured provider.

Tutorial.step

Requirements

- ''tools.web.search.enabled'' must not be ''false'' (default: enabled)

- API key for your chosen provider:

- ''Brave'': ''BRAVE_API_KEY'' or ''tools.web.search.apiKey''

- ''Perplexity'': ''OPENROUTER_API_KEY'', ''PERPLEXITY_API_KEY'', or ''tools.web.search.perplexity.apiKey''

Tutorial.step

Config

Json5
'{'
  tools: '{'
    web: '{'
      search: '{'
        enabled: true,
        apiKey: "BRAVE_API_KEY_HERE", // optional if BRAVE_API_KEY is set
        maxResults: 5,
        timeoutSeconds: 30,
        cacheTtlMinutes: 15,
      '}',
    '}',
  '}',
'}'
Tutorial.step

Tool parameters

- ''query'' (required)

- ''count'' (1–10; default from config)

- ''country'' (optional): 2-letter country code for region-specific results (e.g., "DE", "US", "ALL"). If omitted, Brave chooses its default region.

- ''search_lang'' (optional): ISO language code for search results (e.g., "de", "en", "fr")

- ''ui_lang'' (optional): ISO language code for UI elements

- ''freshness'' (optional, Brave only): filter by discovery time (''pd'', ''pw'', ''pm'', ''py'', or ''YYYY-MM-DDtoYYYY-MM-DD'')

Examples:

Javascript
// German-specific search
await web_search('{'
  query: "TV online schauen",
  count: 10,
  country: "DE",
  search_lang: "de",
'}');

// French search with French UI
await web_search('{'
  query: "actualités",
  country: "FR",
  search_lang: "fr",
  ui_lang: "fr",
'}');

// Recent results (past week)
await web_search('{'
  query: "TMBG interview",
  freshness: "pw",
'}');
Tutorial.step

web_fetch

Fetch a URL and extract readable content.

Tutorial.step

Requirements

- ''tools.web.fetch.enabled'' must not be ''false'' (default: enabled)

- Optional Firecrawl fallback: set ''tools.web.fetch.firecrawl.apiKey'' or ''FIRECRAWL_API_KEY''.

Tutorial.step

Config

Json5
'{'
  tools: '{'
    web: '{'
      fetch: '{'
        enabled: true,
        maxChars: 50000,
        timeoutSeconds: 30,
        cacheTtlMinutes: 15,
        maxRedirects: 3,
        userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_7_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
        readability: true,
        firecrawl: '{'
          enabled: true,
          apiKey: "FIRECRAWL_API_KEY_HERE", // optional if FIRECRAWL_API_KEY is set
          baseUrl: "https://api.firecrawl.dev",
          onlyMainContent: true,
          maxAgeMs: 86400000, // ms (1 day)
          timeoutSeconds: 60,
        '}',
      '}',
    '}',
  '}',
'}'
Tutorial.step

Tool parameters

- ''url'' (required, http/https only)

- ''extractMode'' (''markdown'' | ''text'')

- ''maxChars'' (truncate long pages)

Notes:

- ''web_fetch'' uses Readability (main-content extraction) first, then Firecrawl (if configured). If both fail, the tool returns an error.

- Firecrawl requests use bot-circumvention mode and cache results by default.

- ''web_fetch'' sends a Chrome-like User-Agent and ''Accept-Language'' by default; override ''userAgent'' if needed.

- ''web_fetch'' blocks private/internal hostnames and re-checks redirects (limit with ''maxRedirects'').

- ''web_fetch'' is best-effort extraction; some sites will need the browser tool.

- See ''Firecrawl'' for key setup and service details.

- Responses are cached (default 15 minutes) to reduce repeated fetches.

- If you use tool profiles/allowlists, add ''web_search''/''web_fetch'' or ''group:web''.

- If the Brave key is missing, ''web_search'' returns a short setup hint with a docs link.