Build local business lists for market research.
Google Maps Scraper
Find local businesses on Google Maps and collect business details, with optional website emails and reviews.
What you can do
Collect website and contact details where available.
Compare businesses by location, category and rating.
Set your sources
Open the scraper and enter your own URLs, search terms and limits.
Review & run
Check the cost estimate and confirm the task. Follow its progress in your account.
Use your data
Explore saved results and export CSV, JSON or XLSX. Downloads of saved results are free.
Sample data & output fields
These example values demonstrate the data shape; they are not a live scraper result. Available fields depend on the source, selected options and upstream data.
[
{
"title": "Example title",
"category": "Example category",
"address": "New York, United States",
"website": "https://example.com/result",
"rating": 4.5
}
]| Field | Type | Description |
|---|---|---|
title | string | Title. |
category | string | Category. |
address | string | Address. |
website | string | Website. |
rating | number | Rating. |
Example input
This is the configured parser input. Replace the example sources with your own and review all limits before running.
{
"searchStrings": [
"Physiotherapy in Sydney, Australia"
],
"maxPlaces": 100,
"includeDetails": false,
"includeEmails": false,
"includeReviews": false,
"maxReviewsPerPlace": 20,
"reviewsSort": "newest",
"reviewsLastDays": 0,
"scrapeMode": "fast",
"scrollDepth": 20,
"language": "en",
"zoom": 15,
"maxConcurrency": 0,
"proxyConfiguration": {
"useApifyProxy": true
}
}Explore input fields
| Field | Type | Notes |
|---|---|---|
searchStrings | array | What to search on Google Maps, one per line. Put the place in the text for best results, for example "Physiotherapy in Sydney, Australia". Each search returns up to about 120 businesses (Google's limit). |
maxPlaces | integer | The run stops when it has this many businesses. If your searches end with fewer, it keeps searching smaller parts of the same area until it has enough or Google has no more. 0 = everything Google lists for your searches. |
includeDetails | boolean | The business's own description and how many 1 to 5 star reviews it has. Charged per business that has them. |
includeEmails | boolean | Visits each business website (home page and contact page) and collects the email addresses. Charged per website visited. |
includeReviews | boolean | Each review with its star rating, text, date and author. Charged per review. |
maxReviewsPerPlace | integer | Used when Reviews is on. 0 collects every review Google lists, up to 5,000 per business. |
reviewsSort | string | Which reviews come first. "Lowest rating first" with a small maximum is a quick way to collect complaints. |
reviewsLastDays | integer | Used when Reviews is on. For example 30 keeps only reviews from the last 30 days, in the review order you picked: lowest rating first with 30 gives the past month's complaints. 0 keeps reviews of any date. An edited review counts from its last edit, the… |
scrapeMode | string | Fast reads Google's data without a browser and runs on 512 MB of memory. Full opens every business in a browser: it adds owner replies to reviews and emails from websites that need JavaScript, always includes the extra details, needs 4 GB of memory (set… |
scrollDepth | integer | Fast mode reads Google's results 20 businesses at a time; this is the most pages per search. In Full mode it is how far to scroll the result list. |
language | string | Language code for Google Maps, for example en, de, fr. |
zoom | integer | Zoom level 1 to 21 used with the search centre. Higher is closer. |
maxConcurrency | integer | Fast mode: parallel requests; automatic uses 4. Full mode: browser pages; automatic uses 2 per CPU core, and Apify gives 1 core per 4 GB of memory. |
proxyConfiguration | object | Leave this on the default, Apify's datacenter proxies. To use your own proxies, choose Own proxies and enter URLs like http://user:pass@host:port. With No proxy, Google may block the run. |
Run through the API
Create an API key in your account, send the input to the queued endpoint and use the returned task ID to retrieve results. Sending a live request uses credits.
curl --request POST 'https://extracto.cloud/api/v1/parsers/google-maps-leads-actor/queue' \
--header 'X-API-KEY: ext_your_api_key' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data-binary @- <<'JSON'
{
"input": {
"searchStrings": [
"Physiotherapy in Sydney, Australia"
],
"maxPlaces": 100,
"includeDetails": false,
"includeEmails": false,
"includeReviews": false,
"maxReviewsPerPlace": 20,
"reviewsSort": "newest",
"reviewsLastDays": 0,
"scrapeMode": "fast",
"scrollDepth": 20,
"language": "en",
"zoom": 15,
"maxConcurrency": 0,
"proxyConfiguration": {
"useApifyProxy": true
}
}
}
JSONYour next dataset starts here.
Choose your sources, review the price and run Google Maps Scraper.