Ready-made scraper on Apify
Google Maps leads scraper
Type what you're looking for and where, such as dentist in Marseille, and get every matching business on Google Maps with phone, website, address, rating, review count and opening hours. Turn on the extras for emails and social profiles from each business's website.
- New
What you get
A few places as a run returns them. The CSV download has every column.
Dellarocco's Brick Oven Pizza
Pizza restaurant · Brooklyn Heights
- (718) 858-1010
- mgmtdellaroccos@gmail.com
- dellaroccospizza.com
- rating
- ★ 4.6
- reviews
- 1,387
Front Street Pizza
Pizza restaurant · Brooklyn
- (718) 875-3700
- frontstreetpizzadumbo@gmail.com
- frontstreetpizzadumbo.com
- rating
- ★ 4.3
- reviews
- 2,134
L'ABRI | restaurant & vigneron
Restaurant · Marseille
- 09 50 40 45 08
- contact@labri-marseille.fr
- labri-marseille.fr
- rating
- ★ 4.7
- reviews
- 520
Real output · people’s names withheld
Who uses it
Sales prospecting
Local businesses of one type across your cities, with phone numbers, websites and emails for outreach.
Finding clients for an agency
Businesses without a website, with a low rating or with an unclaimed profile, which are the ones most likely to need help.
Market sizing
Every business of a type in a city with its rating and review count, to size a market or spot the gaps.
Local SEO
Categories, claimed status and review counts for the businesses that rank in your area.
What you give it
Search termsoptional
What to search for, one per line, as you would type it on Google Maps: dentist, italian restaurant, plumber.
Locationsoptional
Where to search, one per line: Marseille, France or 75011 Paris. Leave it empty to search the terms as typed, which gives at most about 200 places per term.
Google Maps URLsoptional
Optional. A Google Maps search link is searched over the map area it shows. A place link or Place ID gives that one place.
Max places per searchoptional
Stops each term and location pair after this many places. Leave it empty to cover the whole area.
Languageoptional
The language of categories, opening hours, attributes and reviews, such as en, fr or de.
Default: en
Min ratingoptional
Keep only places rated at least this many stars. Google applies it to the search itself.
Any2.0+2.5+3.0+3.5+4.0+4.5+
Min reviewsoptional
Keep only places with at least this many reviews.
Websiteoptional
Keep places by whether they list a website. Places without one are often prospects for web agencies.
AnyOnly places with a websiteOnly places without a website
Default: Any
Phoneoptional
Keep places by whether they list a phone number.
AnyOnly places with a phoneOnly places without a phone
Default: Any
Skip closed placesoptional
Leave out places marked temporarily or permanently closed.
Off by default
Skip unrelated placesoptional
Leaves out the places Google adds when an area runs out of real matches, such as osteopaths in a dentist search.
On by default
Place detailsoptional
Adds reviews per star, review keywords, delivery and takeout hours and the plus code. Charged per place.
Off by default
Emails and social profiles from websitesoptional
Visits each business's website for emails, phone numbers and social profiles. Charged only for places where the website gave something.
Off by default
Reviews per placeoptional
Adds up to this many reviews to each place. For every review of a place, use the Google Maps reviews scraper.
Default: 0
Reviews sortoptional
Which reviews "Reviews per place" picks.
NewestMost relevantHighest ratingLowest rating
Default: Newest
Max resultsoptional
Stops the whole run after this many places. Use it to cap what a run can cost.
Example inputs
Paste one into the JSON tab of the input form on Apify.
{
"searchTerms": [
"dentist",
"orthodontist"
],
"locations": [
"Marseille, France"
],
"maxPlacesPerSearch": 500,
"websiteFilter": "with",
"contactDetails": true
}What it does
- Every search term is searched in every location: a city, district, postcode or region
- Large areas are split into map tiles, so a city search goes well past the 200 places one Google Maps search shows. Dentists in Marseille gave 871 in our test
- Up to 53 fields per place, including Place ID, coordinates and opening hours by day
- Optional emails, phone numbers and social profiles from each business's own website
- Filters for rating, review count, website, phone and closed places, and places they remove are free
- Each place appears once per run, however many searches find it
Pricing
You pay Apify per result, with nothing to pay when the scraper isn’t running. The rate drops on Apify’s paid plans. Set the numbers for your run to see the cost.
Place
Each place the scraper saves. Places removed by filters are free.
$3.00 per 1,000
Place detailsoptional
Each place opened for its details, when Place details is on.
$1.50 per 1,000
Emails and social profilesoptional
Each place whose website gave an email or social profile, when Emails and social profiles is on.
$1.50 per 1,000
Reviewoptional
Each review added to a place with Reviews per place.
$0.40 per 1,000
Where the data can go
Download the results from Apify, or have each run send them on through Apify’s integrations. We can set any of these up for you.
Download
- CSV
- Excel
- JSON
- XML
- HTML table
Spreadsheets and storage
- Google Sheets
- Google Drive
- Amazon S3
Automation tools
- n8n
- Make
- Zapier
- Webhooks
CRMs and apps, through those tools
- HubSpot
- Salesforce
- Pipedrive
- Airtable
- Slack
Code and AI
- REST API
- Python client
- Node.js client
- MCP for AI agents
Run it from code
Start a run and read the results with your Apify API token, which is under Settings, then API & Integrations, in the Apify console.
curl -X POST "https://api.apify.com/v2/acts/keklik~google-maps-leads-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchTerms": [
"dentist",
"orthodontist"
],
"locations": [
"Marseille, France"
],
"maxPlacesPerSearch": 500,
"websiteFilter": "with",
"contactDetails": true
}'# pip install apify-client
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("keklik/google-maps-leads-scraper").call(run_input={
"searchTerms": [
"dentist",
"orthodontist"
],
"locations": [
"Marseille, France"
],
"maxPlacesPerSearch": 500,
"websiteFilter": "with",
"contactDetails": True
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)// npm install apify-client
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_APIFY_TOKEN" });
const run = await client.actor("keklik/google-maps-leads-scraper").call({
"searchTerms": [
"dentist",
"orthodontist"
],
"locations": [
"Marseille, France"
],
"maxPlacesPerSearch": 500,
"websiteFilter": "with",
"contactDetails": true
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Questions
Limits
The search area is a rectangle around the location, so towns at its edges can appear too: narrow the list with the city or postcode column. Emails come from the businesses' own websites, so expect them for part of the places. They are checked for junk but not verified with a mail server.
How many places can I get?
As many as Google Maps has for your search in the area. For a whole country, list its cities or regions as locations.
Why did a search return only a few places?
Google matches your term against business categories. English works almost everywhere, but if a search returns little, try the term in the local language, such as dentiste or Zahnarzt.
Can I get every review of each place?
Reviews per place adds a few. For all of them, one row per review, feed the place links or Place IDs into the Google Maps reviews scraper.
Do I need a Google account or an API key?
No. It needs no Google account, login, cookies or Places API key, and there is no proxy to set up.
Do I need an Apify account?
Yes. The scraper runs in your Apify account and Apify bills you per result. A free Apify account is enough to try it.
Can you run it for us instead?
Yes. We can run it on a schedule, clean up the results and send them to your sheet, CRM or database. Ask for a quote and we reply within one business day.
Other Google Maps scrapers
The ones marked ready-made are on Apify too. We run the others for clients.
Google Maps dataWant us to run it for you?
We can run this scraper on a schedule and send the results to a sheet, your CRM or a database. We fix it if the site changes.