Google Maps Scraper - Places, Phones, Websites, Emails, Reviews avatar

Google Maps Scraper - Places, Phones, Websites, Emails, Reviews

Pricing

from $1.39 / 1,000 places

Go to Apify Store
Google Maps Scraper - Places, Phones, Websites, Emails, Reviews

Google Maps Scraper - Places, Phones, Websites, Emails, Reviews

Google Maps scraper for leads: name, category, address, phone, website, rating, reviews count, hours, coordinates and IDs from searches, Maps URLs or place IDs. Add-ons: emails + socials from the business website, details, top reviews. Grid search past Google's cap, dedup, lead score.

Pricing

from $1.39 / 1,000 places

Rating

0.0

(0)

Developer

Kanto Labs

Kanto Labs

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

5 days ago

Last modified

Security

Limited permissions

Share

What does this Google Maps scraper do?

This Google Maps scraper turns any Google Maps search into a clean list of businesses: name, category, full address, phone, website, rating, review count, opening hours, coordinates, place ID and Maps link, one row per place. Type what you would type into Google Maps ("dentist", "coffee shop", "plumber"), add a city or country, and get a lead list you can download as CSV/Excel or pull through the API.

Optional add-ons, charged only when the data is actually delivered:

  • Emails and social profiles from the business's own website (Facebook, Instagram, LinkedIn, X, YouTube, TikTok, extra phone numbers)
  • Place details: plus code, description, 1-5 star distribution, review keywords, booking and order links
  • Reviews: the newest of the reviews Google shows to signed-out visitors (up to 5 per place)

Why this one

  • Gets past Google's ~240-results-per-search limit. When you ask for more, the area is split into a grid and searched cell by cell. A test run for "dentist" in Houston returned exactly 400 unique places.
  • Stays inside your location. Places are checked against the real city boundary from OpenStreetMap, not a rough rectangle. Places outside the area are dropped for free.
  • Stops exactly at your limit. Ask for 150, get 150.
  • No duplicates. A place found by two search terms, or by two grid cells, is returned and charged once.
  • Filters are free. Category, minimum rating, with/without website and skip-closed cost nothing extra.
  • Only new places mode. Point it at the dataset of an earlier run and it skips every place you already have. Run it weekly to catch newly listed businesses.
  • Lead score (0-100) on every row: website, phone, email, rating, review volume, open status.
  • CSV-friendly views: "Places", "Leads: contacts" and "Details" tables with flat columns.
  • Failed lookups are free and show up as clear error rows instead of a silent empty run.

How much does it cost to scrape Google Maps?

Pay per result, no subscription:

EventFree planStarter (Bronze)Scale (Silver)Business (Gold)When it is charged
Place$0.0037$0.0028$0.00185$0.00139every place delivered
Contact details$0.00185$0.00185$0.00139$0.00097only when an email, social profile or phone was found on the website
Place details$0.00185$0.00185$0.00139$0.00097only when the place page loaded
Review$0.00046$0.00046$0.00034$0.00024per review delivered

Every tier is below the most-used Google Maps scraper's price for the same tier. Filters, duplicates, places outside the area and errors are free.

Worked example. 1,000 dentists with the minimum-rating filter and the contacts add-on, with contacts found for 700 of them: 1,000 x $0.0037 + 700 x $0.00185 = $4.99. The same job on the most-used Google Maps scraper at its Free-plan prices: 1,000 x $0.004 (place) + 1,000 x $0.001 (filter) + 1,000 x $0.002 (contacts) = $7.00. Duplicates, filtered-out places and errors are never charged here.

You can cap any run with Max cost per run; the scraper stops cleanly when the cap is reached.

How to use it

  1. Enter one or more search terms and a location ("Austin, TX, USA", "Manila, Philippines", "Praha").
  2. Set Number of places per search.
  3. Optional: filters, the add-ons, a language, or a custom circle (latitude, longitude, radius).
  4. Run, then download the table as CSV, Excel or JSON.

You can also paste Google Maps URLs (search or place links) or place IDs (ChIJ..., CID numbers).

Input example

{
"searchStringsArray": ["dentist"],
"locationQuery": "Austin, TX, USA",
"maxCrawledPlacesPerSearch": 100,
"scrapeContacts": true,
"placeMinimumStars": "4"
}

Output example (one row, shortened)

{
"title": "Swish Dental Downtown",
"categoryName": "Dentist",
"address": "201 W 5th St Ste 175, Austin, TX 78701",
"city": "Austin",
"postalCode": "78701",
"phone": "(512) 713-1099",
"website": "https://www.swishsmiles.com/location/downtown",
"rating": 4.5,
"reviewsCount": 987,
"latitude": 30.2674035,
"longitude": -97.7451433,
"openingHoursText": "Monday: 9 AM-6 PM; Tuesday: 8 AM-5:30 PM; ...",
"placeId": "ChIJdWgENLS1RIYReos4IrRuTmQ",
"cid": "7227836171923524474",
"url": "https://www.google.com/maps/place/?q=place_id:ChIJdWgENLS1RIYReos4IrRuTmQ",
"emails": ["downtown@swishsmiles.com"],
"facebook": "https://www.facebook.com/SwishDentalTX",
"instagram": "https://www.instagram.com/swishdental",
"leadScore": 100
}

Lead generation with n8n, Make and the API

  • Local lead lists: "roofer" in 20 cities, "Only without a website" for web-design outreach, or "Only these categories" to keep the list tight.
  • n8n / Make / Zapier: use the Apify node or module "Run an Actor", pick this scraper, then send the dataset rows to Google Sheets, a CRM or an email tool.
  • API: POST https://api.apify.com/v2/acts/kantolabs~google-maps-scraper/run-sync-get-dataset-items with the input JSON returns the rows in one call.
  • Schedules: run weekly with "Only new places" to receive just the businesses that appeared since last time.

What it does not do

  • No sign-in, ever. It reads what Google Maps shows any visitor who is not signed in. Because of that, reviews are limited to the few Google shows signed-out visitors (up to 5 per place), and popular times are not available (Google no longer shows them to signed-out visitors).
  • Price level is filled only when Google shows it in search results.
  • Short maps.app.goo.gl links are not followed - open them once and paste the full URL.

FAQ

This scraper collects publicly visible business information - the same details anyone sees on Google Maps without logging in - and reads only the businesses' own public websites for contact details, respecting robots.txt. It does not log in, solve captchas or bypass any access control. Business listings can still contain personal data (for example a sole trader's name, or reviewer names if you switch them on). If you process personal data, you are responsible for having a lawful basis under GDPR, CCPA and similar laws, and for following the rules on direct marketing in your country. If unsure, ask a lawyer.

Why did I get fewer places than I asked for?

Either the area simply has fewer matching places (a small town may have 4 hardware stores), your filters removed some, or Google returned places outside your location, which are dropped for free. The status message at the end of the run gives the exact counts.

What happens when Google blocks a request?

The request is retried on a different proxy IP. If it still fails, that search page or place becomes a free error row - you are never charged for it.

Can I search a whole country?

Yes, but a country is a very large area: set a sensible "Number of places per search" and consider searching city by city for full coverage.

Which languages are supported?

40 languages, including English, Spanish, German, French, Portuguese, Czech, Polish, Japanese, Korean, Chinese, Indonesian, Vietnamese, Thai and Filipino. Names, categories, addresses and hours come back as Google Maps shows them in that language.

More from Kanto Labs

Browse our other data and media tools at apify.com/kantolabs.

Support

Found a wrong field or a place that should have been found? Open an issue in the Issues tab with the run ID and the place link - we reply within a day.