← Todos los artículos

Extrae Fichas de Negocios de Google Maps en JSON con el Plugin Google Local

Google Maps es una de las fuentes de datos de negocios locales mas ricas de la web: nombres, valoraciones, numero de resenas, categorias, direcciones, horarios y niveles de precio de casi cualquier negocio en cualquier ciudad. El problema es sacar esos datos en un formato utilizable. La API oficial de Places esta medida, tiene limites de cuota y no expone todo lo que ves en el mapa. Y hacer scraping del mapa por tu cuenta significa pelear con una aplicacion JavaScript pesada, rotar IPs y escribir selectores fragiles que se rompen con el siguiente cambio de diseno.

El nuevo plugin Google Local elimina toda esa capa. Envias una palabra clave de busqueda y recibes de vuelta fichas de negocios estructuradas en JSON. Este articulo explica que devuelve el plugin, como llamarlo y como construir algo util con el.

Que Hace el Plugin Google Local

El plugin Google Local toma una frase de busqueda sencilla - la misma que escribirias en Google Maps, como coffee shops in chicago o dentists in berlin - y devuelve los resultados de negocios locales como un array JSON. No necesitas una clave de la API de Google Places y no analizas ningun HTML.

Para cada negocio en los resultados obtienes campos como:

  • position - posicion en los resultados locales
  • name - nombre del negocio
  • rating - valoracion media en estrellas
  • reviews - numero de resenas
  • price - nivel de precio (cuando Google muestra uno)
  • category - tipo de negocio, por ejemplo “Coffee shop”
  • address - direccion
  • hours - texto del horario de apertura
  • review_snippet - una cita breve de una resena destacada

Una sola llamada devuelve hasta unos 20 negocios por palabra clave, lo que coincide con lo que Google muestra en un paquete local para una busqueda dada.

La Peticion

El endpoint es una unica llamada POST. El unico parametro obligatorio es keyword. Algunos parametros opcionales te dejan controlar la ubicacion y el idioma:

  • keyword (obligatorio) - la frase de busqueda, por ejemplo coffee shops in chicago
  • proxy_country - el pais de la IP de salida como codigo ISO-2 (US, GB, DE)
  • gl - el pais de busqueda de Google, ISO-2 en minusculas (us, de, fr)
  • hl - el idioma de la interfaz de Google, por defecto en

Esta es la llamada mas sencilla posible con curl:

curl -X POST "https://api.scrapeunblocker.com/maps/google-local?keyword=coffee%20shops%20in%20chicago&proxy_country=US&gl=us" \
  -H "x-scrapeunblocker-key: YOUR_API_KEY"

Los parametros proxy_country y gl importan mas de lo que parece. Los resultados locales estan personalizados por ubicacion, asi que una busqueda de “plumbers near me” ejecutada desde una IP de EE. UU. con gl=us devuelve negocios muy distintos que la misma busqueda ejecutada desde una IP alemana. Si estas mapeando una ciudad o pais concreto, define ambos de forma explicita en lugar de confiar en los valores por defecto.

La Respuesta

La respuesta es un unico objeto JSON. El nivel superior te dice que se busco y cuantas fichas llegaron, y el array results contiene los negocios:

{
  "keyword": "coffee shops in chicago",
  "proxyCountry": "US",
  "resultsCollected": 18,
  "results": [
    {
      "position": 1,
      "name": "Example Coffee Roasters",
      "rating": 4.7,
      "reviews": 1284,
      "price": "$$",
      "category": "Coffee shop",
      "address": "123 W Example St, Chicago, IL",
      "hours": "Open - Closes 8 PM",
      "review_snippet": "Great espresso and friendly staff."
    }
  ]
}

Como la estructura es estable, puedes mapearla directamente a una fila de base de datos, una hoja de calculo o un dataframe sin ninguna limpieza de HTML.

Llamarlo Desde Python

No necesitas el SDK para usar el plugin: cualquier cliente HTTP sirve. Aqui tienes un ejemplo pequeno con requests que ejecuta una busqueda e imprime una tabla limpia:

import requests

API_KEY = "YOUR_API_KEY"
URL = "https://api.scrapeunblocker.com/maps/google-local"

params = {
    "keyword": "coffee shops in chicago",
    "proxy_country": "US",
    "gl": "us",
}

resp = requests.post(URL, params=params, headers={"x-scrapeunblocker-key": API_KEY})
resp.raise_for_status()
data = resp.json()

for biz in data["results"]:
    print(f"{biz['position']:>2}. {biz['name']:<30} "
          f"{biz.get('rating', '-')}* ({biz.get('reviews', 0)} reviews) "
          f"- {biz.get('category', '')}")

Si prefieres las herramientas oficiales, ScrapeUnblocker ofrece SDKs para Python, Node.js, Ruby y PHP, y el plugin tambien esta disponible a traves del panel y la referencia de la API. El paquete de Python se instala con pip install scrapeunblocker y lee tu clave desde la variable de entorno SCRAPEUNBLOCKER_KEY, asi que puedes ahorrarte pasar la cabecera a mano.

Recopilar una Categoria Entera en Varias Ciudades

El plugin es mas util cuando lo recorres en bucle. Digamos que quieres un conjunto de datos de cafeterias en varias ciudades de EE. UU. Ejecutas una busqueda por ciudad y recopilas las filas:

import csv
import requests

API_KEY = "YOUR_API_KEY"
URL = "https://api.scrapeunblocker.com/maps/google-local"

cities = ["chicago", "seattle", "austin", "denver"]
rows = []

for city in cities:
    params = {"keyword": f"coffee shops in {city}", "proxy_country": "US", "gl": "us"}
    r = requests.post(URL, params=params, headers={"x-scrapeunblocker-key": API_KEY})
    r.raise_for_status()
    for biz in r.json()["results"]:
        rows.append({"city": city, **biz})

with open("coffee_shops.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.DictWriter(f, fieldnames=["city", "position", "name", "rating",
                                           "reviews", "price", "category", "address"])
    writer.writeheader()
    for row in rows:
        writer.writerow({k: row.get(k, "") for k in writer.fieldnames})

Eso te da un unico CSV con negocios de todas las ciudades, listo para analizar. El mismo patron funciona para cualquier categoria - restaurantes, gimnasios, bufetes, ferreterias - y cualquier conjunto de ubicaciones.

Que Puedes Construir Con Ello

Los datos de negocios locales tienen muchos usos practicos:

  • Generacion de leads. Extrae todos los negocios de una categoria y ciudad, y luego enriquece con una busqueda de web o correo. Los campos category, address y name suelen bastar para sembrar una lista de contactos.
  • Monitorizacion de competencia y mercado. Sigue las valoraciones y el numero de resenas de un conjunto de negocios a lo largo del tiempo para ver quien gana traccion en un mercado.
  • Investigacion de SEO local. Mira quien aparece en el paquete local para una palabra clave en una ciudad dada y como se comparan sus valoraciones con las tuyas.
  • Mapeo de mercado. Cuenta cuantos negocios de un tipo existen en distintas regiones para detectar zonas poco atendidas.

Como cada resultado incluye rating y reviews, puedes ordenar un mercado por popularidad o filtrar negocios por debajo de un umbral de resenas en una sola linea de codigo.

Consejos Practicos

Algunas cosas que conviene tener en cuenta:

  • Se especifico con las palabras clave. “Coffee” devuelve ruido; “specialty coffee shops in chicago” devuelve una lista compacta y relevante. La palabra clave es la consulta completa, asi que tratala como tratarias una busqueda real en Google Maps.
  • Define la ubicacion de forma deliberada. Usa proxy_country y gl juntos cuando te importe la region de los resultados. Dejarlos en los valores por defecto esta bien para pruebas rapidas, pero no para conjuntos de datos reproducibles.
  • Gestiona los campos ausentes. No todas las fichas tienen valor de price o hours, asi que usa .get() con un valor por defecto en lugar de indexar directamente.
  • Respeta los datos. Los datos de fichas de negocios son publicos, pero como los almacenas y usas sigue sujeto a normas de privacidad y de plataforma. Manten casos de uso legitimos - investigacion de mercado, generacion de leads, analitica - y cumple la ley aplicable.

Preguntas Frecuentes

Necesito una clave de la API de Google Places? No. El plugin devuelve los datos de las fichas de Google Maps directamente como JSON, sin clave de API de Google y sin cuota de Google por peticion que gestionar.

Cuantos resultados devuelve una llamada? Hasta unos 20 negocios por palabra clave, lo que coincide con el tamano de un conjunto de resultados locales tipico en Google.

Puedo obtener resultados para un pais o idioma concreto? Si. Usa proxy_country para la IP de salida, gl para el pais de busqueda de Google y hl para el idioma de la interfaz. Definelos de forma explicita para obtener resultados consistentes y precisos por ubicacion.

Y si necesito analizar una pagina que Google Local no cubre? Para paginas arbitrarias, usa el endpoint de scraping estandar para obtener y analizar el contenido, y reserva el plugin Google Local para busquedas de negocios tipo mapa.

Para Terminar

El plugin Google Local convierte un trabajo de scraping engorroso - un mapa cargado de JavaScript, resultados personalizados y HTML cambiante - en una sola llamada a la API que devuelve JSON limpio. Envias una palabra clave, opcionalmente fijas la ubicacion y recibes fichas de negocios estructuradas que puedes volcar directamente en una base de datos o una hoja de calculo.

Si quieres probarlo, el plugin esta activo en el panel de ScrapeUnblocker y documentado junto a los demas plugins en la documentacion para desarrolladores. Apuntalo a una categoria y una ciudad, y mira como se ve el paquete local en forma de datos.

Prueba ScrapeUnblocker gratis

Tasa de éxito del 95%+ · desde 0,55 € por cada 1000 llamadas · 500 solicitudes gratis al registrarte.

Pruébalo gratis → Ver precios