Overview
| Feature | Supported | 
|---|---|
| Supported Providers | perplexity,tavily,parallel_ai,exa_ai,google_pse,dataforseo | 
| Cost Tracking | โ | 
| Logging | โ | 
| Load Balancing | โ | 
LiteLLM follows the Perplexity API request/response for the Search API
Supported from LiteLLM v1.78.7+
LiteLLM Python SDK Usageโ
Quick Startโ
from litellm import search
import os
os.environ["PERPLEXITYAI_API_KEY"] = "pplx-..."
response = search(
    query="latest AI developments in 2024",
    search_provider="perplexity",
    max_results=5
)
# Access search results
for result in response.results:
    print(f"{result.title}: {result.url}")
    print(f"Snippet: {result.snippet}\n")
Async Usageโ
from litellm import asearch
import os, asyncio
os.environ["PERPLEXITYAI_API_KEY"] = "pplx-..."
async def search_async(): 
    response = await asearch(
        query="machine learning research papers",
        search_provider="perplexity",
        max_results=10,
        search_domain_filter=["arxiv.org", "nature.com"]
    )
    
    # Access search results
    for result in response.results:
        print(f"{result.title}: {result.url}")
        print(f"Snippet: {result.snippet}")
asyncio.run(search_async())
Optional Parametersโ
response = search(
    query="AI developments",
    search_provider="perplexity",
    # Unified parameters (work across all providers)
    max_results=10,                         # Maximum number of results (1-20)
    search_domain_filter=["arxiv.org"],     # Filter to specific domains
    country="US",                           # Country code filter
    max_tokens_per_page=1024                # Max tokens per page
)
LiteLLM AI Gateway Usageโ
LiteLLM provides a Perplexity API compatible /search endpoint for search calls.
Setup
Add this to your litellm proxy config.yaml
model_list:
  - model_name: gpt-4
    litellm_params:
      model: gpt-4
      api_key: os.environ/OPENAI_API_KEY
search_tools:
  - search_tool_name: perplexity-search
    litellm_params:
      search_provider: perplexity
      api_key: os.environ/PERPLEXITYAI_API_KEY
  
  - search_tool_name: tavily-search
    litellm_params:
      search_provider: tavily
      api_key: os.environ/TAVILY_API_KEY
Start litellm
litellm --config /path/to/config.yaml
# RUNNING on http://0.0.0.0:4000
Test Requestโ
Option 1: Search tool name in URL (Recommended - keeps body Perplexity-compatible)
curl http://0.0.0.0:4000/v1/search/perplexity-search \
  -H "Authorization: Bearer sk-1234" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "latest AI developments 2024",
    "max_results": 5,
    "search_domain_filter": ["arxiv.org", "nature.com"],
    "country": "US"
  }'
Option 2: Search tool name in body
curl http://0.0.0.0:4000/v1/search \
  -H "Authorization: Bearer sk-1234" \
  -H "Content-Type: application/json" \
  -d '{
    "search_tool_name": "perplexity-search",
    "query": "latest AI developments 2024",
    "max_results": 5
  }'
Load Balancingโ
Configure multiple search providers for automatic load balancing and fallbacks:
search_tools:
  - search_tool_name: my-search
    litellm_params:
      search_provider: perplexity
      api_key: os.environ/PERPLEXITYAI_API_KEY
  
  - search_tool_name: my-search
    litellm_params:
      search_provider: tavily
      api_key: os.environ/TAVILY_API_KEY
  
  - search_tool_name: my-search
    litellm_params:
      search_provider: exa_ai
      api_key: os.environ/EXA_API_KEY
router_settings:
  routing_strategy: simple-shuffle  # or 'least-busy', 'latency-based-routing'
Test with load balancing:
curl http://0.0.0.0:4000/v1/search/my-search \
  -H "Authorization: Bearer sk-1234" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "AI developments",
    "max_results": 10
  }'
Request/Response Formatโ
LiteLLM follows the Perplexity Search API specification.
See the official Perplexity Search documentation for complete details.
Example Requestโ
{
  "query": "latest AI developments 2024",
  "max_results": 10,
  "search_domain_filter": ["arxiv.org", "nature.com"],
  "country": "US",
  "max_tokens_per_page": 1024
}
Request Parametersโ
| Parameter | Type | Required | Description | 
|---|---|---|---|
| query | string or array | Yes | Search query. Can be a single string or array of strings | 
| search_provider | string | Yes (SDK) | The search provider to use: "perplexity","tavily","parallel_ai","exa_ai", or"google_pse" | 
| search_tool_name | string | Yes (Proxy) | Name of the search tool configured in config.yaml | 
| max_results | integer | No | Maximum number of results to return (1-20). Default: 10 | 
| search_domain_filter | array | No | List of domains to filter results (max 20 domains) | 
| max_tokens_per_page | integer | No | Maximum tokens per page to process. Default: 1024 | 
| country | string | No | Country code filter (e.g., "US","GB","DE") | 
Query Format Examples:
# Single query
query = "AI developments"
# Multiple queries
query = ["AI developments", "machine learning trends"]
Response Formatโ
The response follows Perplexity's search format with the following structure:
{
  "object": "search",
  "results": [
    {
      "title": "Latest Advances in Artificial Intelligence",
      "url": "https://arxiv.org/paper/example",
      "snippet": "This paper discusses recent developments in AI...",
      "date": "2024-01-15"
    },
    {
      "title": "Machine Learning Breakthroughs",
      "url": "https://nature.com/articles/ml-breakthrough",
      "snippet": "Researchers have achieved new milestones...",
      "date": "2024-01-10"
    }
  ]
}
Response Fieldsโ
| Field | Type | Description | 
|---|---|---|
| object | string | Always "search"for search responses | 
| results | array | List of search results | 
| results[].title | string | Title of the search result | 
| results[].url | string | URL of the search result | 
| results[].snippet | string | Text snippet from the result | 
| results[].date | string | Optional publication or last updated date | 
Supported Providersโ
| Provider | Environment Variable | search_providerValue | 
|---|---|---|
| Perplexity AI | PERPLEXITYAI_API_KEY | perplexity | 
| Tavily | TAVILY_API_KEY | tavily | 
| Exa AI | EXA_API_KEY | exa_ai | 
| Parallel AI | PARALLEL_AI_API_KEY | parallel_ai | 
| Google PSE | GOOGLE_PSE_API_KEY,GOOGLE_PSE_ENGINE_ID | google_pse | 
| DataForSEO | DATAFORSEO_LOGIN,DATAFORSEO_PASSWORD | dataforseo | 
See the individual provider documentation for detailed setup instructions and provider-specific parameters.