Extract data from thousands of Google Maps locations and businesses, including reviews, reviewer details, images, contact info, including full name, email, and job title, opening hours, prices & more. Export data, run via API, schedule and monitor runs, or integrate with other tools.
reviewsRemovedNotice output field (place detail). It captures the notice Google shows on (mainly German) business profiles reporting how many reviews were removed following defamation complaints, e.g. { "text": "One review removed due to a defamation complaint." }. It is omitted for places without the notice.reviewsFilterString input option to filter reviews by keywords β only reviews containing the given keywords are scraped, leave it blank to scrape all reviews.enableCompetitorAnalysis to get an LLM-generated competitor analysis across the scraped places. Use maxCompetitorsToAnalyze to control how many places are analyzed (default: 30, max: 100) β the scraper caps the total places scraped to this number. Enabling the add-on automatically forces full place detail scraping, at least 100 reviews per place, and social media profile enrichment for all places. Results include per-place strengths, weaknesses, and USPs backed by review citations, social media insights, a comparative ranking across all analyzed places, and an interactive map visualization. The report is pushed to a dedicated competitorAnalysis named dataset.tableReservationProviders output field, which lists all reservation providers offered by a place.restaurantData output field (including its tableReservationProvider property). Use the new top-level tableReservationProviders field instead. The field is still populated for backwards compatibility.forceEng input field. Use the language input option instead.orderOnline extraction is now opt-in. Set the new input option scrapeOrderOnline: true to receive this field. Previously it was populated automatically whenever the place detail page was scraped, now it defaults to undefined unless the option is enabled. The data now requires an extra HTTP request with strong unblocking parameters.orderBy field has been removed from the output. Use orderOnline.pickUps (and orderOnline.deliveries) instead.servicesLink output field containing the booking / appointment URL for service places (e.g. massage parlors, barbershops).reviewId is now always included in review data, even when personal data scraping is disabled.orderOnline.pickUps and orderOnline.deliveries.orderBy field is now deprecated and has been replaced by orderOnline.pickUpscountry=cn and state=hk to scrape Hong Kong.placeIds) for specifying places to scrape with their ID. You'll find the option in "π Scrape with Google Maps URLs or place IDs" section.additionalInfo field for places that have it. Don't return null for unknown data formats.maximumLeadsEnrichmentRecords ("β© Add-on: Extract business leads information - Maximum leads per place"): Allows setting the maximum number of leads to extract per place. By default set to 0, which means this feature is disabledleadsEnrichmentDepartments ("Leads departments selection"): Enables filtering leads by specific departments (C-Suite, Product, Engineering & Technical, Design, Education, Finance, Human Resources, Information Technology, Legal, Marketing, Medical & Health, Operations, Sales, Consulting)language (in which the places were scraped in, based on the user input) to the resulting placesadditionalOpeningHours (e.g. for Delivery or Drive through) and openingHoursBusinessConfirmationText (e.g. Confirmed by this business 6 weeks ago)originalLanguage and translatedLanguage to reviews datastartUrls field (Google-Maps-Reviews-Scraper)deeperCityScrape by default and removed it from Input form. It can be still disabled in JSON.reviewsOrigin option to choose whether to scrape all reviews or just reviews from Google.scrapeTableReservationProvider input option (disabled by default) to scrape table reservation provider's datamountain peak categorywebsiteswimming pool repair service categoryuserListNotescrapeReviewerName, scrapeReviewerId, scrapeReviewerUrl, scrapeReviewId, scrapeReviewUrl) were merged into one - scrapeReviewsPersonalData.vitamin & supplements store categorybookingLinkstableReservationLinksname after change from Google.fid (feature ID) to the outputScrape all places (no search term) by changing the scraping method.maxImages: 1 initiating image scrolling which made the scraper slower. This bug was introduced a few weeks ago.google-maps-extractor)reviewsStartDate now supports both relative dates as number and time unit (e.g. 2 weeks, 7 months) and date with time in partial ISO format (e.g. 2024-05-03T12:00:00). Both of these now only work in JSON input but visual component is coming soon.webResults sometimes timeoutinghotelStars to search results from search pageall_places_no_search_ocr. For several past versions, there was a bug that caused the search overlay to block part of the map.postalCode if it's defined in the input.scrapeImageAuthors to true. In output, it will be stored in images field, where each item contains, imageUrl, authorName, authorUrl and uploadedAt.gps-proxy images URLs (those were inaccessible to users after scraping finishes) - actor is able to detect and replace them with non-gps URL.price and cid fields to search results from search pagebeach and public beachquestionsAndAnswers using a new maxQuestions input parameter.questionsAndAnswers is now an array, instead of an object. We try to avoid breaking changes where possible but since this questionsAndAnswers output field is not used often we decided to prioritize data cleanliness.text extractionreviewOrigin to reviews - whether the review comes from Google, Tripadvisor or else.placeMinimumStars although Google completely removed this search option, the scraper now post-filters the places. This option might be deprecated in the future.visitedIn field to the review data in the output. This field provides the date or time period of the reviewer's visit to the placescrapeDirectories option to scrape places' directories (e.g. places inside malls)neighborhood should contain correct valueprice valueshotelAds field to outputcategoryFilterWords to select & limit what exact Google categories should be scraped. You can also use the categories instead of search terms.displayedUrl in web resultshotelReviewSummary field to outputreviewsFilterString after Google redesignorderBy for some specific place/language combinationssubTitle extraction by extracting also from JSON data (Google uses this field for various meanings)peopleAlsoSearch if empty (it is empty array, used to by array of null values)imageCategories field to outputorderBy extractionskipClosedPlaces to input to skip permanently or temporarily closed places.Partial matches or Don't see what you're looking for?). These can be the places you want but Google is not sure about it. Usually, it has only about 2 places in the results. You can see a warning message in the log if the match was only partial.allPlacesNoSearchAction can now be used in combination with startUrls if they don't contain a search term. This allows scraping only a single map page for all places (no search term).placeMinimumStars input option to only include places that have an average rating higher than the provided input.isExternalServicePlace, externalServiceProvider (e.g. Tripadvisor.com, Booking.com), and externalId.deeperCityScrape now scans all cities from the database, not just those over 10,000 population.deeperCityScrape now creates circle polygons for cities with no polygon data in the database and does that also when the city area includes too large regions. This results in better performance and more places found.deeperCityScrape option in the next release (likely next week). This should bring the best of both worlds and scan the cities deeper while also traversing the countryside, just with a smaller zoom. This will result in higher compute usage for the same searches (while finding more results) but we will also enable adjusting the zoom level up or down to control the coverage and cost better.deeperCityScrape input option to extract more places from larger areas like countries and regions. See the readme and input for a detailed explanation. This option will become the default behavior in the future.placeId and have generally different data format. Eventually, we plan to support them. For now, it seems like a rare occurrence.maxCrawledPlacesPerSearch or gets too many empty/redirect searches in a row (currently 20), it will quickly remove the rest of the searches for the same term from the queue. Previously it would blindly keep trying to scrape something there wasting resources.maxCrawledPlacesPerSearch when onlyDataFromSearchPage is used.lukaskrivka/actor-fail-manager via webhook.allPlacesNoSearchAction that produce captchas (can happen at very high scraping speed)allPlacesNoSearchAction to prevent captchas. This slows down the scraping slightly.customeGeolocation longitude and latitude order. Fail if out of bounds and add a warning if the values look unreasonable (inside the ocean).onlyDataFromSearchPage (replaces exportPlaceUrls) which allows the extraction of some of the data from the search page without going to the place's detail page.exportPlaceUrls input option. As usual, we keep it backward compatible for a long-time."allPlacesNoSearchAction": "all_places_no_search_mouse" input option as it was extremely slow. It now automatically fallbacks to all_places_no_search_ocr which is the only option now.proxyConfiguration from input schema. This scraper works well with default datacenter proxies and changing it was causing issues. For special cases, proxy can stil be passed in proxyConfiguration field in JSON input.customGeolocation, you can now provide any valid type.text field contains the original text and textTranslated contains the translated text.reviewsTranslation input setting is no longer required and was removed and we include both if available.reviewContext and reviewDetailedRating to all reviews where available. Examples in readme.adjustZoomDynamically is now used for all geolocation input types!locationQuery is now the prominent location input with prefilled valuecustomGeolocation applies correct zoom again (this broke during the last release)adjustZoomDynamically input option. This changes the zoom from constant table based on geolocation type (country = zoom 12, city = zoom 15, etc.) into a calculated value based on area of the found location. Realistically, this means that very big countries might have 1-2 smaller zoom while very small areas might have 2-5 higher zoom to get more detailed scrape. Below are some examples from the new calculation:adjustZoomDynamically to true for customGeolocation.https://goo.gl/maps/...)permanentlyClosed value from JSON datamenu output field is now extracted correctly again. The whole URL to the menu is provided now.webResults field to output. You have to enable that in input with includeWebResults field. There is a small performance impact when this is enabled.Russia and Canada are now scraped with lower zoom to make the scrape more efficient. This applies only if whole country should be scraped.locationQuery input field. This can be used instead of country, state, city, etc. if those are not matching. This is mostly useful for very small states or regions. But it can also be used for free text description of the location.Dominica countryreviewerPhotoUrl and reviewImageUrls field to review outputsimilarHotelsNearby field to output.price and description extraction to support more languages.reviews extraction, it's now faster and can extract more reviews.temporarilyClosed field not being extracted properly in some cases.updatesFromCustomers field to output."updatesFromCustomers": {
"text": "Disneyland California Adventure small area with large park all inclusive celebrations. This i
"language": "en",
"postDate": "a week ago",
"postedBy": {
"name": "Kayla Arredondo",
"url": "https://www.google.com/maps/contrib/102968882116587973980?hl=en-US",
"title": "Local Guide",
"totalReviews": 225
},
"media": [
{
"link": "https://lh3.googleusercontent.com/ggms/AF1QipNNaoT0NSbcWOPSduvZNqJ0kSqUs-dod32FeBtr=m
"postTime": "a week ago"
}
]
}questionsAndAnswers field to output."questionsAndAnswers": {
"question": "Which is the best easier way to drop off a family to Disneyland Park",
"answer": "best way for drop off family is at down town Disney. Drop them off then you can take a shor
"askDate": "5 years ago",
"askedBy": {
"name": "Cecilia Salcedo",
"url": "https://www.google.com/maps/contrib/109041536347893604294"
},
"answerDate": "5 years ago",
"answeredBy": {
"name": "Gabby Lujan",
"url": "https://www.google.com/maps/contrib/105966144333216697667"
}
}reserveTableUrl extraction for restaurants.reviewsFilterString to input that enables you to filter reviews by search string.googleFoodUrl field to output.peopleAlsoSearch. It is now in this format, more fields will be added to it:"peopleAlsoSearch": [
{
"category": "Czech restaurants",
"title": "Restaurant MlΓ½nec",
"reviewsCount": 2561,
"totalScore": 4.7
}
]popularTimesHistogram, openingHours, additionalInfo and peopleAlsoSearch are now added to the data all the time. This means includeHistogram, includeOpeningHours, additionalInfo and includePeopleAlsoSearch input fields no longer have any effect.omit URL parameter (e.g. add to dataset URL &omit=popularTimesHistogram,openingHours,additionalInfo,peopleAlsoSearch). This can also be chosen in the export UI.reserveTableUrl field to output for restaurants.reviewsTags and placesTags fields to output.description field to output.checkInDate and checkOutDate fields to the output (The price for hotels is based on these dates).moreHotelsOptions field to output.maxConcurrency input field.searchMatching to input that enables you to specify how the search term should match the place name.Korea, Tanzania and Congo were not found by the scraper.hotelStars to output (example value "5-star hotel").lat and lng input fields from input schema but it will keep working as it is passed in input. Prefer using geolocation options like city or country instead. You can also still use it in direct URLs.maxAutomaticZoomOut input field from input schema. It will also keep working as it is.claimThisBusiness to output.imagesCount to output. It is displayed even if you don't extract their URLs.maxCrawledPlaces from input completely (use maxCrawledPlacesPerSearch instead)maxCrawledPlacesPerSearch leading to scraper being hang out in some casesnewest doesn't sort properly though yet.gasPrices to output. Available only for gas stations in US to the best of our knowledge.maxCrawledPlaces + exportPlaceUrls was giving inconsistent number of results.allPlacesNoSearch to input. This option allows you to scrape all places shown on the map without the need for any search term.reviewsStartDate to input to extract only reviews newer than this date.radiusKm to the Point type in customGeolocationadditionalInfo extraction is faster now.additionalInfo extraction for hotels and similar categories is more complete now: Data which is not displayed on the Google page but present in the Google response is also extracted.zoom parameter. New default values are: country or state β 12 county β 14 city β 15 postalCode β 16 no geolocation β 12location extraction works in (almost) all cases now (search URLs and URLs with place IDs will always work).oneReviewPerRow to input to enable expanding reviews one per output rowExtract data from thousands of Google Maps locations and businesses, including reviews, reviewer details, images, contact info, including full name, email, opening hours, price...
Extract data from thousands of Google Maps locations and businesses, including reviews, reviewer details, images, contact info, including full name, email, and job title, openin...
Extract data from hundreds of places fast. Scrape Google Maps by keyword, category, location, URLs & other filters. Get addresses, contact info, opening hours, popular times, price...
Extract Google Maps contact details. Scrape websites of Google Maps places for contact details and get email addresses, website, location, address, zipcode, phone...