Le problème
Les tableaux de bord SEO d'entreprise d'Ahrefs, Semrush et Moz coûtent entre 200 et 500 $/mois et vous montrent leur interprétation des données, pas les données brutes elles-mêmes. Vous ne pouvez pas personnaliser les métriques, ni les intégrer à vos analyses internes, ni combiner les données SERP avec vos propres KPI métier. Lorsque l'outil décide de modifier son interface ou de déprécier une métrique, vous la perdez. Les équipes paient pour 100 fonctionnalités et en utilisent 5, mais les 5 dont elles ont besoin sont verrouillées derrière le palier entreprise.
La solution Scavio
Scavio renvoie des données SERP brutes sous forme de JSON structuré pour 0,005 $/crédit. Vous créez exactement le tableau de bord dont vous avez besoin : suivi du classement, surveillance des fonctionnalités SERP, scores de visibilité des concurrents et toutes les métriques personnalisées qui comptent pour votre entreprise. Les données alimentent votre pile existante (Grafana, Looker, Retool, une application Next.js personnalisée) au lieu de vivre dans un silo d'un autre fournisseur. Un plan Projet de 7 000 crédits à 30 $/mois couvre le suivi quotidien de 230 mots-clés, ce qui est plus que ce que la plupart des équipes surveillent activement.
Avant
Avant Scavio, les équipes payaient 300 à 500 $/mois pour des outils SEO d'entreprise et exportaient encore des CSV pour créer les vues personnalisées que leurs parties prenantes voulaient réellement. Le tableau de bord vivait dans un outil mais le reporting dans un autre.
Après
Après Scavio, l'équipe crée un tableau de bord personnalisé dans sa pile BI existante en utilisant des données SERP brutes à 30 $/mois. Chaque métrique correspond exactement aux besoins de l'entreprise, et aucune fonctionnalité n'est verrouillée derrière un palier entreprise.
À qui cela s'adresse
Équipes SEO payant 300 à 500 $/mois pour des outils d'entreprise mais n'utilisant que le suivi du classement et la surveillance des fonctionnalités SERP. Agences ayant besoin de tableaux de bord en marque blanche sans licences d'outils par client.
Avantages clés
- Données SERP brutes à 0,005 $/crédit contre 300 à 500 $/mois pour les outils SEO d'entreprise
- Construisez dans votre pile BI existante au lieu d'un autre silo de fournisseur
- Métriques et vues personnalisées adaptées à vos KPI métier
- Suivi quotidien de 230+ mots-clés avec le plan à 30 $/mois
- Pas de verrouillage de fonctionnalités ni de changements d'interface forcés par les mises à jour du fournisseur
Exemple Python
import requests
import json
from pathlib import Path
from datetime import datetime
API_KEY = "your_scavio_api_key"
DOMAIN = "yourdomain.com"
def track_serp(keyword: str) -> dict:
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": keyword, "num": 20},
timeout=15,
)
res.raise_for_status()
data = res.json()
position = None
for item in data.get("organic", []):
if DOMAIN in item.get("link", ""):
position = item.get("position")
break
return {
"keyword": keyword,
"position": position,
"has_ai_overview": bool(data.get("ai_overview")),
"has_featured_snippet": bool(data.get("featured_snippet")),
"has_local_pack": bool(data.get("local_pack")),
"top_3": [r.get("link", "") for r in data.get("organic", [])[:3]],
"checked_at": datetime.utcnow().isoformat(),
}
def daily_dashboard_refresh(keywords: list[str]) -> dict:
results = [track_serp(kw) for kw in keywords]
ranked = [r for r in results if r["position"]]
avg_position = sum(r["position"] for r in ranked) / max(len(ranked), 1)
return {
"date": datetime.utcnow().strftime("%Y-%m-%d"),
"keywords_tracked": len(keywords),
"keywords_ranking": len(ranked),
"avg_position": round(avg_position, 1),
"credits_used": len(keywords),
"results": results,
}
keywords = ["your keyword 1", "your keyword 2", "your keyword 3"]
report = daily_dashboard_refresh(keywords)
Path(f"seo_dashboard_{report['date']}.json").write_text(json.dumps(report, indent=2))
print(f"Tracked {report['keywords_tracked']} keywords, {report['keywords_ranking']} ranking, avg position {report['avg_position']}")Exemple JavaScript
const API_KEY = "your_scavio_api_key";
const DOMAIN = "yourdomain.com";
async function trackSerp(keyword) {
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": API_KEY, "content-type": "application/json" },
body: JSON.stringify({ platform: "google", query: keyword, num: 20 }),
});
if (!res.ok) throw new Error(`scavio ${res.status}`);
const data = await res.json();
let position = null;
for (const item of data.organic ?? []) {
if (item.link?.includes(DOMAIN)) { position = item.position; break; }
}
return {
keyword,
position,
hasAiOverview: !!data.ai_overview,
hasFeaturedSnippet: !!data.featured_snippet,
top3: (data.organic ?? []).slice(0, 3).map((r) => r.link ?? ""),
checkedAt: new Date().toISOString(),
};
}
async function dailyRefresh(keywords) {
const results = [];
for (const kw of keywords) results.push(await trackSerp(kw));
const ranked = results.filter((r) => r.position);
const avg = ranked.reduce((s, r) => s + r.position, 0) / Math.max(ranked.length, 1);
return { date: new Date().toISOString().slice(0, 10), tracked: keywords.length, ranking: ranked.length, avgPosition: Math.round(avg * 10) / 10, results };
}
const report = await dailyRefresh(["your keyword 1", "your keyword 2"]);
console.log(`Tracked ${report.tracked} keywords, avg position ${report.avgPosition}`);Plateformes utilisées
Recherche web avec graphe de connaissances, PAA et aperçus IA