ScavioScavio
ProductoPreciosDocumentación
Iniciar sesionComenzar
  1. Inicio
  2. Tutoriales
  3. Cómo construir un enrutador de búsqueda multiproveedor con respaldo
Tutorial

Cómo construir un enrutador de búsqueda multiproveedor con respaldo

Cree un enrutador de búsqueda que pruebe Scavio, SearxNG y Tavily con respaldo automático. Para Pi Coding Agent y otros tiempos de ejecución de agentes de IA.

Obtener clave API gratisDocumentacion API

Una publicación de r/PiCodingAgent preguntó sobre la búsqueda confiable de agentes de codificación. El problema: la búsqueda de un único proveedor falla silenciosamente. Este tutorial crea un enrutador que prueba múltiples proveedores en orden de prioridad y recurre automáticamente. Útil para cualquier tiempo de ejecución de agente, no solo para Pi.

Requisitos previos

  • Clave API de Scavio
  • Python 3.8+
  • Opcional: clave API de Tavily, instancia de SearxNG

Guia paso a paso

Paso 1: Definir la configuración del proveedor

Enumere los proveedores con puntos finales y prioridad.

Python
providers = [
    {
        'name': 'scavio',
        'url': 'https://api.scavio.dev/api/v1/search',
        'headers': lambda: {'x-api-key': os.environ['SCAVIO_API_KEY']},
        'body': lambda q: {'platform': 'google', 'query': q},
        'parse': lambda r: r.get('organic_results', []),
        'cost': 0.005,
        'priority': 1
    },
    {
        'name': 'searxng',
        'url': 'http://localhost:8080/search',
        'headers': lambda: {},
        'body': lambda q: {'q': q, 'format': 'json'},
        'parse': lambda r: r.get('results', []),
        'cost': 0,
        'priority': 2
    },
    {
        'name': 'tavily',
        'url': 'https://api.tavily.com/search',
        'headers': lambda: {},
        'body': lambda q: {'api_key': os.environ.get('TAVILY_API_KEY', ''), 'query': q},
        'parse': lambda r: r.get('results', []),
        'cost': 0.008,
        'priority': 3
    },
]

Paso 2: Construya el enrutador con respaldo

Pruebe con cada proveedor en orden de prioridad, recurra al fracaso.

Python
import requests, os, time

def search_with_fallback(query, providers_list=providers):
    sorted_providers = sorted(providers_list, key=lambda p: p['priority'])
    errors = []
    for provider in sorted_providers:
        try:
            resp = requests.post(provider['url'],
                headers=provider['headers'](),
                json=provider['body'](query),
                timeout=10)
            resp.raise_for_status()
            results = provider['parse'](resp.json())
            if results:
                return {'provider': provider['name'], 'results': results, 'cost': provider['cost']}
            errors.append(f"{provider['name']}: empty results")
        except Exception as e:
            errors.append(f"{provider['name']}: {str(e)}")
    return {'provider': None, 'results': [], 'errors': errors}

Paso 3: Agregar enrutamiento consciente de la latencia

Realice un seguimiento de los tiempos de respuesta y prefiera proveedores más rápidos.

Python
provider_stats = {}

def update_stats(provider_name, latency, success):
    if provider_name not in provider_stats:
        provider_stats[provider_name] = {'total': 0, 'success': 0, 'avg_latency': 0}
    stats = provider_stats[provider_name]
    stats['total'] += 1
    if success: stats['success'] += 1
    stats['avg_latency'] = (stats['avg_latency'] * (stats['total'] - 1) + latency) / stats['total']

def smart_search(query):
    start = time.time()
    result = search_with_fallback(query)
    latency = time.time() - start
    if result['provider']:
        update_stats(result['provider'], latency, True)
    return result

Paso 4: Registrar el uso del proveedor para el seguimiento de costos

Realice un seguimiento de qué proveedor atiende cada consulta.

Python
import json, datetime

def log_search(query, result):
    with open('search_router_log.jsonl', 'a') as f:
        f.write(json.dumps({
            'ts': datetime.datetime.now().isoformat(),
            'query': query,
            'provider': result['provider'],
            'cost': result.get('cost', 0),
            'result_count': len(result.get('results', []))
        }) + '\n')

Ejemplo en Python

Python
import os, requests

def search(query):
    for provider in ['scavio', 'searxng', 'tavily']:
        try:
            if provider == 'scavio':
                r = requests.post('https://api.scavio.dev/api/v1/search',
                    headers={'x-api-key': os.environ['SCAVIO_API_KEY']},
                    json={'platform': 'google', 'query': query}, timeout=10)
                results = r.json().get('organic_results', [])
                if results: return {'provider': 'scavio', 'results': results}
        except: continue
    return {'provider': None, 'results': []}

Ejemplo en JavaScript

JavaScript
async function search(query) {
  try {
    const res = await fetch('https://api.scavio.dev/api/v1/search', {
      method: 'POST',
      headers: {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'},
      body: JSON.stringify({platform: 'google', query})
    });
    const data = await res.json();
    if (data.organic_results?.length) return {provider: 'scavio', results: data.organic_results};
  } catch(e) { /* fallback */ }
}

Salida esperada

JSON
Multi-provider search router with automatic fallback. Priority: Scavio ($0.005) > SearxNG (free/self-hosted) > Tavily ($0.008). Latency tracking and JSONL cost log.

Tutoriales relacionados

  • Cómo crear una pila de búsqueda resistente a los proveedores (2026)
  • Cómo agregar una alternativa de búsqueda cuando Gemini se niega a buscar

Preguntas frecuentes

La mayoria de los desarrolladores completan este tutorial en 15 a 30 minutos. Necesitaras una clave API de Scavio (el plan gratuito funciona) y un entorno de Python o JavaScript.

Clave API de Scavio. Python 3.8+. Opcional: clave API de Tavily, instancia de SearxNG. Una clave API de Scavio te da 50 creditos gratuitos al registrarte.

Si. El plan gratuito incluye 50 creditos al registrarte, mas que suficiente para completar este tutorial y crear un prototipo funcional.

Scavio tiene un paquete nativo de LangChain (langchain-scavio), un servidor MCP y una API REST simple que funciona con cualquier cliente HTTP. Este tutorial usa the raw REST API, pero puedes adaptarlo al framework que prefieras.

Recursos relacionados

Best Of

Mejor API de datos comerciales locales en 2026

Read more
Best Of

Mejor API de autoridad de dominio en 2026

Read more
Comparison

Google Places API vs SERP Local Pack API

Read more
Solution

Alternativa de confiabilidad de API de sonda

Read more
Solution

Migrar de Brave Search API a Scavio para Mayor Cobertura

Read more
Use Case

Flujo de trabajo de enriquecimiento de búsqueda n8n

Read more

Empieza a construir

Cree un enrutador de búsqueda que pruebe Scavio, SearxNG y Tavily con respaldo automático. Para Pi Coding Agent y otros tiempos de ejecución de agentes de IA.

Obtener clave API gratuitaLeer la documentacion
ScavioScavio

API de busqueda en tiempo real para agentes de IA. Busca en todas las plataformas, no solo en Google.

Producto

  • Funciones
  • Precios
  • Panel
  • Afiliados

Desarrolladores

  • Documentacion
  • Referencia de API
  • Inicio rapido
  • Integracion MCP
  • Python SDK

Alternativas

  • Alternativa a Tavily
  • Alternativa a SerpAPI
  • Alternativa a Firecrawl
  • Alternativa a Exa

Herramientas

  • Formateador JSON
  • cURL a codigo
  • Contador de tokens
  • Todas las herramientas

© 2026 Scavio. Todos los derechos reservados.

Featured on TAAFT
Terminos de servicioPolitica de privacidad