Google Maps Scraper avatar

Google Maps Scraper

Try for free

No credit card required

Go to Store
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

🔍 Search term(s)

searchStringsArrayarrayOptional

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)

locationQuerystringOptional

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)

maxCrawledPlacesPerSearchintegerOptional

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

languageEnumOptional

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

maxImagesintegerOptional

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

scrapeImageAuthorsbooleanOptional

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)

onlyDataFromSearchPagebooleanOptional

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"

includeWebResultsbooleanOptional

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)

scrapeDirectoriesbooleanOptional

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

scrapeTableReservationProviderbooleanOptional

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

maxReviewsintegerOptional

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]

reviewsStartDatestringOptional

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

reviewsSortEnumOptional

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

reviewsFilterStringstringOptional

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

reviewsOriginEnumOptional

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

scrapeReviewsPersonalDatabooleanOptional

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

maxQuestionsintegerOptional

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

zoomintegerOptional

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

countryCodeEnumOptional

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

citystringOptional

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

statestringOptional

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

countystringOptional

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

postalCodestringOptional

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])

customGeolocationobjectOptional

Use this field to define the exact search area if other search area parameters don't work for you. See readme or our guide for details.

🎢 Place categories

categoryFilterWordsarrayOptional

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)

searchMatchingEnumOptional

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

placeMinimumStarsEnumOptional

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

skipClosedPlacesbooleanOptional

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

websiteEnumOptional

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

startUrlsarrayOptional

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

allPlacesNoSearchActionEnumOptional

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 ""

Developer
Maintained by Apify

Actor Metrics

  • 3.8k monthly users

  • 775 stars

  • 98% runs succeeded

  • 4.8 days response time

  • Created in Nov 2018

  • Modified 6 hours ago

Categories