Google Maps Scraper
No credit card required
Google Maps Scraper
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¤cy=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
- Step-by-step guide on how to use Google Maps Scraper.
- Video tutorial ▷ on how to use Google Maps Scraper.
- Input tab with all the technical parameters of this scraper.
- Is web scraping legal? - your extended reference to ethical scraping.
- Step-by-step guide on how to use geolocation features.
- Video tutorial ▷ on how to use geolocation features.
- Platform pricing page with pricing specifications.
- Video guide ▷ on how to choose the right subscription plan.
- Webinar on scraping Google Maps with detailed answers on data extraction cases from Google Maps.
- 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.
Is it legal to scrape Google Maps data?
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:
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.
Actor Metrics
3.3k monthly users
-
537 stars
99% runs succeeded
5.9 days response time
Created in Nov 2018
Modified 17 hours ago