Tony Wang5 min de lecturaCómo hacer scraping de Google Maps en 2026: guía de API y Python
Tres formas de scrapear Google Maps en 2026 — Python DIY, sin código o una API estructurada — qué devuelve cada una y lo legal básico.
La forma más rápida de hacer scraping de Google Maps en 2026 es llamar a una API estructurada de Maps que devuelve JSON normalizado — nombre del negocio, dirección, teléfono, sitio web, calificación, reseñas y coordenadas — en lugar de manejar tú mismo un navegador headless. Aun así puedes construir un scraper DIY en Python, pero el scroll infinito de Maps, los cambios frecuentes de layout y las defensas anti-bot lo hacen caro de mantener. Esta guía cubre los tres enfoques, qué devuelve cada uno, dónde falla cada uno y lo legal básico.
¿Es legal hacer scraping de Google Maps?
Hacer scraping de datos públicos de Google Maps (nombres de negocios, direcciones, calificaciones, reseñas) entra en la misma categoría general que otro scraping de la web pública. En EE. UU., el litigio hiQ Labs v. LinkedIn determinó que acceder a datos disponibles públicamente no viola la Computer Fraud and Abuse Act. Aun así, los Términos de Servicio de Google prohíben el acceso automatizado, así que igual puedes enfrentar bloqueos de cuenta o cartas de cese y desista, y los datos personales activan leyes de privacidad como el RGPD y la CCPA. Reglas generales:
- Recolecta solo datos públicos de negocios; evita datos personales y todo lo que esté detrás de un login.
- Respeta los límites de tasa y no degrades el servicio.
- Revisa los términos de Google y tus propios requisitos de cumplimiento.
Esto no es asesoría legal — si tienes dudas, habla con un abogado.
Opción 1: DIY en Python (y por qué falla)
Un scraper artesanal suele significar un navegador headless (Playwright o Selenium), porque Maps renderiza los resultados con JavaScript y carga más mediante scroll infinito:
import csv
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
page = p.chromium.launch().new_page()
page.goto("https://www.google.com/maps/search/coffee+shops+in+Austin")
# scroll the results panel until no new cards load (Maps caps ~120 per search)
panel = page.locator('div[role="feed"]')
for _ in range(10):
panel.evaluate("el => el.scrollBy(0, el.scrollHeight)")
page.wait_for_timeout(1500)
rows = [
{"name": a.get_attribute("aria-label"), "url": a.get_attribute("href")}
for a in page.locator('div[role="feed"] a[href*="/maps/place/"]').all()
]
with open("places.csv", "w", newline="") as f:
w = csv.DictWriter(f, fieldnames=["name", "url"])
w.writeheader(); w.writerows(rows)
# ...then add proxies, CAPTCHA handling, geographic tiling, and a detail request per place.
Funciona en una demo y luego te pelea en producción:
- Scroll infinito — tienes que programar el scroll del panel de resultados hasta que no carguen tarjetas nuevas.
- El límite de ~120 resultados — Maps devuelve como máximo ~100–200 lugares por área de búsqueda, así que cubrir más a fondo significa dividir el área en teselas geográficas y deduplicar por place ID.
- Cambios de layout — Google cambia el DOM y tus selectores se rompen en silencio.
- Anti-bot — los CAPTCHAs y bloqueos de IP te empujan a la rotación de proxies y al fingerprinting.
- Escala — un navegador por consulta es lento, así que terminas operando y monitoreando un clúster de navegadores.
La mayor parte del costo no es el primer scrape — es mantenerlo con vida.
Opción 2: Herramientas de scraping listas para usar
Los extractores sin código y los actors de marketplace manejan el navegador por ti y exportan CSV o JSON. Son geniales para listas puntuales, pero menos prácticos cuando necesitas datos de Maps dentro de un producto o pipeline, con un horario y campos predecibles.
Opción 3: Una API estructurada de Google Maps
Para flujos repetibles e integrados en el producto, una API de scraping de Google Maps te da un endpoint documentado que devuelve JSON normalizado — sin navegador, sin selectores, sin un pool de proxies que mantener. Busca por consulta y ubicación:
curl -X POST https://api.crawlora.net/api/v1/google/map/search \
-H "x-api-key: $CRAWLORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "coffee shops in Austin, TX", "limit": 20}'
La misma llamada en Python:
import requests
resp = requests.post(
"https://api.crawlora.net/api/v1/google/map/search",
headers={"x-api-key": "YOUR_API_KEY"},
json={"query": "coffee shops in Austin, TX", "limit": 20},
)
for place in resp.json()["data"]:
print(place["name"], place.get("rating"), place.get("address"))
Una respuesta es JSON normalizado que puedes guardar directamente (los campos mostrados son ilustrativos — consulta los docs para el esquema actual):
{
"code": 200,
"msg": "OK",
"data": [
{
"name": "Example Coffee",
"place_id": "ChIJ...",
"category": ["coffee_shop"],
"address": "123 Example St, Austin, TX",
"phone": "+1 512-555-0100",
"website": "https://example.com",
"rating": 4.6,
"reviews": 318,
"latitude": 30.2672,
"longitude": -97.7431
}
]
}
¿Necesitas el perfil completo de un lugar específico? Enriquécelo con el endpoint de detalles del lugar:
curl https://api.crawlora.net/api/v1/google/map/place/CHIJ_PLACE_ID \
-H "x-api-key: $CRAWLORA_API_KEY"
Qué puedes recolectar
Donde el perfil público los expone, los campos se agrupan en unas pocas categorías:
- Identidad del negocio — nombre, categoría, place ID y la URL de Maps.
- Contacto — dirección, teléfono, sitio web y horario de apertura.
- Ubicación — latitud y longitud para mapeo y búsqueda por radio.
- Prueba social — calificación promedio y cantidad de reseñas, más las reseñas mismas. La API oficial de Places limita las reseñas a unas cinco por lugar salvo que seas dueño del listado, así que el análisis de sentimiento en muchos negocios necesita una extracción de reseñas dedicada.
Vuelve a ejecutarlo en un horario y guarda una fila por lugar por ejecución para rastrear calificaciones y presencia a lo largo del tiempo.
Limitaciones y desafíos comunes
Algunas realidades de Google Maps para las que planificar:
- El límite de ~120 resultados. Maps limita los resultados por área de búsqueda, así que cubrir a fondo una ciudad o categoría significa dividir el área en búsquedas más pequeñas y deduplicar por place ID.
- Personalización. Los resultados varían según ubicación e historial; los parámetros de locale reducen esto pero no lo eliminan.
- Las reseñas están limitadas en la API oficial. Place Details devuelve ~5 reseñas por lugar; el minado completo de reseñas necesita un scraper dedicado, y los nombres/textos de los reseñadores son potencialmente datos personales.
- Anti-bot para el DIY. El scraping directo enfrenta scroll infinito, CAPTCHAs y fingerprinting; una API estructurada absorbe el scroll, el enrutamiento de proxies y los reintentos detrás del endpoint.
Dónde se usa esto
Los datos estructurados de Maps impulsan algunos flujos de trabajo comunes:
- Generación de leads — construye listas de negocios locales y enriquece un CRM. Consulta los casos de uso generación de leads de Google Maps y API de generación de leads.
- Inteligencia de mercado local — mapea densidad de competidores, calificaciones y presencia web por zona.
- Investigación de SEO local — rastrea categorías y calificaciones entre ubicaciones.
Fuentes
Empieza a recolectar
Pruébalo primero, gratis: ejecuta cualquier URL pública en el Free Web Scraper, o revisa si un sitio bloquea bots con el Anti-Bot Checker — sin registro.
Prueba el endpoint de búsqueda en el Playground, revisa el esquema de la respuesta en los docs de la API y consulta los costos en créditos en la página de precios. Combina listados de negocios locales con datos de empresas de LinkedIn para enriquecer leads B2B, o con Google Trends para dimensionar la demanda de una categoría por región. Ejecuta los mismos términos de marca y categoría con cómo hacer scraping de Brave Search para ver quién posiciona en los resultados web, no solo en el mapa. Una vez que tengas los listados, cómo hacer scraping de Google Reviews recoge el flujo de reseñas de cada uno. Para un tipo distinto de datos de ubicación — rutas y clubes públicos en lugar de listados de negocios — mira cómo hacer scraping de Strava. Para elegir una herramienta, consulta las mejores APIs de scraping de Google Maps en 2026; para el panorama general, cómo elegir una API de web scraping; y para las reglas, ¿es legal el web scraping en 2026?.
Parte de nuestra serie de guías how-to-scrape — cada plataforma que cubrimos, en un solo índice.
Preguntas frecuentes
¿Puedo hacer scraping de Google Maps sin que me bloqueen?
Con una API estructurada, el scroll, el enrutamiento de proxies y la ejecución del navegador se manejan detrás del endpoint, así que no te ocupas tú mismo de los bloqueos. Un scraper DIY enfrenta scroll infinito, CAPTCHAs y fingerprinting, por lo que necesita un navegador headless, proxies y un ritmo cuidadoso.
¿Puedo hacer scraping de reseñas de Google Maps?
Sí, donde son públicas. La API oficial de Places limita las reseñas a unas cinco por lugar salvo que seas dueño del listado, así que el análisis de sentimiento en muchos negocios necesita una extracción de reseñas dedicada. Trata los nombres y textos de los reseñadores como potenciales datos personales y recolecta solo lo que necesitas.
¿Por qué solo obtengo unos 120 resultados por búsqueda?
Google Maps ata los resultados a un área de búsqueda y los limita a aproximadamente 100–200 por consulta. Para ir más a fondo, divide el área en teselas geográficas más pequeñas o en varias consultas y deduplica por place ID; una buena API de Maps se encarga de esto para que no pierdas cobertura.
¿Qué datos puedo obtener de Google Maps?
Campos públicos de negocios: nombre, categoría, dirección, teléfono, sitio web, horario de apertura, calificación, cantidad de reseñas, place ID y coordenadas donde estén disponibles, más las reseñas mediante una extracción dedicada.
¿Con qué frecuencia puedo actualizar los datos?
Con la frecuencia que lo permitan tu plan y los límites de un uso responsable. La mayoría de los equipos ejecutan snapshots programados y comparan cada ejecución con la anterior.
¿Es esta la API oficial de Google Places?
No. Esto extrae datos públicos de Google Maps y es independiente de la API oficial de Places de Google, que tiene alcance limitado, cuotas, restringe las reseñas a unas cinco por lugar y resulta cara a gran escala.