L'accès à l'API Semrush nécessite un plan Business à 499,95 $/mois, et chaque appel API consomme des unités qui expirent mensuellement. Pour les équipes qui n'ont besoin que des données SERP organiques — classements, extraits optimisés, « Les autres ont demandé » — cela représente une dépense excessive. L'API Scavio renvoie les mêmes données SERP structurées à 0,005 $ par requête, sans engagement minimum au-delà des 250 crédits mensuels gratuits. Ce tutoriel montre comment migrer vos appels API Semrush existants vers une alternative légère, avec une comparaison des coûts et une fonction de remplacement direct.
Prérequis
- Python 3.9+ installé
- Bibliothèque requests installée
- Intégration actuelle de l'API Semrush à migrer
- Une clé API Scavio provenant de scavio.dev
Parcours
Étape 1: Auditez votre utilisation actuelle de l'API Semrush
Avant la migration, identifiez les points de terminaison Semrush que vous utilisez réellement. La plupart des équipes n'utilisent que les données SERP organiques, l'aperçu des mots-clés et les analyses de domaine. Cette étape vous aide à savoir ce qui doit être remplacé.
# Common Semrush API endpoints and their replacements:
endpoint_map = {
'domain_organic': 'Replace with SERP query for site:domain.com',
'phrase_organic': 'Replace with direct SERP query',
'keyword_difficulty': 'Not available via SERP API (keep Semrush for this)',
'backlinks_overview': 'Not available via SERP API (keep Semrush for this)',
'url_organic': 'Replace with SERP query for exact URL',
}
for endpoint, action in endpoint_map.items():
print(f'{endpoint}: {action}')Étape 2: Construisez la fonction de remplacement direct
Créez une fonction avec la même interface que votre appel de recherche organique Semrush. Elle accepte un mot-clé et renvoie des résultats structurés dans un format normalisé.
import requests, os
API_KEY = os.environ['SCAVIO_API_KEY']
def serp_search(keyword: str, country: str = 'us', num_results: int = 10) -> list:
"""Drop-in replacement for Semrush phrase_organic endpoint."""
resp = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY, 'Content-Type': 'application/json'},
json={'query': keyword, 'country_code': country})
resp.raise_for_status()
results = resp.json().get('organic_results', [])[:num_results]
return [{
'position': r['position'],
'url': r['link'],
'title': r['title'],
'snippet': r.get('snippet', ''),
} for r in results]Étape 3: Comparez les formats de sortie côte à côte
Vérifiez que la fonction de remplacement renvoie des données équivalentes. Les champs clés — position, URL, titre, extrait — correspondent directement.
results = serp_search('best project management software 2026')
for r in results[:3]:
print(f"#{r['position']} {r['title']}")
print(f" {r['url']}")
print(f" {r['snippet'][:80]}...")
print()Étape 4: Calculez vos économies de coûts
Comparez les coûts mensuels entre l'API Semrush et l'alternative légère. Tenez compte du coût de base du plan Business Semrush plus les frais par unité.
def compare_costs(monthly_queries: int) -> dict:
semrush_base = 499.95 # Business plan minimum
semrush_unit_cost = 0.01 # approximate per API unit
semrush_total = semrush_base + (monthly_queries * semrush_unit_cost)
scavio_cost = monthly_queries * 0.005
savings = semrush_total - scavio_cost
savings_pct = (savings / semrush_total) * 100
return {
'queries': monthly_queries,
'semrush_monthly': f'${semrush_total:,.2f}',
'scavio_monthly': f'${scavio_cost:,.2f}',
'savings': f'${savings:,.2f}',
'savings_pct': f'{savings_pct:.0f}%'
}
for vol in [5000, 20000, 50000]:
c = compare_costs(vol)
print(f"{c['queries']:,} queries: Semrush {c['semrush_monthly']} vs Scavio {c['scavio_monthly']} (save {c['savings']}, {c['savings_pct']})")Étape 5: Migrez votre base de code existante
Remplacez vos appels API Semrush par la nouvelle fonction. Conservez Semrush pour les fonctionnalités qui nécessitent leur base de données propriétaire (difficulté des mots-clés, index de backlinks). Utilisez l'API légère pour toute récupération de données SERP.
# Before (Semrush):
# from semrush_client import SemrushClient
# client = SemrushClient(api_key=SEMRUSH_KEY)
# results = client.phrase_organic(keyword='best crm', database='us')
# After (lightweight API):
results = serp_search('best crm', country='us')
# The rest of your pipeline stays the same:
for r in results:
print(f"#{r['position']} {r['url']}")Exemple Python
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']
def serp_search(keyword: str, country: str = 'us') -> list:
resp = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY, 'Content-Type': 'application/json'},
json={'query': keyword, 'country_code': country})
resp.raise_for_status()
return [{'position': r['position'], 'url': r['link'],
'title': r['title'], 'snippet': r.get('snippet', '')}
for r in resp.json().get('organic_results', [])]
def main():
keywords = ['best crm software', 'crm pricing 2026', 'hubspot alternatives']
for kw in keywords:
results = serp_search(kw)
print(f'{kw}: {len(results)} results')
if results:
print(f' #1: {results[0]["title"]}')
monthly = len(keywords) * 30
print(f'Projected monthly cost: ${monthly * 0.005:.2f} vs $499.95+ Semrush')
if __name__ == '__main__':
main()Exemple JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
async function serpSearch(keyword, country = 'us') {
const resp = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST',
headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ query: keyword, country_code: country })
});
const data = await resp.json();
return (data.organic_results || []).map(r => ({
position: r.position, url: r.link,
title: r.title, snippet: r.snippet || ''
}));
}
async function main() {
const keywords = ['best crm software', 'crm pricing 2026', 'hubspot alternatives'];
for (const kw of keywords) {
const results = await serpSearch(kw);
console.log(`${kw}: ${results.length} results`);
if (results.length) console.log(` #1: ${results[0].title}`);
}
console.log(`Projected: $${(keywords.length * 30 * 0.005).toFixed(2)}/mo vs $499.95+ Semrush`);
}
main().catch(console.error);Sortie attendue
best crm software: 10 results
#1: Best CRM Software for 2026 - Forbes Advisor
crm pricing 2026: 10 results
#1: CRM Pricing Comparison Guide (Updated May 2026)
hubspot alternatives: 10 results
#1: 12 HubSpot Alternatives Worth Considering
Projected monthly cost: $0.45 vs $499.95+ Semrush
5,000 queries: Semrush $549.95 vs Scavio $25.00 (save $524.95, 95%)
20,000 queries: Semrush $699.95 vs Scavio $100.00 (save $599.95, 86%)
50,000 queries: Semrush $999.95 vs Scavio $250.00 (save $749.95, 75%)