ScavioScavio
ProduitTarifsDocumentation
ConnexionCommencer
  1. Accueil
  2. Tutoriels
  3. Comment migrer de SearXNG vers la recherche par API
Tutoriel

Comment migrer de SearXNG vers la recherche par API

Remplacez SearXNG auto-hébergé par une API de recherche pour les agents IA. Pas de Docker, pas de maintenance, mêmes résultats structurés.

Obtenez une clé API gratuiteDocumentation API

SearXNG nécessite Docker, des mises à jour régulières et se casse lorsque les moteurs en amont modifient leur HTML. Ce tutoriel migre votre agent de SearXNG vers l'API de recherche Scavio. Vous conservez le même format de résultat attendu par votre agent tout en éliminant la charge de maintenance. L'API coûte $0.005/requête contre les coûts serveur liés à l'exécution de SearXNG.

Prérequis

  • Python 3.8+
  • bibliothèque requests
  • Une clé API Scavio depuis scavio.dev
  • Intégration SearXNG existante à remplacer

Parcours

Étape 1: Mapper le format de réponse SearXNG au format de l'API

Comparez la sortie JSON de SearXNG avec la réponse de l'API Scavio pour construire une couche de traduction.

Python
import os, requests, json

API_KEY = os.environ['SCAVIO_API_KEY']
SH = {'x-api-key': API_KEY, 'Content-Type': 'application/json'}

# SearXNG returns this format:
SEARXNG_FORMAT = {
    'results': [
        {'title': '...', 'url': '...', 'content': '...', 'engine': 'google'},
    ],
    'number_of_results': 10,
}

def scavio_to_searxng_format(query):
    """Call Scavio API and return data in SearXNG format."""
    resp = requests.post('https://api.scavio.dev/api/v1/search',
        headers=SH, json={'query': query, 'country_code': 'us'}, timeout=10)
    resp.raise_for_status()
    data = resp.json()
    results = []
    for r in data.get('organic_results', []):
        results.append({
            'title': r.get('title', ''),
            'url': r.get('link', ''),
            'content': r.get('snippet', ''),
            'engine': 'scavio',
            'score': r.get('position', 0),
        })
    return {
        'results': results,
        'number_of_results': len(results),
        'query': query,
    }

# Test the translation
result = scavio_to_searxng_format('python web framework comparison 2026')
print(f'Query: {result["query"]}')
print(f'Results: {result["number_of_results"]}')
for r in result['results'][:3]:
    print(f'  [{r["engine"]}] {r["title"][:50]}')
    print(f'    {r["url"]}')

Étape 2: Créez une fonction de remplacement direct

Remplacez l'appel SearXNG par l'appel API, en conservant la même signature de fonction.

Python
# BEFORE: SearXNG call
# def search(query, num_results=10):
#     resp = requests.get('http://localhost:8888/search',
#         params={'q': query, 'format': 'json', 'engines': 'google'})
#     return resp.json()['results'][:num_results]

# AFTER: Scavio API call (same interface)
def search(query, num_results=10):
    """Drop-in replacement for SearXNG search."""
    resp = requests.post('https://api.scavio.dev/api/v1/search',
        headers=SH, json={'query': query, 'country_code': 'us'}, timeout=10)
    resp.raise_for_status()
    data = resp.json()
    return [{
        'title': r.get('title', ''),
        'url': r.get('link', ''),
        'content': r.get('snippet', ''),
        'engine': 'scavio',
    } for r in data.get('organic_results', [])[:num_results]]

# Your existing code works without changes:
results = search('best python web framework 2026', num_results=5)
for r in results:
    print(f'  {r["title"][:50]} ({r["engine"]})')
    print(f'    {r["url"]}')
print(f'\nNo Docker. No maintenance. $0.005/query.')

Étape 3: Ajoutez une recherche spécifique à la plateforme pour des résultats plus riches

Contrairement à SearXNG, l'API prend en charge les requêtes spécifiques aux plateformes pour Reddit, YouTube, etc.

Python
def search_platform(query, platform=None, num_results=5):
    """Extended search with platform support (not possible with SearXNG)."""
    body = {'query': query, 'country_code': 'us'}
    if platform:
        body['platform'] = platform
    resp = requests.post('https://api.scavio.dev/api/v1/search',
        headers=SH, json=body, timeout=10)
    resp.raise_for_status()
    data = resp.json()
    return [{'title': r.get('title', ''), 'url': r.get('link', ''),
             'content': r.get('snippet', '')}
            for r in data.get('organic_results', [])[:num_results]]

# SearXNG could only do web search. API does platform-specific:
print('=== Google Web ===')
for r in search_platform('FastAPI deployment', num_results=3):
    print(f'  {r["title"][:50]}')

print('\n=== Reddit ===')
for r in search_platform('FastAPI deployment', platform='reddit', num_results=3):
    print(f'  {r["title"][:50]}')

print('\n=== YouTube ===')
for r in search_platform('FastAPI deployment', platform='youtube', num_results=3):
    print(f'  {r["title"][:50]}')

print(f'\nSearXNG: $20-50/mo server + maintenance')
print(f'Scavio API: $0.005/query, zero maintenance')

Exemple Python

Python
import os, requests
SH = {'x-api-key': os.environ['SCAVIO_API_KEY'], 'Content-Type': 'application/json'}

# Drop-in SearXNG replacement
def search(query, num_results=10):
    data = requests.post('https://api.scavio.dev/api/v1/search',
        headers=SH, json={'query': query, 'country_code': 'us'}, timeout=10).json()
    return [{'title': r['title'], 'url': r['link'], 'content': r.get('snippet', '')}
            for r in data.get('organic_results', [])[:num_results]]

for r in search('SearXNG alternative api', 5):
    print(f'{r["title"][:50]}')

Exemple JavaScript

JavaScript
const SH = { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' };
// Drop-in SearXNG replacement
async function search(query, numResults = 10) {
  const data = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST', headers: SH,
    body: JSON.stringify({ query, country_code: 'us' })
  }).then(r => r.json());
  return (data.organic_results || []).slice(0, numResults)
    .map(r => ({ title: r.title, url: r.link, content: r.snippet }));
}
const results = await search('SearXNG alternative', 5);
results.forEach(r => console.log(r.title));

Sortie attendue

JSON
Query: python web framework comparison 2026
Results: 10
  [scavio] FastAPI vs Django vs Flask: Python Web Framewor
    https://...

=== Google Web ===
  FastAPI Deployment Guide: Docker, AWS, and GCP

=== Reddit ===
  r/Python - Best way to deploy FastAPI in production

=== YouTube ===
  FastAPI Deployment Tutorial 2026 - Full Guide

SearXNG: $20-50/mo server + maintenance
Scavio API: $0.005/query, zero maintenance

Tutoriels associés

  • Comment corriger le blocage de SearXNG par Hermes avec un repli API
  • Comment ajouter la recherche API à Hermes sans navigateur
  • Comment configurer la passerelle de recherche MCP avec basculement

Questions fréquentes

La plupart des développeurs terminent ce tutoriel en 15 à 30 minutes. Vous aurez besoin d'une clé API Scavio (l'offre gratuite suffit) et d'un environnement Python ou JavaScript fonctionnel.

Python 3.8+. bibliothèque requests. Une clé API Scavio depuis scavio.dev. Intégration SearXNG existante à remplacer. Une clé API Scavio vous donne 50 crédits gratuits à l'inscription.

Oui. L'offre gratuite comprend 50 crédits à l'inscription, ce qui est largement suffisant pour terminer ce tutoriel et prototyper une solution fonctionnelle.

Scavio dispose d'un package natif LangChain (langchain-scavio), d'un serveur MCP et d'une API REST simple qui fonctionne avec tout client HTTP. Ce tutoriel utilise the raw REST API, mais vous pouvez l'adapter à votre framework de prédilection.

Ressources connexes

Best Of

Meilleures alternatives d'API de recherche auto-hébergées ou hébergées 2026

Read more
Best Of

Meilleures alternatives à SearXNG pour la production (2026)

Read more
Use Case

Migration de l'API SearXNG

Read more
Comparison

Self-Hosted Search (SearXNG, YaCy) vs Commercial Search APIs (Scavio, Tavily, SerpAPI)

Read more
Solution

Migrez de Brave Search API à Scavio pour une meilleure couverture

Read more
Glossary

Paysage des fournisseurs d'API de recherche (2026)

Read more

Commencer

Remplacez SearXNG auto-hébergé par une API de recherche pour les agents IA. Pas de Docker, pas de maintenance, mêmes résultats structurés.

Obtenez une clé API gratuiteLire la documentation
ScavioScavio

API de recherche en temps réel pour agents IA. Recherchez sur toutes les plateformes, pas seulement Google.

Produit

  • Fonctionnalités
  • Tarifs
  • Tableau de bord
  • Affiliés

Développeurs

  • Documentation
  • Référence API
  • Démarrage rapide
  • Intégration MCP
  • SDK Python

Alternatives

  • Alternative à Tavily
  • Alternative à SerpAPI
  • Alternative à Firecrawl
  • Alternative à Exa

Outils

  • Formateur JSON
  • cURL vers code
  • Compteur de jetons
  • Tous les outils

© 2026 Scavio. Tous droits réservés.

Featured on TAAFT
Conditions d'utilisationPolitique de confidentialité