Brave Search API eliminó su nivel gratuito en febrero de 2026 y ahora cobra 5 dólares por cada 1.000 consultas con atribución obligatoria. Si su proyecto dependía de Brave Search sin costo, este tutorial le explica cómo migrar a Scavio (250 créditos gratis/mes, no se requiere atribución) con cambios mínimos de código.
Requisitos previos
- Integración existente de la API Brave Search
- Una clave API de Scavio de scavio.dev (registro gratuito)
Guia paso a paso
Paso 1: Comparar formas API
Brave usa GET con parámetros de consulta y un encabezado de clave de suscripción. Scavio usa POST con cuerpo JSON y encabezado x-api-key. Asigne sus parámetros de consulta existentes al nuevo formato.
# Brave (old)
curl -H 'X-Subscription-Token: BRAVE_KEY' \
'https://api.search.brave.com/res/v1/web/search?q=python+web+framework'
# Scavio (new)
curl -X POST https://api.scavio.dev/api/v1/search \
-H 'x-api-key: SCAVIO_KEY' \
-H 'Content-Type: application/json' \
-d '{"platform": "google", "query": "python web framework"}'Paso 2: Actualizar el código Python
Reemplace la llamada HTTP de Brave con el punto final POST de Scavio.
import requests, os
# Old Brave code:
# resp = requests.get('https://api.search.brave.com/res/v1/web/search',
# headers={'X-Subscription-Token': os.environ['BRAVE_KEY']},
# params={'q': query})
# results = resp.json()['web']['results']
# New Scavio code:
def search(query: str) -> list:
resp = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': os.environ['SCAVIO_API_KEY'], 'Content-Type': 'application/json'},
json={'platform': 'google', 'query': query}, timeout=10)
return resp.json().get('organic', [])Paso 3: Actualizar código JavaScript
Reemplace la llamada de recuperación de Brave con el punto final POST de Scavio.
// Old Brave code:
// const resp = await fetch(`https://api.search.brave.com/res/v1/web/search?q=${q}`, {
// headers: {'X-Subscription-Token': process.env.BRAVE_KEY}
// });
// New Scavio code:
async function search(query) {
const resp = 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})
});
return (await resp.json()).organic || [];
}Paso 4: Asignar campos de respuesta
Asigne campos de respuesta de Brave a equivalentes de Scavio.
# Brave response field -> Scavio equivalent:
# result.title -> result['title']
# result.url -> result['link']
# result.description -> result['snippet']
# result.age -> result['date'] (if available)
# result.extra_snippets -> (not available, use snippet)
# Normalize function:
def normalize_result(r: dict) -> dict:
return {
'title': r.get('title', ''),
'url': r.get('link', ''),
'description': r.get('snippet', ''),
}Paso 5: Actualizar la configuración de MCP (si corresponde)
Si estaba usando Brave MCP, reemplácelo con Scavio MCP.
// In claude_desktop_config.json or .cursor/mcp.json:
// Remove Brave MCP:
// "brave-search": { "command": "npx", "args": ["@anthropic/mcp-brave-search"] }
// Add Scavio MCP:
{
"mcpServers": {
"scavio": {
"url": "https://mcp.scavio.dev/mcp",
"headers": { "x-api-key": "your_scavio_api_key" }
}
}
}Paso 6: Eliminar el requisito de atribución
Brave requirió atribución en su proyecto para obtener crédito gratuito. Scavio no requiere atribución.
# Remove from your README/about page:
# 'Powered by Brave Search API' (no longer needed)
# Scavio free tier (250 credits/month) has no attribution requirement.
# You may credit Scavio if you want, but it is not required.Ejemplo en Python
import requests, os
def search_scavio(query: str, platform: str = 'google') -> list:
resp = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': os.environ['SCAVIO_API_KEY'], 'Content-Type': 'application/json'},
json={'platform': platform, 'query': query}, timeout=10)
return [{'title': r['title'], 'url': r.get('link',''), 'snippet': r.get('snippet','')}
for r in resp.json().get('organic', [])]Ejemplo en JavaScript
async function searchScavio(query, platform = 'google') {
const resp = 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, query})
});
const data = await resp.json();
return (data.organic || []).map(r => ({title: r.title, url: r.link, snippet: r.snippet}));
}Salida esperada
A migrated search integration that works with Scavio instead of Brave, with 250 free credits/month and no attribution requirement.