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🔍 Search term(s)
searchStringsArray
arrayOptional
Type what you’d normally search for in the Google Maps search bar, like English breakfast or pet shelter. Aim for unique terms for faster processing. Using similar terms (e.g., bar vs. restaurant vs. cafe) may slightly increase your capture rate but is less efficient.
⚠️ Heads up: Adding a location directly to the search, e.g., restaurant Pittsburgh, can limit you to a maximum of 120 results per search term due to Google Maps' scrolling limit.
You can also use direct place IDs here in the format place_id:ChIJ8_JBApXMDUcRDzXcYUPTGUY
.See the detailed description.
📍 Location (use only one location per run)
locationQuery
stringOptional
Define location using free text. Simpler formats work best; e.g., use City + Country rather than City + Country + State. Verify with the OpenStreetMap webapp for visual validation of the exact area you want to cover.
⚠️ Automatically defined City polygons may be smaller than expected (e.g., they don't include agglomeration areas). If you need to define the whole city area, head over to the 📡 Geolocation parameters* section instead to select Country, State, US County, City, or Postal code.
For an even more precise location definition (especially when using City name as a starting point), head over to 🛰 Custom search area section to create polygon shapes of the areas you want to scrape. Note that 📍 Location settings always take priority over 📡 Geolocation* (so use either section but not both at the same time).
For guidance and tricks on location definition, check our tutorial.
💯 Number of places to extract (per each search term or URL)
maxCrawledPlacesPerSearch
integerOptional
Number of results you expect to get per each Search term, Category or URL. The higher the number, the longer it will take.
If you want to scrape all places available, leave this field empty or use this section 🧭 Scrape all places on the map*.
🌍 Language
language
EnumOptional
Results details will show in this language.
Value options:
"en": string"af": string"az": string"id": string"ms": string"bs": string"ca": string"cs": string"da": string"de": string"et": string"es": string"es-419": string"eu": string"fil": string"fr": string"gl": string"hr": string"zu": string"is": string"it": string"sw": string"lv": string"lt": string"hu": string"nl": string"no": string"uz": string"pl": string"pt-BR": string"pt-PT": string"ro": string"sq": string"sk": string"sl": string"fi": string"sv": string"vi": string"tr": string"el": string"bg": string"ky": string"kk": string"mk": string"mn": string"ru": string"sr": string"uk": string"ka": string"hy": string"iw": string"ur": string"ar": string"fa": string"am": string"ne": string"hi": string"mr": string"bn": string"pa": string"gu": string"ta": string"te": string"kn": string"ml": string"si": string"th": string"lo": string"my": string"km": string"ko": string"ja": string"zh-CN": string"zh-TW": string
Default value of this property is "en"
Number of images to extract
maxImages
integerOptional
Set the number of images per place you expect to scrape. To extract all images, leave this field empty. The higher the number, the slower the search.
🧑🎨 Include the image authors
scrapeImageAuthors
booleanOptional
Include the author name for each image.
⚠️ Enabling this toggle may slow down processing as it requires fetching information for each image individually.
Default value of this property is false
🏎💨 Fast scraping: search page results only (no website, phone or contact details)
onlyDataFromSearchPage
booleanOptional
Speed up data extraction significantly by scraping only basic data from the search page.
⚠️ For each place, it extracts ONLY title
, placeId
, location
, address
, neighborhood
, street
, city
, postalCode
, state
, countryCode
, categoryName
, categories
, isAdvertisement
, and url
.
Default value of this property is false
🌐 Include "Web results"
includeWebResults
booleanOptional
Extract the "Web results" section located at the bottom of every place listing.
⚠️ Note that this feature slightly increases compute and proxy usage.
Default value of this property is false
🛍 Scrape inside places (e.g. malls)
scrapeDirectories
booleanOptional
Some places (e.g. malls) can have multiple businesses located inside them. Turn this toggle on to include those places in your results.
⚠️ Note that the 🏎💨 Fast scraping option needs to be disabled in order to scrape directories.
Default value of this property is false
Scrape table reservation provider data
scrapeTableReservationProvider
booleanOptional
Scrape table reservation provider data like name, address, email or phone. This data is present only in restaurants that have blue "RESERVE A TABLE" button
Default value of this property is false
Number of reviews to extract
maxReviews
integerOptional
Set the number of reviews you expect to get per place. To extract all reviews, leave this field empty.
Each output place item can contain maximum 5,000 reviews so in case more reviews are extracted, a duplicate place is stored with the next 5,000 reviews and so on.
⚠️ Enabling this feature might slow the search down.
Extract only reviews posted after [date]
reviewsStartDate
stringOptional
Manual input only allows YYYY-MM-DD, e.g., 2022-02-20. But if you switch to JSON input, you can use date with time in ISO format (e.g. 2024-05-03T10:00:00) or relative date with number and time unit (e.g. 8 days or 3 months).
Sort reviews by
reviewsSort
EnumOptional
Define the order in which reviews should be sorted.
Value options:
"newest": string"mostRelevant": string"highestRanking": string"lowestRanking": string
Default value of this property is "newest"
Filter reviews by keywords
reviewsFilterString
stringOptional
If you enter keywords, only reviews containing those keywords will be scraped. Leave it blank to scrape all reviews.
Default value of this property is ""
Reviews origin
reviewsOrigin
EnumOptional
Select whether you want all reviews (from Google, Tripadvisor, etc.) or only reviews from Google
Value options:
"all": string"google": string
Default value of this property is "all"
🧛♂️ Include reviewers' data
scrapeReviewsPersonalData
booleanOptional
This setting allows you to get personal data about the reviewer (their ID, name, URL, and photo URL) and about review (ID and URL).
⚠️ Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
Default value of this property is true
Number of questions to extract
maxQuestions
integerOptional
Set the number of questions per place you expect to scrape. If you fill in 0 or leave the field empty, only the first question and answer will be scraped. To extract all questions, type 999 into the field.
⚠️ Note that some of the fields contain personal data.
Override zoom level
zoom
integerOptional
You don't need to set this parameter. A good value is chosen automatically based on the chosen location, see readme for more info. Changing the zoom manually may cause the cost to vary significantly.
🗺 Country
countryCode
EnumOptional
Set the country where the data extraction should be carried out, e.g., United States.
Value options:
"us": string"af": string"al": string"dz": string"as": string"ad": string"ao": string"ai": string"aq": string"ag": string"ar": string"am": string"aw": string"au": string"at": string"az": string"bs": string"bh": string"bd": string"bb": string"by": string"be": string"bz": string"bj": string"bm": string"bt": string"bo": string"ba": string"bw": string"bv": string"br": string"io": string"bn": string"bg": string"bf": string"bi": string"kh": string"cm": string"ca": string"cv": string"ky": string"cf": string"td": string"cl": string"cn": string"cx": string"cc": string"co": string"km": string"cg": string"cd": string"ck": string"cr": string"ci": string"hr": string"cu": string"cy": string"cz": string"dk": string"dj": string"dm": string"do": string"ec": string"eg": string"sv": string"gq": string"er": string"ee": string"et": string"fk": string"fo": string"fj": string"fi": string"fr": string"gf": string"pf": string"tf": string"ga": string"gm": string"ge": string"de": string"gh": string"gi": string"gr": string"gl": string"gd": string"gp": string"gu": string"gt": string"gn": string"gw": string"gy": string"ht": string"hm": string"va": string"hn": string"hk": string"hu": string"is": string"in": string"id": string"ir": string"iq": string"ie": string"il": string"it": string"jm": string"jp": string"jo": string"kz": string"ke": string"ki": string"kp": string"kr": string"kw": string"kg": string"la": string"lv": string"lb": string"ls": string"lr": string"ly": string"li": string"lt": string"lu": string"mo": string"mk": string"mg": string"mw": string"my": string"mv": string"ml": string"mt": string"mh": string"mq": string"mr": string"mu": string"yt": string"mx": string"fm": string"md": string"mc": string"mn": string"me": string"ms": string"ma": string"mz": string"mm": string"na": string"nr": string"np": string"nl": string"an": string"nc": string"nz": string"ni": string"ne": string"ng": string"nu": string"nf": string"mp": string"no": string"om": string"pk": string"pw": string"ps": string"pa": string"pg": string"py": string"pe": string"ph": string"pn": string"pl": string"pt": string"pr": string"qa": string"re": string"ro": string"ru": string"rw": string"sh": string"kn": string"lc": string"pm": string"vc": string"ws": string"sm": string"st": string"sa": string"sn": string"rs": string"sc": string"sl": string"sg": string"sk": string"si": string"sb": string"so": string"za": string"gs": string"ss": string"es": string"lk": string"sd": string"sr": string"sj": string"sz": string"se": string"ch": string"sy": string"tw": string"tj": string"tz": string"th": string"tl": string"tg": string"tk": string"to": string"tt": string"tn": string"tr": string"tm": string"tc": string"tv": string"ug": string"ua": string"ae": string"gb": string"um": string"uy": string"uz": string"vu": string"ve": string"vn": string"vg": string"vi": string"wf": string"eh": string"ye": string"zm": string"zw": string
🌇 City
city
stringOptional
Enter the city where the data extraction should be carried out, e.g., Pittsburgh.
⚠️ Do not include State or Country names here.
⚠️ Automatic City polygons may be smaller than expected (e.g., they don't include agglomeration areas). If you need that, set up the location using Country, State, US County, City, or Postal code.
For an even more precise location definition (, head over to 🛰 Custom search area section to create polygon shapes of the areas you want to scrape.
State
state
stringOptional
Set a state where the data extraction should be carried out, e.g., Massachusetts (mainly for the US addresses).
⚠️ Always combine State with other Location types, otherwise you will scrape the whole state!
US county
county
stringOptional
Set the US county where the data extraction should be carried out, e.g., Madison.
⚠️ Always combine US county with other Location types, otherwise you will scrape the whole county!
Postal code
postalCode
stringOptional
Set the postal code of the area where the data extraction should be carried out, e.g., 10001.
⚠️ Combine Postal code only with 🗺 Country, never with 🌇 City. You can only input one postal code at a time.
🛰 Custom search area (coordinate order must be: [↕ longitude, ↔ latitude])
customGeolocation
objectOptional
🎢 Place categories
categoryFilterWords
arrayOptional
You can filter places by categories, which Google Maps has over 4,000. Categories can be general, e.g. beach, which would include all places containing that word e.g. black sand beach, or specific, e.g. beach club.
⚠️ You can use 🎢 Place categories alone or with 🔍 Search terms. 🔍 Search terms focus on searching, while 🎢 Categories filter results. Using 🎢 Categories alone applies them for both search and filter. For best results, use a few search terms with broad categories to avoid excluding valid places. Note that filtering by categories currently works only in 🇬🇧 English.Categories are dangerous! See the detailed description.
Get exact name matches (no similar results)
searchMatching
EnumOptional
Restrict what places are scraped based on matching their name with provided 🔍 Search term. E.g., all places that have chicken in their name vs. places called Kentucky Fried Chicken.
Value options:
"all": string"only_includes": string"only_exact": string
Default value of this property is "all"
Set a minimum star rating
placeMinimumStars
EnumOptional
Scrape only places with a rating equal to or above the selected stars. Places without reviews will also be skipped. Keep in mind, filtering by reviews reduces the number of places found per credit spent, as many will be excluded.
Value options:
"two": string"twoAndHalf": string"three": string"threeAndHalf": string"four": string"fourAndHalf": string
Default value of this property is ""
⏩ Skip closed places
skipClosedPlaces
booleanOptional
Skip places that are marked as temporary or permanently closed. Ideal for focusing on currently open places.
Default value of this property is false
Scrape places with/without a website
website
EnumOptional
Use this to exclude places without a website, or vice versa. This option is turned off by default.
Value options:
"allPlaces": string"withWebsite": string"withoutWebsite": string
Default value of this property is "allPlaces"
Google Maps URLs
startUrls
arrayOptional
Max 300 results per search URL. Valid format for URLs contains /maps/search
. This feature also supports uncommon URL formats such as: google.com?cid=***
, goo.gl/maps
, and custom place list URL.
Scrape all places
allPlacesNoSearchAction
EnumOptional
Extract all places visible on the map. Use the Override zoom level parameter to select the level of detail. Higher zoom will scrape more places but will take longer to finish. You can test what place pins are visible with a specific zoom by changing the 16z part of the Google Maps URL.
Value options:
"all_places_no_search_ocr": string"all_places_no_search_mouse": string
Default value of this property is ""
Actor Metrics
3.8k monthly users
-
775 stars
98% runs succeeded
4.8 days response time
Created in Nov 2018
Modified 6 hours ago