Volver al blog
Guías
Andrei OgiolanLast updated on Mar 31, 20267 min read

Cómo extraer datos de los resultados de lugares de Google Maps

Cómo extraer datos de los resultados de lugares de Google Maps

Introducción

Google Maps es uno de los servicios de mapas y navegación más utilizados del mundo, ya que ofrece a los usuarios una forma sencilla de encontrar y explorar lugares, negocios y puntos de interés. Una de las características clave de Google Maps es la posibilidad de buscar lugares y ver información detallada sobre ellos, como su ubicación, reseñas, fotos y mucho más.

Extraer estos datos de Google Maps puede resultar útil para diversos fines. Por ejemplo, las empresas pueden utilizar estos datos para realizar un seguimiento y analizar el rendimiento de sus establecimientos, los investigadores pueden usarlos para estudiar patrones en el comportamiento de los consumidores y los particulares pueden utilizarlos para encontrar y explorar nuevos lugares.

El objetivo de este artículo es ofrecer una guía paso a paso sobre cómo extraer los resultados de lugares de Google Maps con nuestra API utilizando Node.js. Abordaremos todo, desde la configuración del entorno de desarrollo hasta la extracción de datos relevantes, y describiremos posibles problemas. Al final de este artículo, dispondrás de los conocimientos y las herramientas necesarios para extraer los resultados de lugares de Google Maps por tu cuenta.

¿Por qué deberías utilizar un rastreador profesional en lugar de crear el tuyo propio?

Utilizar un scraper profesional puede ser una mejor opción que crear uno propio por varias razones. En primer lugar, los scrapers profesionales están diseñados para gestionar una amplia variedad de tareas de scraping y están optimizados para ofrecer rendimiento, fiabilidad y escalabilidad. Están diseñados para gestionar grandes cantidades de datos y pueden manejar diversos tipos de sitios web y tecnologías web. Esto significa que los scrapers profesionales suelen extraer datos de forma más rápida y precisa que un scraper creado a medida.

Además, los scrapers profesionales suelen incluir funciones integradas como la resolución de CAPTCHA, la rotación de IP y la gestión de errores, lo que puede hacer que el proceso de scraping sea más eficiente y menos propenso a errores. También ofrecen asistencia y documentación que pueden resultar útiles si te encuentras con algún problema.

Otro aspecto importante es que los proveedores de scrapers profesionales cumplen con las políticas de scraping de los sitios web que rastrean y pueden garantizar un uso legal de los datos, algo importante a tener en cuenta al extraer datos.

Por último, en nuestro caso concreto, para extraer los resultados de lugares de Google Maps, es necesario pasar un parámetro de datos a la URL de Google de la siguiente manera:

https://www.google.com/maps/place/Waldo+Pizza/@43.821489,-43.4299553,3z/data=!4m5!3m4!1s0x87c0ef253b04093f:0xafdfd6dc1d3a2b4e!8m2!3d38.9930011!4d-94.5936805

El parámetro de datos suele tener un aspecto similar a este: !4m5!3m4!1s + data_id + !8m2!3 + latitud + !4d + longitud. Sé que esto puede parecer intimidante al principio, ya que quizá no tengas ni idea de cómo obtener la propiedad data_id de un lugar específico, y tienes razón, porque Google oculta esta información y no es visible en la página cuando buscas un lugar en Google Maps. Pero, afortunadamente, el uso de un rastreador profesional como el nuestro se encarga de eso al encontrar estos datos por ti. En las secciones posteriores hablaremos sobre cómo obtener el data_id, las coordenadas y cómo crear fácilmente el parámetro de datos.

Definición de nuestro objetivo

¿Qué son los resultados de lugares de Google Maps?

Los resultados de lugares de Google Maps son los resultados que se muestran cuando un usuario busca un lugar en Google Maps. Estos resultados pueden incluir lugares como negocios, restaurantes, hoteles, monumentos y otros puntos de interés. Cada resultado de lugar incluye información como el nombre del lugar, la dirección, el número de teléfono, el sitio web, reseñas y fotos. Los resultados de lugares también incluyen una imagen de Street View de Google Maps de la ubicación y un mapa que muestra la ubicación del lugar. Los resultados de lugares también pueden incluir un enlace a la página de Google My Business del lugar.

Cuando un usuario busca un lugar en Google Maps, se le muestra una lista de resultados de lugares que coinciden con su consulta de búsqueda. Estos resultados se muestran en el mapa y en formato de lista, y se pueden filtrar según diversos criterios, como la valoración, el precio y la distancia.

Extraer estos datos puede resultar útil para empresas que desean realizar un seguimiento y analizar el rendimiento de sus ubicaciones, investigadores que desean estudiar patrones en el comportamiento de los consumidores y personas que desean encontrar y explorar nuevos lugares.

¿Cómo es nuestro objetivo?

Configuración

Antes de empezar a extraer los resultados de lugares de Google Maps, debemos asegurarnos de que disponemos de las herramientas necesarias. Lo primero que necesitaremos es Node.js, un entorno de ejecución de JavaScript que nos permite ejecutar JavaScript en el lado del servidor y que puedes instalar desde su página web oficial. Lo segundo que necesitas es una clave API, que puedes obtener fácilmente creando una cuenta aquí y activando el servicio SERP.

Una vez que tengas todo esto configurado, para ejecutar un script de Node.js, solo tienes que crear un archivo js. Puedes hacerlo ejecutando el siguiente comando:

$ touch scraper.js

Y ahora pega la siguiente línea en tu archivo:

console.log("Hello World!")

A continuación, ejecuta el siguiente comando:

$ node scraper.js

Si ahora puedes ver el mensaje «Hello World!» impreso en la terminal, significa que has instalado Node.js correctamente y que estás listo para pasar al último paso.

Ahora, el último paso es obtener la información data_id sobre el lugar que te interesa. Aquí es donde entra en juego nuestra API. Usarla es muy sencillo y no requiere la instalación de ninguna biblioteca externa.

En primer lugar, en un archivo js debes importar el módulo integrado `https` de Node.js para poder enviar solicitudes a nuestra API. Esto se puede hacer de la siguiente manera:

​​const https = require("https");

En segundo lugar, debes especificar tu clave de API, un término de búsqueda y las coordenadas del lugar que te interesa:

const API_KEY = "<YOUR-API-KEY-HERE>" // You can get by creating an account - https://app.webscrapingapi.com/register

const query = "Waldo%20Pizza"

const coords = "@38.99313451901278,-94.59368586441806"

Ahora, lo que tienes que hacer es pasar esta información en un objeto de opciones para que nuestra API entienda de qué lugar necesitas extraer información:

const options = {

  "method": "GET",

  "hostname": "serpapi.webscrapingapi.com",

  "port": null,

  "path": `/v1?engine=google_maps&api_key=${API_KEY}&type=search&q=${query}&ll=${coords}`,

  "headers": {}

};

A continuación, debes configurar una llamada a nuestra API con toda esta información:

const req = https.request(options, function (res) {

 const chunks = [];

 res.on("data", function (chunk) {

   chunks.push(chunk);

 });

 res.on("end", function () {

   const body = Buffer.concat(chunks);

   const response = JSON.parse(body.toString());

   const data_id = response.place_results.data_id;

   if (data_id) {

       console.log(data_id);

   }

   else {

       console.log('We could not find a data_id property for your query. Please try using another query')

   }

 });

});

req.end();

Por último, solo tienes que ejecutar el script que has creado y esperar a los resultados:

​​$ node scraper.js

Y deberías ver la propiedad data_id impresa en la pantalla:

$ ​​0x87c0ef253b04093f:0xafdfd6dc1d3a2b4es

Y eso es todo; en este punto ya tienes todo lo necesario para crear el parámetro de datos y estás listo para pasar a la siguiente sección, que contiene el objetivo de este artículo.

Empecemos a extraer los resultados de Google Places

Ahora que ya tienes tu entorno configurado, estás listo para empezar a extraer los resultados de lugares de Google Maps con Node.js. Como ya se ha mencionado anteriormente, para extraer los resultados de lugares de Google Maps, ahora debes configurar el parámetro data. Teniendo todo lo necesario a tu disposición, puedes hacerlo de la siguiente manera:

const data_id = "0x87c0ef253b04093f:0xafdfd6dc1d3a2b4e" // the data_id we retrieved earlier

const latitude = '38.99313451901278'

const longitude = '-94.59368586441806'

const data = '!4m5!3m4!1s' + data_id + '!8m2!3d' + latitude  + '!4d' + longitude

Ahora, debes modificar tu objeto de opciones para indicar a nuestra API que estás buscando resultados de lugares. Con este nuevo parámetro de datos, nuestra API sabrá exactamente sobre qué lugar necesitas extraer información:

const options = {

  "method": "GET",

  "hostname": "serpapi.webscrapingapi.com",

  "port": null,

  "path": `/v1?engine=google_maps&api_key=${API_KEY}&type=place&data=${data}`, // this time the type is place and there is no query needed

  "headers": {}

};

El script resultante debería tener este aspecto:

const https = require("https");

const API_KEY = "<YOUR-API-KEY-HERE>" // You can get by creating an account - https://app.webscrapingapi.com/register

const data_id = "0x87c0ef253b04093f:0xafdfd6dc1d3a2b4e" // the data_id we retrieved earlier

const latitude = '38.99313451901278'

const longitude = '-94.59368586441806'

const data = '!4m5!3m4!1s' + data_id + '!8m2!3d' + latitude  + '!4d' + longitude

const options = {

  "method": "GET",

  "hostname": "serpapi.webscrapingapi.com",

  "port": null,

  "path": `/v1?engine=google_maps&api_key=${API_KEY}&type=place&data=${data}`, // this time the type is place and there is no query needed

  "headers": {}

};

const req = https.request(options, function (res) {

  const chunks = [];

  res.on("data", function (chunk) {

    chunks.push(chunk);

  });

  res.on("end", function () {

    const body = Buffer.concat(chunks);

    const response = JSON.parse(body.toString());

    console.log(response)

  });

});

req.end();

Y tras ejecutar este script, deberías recibir una respuesta similar a esta:

place_results: {

    title: 'Waldo Pizza',

    data_id: '0x89c259a61c75684f:0x79d31adb123348d2',

    place_id: 'ChIJT2h1HKZZwokR0kgzEtsa03k',

    data_cid: '8778389626880739538',

    website: 'https://www.stumptowntogo.com/',

    gps_coordinates: { latitude: 38.99313451901278, longitude: -94.59368586 },

    reviews_link: 'https://serpapi.webscrapingapi.com/v1?engine=google_maps_reviews&data_id=0x89c259a61c75684f:0x79d31adb123348d2',

    place_id_search: 'https://serpapi.webscrapingapi.com/v1?engine=google_maps&type=place&device=desktop&data=!4m5!3m4!1s0x89c259a61c75684f:0x79d31adb123348d2!8m2!3d38.99313451901278!4d-94.59368586',

    thumbnail: 'https://lh5.googleusercontent.com/p/AF1QipNtnPBJ2Oi_C2YNamHTXyqU9I8mRBarCIvM5g5v=w408-h272-k-no',

    rating: 4.6,

    reviews: 2594,

    price: '$$',

    type: [ 'Pizza restaurant' ],

    service_options: { dine_in: true, curbsidepickup: true, no_contactdelivery: true },

    extensions: [

      [Object], [Object],

      [Object], [Object],

      [Object], [Object],

      [Object], [Object],

      [Object], [Object]

    ],

    open_state: 'Closed',

    hours: [

      [Object], [Object],

      [Object], [Object],

      [Object], [Object],

      [Object]

    ],

    contact_details: {

      address: [Object],

      action_1: [Object],

      menu: [Object],

      phone: [Object],

      plus_code: [Object]

    },

    address: '7433 Broadway St, Kansas City, MO 64114',

    images: [

      [Object], [Object],

      [Object], [Object],

      [Object], [Object],

      [Object], [Object],

      [Object], [Object],

      [Object], [Object]

    ],

    people_also_search_for: [ [Object], [Object], [Object] ],

    user_reviews: { summaries: [Array], most_relevant: [Array] },

    popular_times: { graph_results: [Object] }

  }

}

Y eso es todo. Esto significa que has conseguido extraer con éxito los resultados de lugares de Google Maps utilizando nuestra API y ya estás listo para utilizar los datos obtenidos para muchos fines diferentes, como análisis de datos, análisis empresarial, aprendizaje automático y mucho más. Para obtener más información y ejemplos de código en otros 6 lenguajes de programación que te ayudarán a empezar, no dudes en explorar nuestra documentación de Google Maps.

Limitaciones de los resultados de lugares de Google Maps

Los resultados de lugares de Google Maps, aunque son una herramienta potente para encontrar y explorar lugares, tienen algunas limitaciones que debes tener en cuenta. En primer lugar, la cantidad de datos disponibles para cada lugar es limitada y algunos datos, como fotos, el ID del lugar, etc., solo están disponibles a través de la API de Google Maps y requieren una clave de API. Además, los datos proporcionados en los resultados de lugares de Google Maps pueden ser dinámicos y cambiar con el tiempo, lo que significa que los datos que extraigas pueden no ser precisos o estar desactualizados.

Conclusión

En conclusión, el scraping de los resultados de lugares de Google Maps puede ser una herramienta útil para que empresas, investigadores y particulares encuentren y exploren nuevos lugares. Siguiendo los pasos descritos en este artículo, ahora deberías tener los conocimientos y las herramientas necesarios para extraer los resultados de lugares de Google Maps utilizando nuestra API con Node.js.

Acerca del autor
Andrei Ogiolan, Desarrollador Full Stack @ WebScrapingAPI
Andrei OgiolanDesarrollador Full Stack

Andrei Ogiolan es desarrollador full stack en WebScrapingAPI, donde colabora en todas las áreas del producto y ayuda a crear herramientas y funciones fiables para la plataforma.

Empieza a crear

¿Estás listo para ampliar tu recopilación de datos?

Únete a más de 2000 empresas que utilizan WebScrapingAPI para extraer datos de la web a escala empresarial sin ningún gasto de infraestructura.