Google Maps Scraper avatar

Google Maps Scraper

Try for free

No credit card required

View all Actors
Google Maps Scraper

Google Maps Scraper

compass/crawler-google-places
Try for free

No credit card required

Extract data from hundreds of Google Maps locations and businesses. Get Google Maps data including reviews, images, contact info, opening hours, location, popular times, prices & more. Export scraped data, run the scraper via API, schedule and monitor runs, or integrate with other tools.

Do you want to learn more about this Actor?

Get a demo

📍 What is Google Maps Scraper?

This tool expands Google Maps data extraction beyond the official Google Places API's limitations. It offers greater speed and enables scraping of various details like names, contact info, reviews, popular times, ratings, geolocation, and more. You can scrape by search query, location, coordinates, or URL, targeting a few places, a city, or an entire area.

🗺 How can I use Google Maps Scraper?

This tool can be used on the Apify platform or locally; it covers the following features:

  • Scraping data from Google Maps - by URL or search query
  • Getting over the limitation of Google Maps of showing no more than 120 places per map
  • Defining search area for scraping by country, state, US county, city, or postal code
  • Scraping areas by coordinates and arbitrary locations present on OpenStreetMap
  • Language & translation settings
  • City-focused scraping
  • Automatic zooming by searched area
  • Reviews scraping, sorting and filtering
  • Browser & scraping configuration
  • API, webhooks and integrations with other tools
  • Visual representation of scraped data on a map

With this unofficial Google Maps API, you can extract all of the following data from Google Maps: (see many more output examples in Output examples ⬇️). Here's the amount of data you'd get for a single scraped place (this one 📍 so you can compare).

Example of 1 scraped restaurant in New York:

1{
2  "url": "https://www.google.com/maps/place/Kim's+Island/@40.5107736,-74.2482624,17z/data=!4m6!3m5!1s0x89c3ca9c11f90c25:0x6cc8dba851799f09!8m2!3d40.5107736!4d-74.2482624!16s%2Fg%2F1tmgdcj8?hl=en&entry=ttu",
3  "searchString": null,
4  "rank": null,
5  "searchPageUrl": null,
6  "searchPageLoadedUrl": null,
7  "isAdvertisement": false,
8  "title": "Kim's Island",
9  "description": null,
10  "price": "$",
11  "categoryName": "Chinese restaurant",
12  "address": "175 Main St, Staten Island, NY 10307, United States",
13  "neighborhood": "Tottenville",
14  "street": "175 Main St",
15  "city": "Staten Island",
16  "postalCode": "10307",
17  "state": "New York",
18  "countryCode": "US",
19  "website": "http://kimsislandsi.com/",
20  "phone": "+1 718-356-5168",
21  "phoneUnformatted": "+17183565168",
22  "claimThisBusiness": false,
23  "location": {
24    "lat": 40.5107736,
25    "lng": -74.2482624
26  },
27  "locatedIn": null,
28  "plusCode": "GQ62+8M New York, USA",
29  "menu": "http://kimsislandsi.com/",
30  "totalScore": 4.6,
31  "permanentlyClosed": false,
32  "temporarilyClosed": false,
33  "placeId": "ChIJJQz5EZzKw4kRCZ95UajbyGw",
34  "categories": [
35    "Chinese restaurant",
36    "Meal delivery"
37  ],
38  "cid": "7838756667406262025",
39  "fid": "0x8752803adcbfe1eb:0x22db97b7282d97c3",
40  "reviewsCount": 83,
41  "reviewsDistribution": {
42    "oneStar": 3,
43    "twoStar": 3,
44    "threeStar": 3,
45    "fourStar": 9,
46    "fiveStar": 65
47  },
48  "imagesCount": 28,
49  "scrapedAt": "2023-06-13T18:05:20.602Z",
50  "reserveTableUrl": null,
51  "googleFoodUrl": null,
52  "hotelStars": null,
53  "hotelDescription": null,
54  "checkInDate": null,
55  "checkOutDate": null,
56  "similarHotelsNearby": null,
57  "openingHours": [
58    {
59      "day": "Monday",
60      "hours": "Closed"
61    },
62    {
63      "day": "Tuesday",
64      "hours": "11 AM to 9:30 PM"
65    },
66    {
67      "day": "Wednesday",
68      "hours": "11 AM to 9:30 PM"
69    },
70    {
71      "day": "Thursday",
72      "hours": "11 AM to 9:30 PM"
73    },
74    {
75      "day": "Friday",
76      "hours": "11 AM to 10:30 PM"
77    },
78    {
79      "day": "Saturday",
80      "hours": "11 AM to 10:30 PM"
81    },
82    {
83      "day": "Sunday",
84      "hours": "12 to 9:30 PM"
85    }
86  ],
87  "peopleAlsoSearch": [
88    {
89      "category": "People also search for",
90      "title": "Peking Taste",
91      "reviewsCount": 53,
92      "totalScore": 3.5
93    },
94    {
95      "category": "People also search for",
96      "title": "New Island",
97      "reviewsCount": 94,
98      "totalScore": 4
99    },
100    {
101      "category": "People also search for",
102      "title": "Chef Hong II",
103      "reviewsCount": 114,
104      "totalScore": 4.3
105    },
106    {
107      "category": "People also search for",
108      "title": "Pacific Kitchen",
109      "reviewsCount": 99,
110      "totalScore": 4.4
111    },
112    {
113      "category": "People also search for",
114      "title": "Foo Sing",
115      "reviewsCount": 44,
116      "totalScore": 4
117    }
118  ],
119  "placesTags": [],
120  "reviewsTags": [
121    {
122      "title": "prices",
123      "count": 6
124    },
125    {
126      "title": "delivery",
127      "count": 4
128    },
129    {
130      "title": "spareribs",
131      "count": 3
132    }
133  ],
134  "additionalInfo": {
135    "Service options": [
136      {
137        "Delivery": true
138      },
139      {
140        "Takeaway": true
141      },
142      {
143        "Dine-in": true
144      }
145    ],
146    "Popular for": [
147      {
148        "Lunch": true
149      },
150      {
151        "Dinner": true
152      },
153      {
154        "Solo dining": true
155      }
156    ],
157    "Accessibility": [
158      {
159        "Wheelchair-accessible entrance": true
160      }
161    ],
162    "Offerings": [
163      {
164        "Comfort food": true
165      },
166      {
167        "Healthy options": true
168      },
169      {
170        "Quick bite": true
171      },
172      {
173        "Small plates": true
174      }
175    ],
176    "Dining options": [
177      {
178        "Lunch": true
179      },
180      {
181        "Dinner": true
182      }
183    ],
184    "Amenities": [
185      {
186        "Good for kids": true
187      }
188    ],
189    "Atmosphere": [
190      {
191        "Casual": true
192      }
193    ],
194    "Payments": [
195      {
196        "Credit cards": true
197      },
198      {
199        "Debit cards": true
200      },
201      {
202        "NFC mobile payments": true
203      },
204      {
205        "Credit cards": true
206      }
207    ]
208  },
209  "gasPrices": [],
210  "questionsAndAnswers": null,
211  "updatesFromCustomers": null,
212  "webResults": [],
213  "orderBy": [
214    {
215      "name": "kimsislandsi.com",
216      "url": "http://kimsislandsi.com/"
217    }
218  ],
219  "imageUrls": [],
220  "reviews": []
221}

💰 How much will scraping Google Maps cost you?

In our experience, you can get between 15,000 and 20,000 results within the $49 Starter plan. However, when it comes to scraping, it can be challenging to estimate the resources needed to extract data as use cases may vary significantly. That's why the best course of action is to run a test scrape with a small sample of input data and limited output. You’ll get your price per scrape, which you’ll then have to multiply by the number of scrapes you intend to do.

Watch this video for a few helpful tips. And don't forget that choosing a higher plan will save you money in the long run.

✨ How to choose the best tool to scrape Google Maps?

📍 Google Maps Scraper was Apify's original solution for scraping Google Maps. Developed in 2016, this web scraper can extract all data from Google places but it was built with "price per platform usage" pricing model. Despite its great capabilities, due to its legacy Google Maps Scraper might get too slow for some use cases and be less predictable price-wise (hence, the paragraph above ⬆️).

To address this concern, in 2024 we developed two new Google Maps scrapers that use a much faster scraping method and a more predictable "price per result" pricing model: 🏎 Google Maps Data Extractor and 💼 Google Maps Business Scraper. The speed of these new scrapers can get up to 50 times faster than that of the original Google Maps Scraper. All three scrapers are being continuously improved, but they cover slightly different use cases. We encourage you to explore them and pick the right Google Maps scraper for you:

📍 Google Maps Scraper🏎 Google Maps Data Extractor💼 Google Maps Business Scraper
Scrape by: Location 📍 + search term 🔍
Scrape by: Location 📍 + Google Maps category 🏛
Scrape by: Google Maps search URLs 🔗
Scrape by: Google place URLs 🔗 or placeIDs 🆔
Define location: by city, country, state, US county, or postal code
Define geolocation and coordinates (polygons, multipolygons, circles)
Speed🚙 Slower🏎💨 Extremely fast🏎 Very fast
Extracts place details: contact details, prices, opening hours, rating, etc. Full list here Full list here Full list here
Extracts images, reviews, web results, order by info, Q&A and updates
Pricing for 1,000 results⚠️ depends on complexity of your search$12 for 1,000 places$4 for 1,000 places
📍 Google Maps Scraper🏎 Google Maps Data Extractor💼 Google Maps Business Scraper

⬇️ Input example

The input for Google Maps Scraper should be either a Google Maps URL or a location + search term combo. You can also set up extracting any details on top such as images, reviews, amenities, and so on. For a full explanation of input, head over to the input tab.

You can set up the input programmatically or use the fields in scraper’s interface:

⬆️ Output example

The results will be wrapped into a dataset which you can find in the Storage tab. Note that the output is organized in table and tabs for viewing convenience:


Once the run is finished, you can download the dataset in various data formats (JSON, CSV, Excel, and more). Note that you can always set up additional fields for specific Google Maps data.

The scraper also automatically creates a map page that visualizes the scraped places and stores that into the Key-Value Store of the run.

This is what you’d get for:

⭐️ Reviews

1"reviews": [
2{
3"name": "Richard Chan",
4"text": "This place has incredible service. The food here is great and the dumplings are immaculate. All the staff members are incredibly nice and friendly. You can also tell that they reguraly change their oil based on the taste. They also offer to bring my food out too me due to me being to big to fit through the door. This place is a 10/10 and I would recommend friends and family coming to eat in this place.",
5"textTranslated": null,
6"publishAt": "11 months ago",
7"publishedAtDate": "2022-06-16T18:22:02.601Z",
8"likesCount": 3,
9"reviewId": "ChdDSUhNMG9nS0VJQ0FnSUNPcmE2YXRRRRAB",
10"reviewUrl": "[https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChdDSUhNMG9nS0VJQ0FnSUNPcmE2YXRRRRAB!2m1!1s0x0:0x6cc8dba851799f09!3m1!1s2@1:CIHM0ogKEICAgICOra6atQE|CgwIyumtlQYQkMDpngI|?hl=en-US](https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChdDSUhNMG9nS0VJQ0FnSUNPcmE2YXRRRRAB!2m1!1s0x0:0x6cc8dba851799f09!3m1!1s2@1:CIHM0ogKEICAgICOra6atQE%7CCgwIyumtlQYQkMDpngI%7C?hl=en-US)",
11"reviewerId": "115487239877451343603",
12"reviewerUrl": "https://www.google.com/maps/contrib/115487239877451343603?hl=en-US",
13"reviewerPhotoUrl": "https://lh3.googleusercontent.com/a-/AD_cMMQGyF65ajOtgVF4ZKuZzRG3eUVDn_8szr_z8_Z5yw=s120-c-c0x00000000-cc-rp-mo-br100",
14"reviewerNumberOfReviews": 3,
15"isLocalGuide": false,
16"stars": 5,
17"rating": null,
18"responseFromOwnerDate": null,
19"responseFromOwnerText": null,
20"reviewImageUrls": [],
21"reviewContext": {},
22"reviewDetailedRating": {},
23"visitedIn": "Visited in December",
24},
25{
26"name": "Katelyn Cohen",
27"text": "I been going here for 11 years me and my family love the food it has good prices I go here all the time best place to get Chinese food in the world and NY",
28"textTranslated": null,
29"publishAt": "2 years ago",
30"publishedAtDate": "2020-12-24T01:36:17.156Z",
31"likesCount": 3,
32"reviewId": "ChdDSUhNMG9nS0VJQ0FnSURTNXMzdjRnRRAB",
33"reviewUrl": "[https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChdDSUhNMG9nS0VJQ0FnSURTNXMzdjRnRRAB!2m1!1s0x0:0x6cc8dba851799f09!3m1!1s2@1:CIHM0ogKEICAgIDS5s3v4gE|CgsIkeGP_wUQ4OfsSg|?hl=en-US](https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChdDSUhNMG9nS0VJQ0FnSURTNXMzdjRnRRAB!2m1!1s0x0:0x6cc8dba851799f09!3m1!1s2@1:CIHM0ogKEICAgIDS5s3v4gE%7CCgsIkeGP_wUQ4OfsSg%7C?hl=en-US)",
34"reviewerId": "104641749393917170180",
35"reviewerUrl": "https://www.google.com/maps/contrib/104641749393917170180?hl=en-US",
36"reviewerPhotoUrl": "https://lh3.googleusercontent.com/a-/AD_cMMTLvYjsXUTaz6yor82bzCHi-ACXeo5-Ypzb0dWuP_8=s120-c-c0x00000000-cc-rp-mo-br100",
37"reviewerNumberOfReviews": 2,
38"isLocalGuide": false,
39"stars": 5,
40"rating": null,
41"responseFromOwnerDate": "2021-01-23T20:14:35.853Z",
42"responseFromOwnerText": "Thank you for your support and trust,it’s our pleasure!😊",
43"reviewImageUrls": [
44"https://lh5.googleusercontent.com/p/AF1QipPP1aUFXkKd56fIPq_1QzEPICaJ9XcT9gf3lIZU=w150-h150-k-no-p",
45"https://lh5.googleusercontent.com/p/AF1QipPP56i_SEY_Rz-qRk_iwTZv24Dg9bTpJspmI59C=w150-h150-k-no-p"
46],
47"reviewContext": {},
48"reviewDetailedRating": {},
49"visitedIn": "Visited in December",
50},
51{
52"name": "Christina Salama",
53"text": "Have been coming here for years! Always friendly and helpful! Great service and delicious food",
54"textTranslated": null,
55"publishAt": "5 months ago",
56"publishedAtDate": "2022-12-16T02:37:24.946Z",
57"likesCount": 1,
58"reviewId": "ChZDSUhNMG9nS0VJQ0FnSUNCcUp2Y0JREAE",
59"reviewUrl": "[https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChZDSUhNMG9nS0VJQ0FnSUNCcUp2Y0JREAE!2m1!1s0x0:0x6cc8dba851799f09!3m1!1s2@1:CIHM0ogKEICAgICBqJvcBQ|CgwI5LPvnAYQwLHEwwM|?hl=en-US](https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChZDSUhNMG9nS0VJQ0FnSUNCcUp2Y0JREAE!2m1!1s0x0:0x6cc8dba851799f09!3m1!1s2@1:CIHM0ogKEICAgICBqJvcBQ%7CCgwI5LPvnAYQwLHEwwM%7C?hl=en-US)",
60"reviewerId": "107079941106356720274",
61"reviewerUrl": "https://www.google.com/maps/contrib/107079941106356720274?hl=en-US",
62"reviewerPhotoUrl": "https://lh3.googleusercontent.com/a/AAcHTtcZ8bW36vEbd-UNwJN4xeEKwUR9LFp4o3xCFD55=s120-c-c0x00000000-cc-rp-mo-br100",
63"reviewerNumberOfReviews": 4,
64"isLocalGuide": false,
65"stars": 5,
66"rating": null,
67"responseFromOwnerDate": null,
68"responseFromOwnerText": null,
69"reviewImageUrls": [],
70"reviewContext": {},
71"reviewDetailedRating": {},
72"visitedIn": "Visited in December",
73},
74{
75"name": "Elliot G",
76"text": "Best place in Tottenville area.  Foods allways good. And comes on time.",
77"textTranslated": null,
78"publishAt": "4 months ago",
79"publishedAtDate": "2023-01-29T19:03:54.247Z",
80"likesCount": 1,
81"reviewId": "ChdDSUhNMG9nS0VJQ0FnSURCdThTZGdRRRAB",
82"reviewUrl": "[https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChdDSUhNMG9nS0VJQ0FnSURCdThTZGdRRRAB!2m1!1s0x0:0x6cc8dba851799f09!3m1!1s2@1:CIHM0ogKEICAgIDBu8SdgQE|CgsImobbngYQsJ2Gdg|?hl=en-US](https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChdDSUhNMG9nS0VJQ0FnSURCdThTZGdRRRAB!2m1!1s0x0:0x6cc8dba851799f09!3m1!1s2@1:CIHM0ogKEICAgIDBu8SdgQE%7CCgsImobbngYQsJ2Gdg%7C?hl=en-US)",
83"reviewerId": "115712866476698751099",
84"reviewerUrl": "https://www.google.com/maps/contrib/115712866476698751099?hl=en-US",
85"reviewerPhotoUrl": "https://lh3.googleusercontent.com/a/AAcHTtcmtD3El7qpPzYpvFS4UuJNaCLkQauNzn1DyLk=s120-c-c0x00000000-cc-rp-mo-br100",
86"reviewerNumberOfReviews": 7,
87"isLocalGuide": false,
88"stars": 5,
89"rating": null,
90"responseFromOwnerDate": null,
91"responseFromOwnerText": null,
92"reviewImageUrls": [],
93"reviewContext": {},
94"reviewDetailedRating": {
95"Food": 4,
96"Service": 5,
97"Atmosphere": 4,
98"visitedIn": "Visited in December",
99}
100},
101{
102"name": "Joan",
103"text": "I just ordered the boneless spareribs combo. I just want you to know the spareribs were great, but the fried rice tastes disgusting. Maybe it is old and shouldn't be used anymore or it was just a bad day.",
104"textTranslated": null,
105"publishAt": "10 months ago",
106"publishedAtDate": "2022-08-02T22:06:02.619Z",
107"likesCount": 0,
108"reviewId": "ChZDSUhNMG9nS0VJQ0FnSUN1dGVPU0xBEAE",
109"reviewUrl": "[https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChZDSUhNMG9nS0VJQ0FnSUN1dGVPU0xBEAE!2m1!1s0x0:0x6cc8dba851799f09!3m1!1s2@1:CIHM0ogKEICAgICuteOSLA|CgwIyr-mlwYQqJWwpwI|?hl=en-US](https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChZDSUhNMG9nS0VJQ0FnSUN1dGVPU0xBEAE!2m1!1s0x0:0x6cc8dba851799f09!3m1!1s2@1:CIHM0ogKEICAgICuteOSLA%7CCgwIyr-mlwYQqJWwpwI%7C?hl=en-US)",
110"reviewerId": "110503721202693066085",
111"reviewerUrl": "https://www.google.com/maps/contrib/110503721202693066085?hl=en-US",
112"reviewerPhotoUrl": "https://lh3.googleusercontent.com/a-/AD_cMMRBEvlPnwYci5HvAjwaNVFl6hIRk7oMc6r86Gmp=s120-c-c0x00000000-cc-rp-mo-br100",
113"reviewerNumberOfReviews": 9,
114"isLocalGuide": false,
115"stars": 3,
116"rating": null,
117"responseFromOwnerDate": null,
118"responseFromOwnerText": null,
119"reviewImageUrls": [],
120"reviewContext": {
121"Service": "Delivery",
122"Meal type": "Dinner",
123"Price per person": "$10–20",
124"visitedIn": "Visited in November",
125},
126"reviewDetailedRating": {}
127},
128]

📊 Popular times

1"popularTimesHistogram": {
2    "Su": [
3        {
4            "hour": 6,
5            "occupancyPercent": 0
6        },
7        // etc...
8    ],
9    "Mo": [
10        {
11            "hour": 6,
12            "occupancyPercent": 0
13        },
14        // etc...
15    ],
16    // etc...
17},

⌚️ Opening hours

1"openingHours": [
2    {
3        "day": "Monday",
4        "hours": "10:30 AM to 11 PM"
5    },
6    {
7        "day": "Tuesday",
8        "hours": "10:30 AM to 11 PM"
9    },
10    {
11        "day": "Wednesday",
12        "hours": "10:30 AM to 11 PM"
13    },
14    {
15        "day": "Thursday",
16        "hours": "10:30 AM to 11 PM"
17    },
18    {
19        "day": "Friday",
20        "hours": "10:30 AM to 12 AM"
21    },
22    {
23        "day": "Saturday",
24        "hours": "11 AM to 12 AM"
25    },
26    {
27        "day": "Sunday",
28        "hours": "11 AM to 10 PM"
29    }
30]

🧑‍🦽Additional info

1"additionalInfo": {
2    "Service options": [
3        {
4            "Outdoor seating": true
5        },
6        {
7            "Delivery": true
8        },
9        {
10            "Takeout": true
11        },
12        {
13            "Dine-in": true
14        }
15    ],
16    "Accessibility": [
17        {
18            "Wheelchair accessible entrance": true
19        },
20        {
21            "Wheelchair accessible parking lot": true
22        },
23        {
24            "Wheelchair accessible restroom": true
25        },
26        {
27            "Wheelchair accessible seating": true
28        }
29    ],
30    "Offerings": [
31        {
32            "Alcohol": true
33        },
34        {
35            "Beer": true
36        },
37        {
38            "Coffee": true
39        },
40        {
41            "Happy hour food": true
42        },
43        {
44            "Hard liquor": true
45        },
46        {
47            "Wine": true
48        }
49    ],
50    "Dining options": [
51        {
52            "Lunch": true
53        },
54        {
55            "Dinner": true
56        },
57        {
58            "Dessert": true
59        },
60        {
61            "Seating": true
62        }
63    ],
64    "Amenities": [
65        {
66            "Bar onsite": true
67        },
68        {
69            "Good for kids": true
70        },
71        {
72            "Restroom": true
73        },
74        {
75            "Free Wi-Fi": true
76        }
77    ],
78    "Atmosphere": [
79        {
80            "Casual": true
81        },
82        {
83            "Cozy": true
84        }
85    ],
86    "Crowd": [
87        {
88            "Groups": true
89        }
90    ],
91    "Planning": [
92        {
93            "Accepts reservations": true
94        }
95    ],
96    "Payments": [
97        {
98            "Debit cards": true
99        },
100        {
101            "NFC mobile payments": true
102        },
103        {
104            "Credit cards": true
105        }
106    ]
107}

🏨 Hotels

1"moreHotelsOptions": [
2  {
3    "url": "<https://www.booking.com/hotel/us/pittsburgh-3454-forbes.html?&checkin=2023-03-10&checkout=2023-03-11&group_adults=2&req_adults=2&show_room=33940104_356536769_2_2_0&lang=en&selected_currency=USD&exrt=1.00000000&ext_price_total=345.21&ext_price_tax=42.39&xfc=USD&group_children=0&req_children=0&&exfcam=_2&ts=1673860104&no_rooms=1&utm_source=metagha&utm_medium=mapresults&utm_campaign=US&utm_term=hotel-339401&utm_content=dev-desktop_los-1_bw-53_dow-Friday_defdate-1_room-0_gstadt-2_rateid-public_aud-0_gacid-_mcid-10_ppa-0_clrid-0_ad-0_gstkid-0_checkin-20230310_&aid=2127489&label=metagha-link-MRUS-hotel-339401_dev-desktop_los-1_bw-53_dow-Friday_defdate-1_room-0_gstadt-2_rateid-public_aud-0_gacid-_mcid-10_ppa-0_clrid-0_ad-0_gstkid-0_checkin-20230310_>",
4    "title": "Booking.com",
5    "price": "$303"
6  },
7  {
8  "url": "<https://www.hotels.com/Hotel-Search?selected=118998&startDate=2023-03-10&endDate=2023-03-11&>",
9  "title": "Hotels.com",
10  "price": "$303"
11  },
12],
13"similarHotelsNearby": [
14  {
15    "name": "Residence U Malvaz",
16    "rating": 4.3,
17    "reviews": 406,
18    "description": "Cozy hotel offering a restaurant",
19    "price": "$70"
20  },
21  {
22    "name": "Hotel U Zlatého Stromu",
23    "rating": 3.6,
24    "reviews": 656,
25    "description": "Refined rooms, plus breakfast & dining",
26    "price": "$64"
27  },
28],
29"hotelReviewSummary": {
30    "overall": {
31        "rating": 4.3,
32        "rooms": {
33            "rating": 3.4,
34            "reviews": [
35                "Guests liked the large rooms, though some said they were dated & maintenance could be improved",
36                "Rooms had views",
37                "Some guests mentioned bathroom cleanliness could be improved"
38            ]
39        },
40        "location": {
41            "rating": 4.35,
42            "reviews": [
43                "Near the city center; shopping, sightseeing, restaurants & bars nearby",
44                "Near public transit & the train station",
45                "Easily accessible by car"
46            ]
47        },
48        "servicesAndFacilities": {
49            "rating": 4.2,
50            "reviews": [
51                "Guests appreciated the friendly, professional staff",
52                "Conference space",
53                "Some guests said management could be improved"
54            ]
55        }
56    },
57},
58"hotelAds": [
59    {
60        "title": "Quality Inn & Suites North Mesquite I-30",
61        "googleUrl": "http://www.google.com/travel/clk?pc=AA80OsyEKcU8peDzfXQPvpUG67kThVMYt85_l5PBUvzONEzm22E30zXIXryhMcv0fx-v-vXnQGIgqZhdJEtg4KHVb9yU_i2purmPtJJGGfRHGdvoAOBSb5Es6Q97G5hl&pcurl=https://travel-productads.koddi.com/PropertyAdvocateAPI/ClickRedirect?client%3DChoice%26channel%3DGHPA%26placement%3Dmapresults%26campaign%3D%26hotel%3DTXM53%26destinationUrl%3Dhttps://www.choicehotels.com/TXM53-rates?checkInDate%3D2023-10-31%26checkOutDate%3D2023-11-01%26srp%3DSAPR1%26adults%3D2%26minors%3D0%26mc%3DHAGOHPUS%26meta%3DPMFGPADUSSAPR1_TXM53_mapresults_UA_1_desktop_2023-10-31_default___organic%26gal%3D%26pmf%3Dhpagoogle%26gpa%3DGPADSAPR1%26rooms%3D1%26gmp%3DMetaOrganic%26product%3Dmapresults",
62        "isOfficialSite": true,
63        "price": "UAH 3,301",
64        "url": "https://travel-productads.koddi.com/PropertyAdvocateAPI/ClickRedirect?client=Choice&channel=GHPA&placement=mapresults&campaign=&hotel=TXM53&destinationUrl=https://www.choicehotels.com/TXM53-rates?checkInDate=2023-10-31&checkOutDate=2023-11-01&srp=SAPR1&adults=2&minors=0&mc=HAGOHPUS&meta=PMFGPADUSSAPR1_TXM53_mapresults_UA_1_desktop_2023-10-31_default___organic&gal=&pmf=hpagoogle&gpa=GPADSAPR1&rooms=1&gmp=MetaOrganic&product=mapresults"
65    },
66    {
67        "title": "Priceline",
68        "googleUrl": "http://www.google.com/travel/clk?pc=AA80OswzeSZnWc2GmNOarZNhUy6VjtVUcK1-PukCoK5E2QdYOn4bEYCV0qiVDdVrP9_peY2pAak4rl0np9-nJvvmPkrqrfQodCIXRy5j9HGCzrNnTtR14xh3oEmD3_dWOIfMiVY&pcurl=https://www.priceline.com/r/?channel%3Dmeta%26product%3Dhotel%26theme%3Dghalistings%26refid%3DPLGOOGLEMSS%26refclickid%3DUA_HP%257C1355603_mapresults_1%257C20231031%257Cdesktop%257Cdefaultdate%7Cpublic%7C%7C%7C13%257C2%257C0%7C0%26hotelid%3D1355603%26checkin%3D20231031%26checkout%3D20231101%26rooms%3D1%26currency%3DUSD%26displayedCurr%3DUAH%26pOSCountryCode%3DUA%26taxDisplayMode%3DBP%26cityid%3D3000021516%26adults%3D2%26land%3DL%26metaid%3DjEaTJFi32p0SD8afEYFLBreXOYQj6zSfalpufEB8GYEio8Cydl0_T3F5VOCbPgeEqSvUJXpBrn1qr1wMxewrNLQaT-ZaAl5KC29DC8VOxBTlhK42D_VSf0bdeeFXnEjk3JO0RbUY4vmkCdlkpWaG76n4VGXSe-4zBDpLMKdOyzP5WX1T8Fly6Mi_Cd-cxKmxkCinAwZb_UmvSj0pJm9zq1SfiyGSg_ZU8g6M_DmKnfBYQBUfoaKycD9i9qSIIq7DggIm4b_xNveZdVmSnfFzIw%26dblcnt%3Dtrue%26user_num_adults%3D2%26pdtax%3D358.54%26pdt%3D3117.80",
69        "isOfficialSite": false,
70        "price": "UAH 3,118",
71        "url": "https://www.priceline.com/r/?channel=meta&product=hotel&theme=ghalistings&refid=PLGOOGLEMSS&refclickid=UA_HP|1355603_mapresults_1|20231031|desktop|defaultdate|public|||13|2|0|0&hotelid=1355603&checkin=20231031&checkout=20231101&rooms=1&currency=USD&displayedCurr=UAH&pOSCountryCode=UA&taxDisplayMode=BP&cityid=3000021516&adults=2&land=L&metaid=jEaTJFi32p0SD8afEYFLBreXOYQj6zSfalpufEB8GYEio8Cydl0_T3F5VOCbPgeEqSvUJXpBrn1qr1wMxewrNLQaT-ZaAl5KC29DC8VOxBTlhK42D_VSf0bdeeFXnEjk3JO0RbUY4vmkCdlkpWaG76n4VGXSe-4zBDpLMKdOyzP5WX1T8Fly6Mi_Cd-cxKmxkCinAwZb_UmvSj0pJm9zq1SfiyGSg_ZU8g6M_DmKnfBYQBUfoaKycD9i9qSIIq7DggIm4b_xNveZdVmSnfFzIw&dblcnt=true&user_num_adults=2&pdtax=358.54&pdt=3117.80"
72    }
73]

✍️ Updates from customers

1"updatesFromCustomers": {
2    "text": "Disneyland California Adventure small area with large park all inclusive celebrations. This is a glimpse into Los Reyes parade.  I'm a true fan. Thanks",
3    "language": "en",
4    "postDate": "a week ago",
5    "postedBy": {
6        "name": "Kayla Arredondo",
7        "url": "<https://www.google.com/maps/contrib/102968882116587973980?hl=en-US>",
8        "title": "Local Guide",
9        "totalReviews": 225
10    },
11    "media": [
12        {
13            "link": "<https://lh3.googleusercontent.com/ggms/AF1QipNNaoT0NSbcWOPSduvZNqJ0kSqUs-dod32FeBtr=m18>",
14            "postTime": "a week ago"
15        }
16    ]
17}

❓Questions and answers

1"questionsAndAnswers": [{
2    "question": "Which is the best easier way to drop off a family to Disneyland Park",
3    "answer": "best way for drop off family is at down town Disney. Drop them off then you can take a short walk to the park. ",
4    "askDate": "5 years ago",
5    "askedBy": {
6        "name": "Cecilia Salcedo",
7        "url": "<https://www.google.com/maps/contrib/109041536347893604294>"
8    },
9    "answerDate": "5 years ago",
10    "answeredBy": {
11        "name": "Gabby Lujan",
12        "url": "<https://www.google.com/maps/contrib/105966144333216697667>"
13    }
14}]

🌐 Web results

1"webResults": [
2    {
3        "title": "Hotel & restaurant SIGNAL, Pardubice – Updated 2023 Prices",
4        "displayedUrl": "<https://www.booking.com> › hotel › signal",
5        "description": "Located 1.2 mi from Pardubice city center, this hotel offers a ... Josefa Janáčka 708, Pardubice, 53012, Czech Republic – Great location - show map."
6    },
7    {
8        "title": "Hotel & restaurant SIGNAL, Pardubice - Booking.com",
9        "displayedUrl": "<https://www.booking.com> › signal.en-gb.html",
10        "description": "Located 2 km from Pardubice city centre, this hotel offers a traditional ... Josefa Janáčka 708, Pardubice, 53012, Czech Republic – Great location - show ..."
11    },
12    {
13        "title": "Hotel & restaurant SIGNAL, Pardubice - 2023 Reviews ...",
14        "displayedUrl": "<https://www.agoda.com> › ... › Pardubice Hotels",
15        "description": "Hotel & restaurant SIGNAL. Josefa Janáčka 708, Pardubice III, Pardubice, Czech Republic, 53012 - See map."
16    }
17],

🖼 Image authors

1{
2    "images": [
3        {
4            "imageUrl": "https://lh5.googleusercontent.com/p/AF1QijfewfPM7p9nKx5nYTe1T-dwfjiwofjwi=w1920-h1080-k-no",
5            "authorName": "owpokes",
6            "authorUrl": "https://maps.google.com/maps/contrib/57239857238562329823052835232942342342338523",
7            "uploadedAt": "2024-02-05T00:00:00.000Z"
8        }
9    ]
10}

🏩 External places (hotels)

Google sometimes shows these places when searching in certain locations, mainly for hotels. They are however not regular places with pins on the map and offer only some of the regular output fields. These places are marked with 3 extra output fields:

1{
2  "url": "https://www.google.com/maps/place/Al Eairy Furnished Apartments Al Madinah 9/@24.4857006,39.6083984,14z/data=!3m1!4b1!4m9!3m8!5m2!4m1!1i2!8m2!3d24.4857006!4d39.6083984!16s%2Fg%2F11pkhzvq1s!17BQ0FF",
3  "isExternalServicePlace": true,
4  "externalServiceProvider": "SuperTravel",
5  "externalId": "/g/11pkhzvq1s"
6}

🧑‍🏫 How do I use Google Maps Scraper?

To understand how to set up and run the scraper, you can follow our step-by-step guide or watch a short video tutorial ▷ on YouTube.

You can also follow our extended guide on how to use the Google Maps Scraper geolocation features (scraping by coordinates or applying map zoom) 🛰 .

Location, country, state, county, city, and postal code

Using free text locationQuery (or Location field) should normally be enough. But you can instead use a combination of country, state, county, city, and postalCode if Location isn’t specific enough for your search.

This scraper uses Open Street Map for geolocation API. You can easily check the location matching your geolocation input on the official Open Street Map page.

📡 Define the search area

This section will teach you to customize geolocation features, overcome the 120 results limit or skip large areas such as lakes or forests. You can also follow this video guide or this step-by-step explanation.

🔎 Automatic zooming to overcome the Google Maps limit

If you look at Google Maps website, you’ll notice that when zooming out, you can see less of Google places pins. You'll also notice that zooming in on smaller areas (making zoom higher) can uncover many of those hidden pins. The advantage of higher zoom is that it can find - and scrape - more places (shown as pins). However, locations with higher zoom also take significantly longer to scrape and are more computationally expensive. Generally, there are diminishing returns for increasing zoom.

By default, you don’t have to set up this parameter. The scraper automatically zooms on the location on Google Maps to ensure the most efficient scraping based on the size of the scraped area. But of course, you can override the default zoom. zoom can be any number between 1 (a whole globe) and 21 (a few houses). Currently, example zoom values for various locations are (maximum for automatic is 17):

  • United States - 10 zoom (10,371,139 km2)
  • Germany - 12 zoom (380,878 km2)
  • London - 15 zoom (1,595 km2)
  • Manhattan - 16 zoom (87.5 km2)
  • Soho - 17 zoom (0.35 km2)

If you need guidance on how to run the Google Maps Scraper with zoom, follow our step-by-step tutorial 🔗 or video guide ▷ on YouTube.

🏙 Deeper city scrape

Enabling deeperCityScrape option enables you to extract significantly more places from larger areas because each city in the region usually has a thicker concentration of Google places. It also helps the Google Maps Scraper to skip areas without any population such as deserts, mountains, or oceans. The scraper simply won’t be wasting any of your time or compute units for those and will focus on the cities instead. This option is especially useful for scraping places in countries with vast unpopulated areas such as Australia or Canada.

Note that enabling this feature will increase the runtime (by extracting more places). This feature will likely become a default setting in the near future but is currently opt-in to allow for a smooth transition.

🛰 Custom search area

If your location can’t be found on Google Maps or you want to customize it for a specific area, you can use the Custom search area function. You’ll have to provide coordinate pairs for an area and the scraper will create start URLs out of them. As an example, see the geojson field in Nominatim Api (example of Cambridge in Great Britain).

There are several types of search area geometry that you can use in Google Maps Scraper: Polygon, MultiPolygon and Point (Circle). All of them follow the official Geo Json RFC and all types are supported. We’ve found the polygons and circle to be the most useful ones when it comes to scraping.

Note that the order of longitude and latitude is reversed in GeoJson 🔄 compared to the Google Maps website. The first field must be longitude ↕️, the second field must be latitude ↔️.

We recommend using Geojson.io to create customGeolocation of any type/shape in correct format. You can watch this video on how to use it together with our scraper.

💠 Polygon

The most common type is a polygon, which is a set of points that define the scraped area. Note that the first and last pair of coordinates must be identical (to close the polygon). This example covers most of the city of London, UK:

1{
2    "type": "Polygon",
3    "coordinates": [
4        [
5            [
6                // Must be the same as last one
7                -0.322813, // Longitude
8                51.597165 // Latitude
9            ],
10            [
11                -0.314990,
12                51.388023
13            ],
14            [
15                0.060493,
16                51.389199
17            ],
18            [
19                0.051936,
20                51.600360
21            ],
22            [
23                // Must be the same as the first one
24                -0.322813,
25                51.597165
26            ]
27        // ...
28        ]
29    ]
30}

💠💠 MultiPolygon

MultiPolygon can combine more polygons that are not continuous together (can be an island + part of mainland). Same as with the polygon, make sure the first and the last pair of coordinates in each polygon are identical.

1{
2    "type": "MultiPolygon",
3    "coordinates": [
4        [ // first polygon
5            [
6                [
7                    12.0905752, // Longitude
8                    50.2524063  // Latitude
9                ],
10                [
11                    12.1269337,
12                    50.2324336
13                ],
14                // ...
15            ]
16        ],
17        [
18            // second polygon
19            // ...
20        ]
21    ]
22}

🔘 Circle

For a circle, we can use the Point type with our custom parameter radiusKm. Don't forget to change the radius to fit your needs. This example covers the city of Basel in Switzerland:

1{
2    "type": "Point",
3    "coordinates": ["7.5503", "47.5590"],
4    "radiusKm": 8
5}

❓FAQ

📚 Resources on how to scrape Google Maps

  1. Step-by-step guide on how to use Google Maps Scraper.
  2. Video tutorial ▷ on how to use Google Maps Scraper.
  3. Input tab with all the technical parameters of this scraper.
  4. Is web scraping legal? - your extended reference to ethical scraping.
  5. Step-by-step guide on how to use geolocation features.
  6. Video tutorial ▷ on how to use geolocation features.
  7. Platform pricing page with pricing specifications.
  8. Video guide ▷ on how to choose the right subscription plan.
  9. Webinar on scraping Google Maps with detailed answers on data extraction cases from Google Maps.
  10. Comprehensive guide on Google Maps scraping: images, restaurants, franchises, placeid, scraping the places from the whole country or city.

What Google Maps data can I scrape?

With this Google Maps scraper, what you see is what you get. You can use this tool to get the following data from Google Maps:

🔗 Title/name 📝 Subtitle, category, place ID, and URL
📍 Address🌍 Location, plus code and exact coordinates
☎️ Phone🌐 Website, if available
🏷 Menu💲 Price bracket
🔒 Temporarily or permanently closed status⛽️ Gas prices
⭐️ Average rating (totalScore)📊 Review count and review distribution
➕ List of detailed characteristics (additionalInfo)📸 List of images
🧑‍🍳 Opening hours⌚️ Popular times - histogram & live occupancy
🏨 Hotel booking URL and price + nearby hotels🔍 People also search
🙋 Updates from customers & Questions and answers🌐 Web results

Can I use the Google Maps scraper to extract Google reviews?

Yes. This Google Maps scraper also supports the extraction of detailed information about reviews on Google Maps. Note that Personal data extraction about reviewers is also possible but has to be explicitly enabled in input (see the Legality of scraping Google Maps section).

📝 Review text📅 Published date
🌟 Stars🆔 Review ID & URL
✅ Response from the owner - text📷 List of review images
💬 Review context📊 Detailed rating per service
🧛 Reviewer’s name ✍️ Reviewer’s number of reviews
🖼 Reviewer’s ID, URL & photo 👋 IsLocalGuide

How does Google Maps Scraper work?

It works exactly as if you were searching through Google Maps and copying information from each page you find. It opens the Google Maps website, goes to a specified location, then writes your search query into the search bar. Then it scrolls down until it reaches the end of the scroll bar or maxCrawledPlacesPerSearch. It enqueues all the places as separate pages and then copypastes all visible data into an organized document. This process is repeated for many map pages inside the input location. To understand the process fully, just try it out in your browser - the scraper does exactly the same thing, only much faster.

Can I scrape places from multiple locations?

While Google Maps Scraper supports only single location query, you can use Google Maps Scraper Orchestrator to scrape multiple locations with a single list. It will automatically run the Google Maps Scraper for each location in the list and merge the results. It also fully uses your Apify account memory for maximum speed. If you want to use only Google Maps Scraper, you can add multiple locations using customGeolocation with multiple polygons.

How can I increase the speed of the scraper?

You can increase the run memory up to 32 GB per run. To speed up the scraping even more, you can run several runs at once to fully utilize all your account memory. To make this simpler, you can use the Google Maps Scraper Orchestrator to split locations or search terms over multiple runs, deduplicate the results and collect them to a single dataset.

How can I visualize the scraped results?

Google Maps Scraper provides a visual map page that renders the scraped places. You can zoom in and out to for different granulatity. The map is shown in the "Live View" tab on the actor run page and also stored in the Key-Value Store as results-map.html record.

What are the disadvantages of the Google Maps API?

With the Google Maps API, you get $200 worth of credit usage every month free of charge. That means 28,500 map loads per month. However, the Google Maps API caps your search results to 60, regardless of the radius you specify. So, if you want to scrape data for bars in New York, for example, you'll get results for only 60 of the thousands of bars in the area.

Google Maps Scraper imposes no rate limits or quotas and provides more cost-effective, comprehensive results, and also scrapes histograms for popular times, which aren't available in the official API.

Web scraping is legal if you are extracting publicly available data which is most data on Google Maps. However, you should respect boundaries such as personal data and intellectual property regulations. You should only scrape personal data if you have a legitimate reason to do so, and you should also factor in Google's Terms of Use.

Want to build your own Google Maps scraper?

Google Maps Scraper doesn’t exactly do what you need? You can always build your own! We have various scraper templates in Python, JavaScript, and TypeScript to get you started. Alternatively, you can write it from scratch using our open-source library Crawlee. You can keep the scraper to yourself or make it public by adding it to Apify Store (and find users for it).

Or let us know if you need a custom web scraping solution.

What are other tools for scraping Google Maps services?

Use the dedicated scrapers below if you want to scrape specific Google Maps data. Each of them is built particularly for the relevant map scraping case be it reviews only, gas prices, OCR from pins, or itineraries. Feel free to browse them:

📩 Google Maps Email Extractor⭐️ Google Maps Reviews Scraper
💼 Google Maps Business Scraper🏎 Google Maps Extractor
🪢 Google Maps Scraper Orchestrator⭐️ AI Text Analyzer for Google Reviews
🧭 Google Maps Itinerary🍃 Fast Google Maps Scraper
🍎 Apple Maps Scraper ⛽️ Gas Prices Scraper

How can I get one review per row in the output?

If you need to view reviews in a table with each review in a separate row, you can click on the Reviews (if any) Export dataset view.

To use this view via API, you need to add &view=reviews to the dataset export URL. E.g. https://api.apify.com/v2/datasets/DATASET_ID/items?clean=true&format=json&view=reviews

If you don't use the Reviews (if any) view, each output place item will contain a maximum of 5,000 reviews (in table format, it means a lot of columns). So if there are more reviews for that place, a duplicate place will be stored with the next 5,000 reviews, and so on. For instance, in a case of 50,000 reviews, the resulting dataset will have 10 items for the same place. We have this limitation due to the size limit of a single item in the Apify dataset.

Can I integrate Google Maps Scraper with other apps?

Last but not least, Google Maps Scraper can be connected with almost any cloud service or web app thanks to integrations on the Apify platform. You can integrate with Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and more. Or you can use webhooks to carry out an action whenever an event occurs, e.g. get a notification whenever Google Maps Scraper successfully finishes a run.

Can I use Google Maps Scraper with the API?

The Apify API gives you programmatic access to the Apify platform. The API is organized around RESTful HTTP endpoints that enable you to manage, schedule, and run Apify actors. The API also lets you access any datasets, monitor actor performance, fetch results, create and update versions, and more.

To access the API using Node.js, use the apify-client NPM package. To access the API using Python, use the apify-client PyPI package.

Check out the Apify API reference docs for full details or click on the API tab for code examples or this videoguide.

What can I use the extracted data from Google Maps for?

📊 Create a potential customer base and prospection files

🔍 Find new clients

🎯 Generate leads

🔎 Search and analyze businesses similar to yours

📈 Monitor brand sentiment and service quality, and identify fake reviews

🛒 Find where to buy products

🌍 Analyze geospatial data for scientific or engineering work

💼 Develop a working market strategy

Your feedback

We’re always working on improving the performance of our Actors. So if you’ve got any technical feedback for Google Maps Scraper or simply found a bug, please create an issue on the Actor’s Issues tab in Apify Console.

Developer
Maintained by Apify

Actor Metrics

  • 3.4k monthly users

  • 554 stars

  • 99% runs succeeded

  • 6.2 days response time

  • Created in Nov 2018

  • Modified 2 hours ago