Google Maps Scraper - Fast Places & Leads Extractor avatar

Google Maps Scraper - Fast Places & Leads Extractor

Pricing

from $1.25 / 1,000 places

Go to Apify Store
Google Maps Scraper - Fast Places & Leads Extractor

Google Maps Scraper - Fast Places & Leads Extractor

Search Google Maps by keyword and location and get every place: name, category, full address, phone, website, rating, review count, opening hours, GPS, place ID. Goes past Google's ~120 result limit by splitting the area. Filter by website, rating, reviews.

Pricing

from $1.25 / 1,000 places

Rating

0.0

(0)

Developer

Joran Morgan

Joran Morgan

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

23 days ago

Last modified

Share

Google Maps Scraper (Fast Places & Leads Extractor)

Type a search term and a location, the way you would on Google Maps, and get back every place in a table: name, category, full address split into street, city, ZIP and state, phone, website, star rating, number of reviews, opening hours for the whole week, GPS coordinates, place ID and a link to the listing.

I wrote it because I needed lists of local businesses for my own outreach and kept running into the same two problems: Google stops showing results after about 120 places, and most scrapers charge extra for every field that makes a list usable (contacts, details, filters). This one doesn't open a browser. It talks to the same endpoint the Maps web app uses when you scroll the results list, so it's quick and cheap to run, and everything below comes in one price.

What a result looks like

Real output from a run for "coffee shop" in Portland, OR (business name and contacts changed):

{
"title": "Example Coffee",
"categoryName": "Coffee shop",
"categories": ["Coffee shop", "Bakery", "Cafe"],
"address": "1100 SE Grand Ave, Portland, OR 97214",
"street": "1100 SE Grand Ave",
"neighborhood": "Southeast Portland",
"city": "Portland",
"postalCode": "97214",
"state": "Oregon",
"countryCode": "US",
"phone": "(503) 555-0142",
"phoneUnformatted": "+15035550142",
"website": "https://www.example-coffee.com/",
"domain": "example-coffee.com",
"totalScore": 4.8,
"reviewsCount": 267,
"latitude": 45.514786,
"longitude": -122.6602143,
"placeId": "ChIJF-hlsN0LlVQRYW3R9m8tIVg",
"cid": "6350406908474649953",
"url": "https://www.google.com/maps/search/?api=1&query=Example+Coffee&query_place_id=ChIJF-hlsN0LlVQRYW3R9m8tIVg",
"openingHours": [
{ "day": "Monday", "hours": "9 AM–5 PM" },
{ "day": "Tuesday", "hours": "9 AM–5 PM" },
"..."
],
"closedStatus": null,
"timezone": "America/Los_Angeles",
"bookingLinks": [],
"searchString": "coffee shop",
"location": "Portland, OR",
"rank": 2
}

Every row has the same fields, with null where Google has nothing (a business without a website, a place with no reviews yet), so CSV and Excel exports line up. The Places view in the dataset shows the short version; Contacts shows phone, website and address columns only.

Getting more than 120 places

Google shows roughly 120 to 200 places for one search and then stops, no matter how big the city is. When that happens and you asked for more, the scraper takes the map area Google uses for your location, splits it into four smaller views, searches each one, and keeps splitting where a view is still full. Places found twice are dropped, and places that fall outside the area you searched are left out.

In my tests from the Apify cloud, 500 dentists in Berlin took 27 seconds and about 1,200 places across four searches took 80 seconds. Turn off deepSearch if you only want the first page of results Google would show a person.

Input

FieldWhat it doesDefault
searchTermsWhat to search for: dentist, coffee shop, roofing contractor... Each term runs in each location.required
locationsAustin, TX, Manchester, UK, Brooklyn, NY, a ZIP code. Leave empty if the place is already in the search term.
maxPlacesPerSearchLimit per term and location100
deepSearchGo past Google's ~120 limit by splitting the areaon
websiteFilterall, withWebsite, or withoutWebsite (good for selling websites)all
minRatingSkip places rated below this, e.g. 4.0
minReviewsSkip places with fewer reviews
skipClosedPlacesLeave out places marked permanently closedon
languageLanguage of categories and hours, e.g. en, de, esen
countryCodeGoogle country, e.g. us, gb, deus

Places skipped by a filter are not charged. If the same place turns up for two of your search terms in one run, it's returned and charged once.

Pricing

You pay per place returned, and that's it: contacts, opening hours, coordinates, categories and the filters are all included. There are no separate charges for details or for using a filter.

FAQ

Why are some phone numbers or websites empty? Because the business didn't add them to its Google profile. Service businesses like plumbers often hide their street address too, so street and city can be empty while the phone is there.

Does it get reviews or emails? No. It returns what the Google Maps listing shows: the rating, the review count and a link to the reviews. If you need emails and a check of each business's website, Local Business Leads with Website Audit does that on top of a Maps search.

Can I search a whole state or country? You can, but Google treats a state as one very large map view, so you'll get the most prominent places spread thin. For full coverage, list the cities you care about in locations.

Some searches return fewer places than I asked for. That's usually all there is. A narrow term in a small town might have 40 matches, and strict filters like withoutWebsite skip most places. To keep a run from scanning an entire metro area for a handful of matches, each search stops after a fixed number of requests.

Notes

Only public Google Maps listings are read, no login and no browser. If something comes back wrong for a search, open an issue with the input you used and I'll look at it.

Want to check which of these businesses need a better website? Website Audit & Lead Scorer takes the website column straight from this dataset.