Todos los scrapers

Mapas

Google Maps Reviews Scraper

google.com/maps

100% Tasa de éxito
1.8s Respuesta media
Google Protección
1106 llamadas Medido sobre

Las reseñas de Google Maps se sirven mediante un endpoint de plugin dedicado en lugar de la obtención de página genérica. Identifica un lugar con un feature id (0xHEX:0xHEX), un place_id (ChIJ...) o una URL de lugar de Maps, elige uno de los órdenes propios de Google (más relevantes, más recientes, mejor o peor valoración primero) y las reseñas llegan ya parseadas: la valoración en estrellas, la fecha y hora exactas en ISO 8601 (la página de Google solo dice 'hace 2 años'), el texto original con su idioma, la traducción de Google al idioma que fijes con hl, el autor con su número de reseñas y fotos, las fotos de la reseña, las respuestas guiadas como el tipo de viaje o la nota de habitaciones, servicio y ubicación, y la respuesta del propietario. Junto a las reseñas llega un resumen breve del lugar (nombre, dirección, valoración, número de reseñas, categorías). Las reseñas vienen en páginas de 20: max_reviews reúne hasta 200 en una llamada y nextPageToken continúa donde se detuvo una llamada. El orden de peor valoración primero, que es lo que necesita la monitorización de quejas y de bajas de clientes, funciona sin una cuenta de Google con sesión iniciada, y las reseñas se leen del propio feed de Google por HTTP simple, así que 20 reseñas tardan unos 1,8 segundos y no interviene ningún proyecto de Google Cloud, cuenta de facturación ni clave de la Places API.

Qué puedes extraer

  • Valoración en estrellas, fecha y hora exactas (ISO 8601 UTC y timestamp Unix) y la fecha relativa de Google
  • Texto original de la reseña con su idioma, más la traducción de Google al idioma fijado con hl
  • Nombre del autor, enlace al perfil, avatar y el número de reseñas y fotos del autor
  • Fotos de la reseña y las respuestas guiadas (tipo de viaje, grupo de viaje, notas de habitaciones, servicio, ubicación, tipo de comida)
  • La respuesta del propietario con su fecha relativa, el id de la reseña y un enlace a la reseña en Google Maps
  • Ordenadas como lo hace Google: más relevantes, más recientes, mejor o peor valoración primero
  • Resumen del lugar: nombre, dirección, valoración, número de reseñas, categorías, feature id, cid y enlace de Maps
  • Hasta 200 reseñas por llamada en páginas de 20, con hasMore y nextPageToken para continuar

Endpoints dedicados

/maps/reviews

Reseñas de Google Maps de un lugar

Reseñas de un lugar indicado como feature_id (0xHEX:0xHEX, lo más rápido), place_id (ChIJ...) o una url de lugar de Maps, en los órdenes de Google con sort = relevant, newest, highest o lowest (también se aceptan los valores de SerpApi qualityScore, newestFirst, ratingHigh y ratingLow). Cada reseña tiene reviewId, rating, date (ISO 8601 UTC), timestamp, relativeDate, text, language, translatedText (al idioma de hl), author (name, profileUrl, avatar, reviewCount, photoCount), photos, details, ownerResponse y reviewUrl. La respuesta incluye un resumen del lugar (place), reviewsReturned, pagesFetched, hasMore y nextPageToken. max_reviews de 1 a 200 (por defecto 20), obtenidas en páginas de 20, cada página facturada como una petición; hl fija el idioma de la traducción y gl el país de Google.

Cómo rastrearlo

curl -X POST \
  -H "X-ScrapeUnblocker-Key: $SU_API_KEY" \
  "https://api.scrapeunblocker.com/maps/reviews?feature_id=0xd51baa0e706dffd%3A0x4d6c7dbbf0f408e7&sort=lowest"
import requests

resp = requests.post(
    "https://api.scrapeunblocker.com/maps/reviews",
    headers={"X-ScrapeUnblocker-Key": SU_API_KEY},
    params={"feature_id": "0xd51baa0e706dffd:0x4d6c7dbbf0f408e7", "sort": "lowest"},
)
print(resp.text)
import { ScrapeUnblockerClient } from 'scrapeunblocker';

const su = new ScrapeUnblockerClient({ apiKey: process.env.SU_API_KEY });

const reviews = await su.mapsReviews({
  featureId: '0xd51baa0e706dffd:0x4d6c7dbbf0f408e7',
  sort: 'lowest',
});
console.log(reviews);

Las peticiones son POST y sus parámetros van en la query string. El renderizado en navegador siempre ocurre: no hay ningún flag que activar.

Ejemplo de respuesta

{
  "place": {
    "name": "Hotel ILUNION San Sebastián",
    "address": "Hotel ILUNION San Sebastián, De Zumalakarregi Hiribidea, 20, 20008 Donostia / San Sebastián, Gipuzkoa, Spain",
    "rating": 4.2,
    "reviewCount": 1638,
    "categories": ["Hotel", "Event venue", "Restaurant"],
    "featureId": "0xd51baa0e706dffd:0x4d6c7dbbf0f408e7",
    "cid": "5578972284560083175",
    "googleMapsUrl": "https://www.google.com/maps?cid=5578972284560083175"
  },
  "featureId": "0xd51baa0e706dffd:0x4d6c7dbbf0f408e7",
  "sort": "lowest",
  "reviewsReturned": 20,
  "pagesFetched": 1,
  "hasMore": true,
  "nextPageToken": "CjEIARIpCgoAP7-pR_E-____EhAiwW2qhDEwKtcbc_IAAAAAGgn93cgCfaoaRJEYACIA",
  "reviews": [
    {
      "reviewId": "ChdDSUhNMG9nS0VJQ0FnSURIMjZuTzhRRRAB",
      "rating": 1,
      "date": "2024-09-20T07:24:32Z",
      "timestamp": 1726817072,
      "relativeDate": "2 years ago",
      "text": "La ubicación del hotel es muy buena, ya que estas a un paso de la playa...",
      "language": "es",
      "translatedText": "The hotel's location is excellent, as it's just steps from the beach...",
      "author": {
        "name": "Reviewer name",
        "profileUrl": "https://www.google.com/maps/contrib/100000000000000000000/reviews",
        "avatar": "https://lh3.googleusercontent.com/a-/...",
        "reviewCount": 36,
        "photoCount": 15
      },
      "details": [
        { "label": "Trip type", "value": "Vacation" },
        { "label": "Travel group", "value": "Couple" },
        { "label": "Rooms", "rating": 1 },
        { "label": "Service", "rating": 2 },
        { "label": "Location", "rating": 5 }
      ],
      "ownerResponse": {
        "text": "Agradecemos que nos haga llegar sus impresiones y sentimos que su estancia no haya sido lo satisfactoria que esperaba...",
        "relativeDate": "2 years ago"
      },
      "reviewUrl": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChdDSUhNMG9nS0VJQ0FnSURIMjZuTzhRRRAB!2m1!1s0x0:0x4d6c7dbbf0f408e7..."
    }
  ]
}

Leer la documentación

Preguntas frecuentes

¿Es legal hacer scraping de reseñas de Google Maps?

Recopilar reseñas y valoraciones públicas de Google Maps es lícito en muchas jurisdicciones, pero las normas dependen de tu país, de los datos que recopiles y de cómo los uses. Los nombres de los autores, los enlaces a sus perfiles y el texto de las reseñas pueden ser datos personales, así que sigue las normas de privacidad que te apliquen. ScrapeUnblocker devuelve las reseñas públicas; qué recopilas y cómo lo usas es responsabilidad tuya.

¿Cómo hago scraping de reseñas de Google Maps sin que me bloqueen?

Google protege Maps con sus propios sistemas anti-bot, y la app web de Maps ya no deja a un visitante sin sesión ordenar ni paginar las reseñas. El plugin /maps/reviews lee el feed de reseñas que Google sirve a los visitantes sin sesión en el visor de lugares de la Búsqueda, que sigue aceptando los órdenes de Google y un token de página, por HTTP simple a través de exits ISP rotativos, así que no interviene ningún navegador ni cuenta de Google. En el benchmark de ScrapeUnblocker devolvió reseñas en el 100 % de 1.106 llamadas, cada una a un lugar distinto (hoteles, restaurantes, pubs, tiendas, hospitales, empresas, colegios y monumentos en más de 70 países), unos 1,8 s por llamada.

¿Puedo obtener primero las reseñas de Google peor valoradas o las más recientes?

Sí. Fija sort en lowest, highest, newest o relevant (el orden por defecto de Google). Peor valoración primero es el orden que necesita la monitorización de quejas y de bajas de clientes; en el propio Google Maps, ordenar reseñas pide iniciar sesión, mientras que aquí no interviene ninguna cuenta de Google. También se aceptan los valores de SerpApi qualityScore, newestFirst, ratingHigh y ratingLow, así que cambiar una integración existente solo implica cambiar el endpoint.

¿Obtengo fechas exactas de las reseñas?

Sí. La página de Google solo muestra una fecha relativa como 'hace 2 años'. Aquí cada reseña lleva date, la fecha y hora exactas en ISO 8601 UTC, y timestamp, el mismo momento en segundos Unix, junto al relativeDate de Google. Así puedes filtrar reseñas por periodo o avisar de las nuevas; la respuesta del propietario llega con su fecha relativa.

¿Cuántas reseñas de Google Maps puedo obtener por llamada?

max_reviews admite de 1 a 200 y por defecto es 20. Google sirve las reseñas en páginas de 20, así que el plugin obtiene una tras otra las páginas que necesita. Cuando hay más, hasMore es true y nextPageToken continúa desde donde se detuvo la llamada con el mismo lugar y orden; si max_reviews no es múltiplo de 20, la página siguiente puede repetir algunas reseñas, así que deduplica por reviewId. Un lugar sin reseñas responde 200 con una lista vacía, y un feature id desconocido responde 404.

¿Se traducen las reseñas en otros idiomas?

Llegan las dos versiones. text contiene la reseña tal como se escribió, con su código de idioma, y translatedText contiene la traducción de Google al idioma que fijes con hl (en por defecto) siempre que la reseña esté escrita en otro idioma. hl también fija el idioma de las etiquetas de Google, como las respuestas guiadas.

¿Necesito una clave de API o una cuenta de Google Maps?

No. La Places API devuelve como máximo 5 reseñas por lugar, sin orden de peor valoración primero y sin paginación. El plugin /maps/reviews solo necesita tu clave de ScrapeUnblocker: pasa un feature id, un place_id o una URL de lugar de Maps. Un feature id se salta el paso de resolución por el que pasa un place_id, y el plugin Google Maps Place Details devuelve el feature id junto con el resto del lugar.

¿Cuánto cuesta hacer scraping de reseñas de Google Maps?

Cada página de hasta 20 reseñas se factura como una petición: las 20 reseñas por defecto cuestan 1 petición, max_reviews=200 hasta 10, y pagesFetched muestra el número exacto. 1 petición = 1 crédito, 1,00 EUR por cada 1.000 en Pay as you go, hasta unos 0,55 EUR por cada 1.000 en el plan Ultimate. No se facturan los bloqueos, los timeouts ni los errores del lado de ScrapeUnblocker, y la prueba gratuita incluye 500 peticiones sin tarjeta.

Scrapers relacionados

Google Maps Reviews y los demás nombres y marcas de google.com pertenecen a su titular y aquí se usan solo para identificar el sitio web con el que funciona esta API. ScrapeUnblocker es un servicio independiente: no está afiliado al titular de google.com ni cuenta con su respaldo o patrocinio.

Empieza a rastrear este sitio hoy

Plan gratuito incluido. No necesitas tarjeta para probarlo.