Skip to main content

SearchAPI.io (Google Search)

Get started by creating a free API key via https://www.searchapi.io/.

SearchAPI.io provides access to Google Search results with a simple API. It supports all Google Search parameters including location, language, time filters, and more.

For complete documentation on all supported parameters, visit https://www.searchapi.io/docs/google.

LiteLLM Python SDK​

SearchAPI.io Search
import os
from litellm import search

os.environ["SEARCHAPI_API_KEY"] = "your-api-key"

response = search(
query="latest AI developments",
search_provider="searchapi",
max_results=10
)

# Access search results
for result in response.results:
print(f"{result.title}: {result.url}")
print(f"Snippet: {result.snippet}\n")

Advanced Usage with SearchAPI.io Parameters​

SearchAPI.io supports many Google Search-specific parameters:

Advanced SearchAPI.io Parameters
import os
from litellm import search

os.environ["SEARCHAPI_API_KEY"] = "your-api-key"

response = search(
query="machine learning research",
search_provider="searchapi",
max_results=10,
# Unified parameters
country="US",
search_domain_filter=["arxiv.org", "nature.com"],
# SearchAPI.io specific parameters
gl="us", # Country code
hl="en", # Interface language
time_period="last_month", # Time filter
safe="active", # SafeSearch
device="desktop", # Device type
location="New York" # Geographic location
)

LiteLLM AI Gateway​

1. Setup config.yaml​

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: google-search
litellm_params:
search_provider: searchapi
api_key: os.environ/SEARCHAPI_API_KEY

2. Start the proxy​

litellm --config /path/to/config.yaml

# RUNNING on http://0.0.0.0:4000

3. Test the search endpoint​

Test Request
curl http://0.0.0.0:4000/v1/search/google-search \
-H "Authorization: Bearer sk-1234" \
-H "Content-Type: application/json" \
-d '{
"query": "latest AI developments",
"max_results": 10,
"country": "US"
}'

SearchAPI.io Specific Parameters​

SearchAPI.io supports many Google Search parameters. Here are some commonly used ones:

ParameterTypeDescription
glstringCountry code (e.g., 'us', 'uk', 'de')
hlstringInterface language (e.g., 'en', 'es', 'fr')
locationstringGeographic location (e.g., 'New York', 'London')
devicestringDevice type: 'desktop', 'mobile', 'tablet'
time_periodstringTime filter: 'last_hour', 'last_day', 'last_week', 'last_month', 'last_year'
time_period_minstringStart date (MM/DD/YYYY)
time_period_maxstringEnd date (MM/DD/YYYY)
safestringSafeSearch: 'active' or 'off'
lrstringLanguage restriction (e.g., 'lang_en', 'lang_es')
crstringCountry restriction
pageintegerPage number for pagination

Example with Time Filters​

Search with Time Filter
response = search(
query="AI breakthroughs",
search_provider="searchapi",
max_results=10,
time_period="last_month"
)

Example with Custom Date Range​

Search with Custom Date Range
response = search(
query="AI research papers",
search_provider="searchapi",
max_results=10,
time_period_min="01/01/2024",
time_period_max="03/01/2024"
)

Example with Location​

Search with Location
response = search(
query="AI conferences",
search_provider="searchapi",
max_results=10,
location="San Francisco",
gl="us"
)

Response Format​

SearchAPI.io returns results in the standard LiteLLM search format:

{
"object": "search",
"results": [
{
"title": "Latest AI Developments",
"url": "https://example.com/ai-news",
"snippet": "Recent breakthroughs in artificial intelligence...",
"date": "2024-01-15"
}
]
}

Rate Limits​

SearchAPI.io has different rate limits based on your plan:

  • Free tier: 100 requests/month
  • Paid plans: Higher limits available

Check your current usage at https://www.searchapi.io/dashboard.

Error Handling​

Error Handling
from litellm import search
import os

os.environ["SEARCHAPI_API_KEY"] = "your-api-key"

try:
response = search(
query="test query",
search_provider="searchapi",
max_results=10
)
print(f"Found {len(response.results)} results")
except Exception as e:
print(f"Search failed: {str(e)}")

Additional Resources​