How To Scrape Google Maps Contributor Reviews
What are Google Maps Contributor Pages?
The Google Maps Contributor Page is a public profile displaying a user's contributions to Google Maps. It includes reviews, photos, and ratings the user has added for different locations. Other users can view this page to see the contributor's activity and insights about various places they've visited. This helps build trust within the Google Maps community, and users can follow contributors whose reviews they find helpful.
For example, let's take a look at what the Google Contributor Page looks like for a user: https://www.google.com/maps/contrib/102928597545298017125/reviews?gl=us&hl=en
Get more details about how points work for the Local Guide Program here: https://support.google.com/maps/answer/6225851
Why Scrape Google Maps Contributor Reviews?
Scraping Google Maps Contributor Reviews can help businesses, marketers, and data analysts gather insights into customer feedback at scale. By automating the collection of reviews, businesses can collect individual customer perspectives, identify influential reviewers, and gather detailed feedback across different locations. Additionally, businesses and marketers can identify how customer preferences are linked across various industries using the reviews data. This data can be used to analyze trends in specific regions, understand how particular reviewers perceive services, and leverage insights to improve offerings. It also helps companies monitor their reputation and interact with top contributors more effectively.
Why Use SerpApi To Scrape Contributor Reviews?
SerpApi streamlines the process of web-scraping. We take care of proxies and any CAPTCHAs that might be encountered, so that you don't have to worry about your searches being blocked. If you were to implement your own scraper using tools like BeautifulSoup and Requests, you'd need to determine your own solution for this. SerpApi manages the intricacies of scraping and returns structured JSON results. This allows you to save time and effort by avoiding the need to build your own Google scraper or rely on other web scraping tools.
We also do all the work to maintain all of our parsers and adapt them to respond to changes on Google's side. This is important, as Google is constantly experimenting with new layouts, new elements, and other changes. By taking care of this for you on our side, we eliminate a lot of time and complexity from your workflow.
Compared to our competitors, we offer superior speed and success rates and, we are able to collect more details from search results than any other provider. We are dedicated to providing the most performant APIs, a legal shield protecting your right to scrape public data, and premium customer service.
Scrape Google Maps Contributor Reviews with SerpApi
At SerpApi, we specialize in scraping public information from search engine results pages (SERPs), and returning it live in an easy to work with nested JSON format.
Our Google Maps Contributor Reviews API enables you to extract Google Maps reviews from any contributor’s public profile. It can gather detailed review information such as review content, ratings, and the location linked to the review. The API simplifies data extraction for applications focused on analyzing user feedback, monitoring review trends, and understanding customer behavior in different locations and for different businesses. It provides easy access to reviews data, eliminating the need for manual collection.
Here is what you can scrape from the Google Maps Contributor Page:
How To Scrape Contributor Reviews?
To begin extracting data, first, create a free account on serpapi.com. You'll receive one hundred free search credits each month to explore the API.
The API can be accessed through a simple GET request to:
https://serpapi.com/search.json?engine=google_maps_contributor_reviews&contributor_id=110382514725174877672
For a live and interactive demo, you can check it out in our playground:
SerpApi supports libraries for many top programming languages, including Python, Java, JavaScript, Ruby, and PHP.
Here is an example of using our Google Maps Contributor Reviews API with our Java library 'serpapi-java':
SerpApi serpapi = new SerpApi();
Map<String, String> parameter = new HashMap<>();
parameter.put("api_key", "SERPAPI_PRIVATE_KEY");
parameter.put("engine", "google_maps_contributor_reviews");
parameter.put("hl", "en");
parameter.put("gl", "us");
parameter.put("contributor_id", "109736708296406538146");
try {
JsonObject data = serpapi.search(parameter);
System.err.println(data);
} catch (SerpApiException ex) {
System.out.println("Exception:");
System.out.println(ex.toString());
}
Let's take a look at what is returned in the API response:
{
"search_metadata": {
"id": "66fee198dc969f014b580c3e",
"status": "Success",
"json_endpoint": "https://serpapi.com/searches/b3b566d5f926bbd4/66fee198dc969f014b580c3e.json",
...
...
},
"search_parameters": {
"engine": "google_maps_contributor_reviews",
"gl": "us",
"hl": "en",
"contributor_id": "109736708296406538146"
},
"contributor": {
"name": "K.M.A.",
"thumbnail": "https://lh3.googleusercontent.com/a-/ALV-UjUClQWZI5bXyPurAeFx0ds14HOJJH2h4ezyktnxH59jNsBJfhYlvA=s120-c-rp-mo-ba6-br100",
"points": 18192,
"level": 8,
"local_guide": true,
"contributions": {
"reviews": 455,
"ratings": 3,
"photos": 1639,
"videos": 78,
"captions": 0,
"answers": 1838,
"edits": 1,
"reported_incorrect": 0,
"places_added": 3,
"roads_added": 0,
"facts_checked": 0,
"q_a": 0
}
},
"reviews": [
{
"place_info": {
"title": "TS VAPE SMOKE SHOP",
"address": "6175 SW Lombard Ave, Beaverton, OR 97008",
"gps_coordinates": {
"latitude": 45.475673199999996,
"longitude": -122.80055089999999
},
"type": "Smoke shop",
"thumbnail": "https://lh5.googleusercontent.com/p/AF1QipNGGOkwLQqxIppV8wUBWfM7sASAAB_FOS6dey2m=w200-h266-k-no",
"data_id": "0x54950df01d5f6d4d:0xe6bc3a8022061e97"
},
"date": "4 days ago",
"snippet": "Knowledgeable owner. Ask and you shall receive.",
"review_id": "ChZDSUhNMG9nS0VJQ0FnSUNuZzhxNk9REAE",
"rating": 5,
"likes": 0,
"link": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChZDSUhNMG9nS0VJQ0FnSUNuZzhxNk9REAE!2m1!1s0x0:0xe6bc3a8022061e97!3m1!1s2@1:CIHM0ogKEICAgICng8q6OQ%7CCgwIxrfjtwYQkIrN1AM%7C?hl=en-US",
"images": [
{
"title": "TS VAPE SMOKE SHOP",
"thumbnail": "https://lh5.googleusercontent.com/p/AF1QipOR0TlbWu99WfHSWbfZxJJnuHoUs16qCMDIpk9J=s10000-k-no"
},
{
"title": "TS VAPE SMOKE SHOP",
"thumbnail": "https://lh5.googleusercontent.com/p/AF1QipMRRY4Cb3KoDBM6wGJ_99VlD8hjMzKO2gaMi6Qo=s10000-k-no"
},
{
"title": "TS VAPE SMOKE SHOP",
"thumbnail": "https://lh5.googleusercontent.com/p/AF1QipN8b8GLrCo5ydI-OglRneBfX0uvsH8B1qTDdL1U=s10000-k-no"
}
],
"response": {
"date": "4 days ago",
"snippet": "\n\n\"Thank you so much for your kind words and valuable trust! We are always here to provide the best service, and we are delighted to know that your experience was positive. You are always welcome, and we look forward to serving you in the future.\""
}
},
{
"place_info": {
"title": "Rama Thai Restaurant",
"address": "12874 SW Canyon Rd, Beaverton, OR 97005",
"gps_coordinates": {
"latitude": 45.4878601,
"longitude": -122.8090093
},
"type": "Thai",
"thumbnail": "https://lh5.googleusercontent.com/p/AF1QipN2Uh_iLGSEjlpDodQX3mv2ZdAOTSr5nPV1Fs-O=w266-h200-k-no",
"data_id": "0x54950e9f732e9b4f:0x7694d03b0bb06bd8"
},
"date": "6 days ago",
"snippet": "Friendly and fast service. Hot isn't too hot but it will definitely get you sweating a little bit if you haven't had something hot in a while.",
"review_id": "ChdDSUhNMG9nS0VJQ0FnSUNuOGY2YWlnRRAB",
"rating": 5,
"likes": 0,
"link": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChdDSUhNMG9nS0VJQ0FnSUNuOGY2YWlnRRAB!2m1!1s0x0:0x7694d03b0bb06bd8!3m1!1s2@1:CIHM0ogKEICAgICn8f6aigE%7CCgwI7bnZtwYQkNL56gI%7C?hl=en-US",
"details": {
"service": 5,
"meal_type": "Dinner",
"price_per_person": "$10–20",
"food": 5,
"atmosphere": 5,
"recommended_dishes": "Red Curry, Pad Kee Mao",
"parking_space": "Somewhat difficult to find parking",
"parking_options": "Free parking lot, Free street parking"
}
},
...
...
...
],
"serpapi_pagination": {
"next": "https://serpapi.com/search.json?contributor_id=109736708296406538146&engine=google_maps_contributor_reviews&gl=us&hl=en&next_page_token=Q0FFU0JrVm5TVWxEWnc9PQ%3D%3D",
"next_page_token": "Q0FFU0JrVm5TVWxEWnc9PQ=="
}
}
We also have an older Java library (google-search-results-java) which may be referenced in our playground and documentation. For all our APIs, going forward, I would recommend using our newer updated library (serpapi-java) as integrating with it is easier and it is up-to-date.
If you are just getting started with our Java library, I would recommend trying out the demo project in the
serpapi-java
library. Refer: https://github.com/serpapi/serpapi-java?tab=readme-ov-file#usageA quick note about our older Java library: All our Java code samples use the
GoogleSearch
class which sets engine=google
by default even if another engine
param is provided. This can be replaced with the correct engine's class such as BingSearch
or the generic SerpApiSearch
class when the engine doesn't have its own class. We also have a no-code option which enables you to use our APIs directly in Google Sheets. You can read more about it in this blog post:
Implementing Pagination
The Google Maps Contributor Reviews API response may include multiple pages of reviews. To efficiently retrieve data and navigate through multiple pages, we can utilize the num
and next_page_token
parameters.
About the Parameters:
num
: This parameter determines the maximum number of search results to be returned. The default is 10. You can maximize the results received per request by setting num to a higher value. 100 is the maximum you can set num
to.
next_page_token
: This parameter is used for paginating through search results, enabling you to retrieve the next set of results.
Here is how you can set up the pagination flow:
Initial Request: Execute an initial request with your parameters of interest without next_page_token
.
Sequential Access Of Results On Following Pages: Fetch the next results page using the next_page_token
from the current response.
Last Page: Implement a check for the existence of next_page_token
. If it's not present, it indicates that this is the last page and there are no more pages to retrieve.
Let's look at an example where we can use pagination to get all the pages of the same Google Maps Contributor as earlier (contributor_id
: 109736708296406538146):
SerpApi serpapi= new SerpApi();
Map<String, String> parameter = new HashMap<>();
parameter.put("api_key", "SERPAPI_PRIVATE_KEY");
parameter.put("engine", "google_maps_contributor_reviews");
parameter.put("contributor_id", "109736708296406538146");
parameter.put("gl", "us");
parameter.put("hl", "en");
parameter.put("next_page_token", "Q0FFU0JrVm5TVWxEWnc9PQ==");
try {
JsonObject data = serpapi.search(parameter);
System.err.println(data);
} catch (SerpApiException ex) {
System.out.println("Exception:");
System.out.println(ex.toString());
}
You can view it in our Playground as well:
Conclusion
We've covered how to scrape the Google Maps Contributor Page with SerpApi's Google Maps Contributor Reviews API.
I hope you found this tutorial helpful. If you have any questions, don't hesitate to reach out to me at sonika@serpapi.com.