EN
Test it for free Login
Guide

Scraping Google Maps: extracting the listings of a search

Name, category, address, website, rating, review count, opening hours: a Google Maps search holds a wealth of information about a local market. Here is how to collect it properly.

Key takeaways
  • The official Google Maps Platform API doesn't give the ranking of a search's listings: it has to be collected.
  • Each listing comes with its rank, name, category, address, website, rating, review count and CID.
  • Uses: local SEO tracking, competitor monitoring and market research, city by city.

Scraping Google Maps or using the official API?

The first confusion to clear up: the official Google Maps Platform API is for displaying maps, computing directions or geocoding addresses inside an app. It does not return the ranking of businesses as a searcher sees it in a Google Maps search.

Scraping Google Maps means collecting the list of listings returned by a search (“restaurant”, “plumber”, “gym”) from a given place, in the order Google shows them. That is the data used for local SEO and market research.

The data available for each listing

FieldContent
rank_type, rank_serpThe listing's rank in the results
titleThe business name
cidThe Google ID of the listing, stable over time
typeThe category, e.g. Restaurant
addressThe postal address
websiteThe website
rating, reviewsThe average rating out of 5 and the review count
status_label, status_detailThe opening status and its detail, such as opening hours
commentThe snippet shown on the listing
imagesThe listing's images

The CID is valuable: it lets you follow the same listing from one snapshot to the next, even if its name or address changes.

The API returns the rating, the review count and the snippet shown, not the full text of each review.

Location changes everything

A Google Maps search depends on where it is made from. “Plumber” from a city center and from its suburbs doesn't return the same listings in the same order. The geolocation parameter places the search in the city of your choice. We cover this in geolocated SERPs.

Example call

curl
curl -X POST 'https://api.semscraper.com/v1/serp' \
  -H 'Authorization: Bearer API_KEY' \
  -H 'Content-Type: application/json' \
  -d '[{"search_engine": "google_maps", "keyword": "restaurant", "depth": 1, "location": "fr", "language": "fr", "geolocation": "Nice, Alpes-Maritimes, France"}]'

The same request as for Google Search, with search_engine set to google_maps. Same price too: €0.30 per 1,000 searches at depth 1.

Three concrete uses

Tracking your local SEO

Record the rank of your listings on your keywords every week, city by city. A listing that slips often means a competitor is piling up reviews, or the category is poorly chosen.

Monitoring local competitors

Compare the rating, review count and category of the businesses around you in the results. The review gap with the top three gives you a target.

Researching a market

By crossing a category with a list of cities, you get a census of visible businesses, with address and website: competitive density, underserved areas, chains present.

Google Maps or local pack?

The local pack, the block of a few listings shown in regular Google results, is not the same thing as a Google Maps search. It is returned by the Google Search API, with rating, review count and price range. The Google Maps API returns the listings of the Maps search itself. The two complement each other: the local pack measures visibility in Google, Maps measures position on the map.

Try it on your own keywords

1,000 free requests, no credit card required.