El problema
Los dashboards SEO empresariales de Ahrefs, Semrush y Moz cuestan $200-500/mes y te muestran su interpretacion de los datos, no los datos sin procesar. No puedes personalizar las metricas, no puedes integrar con tu analitica interna ni combinar datos SERP con tus propios KPIs de negocio. Cuando la herramienta decide cambiar su interfaz o deprecar una metrica, la pierdes. Los equipos pagan por 100 funciones y usan 5, pero las 5 que necesitan estan bloqueadas detras del tier enterprise.
La solucion de Scavio
Scavio devuelve datos SERP sin procesar como JSON estructurado a $0.005/credito. Construyes exactamente el dashboard que necesitas: seguimiento de posiciones, monitoreo de SERP features, scores de visibilidad competitiva y cualquier metrica personalizada que importe a tu negocio. Los datos alimentan tu stack existente (Grafana, Looker, Retool, una app Next.js personalizada) en lugar de vivir en el silo de otro proveedor. Un plan Project de 7,000 creditos a $30/mes cubre el seguimiento diario de 230 keywords, que es mas de lo que la mayoria de los equipos monitorean activamente.
Antes
Antes de Scavio, los equipos pagaban $300-500/mes por herramientas SEO enterprise y aun asi exportaban CSVs para construir las vistas personalizadas que sus stakeholders realmente querian. El dashboard vivia en una herramienta pero los reportes vivian en otra.
Después
Despues de Scavio, el equipo construye un dashboard personalizado en su stack de BI existente usando datos SERP sin procesar a $30/mes. Cada metrica es exactamente lo que el negocio necesita, y ninguna funcion esta bloqueada detras de un tier enterprise.
Para quien es
Equipos SEO que pagan $300-500/mes por herramientas enterprise pero solo usan seguimiento de posiciones y monitoreo de SERP features. Agencias que necesitan dashboards white-label sin licencias de herramientas por cliente.
Beneficios clave
- Datos SERP sin procesar a $0.005/credito vs $300-500/mes por herramientas SEO enterprise
- Construye en tu stack de BI existente en lugar de otro silo de proveedor
- Metricas y vistas personalizadas adaptadas a los KPIs de tu negocio
- Seguimiento diario de 230+ keywords en el plan de $30/mes
- Sin bloqueo de funciones ni cambios forzados de interfaz por actualizaciones del proveedor
Ejemplo en 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']}")Ejemplo en 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}`);Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA