El problema
El raspado de Google Maps es frágil. Google actualiza con frecuencia la estructura de la página, bloquea los navegadores sin cabeza y limita las solicitudes agresivas. Mantener un raspador de Maps requiere un mantenimiento constante y una inversión en proxy.
La solucion de Scavio
La API de búsqueda de Scavio devuelve los resultados del paquete local de Google como JSON estructurado cuando incluye una ubicación en la consulta. El nombre de la empresa, la dirección, el teléfono, la calificación y el recuento de reseñas regresan sin ninguna automatización del navegador.
Antes
El script de Selenium carga Google Maps para 'fontaneros en Austin', se desplaza para cargar resultados, extrae nombres y números de teléfono del DOM. Se rompe cada 3-4 semanas. Requiere un apoderado residencial ($30/mes adicional). Devuelve datos inconsistentes.
Después
POST a Scavio con 'fontaneros en Austin' devuelve una matriz local_results con datos comerciales estructurados. Sin navegador, sin servidores proxy, sin análisis DOM. Se ejecuta en menos de 2 segundos. Exportar a CSV en 10 líneas de Python.
Para quien es
Equipos de ventas, agencias de generación de leads y consultores de SEO locales que necesitan datos comerciales de Google Maps sin necesidad de desperdiciar la infraestructura.
Beneficios clave
- Sin automatización del navegador ni costos de proxy
- JSON estructurado: nombre, dirección, teléfono, calificación, reseñas, categoría
- Escalable: recorre ciudades y servicios sin bloqueos de IP
- 1 crédito por búsqueda ($0.005)
Ejemplo en Python
import requests
import csv
def get_local_leads(service: str, location: str, api_key: str) -> list:
r = requests.post(
"https://api.scavio.dev/api/v1/search",
json={"query": f"{service} in {location}", "num_results": 10},
headers={"x-api-key": api_key}, timeout=20
)
r.raise_for_status()
return [
{"name": b.get("title"), "phone": b.get("phone"),
"address": b.get("address"), "rating": b.get("rating"),
"reviews": b.get("reviews"), "website": b.get("website")}
for b in r.json().get("local_results", [])
]
leads = get_local_leads("plumbers", "Austin TX", "your-scavio-api-key")
for lead in leads:
print(f"{lead['name']} | {lead['phone']} | {lead['rating']}")Ejemplo en JavaScript
async function getLocalLeads(service, location, apiKey) {
const res = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'x-api-key': apiKey },
body: JSON.stringify({ query: `${service} in ${location}`, num_results: 10 })
});
const data = await res.json();
return (data.local_results ?? []).map(b => ({ name: b.title, phone: b.phone, address: b.address, rating: b.rating }));
}Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA