The Problem
Tavily's free tier rate limits requests to approximately 20 per minute. Agent workflows that batch search queries, such as research agents processing multiple sub-questions or monitoring pipelines checking dozens of keywords, hit 429 errors and stall. After Nebius acquired Tavily for $275M, the rate limit structure has not changed for free users. Teams building production agents need predictable throughput without per-minute throttling breaking their pipelines.
The Scavio Solution
Replace Tavily as the primary search provider with Scavio, which has no per-minute rate throttle on any tier. For teams that want to keep Tavily for its LangChain integration, add Scavio as a fallback that activates when Tavily returns a 429 error. The fallback adds one try-except block to existing code. Scavio returns structured SERP data with AI Overview extraction at $0.005/query, adding data Tavily does not provide.
Before
Before adding the fallback, the research agent hit Tavily's ~20/min rate limit on every batch operation. A 50-keyword monitoring run would stall after the first 20 queries, requiring manual restarts and taking 3x longer than expected.
After
After adding Scavio as fallback, rate-limited Tavily requests automatically route to Scavio. The 50-keyword batch completes in under 2 minutes with zero 429 errors. Bonus: Scavio results include AI Overview data that Tavily does not return.
Who It Is For
Teams using Tavily in LangChain or CrewAI agent workflows who hit rate limits on batch operations. Production agent builders who need predictable search throughput.
Key Benefits
- Eliminates 429 rate limit errors from Tavily free tier
- No per-minute throttle on Scavio queries
- AI Overview extraction not available in Tavily
- Drop-in fallback requires minimal code changes
- Free 250 Scavio credits/month cover most fallback needs
Python Example
import requests
import time
SCAVIO_KEY = "your_scavio_api_key"
TAVILY_KEY = "your_tavily_api_key"
def search_with_fallback(query: str) -> dict:
"""Try Tavily first, fall back to Scavio on rate limit."""
try:
res = requests.post(
"https://api.tavily.com/search",
json={"api_key": TAVILY_KEY, "query": query},
timeout=10,
)
if res.status_code == 429:
raise Exception("Rate limited")
res.raise_for_status()
return {"source": "tavily", "results": res.json().get("results", [])}
except Exception:
pass
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": SCAVIO_KEY},
json={"platform": "google", "query": query, "ai_overview": True},
timeout=15,
)
res.raise_for_status()
data = res.json()
return {
"source": "scavio",
"results": [{"title": r["title"], "url": r["link"], "content": r.get("snippet", "")} for r in data.get("organic", [])[:5]],
"ai_overview": data.get("ai_overview", {}).get("text", ""),
}
keywords = ["best search api 2026", "tavily alternative", "search api rate limits"]
for kw in keywords:
result = search_with_fallback(kw)
print(f"[{result['source']}] {kw}: {len(result['results'])} results")JavaScript Example
const SCAVIO_KEY = "your_scavio_api_key";
const TAVILY_KEY = "your_tavily_api_key";
async function searchWithFallback(query) {
try {
const res = await fetch("https://api.tavily.com/search", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ api_key: TAVILY_KEY, query }),
});
if (res.status === 429) throw new Error("Rate limited");
if (!res.ok) throw new Error(`Tavily ${res.status}`);
return { source: "tavily", results: (await res.json()).results ?? [] };
} catch {}
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": SCAVIO_KEY, "content-type": "application/json" },
body: JSON.stringify({ platform: "google", query, ai_overview: true }),
});
const data = await res.json();
return { source: "scavio", results: (data.organic ?? []).slice(0, 5).map((r) => ({ title: r.title, url: r.link, content: r.snippet ?? "" })) };
}
const r = await searchWithFallback("best search api 2026");
console.log(`[${r.source}] ${r.results.length} results`);Platforms Used
Web search with knowledge graph, PAA, and AI overviews