Resumen
Running todos searches a traves de one proveedor es un single point of failure y often overpays for simple consultas. Este flujo de trabajo rotates consultas a traves de Scavio ($0.005/credit), Brave ($5/1K), y free tiers basado on consulta tipo, budget remaining, y proveedor health. Automatic failover cuando un proveedor es down.
Desencadenador
Every search solicitud de el agent o application.
Programación
On-demand
Pasos del flujo de trabajo
Clasificar Consulta Complexity
Analizar el incoming consulta to determine if it es simple (fact lookup), medium (comparacion), o complejo (multi-step research).
Verificar Proveedor Health
Ping cada provider's estado. Skip proveedores ese son down o rate-limited.
Route by Cost y Complexity
Simple consultas go to cheapest disponible proveedor. Complex consultas go to proveedores con best datos estructurados soporta.
Ejecutar Search con Failover
Call el selected proveedor. Si it fails o returns poor resultados, automaticamente intentar el next proveedor in el rotation.
Log y Rastrear Budget
Record cual proveedor fue usado, cost, resultado calidad, y actualizacion el running mensual budget.
Implementacion en Python
import requests, os, json, time
from pathlib import Path
API_KEY = os.environ["SCAVIO_API_KEY"]
H = {"x-api-key": API_KEY, "Content-Type": "application/json"}
BUDGET_FILE = Path("rotation_budget.json")
def load_budget() -> dict:
if BUDGET_FILE.exists():
return json.loads(BUDGET_FILE.read_text())
return {"scavio": 0, "total_cost": 0.0}
def save_budget(b: dict):
BUDGET_FILE.write_text(json.dumps(b))
def scavio_search(query: str) -> dict:
start = time.time()
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers=H,
json={"query": query, "country_code": "us"},
timeout=10,
)
latency = time.time() - start
if resp.status_code == 200:
data = resp.json()
return {"provider": "scavio", "cost": 0.005, "latency": round(latency, 2), "results": data.get("organic_results", []), "success": True}
return {"provider": "scavio", "success": False}
def rotate_search(query: str) -> dict:
budget = load_budget()
# Try Scavio first (cheapest at $0.005)
result = scavio_search(query)
if result["success"] and len(result.get("results", [])) >= 3:
budget["scavio"] += 1
budget["total_cost"] += result["cost"]
save_budget(budget)
return result
# Fallback: retry with simplified query
simplified = " ".join(query.split()[:4])
result = scavio_search(simplified)
if result["success"]:
budget["scavio"] += 1
budget["total_cost"] += result["cost"]
save_budget(budget)
return result
return {"provider": "none", "success": False, "results": []}
result = rotate_search("best cloud hosting provider comparison 2026")
print(f"Provider: {result['provider']}, Results: {len(result.get('results', []))}, Cost: ${result.get('cost', 0)}")Implementacion en JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
const fs = await import('fs');
function loadBudget() { try { return JSON.parse(fs.readFileSync('rotation_budget.json','utf8')); } catch { return {scavio:0, totalCost:0}; } }
function saveBudget(b) { fs.writeFileSync('rotation_budget.json', JSON.stringify(b)); }
async function scavioSearch(query) {
const start = Date.now();
const r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:H, body:JSON.stringify({query, country_code:'us'})});
if (r.ok) { const d = await r.json(); return {provider:'scavio', cost:0.005, latency:Date.now()-start, results:d.organic_results||[], success:true}; }
return {provider:'scavio', success:false};
}
async function rotateSearch(query) {
const budget = loadBudget();
let result = await scavioSearch(query);
if (result.success && result.results.length >= 3) { budget.scavio++; budget.totalCost += result.cost; saveBudget(budget); return result; }
result = await scavioSearch(query.split(' ').slice(0,4).join(' '));
if (result.success) { budget.scavio++; budget.totalCost += result.cost; saveBudget(budget); return result; }
return {provider:'none', success:false, results:[]};
}
const r = await rotateSearch('best cloud hosting provider comparison 2026');
console.log('Provider: '+r.provider+', Results: '+r.results.length+', Cost: $'+r.cost);Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA
YouTube
Búsqueda de videos con transcripciones y metadatos
Comunidad, publicaciones y comentarios en hilos de cualquier subreddit