El problema
Necesitas evaluar mil dominios para una campana de link building, un analisis de competencia o un pipeline de calificacion de leads. El enfoque estandar es suscribirse a Ahrefs, Moz o Semrush a $100 o mas por mes por sus funciones de analisis masivo. Pero solo necesitas estos datos una vez al mes, o para un proyecto puntual. La suscripcion queda inactiva entre usos, y cancelar significa perder datos historicos. Para desarrolladores independientes y equipos pequenos, las cuentas nunca cuadran.
La solucion de Scavio
Scavio te permite buscar en Google cada dominio y extraer senales de ranking, paginas principales y presencia en SERP en masa a $0.005 por busqueda. Verificar 1000 dominios cuesta $5, no $100 por mes. Obtienes datos reales de visibilidad en SERP: que dominios rankean para terminos competitivos, cuantas paginas aparecen en los primeros resultados, si tienen featured snippets o menciones en AI Overview. Esta es presencia real en busqueda, no una puntuacion propietaria que puede o no correlacionar con algo.
Antes
Antes de Scavio, verificar senales de dominio a escala significaba una suscripcion mensual de tres cifras a una suite SEO usada tres dias al mes, o revisar manualmente un punado de dominios.
Después
Despues de Scavio, una ejecucion por lotes de $5 produce datos de presencia en SERP para 1000 dominios en menos de una hora. Sin suscripcion, sin contrato, sin meses inactivos pagando por puestos sin usar.
Para quien es
Desarrolladores independientes, consultores SEO freelance y equipos pequenos de agencia que necesitan datos de SERP a nivel de dominio sin comprometerse con una suscripcion de suite SEO de $100/mes que solo usaran unos pocos dias al mes.
Beneficios clave
- 1000 verificaciones de dominio por $5 en lugar de una suscripcion de $100/mes
- Datos reales de presencia en SERP, no puntuaciones propietarias
- Sin contrato ni compromiso mensual requerido
- Los resultados incluyen menciones en AI Overview y featured snippets
- API amigable para lotes con tiempos de respuesta consistentes
Ejemplo en Python
import requests
import json
import time
from pathlib import Path
API_KEY = "your_scavio_api_key"
def check_domain_presence(domain: str) -> dict:
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": f"site:{domain}", "num": 20},
timeout=15,
)
res.raise_for_status()
data = res.json()
organic = data.get("organic", [])
return {
"domain": domain,
"indexed_pages_in_top_20": len(organic),
"has_featured_snippet": bool(data.get("featured_snippet")),
"in_ai_overview": bool(data.get("ai_overview")),
"top_page": organic[0]["link"] if organic else None,
}
def bulk_check(domains: list[str]) -> list[dict]:
results = []
for i, domain in enumerate(domains):
results.append(check_domain_presence(domain))
if i % 50 == 49:
time.sleep(1) # gentle pacing
return results
domains = Path("domains.txt").read_text().strip().split("\n")
report = bulk_check(domains[:1000])
Path("domain_report.json").write_text(json.dumps(report, indent=2))
print(f"Checked {len(report)} domains")Ejemplo en JavaScript
const API_KEY = "your_scavio_api_key";
async function checkDomainPresence(domain) {
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: `site:${domain}`, num: 20 }),
});
if (!res.ok) throw new Error(`scavio ${res.status}`);
const data = await res.json();
const organic = data.organic ?? [];
return {
domain,
indexedPagesInTop20: organic.length,
hasFeaturedSnippet: !!data.featured_snippet,
inAiOverview: !!data.ai_overview,
topPage: organic[0]?.link ?? null,
};
}
async function bulkCheck(domains) {
const results = [];
for (let i = 0; i < domains.length; i++) {
results.push(await checkDomainPresence(domains[i]));
if (i % 50 === 49) await new Promise((r) => setTimeout(r, 1000));
}
return results;
}
const fs = await import("fs/promises");
const domains = (await fs.readFile("domains.txt", "utf8")).trim().split("\n");
const report = await bulkCheck(domains.slice(0, 1000));
await fs.writeFile("domain_report.json", JSON.stringify(report, null, 2));
console.log(`Checked ${report.length} domains`);Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA