Google Maps Scraper

  • compass/crawler-google-places
  • Modified
  • Users 34.5k
  • Runs 3.6M
  • Created by Author's avatarCompass

Extract data from hundreds of Google Maps businesses and locations in seconds. Get Google Maps data including reviews, images, opening hours, location, popular times & more. Go beyond the limits of the official Google Places API. Download data with Google Maps extractor in JSON, CSV, Excel and more.

🔍 Search term(s)

searchStringsArray

Optional

array

Type what you want to search for as you would write it into the Google Maps search bar, e.g. restaurant or pet shelter.
Putting location directly into search terms, e.g. restaurant Pittsburgh, is not recommended because you will only get max 120 results per search (Google's scrolling limit on a single search) but it can be done for speed. You can also use direct place IDs here in the format place_id:ChIJ8_JBApXMDUcRDzXcYUPTGUY

Location (only use ONE location at a time)

locationQuery

Optional

string

Free text location definition. If you use Zip codes, you must use them with country name (not city name!). Use OpenStreeMap webapp for visual validation of the exact covered area. You can always fallback to Geolocation section where you can select country, state, county, city and postalCode. Keep in mind that Locatiion has always preference of these.

Limit the number of places per each search term/URL

maxCrawledPlacesPerSearch

Optional

integer

This is the maximum number of results you will obtain for each search term or URL.
A higher number will take longer to scrape. If you want to scrape all places available, set this value to 9999999.

Language

language

Optional

Enum

Results details will show in this language.

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

🖼 Limit number of images (images are very slow)

maxImages

Optional

integer

Maximum number of images per place. If you fill in '0' or leave the field empty, no images will be scraped. To extract all images, type 99999 into the field. The higher the number, the slower the search.

🔗 I want to scrape only data from search page (faster)

onlyDataFromSearchPage

Optional

boolean

The results will only show data from the search page, but no other details. This speeds up the scrape significantly. For each place it extracts isAdvertisement, title, placeId, location, address, neighborhood, street, city, postalCode, state, countryCode, categories, url

🌐 Include "Web results"

includeWebResults

Optional

boolean

Extract the bottom "Web results" section of place data. It slightly increases compute and proxy usage.

Limit number of reviews

maxReviews

Optional

integer

This is the maximum number of reviews per place. If you fill in '0' or leave the field empty, no reviews will be scraped. To extract all reviews, type '99999' into the field. Each output place item can contain maximum 5000 reviews so in case more reviews are extracted, a duplicate place is stored with the next 5000 reviews and so on. Enabling this feature might slow the search down.

One review per row

oneReviewPerRow

Optional

boolean

If checked, the scraper will produce one row of results for each review. The other information about the place is copied into each row. Choose this if you need CSV-friendly results.

Only scrape reviews newer than [date]

reviewsStartDate

Optional

string

Format should be YYYY-MM-DD, e.g., 2022-02-20

Sort reviews by

reviewsSort

Optional

Enum

Define the order in which reviews should be sorted.

Options:

"newest": string"mostRelevant": string"highestRanking": string"lowestRanking": string

Filter reviews by keyword(s)

reviewsFilterString

Optional

string

If you fill in a keyword(s), only reviews containing the keyword(s) will be scraped. If you leave the field empty, all reviews will be scraped.

Reviewer name

scrapeReviewerName

Optional

boolean

If checked, the scraper will extract the reviewer's name - please, keep in mind the above personal data warning.

Reviewer ID

scrapeReviewerId

Optional

boolean

Reviewer URL

scrapeReviewerUrl

Optional

boolean

Review ID

scrapeReviewId

Optional

boolean

Review URL

scrapeReviewUrl

Optional

boolean

Response from owner

scrapeResponseFromOwnerText

Optional

boolean

Override zoom level

zoom

Optional

integer

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 (combine with other geolocation parameters or the scraper will scan the whole country!)

countryCode

Optional

Enum

Set the country where the search should be carried out, e.g., United States. Warning: if used without city or other geolocation parameters, the scraper will scan the whole country!
Currently, the scraper doesn't work well for full-country searching of sparsely populated countries like the United States or Russia. For these, search city by city or focus on populated states.

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 (only enter ONE city name, without state or country!)

city

Optional

string

Enter the city where the search should be carried out, e.g., Pittsburgh. Warning: just add a single city and don't add state or country here.

State (combine with other geolocation inputs or the scraper will scan the whole state!)

state

Optional

string

Set a state where the search should be carried out, e.g. Massachusetts (mainly for US addresses).

US county (combine with other geolocation inputs or the scraper will scan the whole county!)

county

Optional

string

Set the US county where the search should be carried out, e.g., Madison.

Postal code (Enter only ONE postal code. Combine with country, not city.)

postalCode

Optional

string

Set the postal code of the area where the search should be carried out, e.g., 10001. Select a country as well to ensure the correct postal code is used.
Warning: you can only input one postal code at a time.

🛰 Custom search area (coordinate order must be: [longitude, latitude])

customGeolocation

Optional

object

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.

Restrict places based on title matching

searchMatching

Optional

Enum

Restrict what places are scraped based on matching their title with provided search term

Options:

"all": string"only_includes": string"only_exact": string

Google Maps URLs

startUrls

Optional

array

Copy a Google Maps URL and paste it here. Leave empty if you have already filled the Search term field. The only valid format for URLs contains either /maps/search or /maps/place, e.g., https://www.google.com/maps/search/falafel+new+york/..

Scrape all places (no search term)

allPlacesNoSearchAction

Optional

Enum

Will scrape all places seen on the map. This depends on a lot of the zoom so for more places, increase the zoom. Doesn't work together with URLs

Options:

"all_places_no_search_ocr": string"all_places_no_search_mouse": string