Migrez de l'API Brave Search vers Scavio en remplaçant l'URL du point de terminaison, en passant de l'authentification par paramètre de requête à un en-tête x-api-key, et en mettant à jour votre analyseur de réponse pour correspondre à la structure JSON de Scavio. La migration prend généralement moins de 30 minutes pour la plupart des bases de code. Scavio couvre Google, Amazon, YouTube, Reddit et Walmart via une seule clé API, ce qui élimine le besoin de comptes fournisseurs distincts. Ce tutoriel décrit les modifications de code exactes nécessaires en Python et JavaScript.
Prérequis
- Une base de code existante utilisant l'API Brave Search
- Une clé API Scavio depuis scavio.dev
- Python 3.8+ ou Node.js 18+
- Une connaissance de base des bibliothèques de requêtes HTTP
Parcours
Étape 1: Mapper le format de la requête
Brave utilise GET avec des paramètres de requête et un en-tête subscription-token. Scavio utilise POST avec un corps JSON et un en-tête x-api-key. Remplacez l'appel de requête.
import requests, os
# BEFORE: Brave Search
# resp = requests.get('https://api.search.brave.com/res/v1/web/search',
# headers={'X-Subscription-Token': BRAVE_KEY},
# params={'q': 'best crm 2026'})
# AFTER: Scavio
resp = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': os.environ['SCAVIO_API_KEY']},
json={'platform': 'google', 'query': 'best crm 2026'})
data = resp.json()Étape 2: Mettre à jour l'analyse de la réponse
Brave renvoie les résultats sous web.results. Scavio les renvoie sous organic_results. Mettez à jour votre analyseur en conséquence.
# BEFORE: Brave response parsing
# results = data.get('web', {}).get('results', [])
# for r in results:
# title = r['title']
# url = r['url']
# snippet = r.get('description', '')
# AFTER: Scavio response parsing
results = data.get('organic_results', [])
for r in results:
title = r['title']
url = r['link']
snippet = r.get('snippet', '')
print(f'{title} - {url}')Étape 3: Construire un wrapper de compatibilité
Si vous avez de nombreux sites d'appel, créez une fonction wrapper qui présente l'ancienne interface tout en appelant Scavio en interne.
def brave_compatible_search(query: str, count: int = 10) -> dict:
"""Drop-in replacement for Brave Search API calls."""
resp = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': os.environ['SCAVIO_API_KEY']},
json={'platform': 'google', 'query': query})
resp.raise_for_status()
scavio_results = resp.json().get('organic_results', [])[:count]
return {
'web': {
'results': [{
'title': r.get('title', ''),
'url': r.get('link', ''),
'description': r.get('snippet', ''),
} for r in scavio_results]
}
}Étape 4: Mettre à jour les variables d'environnement et tester
Remplacez la variable d'environnement BRAVE_API_KEY par SCAVIO_API_KEY et exécutez votre suite de tests pour vérifier que les résultats sont bien analysés.
# In your .env or environment:
# Remove: BRAVE_API_KEY=brv_xxx
# Add: SCAVIO_API_KEY=your_scavio_key
# Quick smoke test:
def test_migration():
result = brave_compatible_search('python web frameworks')
items = result['web']['results']
assert len(items) > 0, 'No results returned'
assert items[0]['title'], 'Missing title'
assert items[0]['url'].startswith('http'), 'Invalid URL'
print(f'Migration OK: {len(items)} results')
test_migration()Exemple Python
import requests, os
def scavio_search(query, platform='google'):
resp = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': os.environ['SCAVIO_API_KEY']},
json={'platform': platform, 'query': query})
resp.raise_for_status()
return resp.json().get('organic_results', [])
# Replaces: requests.get('https://api.search.brave.com/...')
results = scavio_search('best crm 2026')
for r in results[:5]:
print(f"{r['title']} -> {r['link']}")Exemple JavaScript
async function scavioSearch(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_results || [];
}
// Replaces: fetch('https://api.search.brave.com/...')
const results = await scavioSearch('best crm 2026');
results.slice(0, 5).forEach(r => console.log(`${r.title} -> ${r.link}`));Sortie attendue
A fully migrated codebase where all Brave Search API calls now route through Scavio, with identical output format via a compatibility wrapper.