Tavily
Tavily is a search API designed for LLMs, enabling AI applications to access real-time web data.
Installation
Python:
pip install tavily-python
JavaScript:
npm install @tavily/core
See references/sdk.md for complete SDK reference.
Client Initialization
from tavily import TavilyClient
Uses TAVILY_API_KEY env var (recommended)
client = TavilyClient()
#With project tracking (for usage organization) client = TavilyClient(project_id="your-project-id")
Async client for parallel queries
from tavily import AsyncTavilyClient async_client = AsyncTavilyClient()
Choosing the Right Method
For custom agents/workflows:
Need Method
Web search results search()
Content from specific URLs extract()
Content from entire site crawl()
URL discovery from site map()
For out-of-the-box research:
Need Method
End-to-end research with AI synthesis research()
Quick Reference
search() - Web Search
response = client.search( query="quantum computing breakthroughs", # Keep under 400 chars max_results=10, search_depth="advanced" ) print(response)
Key parameters: query , max_results , search_depth (ultra-fast/fast/basic/advanced), include_domains , exclude_domains , time_range
See references/search.md for complete search reference.
extract() - URL Content Extraction
Simple one-step extraction
response = client.extract( urls=["https://docs.example.com"], extract_depth="advanced" ) print(response)
Key parameters: urls (max 20), extract_depth , query , chunks_per_source (1-5)
See references/extract.md for complete extract reference.
crawl() - Site-Wide Extraction
response = client.crawl( url="https://docs.example.com", instructions="Find API documentation pages", # Semantic focus extract_depth="advanced" ) print(response)
Key parameters: url , max_depth , max_breadth , limit , instructions , chunks_per_source , select_paths , exclude_paths
See references/crawl.md for complete crawl reference.
map() - URL Discovery
response = client.map( url="https://docs.example.com" ) print(response)
research() - AI-Powered Research
import time
For comprehensive multi-topic research
result = client.research( input="Analyze competitive landscape for X in SMB market", model="pro" # or "mini" for focused queries, "auto" when unsure ) request_id = result["request_id"]
Poll until completed
response = client.get_research(request_id) while response["status"] not in ["completed", "failed"]: time.sleep(10) response = client.get_research(request_id)
print(response["content"]) # The research report
Key parameters: input , model ("mini"/"pro"/"auto"), stream , output_schema , citation_format
See references/research.md for complete research reference.
Detailed Guides
For complete parameters, response fields, patterns, and examples:
-
references/sdk.md - Python & JavaScript SDK reference, async patterns, Hybrid RAG
-
references/search.md - Query optimization, search depth selection, domain filtering, async patterns, post-filtering
-
references/extract.md - One-step vs two-step extraction, query/chunks for targeting, advanced mode
-
references/crawl.md - Crawl vs Map, instructions for semantic focus, use cases, Map-then-Extract pattern
-
references/research.md - Prompting best practices, model selection, streaming, structured output schemas
-
references/integrations.md - LangChain, LlamaIndex, CrewAI, Vercel AI SDK, and framework integrations