Skip to content

Tavily

Tavily is a search API designed for AI applications. OpenClaw exposes it in two ways:

  • as the web_search provider for the generic search tool
  • as explicit plugin tools: tavily_search and tavily_extract

Tavily returns structured results optimized for LLM consumption with configurable search depth, topic filtering, domain filters, AI-generated answer summaries, and content extraction from URLs (including JavaScript-rendered pages).

PropertyValue
Plugin idtavily
AuthTAVILY_API_KEY or config apiKey
Base URLhttps://api.tavily.com (default)
Bundled toolstavily_search, tavily_extract
  1. Get an API key

    Create a Tavily account at tavily.com, then generate an API key in the dashboard.

  2. Configure the plugin and provider

    {
    plugins: {
    entries: {
    tavily: {
    enabled: true,
    config: {
    webSearch: {
    apiKey: "tvly-...", // optional if TAVILY_API_KEY is set
    baseUrl: "https://api.tavily.com",
    },
    },
    },
    },
    },
    tools: {
    web: {
    search: {
    provider: "tavily",
    },
    },
    },
    }
  3. Verify search runs

    Trigger a web_search from any agent, or call tavily_search directly.

Use this when you want Tavily-specific search controls instead of generic web_search.

ParameterTypeConstraints / defaultDescription
querystringrequiredSearch query string. Keep under 400 characters.
search_depthenumbasic (default), advancedadvanced is slower but higher relevance.
topicenumgeneral (default), news, financeFilter by topic family.
max_resultsinteger1-20Number of results.
include_answerbooleandefault falseInclude a Tavily AI-generated answer summary.
time_rangeenumday, week, month, yearFilter results by recency.
include_domainsstring array(none)Only include results from these domains.
exclude_domainsstring array(none)Exclude results from these domains.

Search depth tradeoff:

DepthSpeedRelevanceBest for
basicFasterHighGeneral-purpose queries (default).
advancedSlowerHighestPrecision research and fact-finding.

Use this to extract clean content from one or more URLs. Handles JavaScript-rendered pages and supports query-focused chunking for targeted extraction.

ParameterTypeConstraints / defaultDescription
urlsstring arrayrequired, 1-20URLs to extract content from.
querystring(optional)Rerank extracted chunks by relevance to this query.
extract_depthenumbasic (default), advancedUse advanced for JS-heavy pages, SPAs, or dynamic tables.
chunks_per_sourceinteger1-5; requires queryChunks returned per URL. Errors if set without query.
include_imagesbooleandefault falseInclude image URLs in results.

Extract depth tradeoff:

DepthWhen to use
basicSimple pages. Try this first.
advancedJS-rendered SPAs, dynamic content, tables.
NeedTool
Quick web search, no special optionsweb_search
Search with depth, topic, AI answerstavily_search
Extract content from specific URLstavily_extract
API key resolution order

The Tavily client looks up its API key in this order:

  1. plugins.entries.tavily.config.webSearch.apiKey (resolved through SecretRefs).
  2. TAVILY_API_KEY from the gateway environment.

tavily_extract raises a setup error if neither is present.

Custom base URL

Override plugins.entries.tavily.config.webSearch.baseUrl if you front Tavily through a proxy. The default is https://api.tavily.com.

`chunks_per_source` requires `query`

tavily_extract rejects calls that pass chunks_per_source without a query. Tavily ranks chunks by query relevance, so the parameter is meaningless without one.

Web Search overview

All providers and auto-detection rules.

Firecrawl

Search plus scraping with content extraction.

Exa Search

Neural search with content extraction.

Configuration

Full config schema for plugin entries and tool routing.