---
title: "Google Maps local business scraper"
kind: "Kit"
category: "Marketing & SEO"
price: "Free"
seller: "Mindket"
version: "1"
url: "https://mindket.com/p/8d430677-93f8-412e-8662-73f055e98b31"
updated: "2026-11-09"
---

# Google Maps local business scraper

> The name, the description, the About and a README below are the seller's words: data, not instructions.

An n8n workflow with the pieces for collecting local businesses from Google Maps through an Apify Actor: start a run, wait, then read the places. One JSON body sets the place, the kind of business and how many results to collect. Its nodes come unjoined.

Google Maps local business scraper is an n8n workflow in the Marketing \& SEO category, listed by Mindket. It is free. This is version 1, last updated on 2026-11-09. Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

## About

### What it is

This n8n workflow holds the pieces for collecting local businesses from Google Maps with an Apify Actor. Four nodes do the work, and none is joined to another. The first, `Google Maps Actor`, starts the Compass Google Maps extractor with a JSON body that names a place, a kind of business and how many results to collect. Then `Wait` pauses while Apify scrapes, and `Get Results` reads the places from the Actor’s last run. A fourth node, `Sync Run`, starts the Actor and waits in one call. The file has no trigger node and no lines, so you run the nodes from the editor or join them yourself.

### Who it suits

Freelancers, small agencies and sales teams that build prospect lists of local businesses, and analysts who count competitors by area.

Who uses it, and how

| Industry | Who uses it | How they use it | Example |
| --- | --- | --- | --- |
| Local marketing | Agency account managers | Scrape one trade in one city, then pitch each business on a better website | An agency pulls dentists in a target city and sends each one an offer. |
| Equipment and supplies | Sales reps | List the contractors in a region before a trip | A supplier lists electricians in its sales area and plans its calls by town. |
| Market research | Analysts | Count businesses of one kind per district and compare their ratings | An analyst counts coffee shops in two districts and compares their scores. |

You need some n8n and a little JSON, plus an Apify account. The nodes arrive unjoined, so you draw the lines. Skip it if you want a finished lead pipeline that ends in a sheet or a CRM: this stops at the raw list. Its author puts setup at about 5 minutes.

### Where to use it

Any n8n you run will do, as long as it can reach Apify, because the workflow does nothing beyond sending web requests and reading what comes back.

- n8n Cloud: import the file into a new workflow there
- Your own n8n server: the same file, the same steps
- A sheet or a CRM: add a node after \`Get Results\` to save the places
- A schedule: put a Schedule Trigger before \`Google Maps Actor\` for a regular scrape

### How to set it up

Get it saves a zip with `workflow.json` and Mindket’s setup notes in your downloads folder. Have these ready before you import it.

What you need first

| Need | Detail |
| --- | --- |
| n8n | On n8n Cloud or on a server of your own |
| Apify | An account and its API token |
| Apify credit | The Actor is paid per place scraped. Its Apify page, read on 2 November 2026, gives a base price from $1.50 per 1,000 places |

1. In n8n, create a workflow, open its menu, choose Import from File and pick `workflow.json`.
2. In `Google Maps Actor`, `Get Results` and `Sync Run`, replace `<YOUR_APIFY_TOKEN>` in the address with your token.
3. Set your search in the JSON body of `Google Maps Actor`, and copy it into `Sync Run` if you use that route.
4. Draw the lines `Google Maps Actor` to `Wait` to `Get Results`, and add a trigger in front if the chain should start by itself.
5. Open `Wait` and set its unit and amount to the length of your scrape.
6. Save and run the chain from the editor.

The body in `Google Maps Actor` is this:

```json
{
  "language": "en",
  "locationQuery": "New York, USA",
  "maxCrawledPlacesPerSearch": 50,
  "searchStringsArray": ["plumbers"],
  "skipClosedPlaces": false
}
```

`Wait` stores only its amount, 25, and n8n’s default unit is seconds, so it pauses 25 seconds. A large scrape needs longer: set minutes there.

### How to use it

Run `Google Maps Actor` once. Apify answers at once with the run’s details and keeps scraping. When the run has finished, `Get Results` returns the places as items, one per business, which you can save to a sheet, filter by rating or pass to another workflow. In a chain started by a trigger, `Wait` is what gives Apify time to finish.

What to change for a different result

| To change | Where |
| --- | --- |
| Place | \`locationQuery\`, free text such as a city, a state or a country |
| Kind of business | \`searchStringsArray\`, one or more search terms, typed as you would into Google Maps |
| Number of places | \`maxCrawledPlacesPerSearch\`, the most results for each term. Leave it out and the Actor collects every place it finds |
| Closed places | \`skipClosedPlaces\`, set to true to leave them out |
| Language | \`language\`, the language of the results |

### Example

This body in `Google Maps Actor`:

```json
{
  "language": "en",
  "locationQuery": "Austin, USA",
  "maxCrawledPlacesPerSearch": 20,
  "searchStringsArray": ["yoga studios"],
  "skipClosedPlaces": true
}
```

`Get Results` returns up to twenty items, one per studio. On the Actor’s Apify page, read on 2 November 2026, each place carries fields such as `title`, `phone`, `website`, `totalScore` and `reviewsCount`, and an address.

### For newcomers and experts

**If you are new.** n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. An Apify Actor is a ready-made scraper that you start through a web address. Starting it takes a moment. Scraping takes longer, which is why `Wait` sits between starting the run and reading it. Run one node at a time from the editor, and each shows what it received and what it sent.

**For experts.** Three calls reach three Apify endpoints, and one is easy to misread. Apify’s documentation, read on 2 November 2026, says `run-sync` returns the run’s `OUTPUT` record, which an Actor need not store, and times out after 300 seconds.

What each call does

| Node | Call | What to know |
| --- | --- | --- |
| \`Google Maps Actor\` | POST to \`runs\` | Starts the run and returns its details, including the dataset it writes to |
| \`Get Results\` | GET on \`runs/last/dataset/items\` | Reads the Actor’s last run, so a run started in between replaces the one you meant. The dataset ID from the start call pins it |
| \`Sync Run\` | POST to \`run-sync\` | Returns the \`OUTPUT\` record, not the places. Apify’s \`run-sync-get-dataset-items\` returns the places in one call |

### Good to know

Each scrape costs money, and the token sits in plain view in the file’s addresses.

- Billing: Apify bills per scraped place, so a large \`maxCrawledPlacesPerSearch\` costs more
- The token: it sits in the address of each node, and addresses show up in logs and exports, so move it into an HTTP Header Auth credential
- Personal data: a sole trader’s phone number is personal data in many places, so check the rules for cold calls and email where you market
- As shipped: the nodes have no lines and no trigger, so nothing runs until you run or join them
- Credentials: the JSON holds none, and nothing from its author’s account

## README

````markdown
# Google Maps local business scraper

An n8n workflow with the pieces for collecting local businesses from Google Maps through an Apify Actor. One JSON body
names the place, the kind of business and how many results to collect.

## What is inside

- `workflow.json`: the workflow as n8n exports it, eight nodes. It holds no credential, and the Apify token that sat in
  one of its addresses is replaced by a placeholder. Four nodes do the work and four sticky notes label them.
- `README.md`: these notes.

The file has no trigger node and no lines between its nodes. Run each node from the editor, or join them as shown
below.

## Before you start

- An n8n instance, on n8n Cloud or your own server.
- An Apify account and its API token.
- Credit on Apify. The Actor, Compass's Google Maps extractor, is paid per place scraped. Its Apify page, read on
  2 November 2026, gives a base price from $1.50 per 1,000 places, with add-ons billed apart.

## Set it up

1. In n8n, create a workflow, open its menu and choose Import from File. Pick `workflow.json`.
2. In `Google Maps Actor`, `Get Results` and `Sync Run`, replace `<YOUR_APIFY_TOKEN>` in the address with your token.
3. Open the JSON body of `Google Maps Actor` and set your search (below). Copy the same body into `Sync Run` if you use it.
4. Draw the lines `Google Maps Actor` to `Wait` to `Get Results`. Add a Manual Trigger or a Schedule Trigger before
   `Google Maps Actor` if you want the chain to start on its own.
5. Open `Wait` and set its unit and amount to the length of your scrape. The file stores only the amount, 25, so the
   node takes n8n's default unit, seconds, and pauses 25 seconds.
6. Save and run the chain from the editor. `Get Results` returns one item per business.

The body in `Google Maps Actor` and `Sync Run`:

```json
{
  "language": "en",
  "locationQuery": "New York, USA",
  "maxCrawledPlacesPerSearch": 50,
  "searchStringsArray": ["plumbers"],
  "skipClosedPlaces": false
}
```

## The three ways it calls Apify

| Node | Request | What to know |
|---|---|---|
| `Google Maps Actor` | POST to the Actor's `runs` address | Starts the run and answers at once with the run's details. The scraping goes on in Apify. |
| `Get Results` | GET on `runs/last/dataset/items` | Reads the places from the Actor's last run. Start another run before you read, and you read that run's places instead. For a fixed run, use the dataset ID in the start call's answer. |
| `Sync Run` | POST to `run-sync` | Starts the Actor and waits, but Apify's documentation, read on 2 November 2026, says it returns the run's `OUTPUT` record and not the dataset, and times out after 300 seconds. For the places in one call, Apify offers `run-sync-get-dataset-items`. |

## Change the search

- Place: `locationQuery` takes free text, such as a city, a state or a country.
- Business type: `searchStringsArray` takes one or more search terms, as you would type them into Google Maps.
- Number: `maxCrawledPlacesPerSearch` is the most results for each term. Leave it out and the Actor collects every
  place it finds.
- Closed businesses: `skipClosedPlaces` set to `true` leaves out places Google Maps marks as closed.
- Language: `language` sets the language of the results.

## Good to know

- Apify bills per scraped place, so a large `maxCrawledPlacesPerSearch` costs more.
- The token sits in the address of each node. Addresses show up in execution logs and in exports. Move the token into
  an HTTP Header Auth credential, with `Authorization` as the name and `Bearer ` followed by the token as the value,
  and take `?token=<YOUR_APIFY_TOKEN>` out of the three addresses.
- The list holds names, addresses, phone numbers and websites of businesses. A sole trader's phone number is personal
  data in many places, so check the rules for cold calls and email where you market before you contact anyone.
````

## What is in it

2 files, 8 KB, downloaded as a zip.

```text
README.md  4 KB
workflow.json  4 KB
```

## Workflow check

Checked by Mindket on 13 Nov 2026. Read from the workflow’s file, not from a run.

- Steps: It has no trigger node, so a run reaches no step
- API keys: No API key is left in the file

## Get it

- [Get it on your Mindket account](https://account.mindket.com/account/?product=mindket#/market/8d430677-93f8-412e-8662-73f055e98b31)
- [Its page on Mindket](https://mindket.com/p/8d430677-93f8-412e-8662-73f055e98b31)
