No-Code scraper · JSON API

Google Maps Scraper

Find local businesses on Google Maps and collect business details, with optional website emails and reviews.

JSON CSV & XLSX API access
Read the API reference →
From web pages to a dataset

What you can do

Build local business lists for market research.

Collect website and contact details where available.

Compare businesses by location, category and rating.

01

Set your sources

Open the scraper and enter your own URLs, search terms and limits.

02

Review & run

Check the cost estimate and confirm the task. Follow its progress in your account.

03

Use your data

Explore saved results and export CSV, JSON or XLSX. Downloads of saved results are free.

Know what to expect

Sample data & output fields

Illustrative example

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.

JSON · illustrative result
[
  {
    "title": "Example title",
    "category": "Example category",
    "address": "New York, United States",
    "website": "https://example.com/result",
    "rating": 4.5
  }
]
FieldTypeDescription
titlestringTitle.
categorystringCategory.
addressstringAddress.
websitestringWebsite.
ratingnumberRating.
Start with a real configuration

Example input

This is the configured parser input. Replace the example sources with your own and review all limits before running.

JSON · example 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
  }
}
Explore input fields
FieldTypeNotes
searchStringsarrayWhat 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).
maxPlacesintegerThe 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.
includeDetailsbooleanThe business's own description and how many 1 to 5 star reviews it has. Charged per business that has them.
includeEmailsbooleanVisits each business website (home page and contact page) and collects the email addresses. Charged per website visited.
includeReviewsbooleanEach review with its star rating, text, date and author. Charged per review.
maxReviewsPerPlaceintegerUsed when Reviews is on. 0 collects every review Google lists, up to 5,000 per business.
reviewsSortstringWhich reviews come first. "Lowest rating first" with a small maximum is a quick way to collect complaints.
reviewsLastDaysintegerUsed 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…
scrapeModestringFast 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…
scrollDepthintegerFast 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.
languagestringLanguage code for Google Maps, for example en, de, fr.
zoomintegerZoom level 1 to 21 used with the search centre. Higher is closer.
maxConcurrencyintegerFast 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.
proxyConfigurationobjectLeave 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.
The same scraper in your application

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 · queue a task
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
    }
  }
}
JSON

Your next dataset starts here.

Choose your sources, review the price and run Google Maps Scraper.

Open scraper