# Google Maps Scraper - Every Business in an Area (`mediocre_interest/google-maps-business-list`) Actor

Get every business in a city, county or ZIP code from Google Maps, not only the first 120. Each row has name, address, phone, website, rating, reviews, hours, categories and whether the listing is claimed. You pay only for places delivered; scheduled runs can return only new places.

- **URL**: https://apify.com/mediocre_interest/google-maps-business-list.md
- **Developed by:** [Mediocre_Interest](https://apify.com/mediocre_interest) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 places

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Google Maps Scraper - Every Business in an Area

**Scrape every business in a city, county or ZIP code from Google Maps, with its phone, website, rating, review count, opening hours, address and whether the owner has claimed the listing, and pay only for the places you keep.** Leave the search terms empty and press Start to get a free sample of 25 Austin coffee shops first. Schedule it with **Only places not returned before** and each run returns just the businesses that appeared since the last one.

- **The whole area, not the first page.** One Google Maps search stops after about 200 results. This Actor searches the area tile by tile, and in tests across three areas it found 91% to 98% of the businesses of the searched kind.
- **Filters cost nothing.** Leave out closed businesses, places with or without a website, claimed or unclaimed listings, ratings you don't want, and the other trades Google adds to a search. A place a filter removes is never charged.
- **Each place is billed once.** Duplicates across search terms and map tiles, places outside the area, and places an earlier run already returned are never charged.
- **Emails and social profiles on request,** charged only for the places where something is found.

### What does Google Maps Scraper - Every Business in an Area do?

Google Maps is the most complete directory of local businesses there is, but it is built for finding one place, not for listing all of them. Its results list shows about 120 places, and a search stops after about 200. It fills that list with places outside the area you are looking at, and once an area runs out of what you asked for, with other kinds of business: a rural search for plumbers comes back full of handymen and hardware stores. A single search misses most of a city.

This Actor turns a search term and a location into a complete list. It finds the area Google Maps shows for your location, such as a city, a county, a ZIP code or a state. It then searches that area for each of your terms, one map tile at a time. A tile that is too busy for one search to list completely is split into four smaller tiles, and each is searched again, so a dense downtown gets many small searches and the countryside a few large ones. It keeps the places inside the area, removes duplicates, applies your filters and writes **one row per business**.

Each row carries what Google Maps lists for the business:

- **What it is:** name, main category and every category Google files it under.
- **How it rates:** star rating, number of reviews, number of photos.
- **How to reach it:** phone in local and international format, website, and, if you ask for them, the emails and social profiles on that website.
- **Where it is:** full address, street, neighbourhood, city, postal code, state, country, and its coordinates.
- **Lead signals:** whether the owner has claimed the listing, whether it has a website, and whether Google marks it permanently closed.
- **Its weekly opening hours,** and its Google place ID and Maps link.

#### Which places does it leave out, and never charge for?

A place that is left out is never written to your dataset and never charged. The run summary counts each one under the first reason that applies.

| Reason                        | When it applies                                        | What to know                                                                                                                                                                 |
| ----------------------------- | ------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Outside the area              | Always                                                 | Google lists places past the edge of the map. Only places inside the area searched are kept                                                                                  |
| Found twice                   | Always                                                 | A business found by two search terms, or in two map tiles, is one row, credited to the first term                                                                            |
| Permanently closed            | **Skip permanently closed places** is on (the default) | Turn it off to keep them, marked in `isPermanentlyClosed`                                                                                                                    |
| Not the kind you searched for | **Only places of the kind you searched for** is on     | Matched against the business's Google categories. See [Why do I get businesses that are not what I searched for?](#why-do-i-get-businesses-that-are-not-what-i-searched-for) |
| With or without a website     | **Website** is set                                     | Useful for selling websites to businesses that have none                                                                                                                     |
| Claimed or unclaimed          | **Listing claimed by the owner** is set                | Unclaimed listings are businesses that have never taken control of their Google profile                                                                                      |
| Outside a rating band         | **Rating** is set                                      | 4.0 stars or more, below 4.0, below 3.0, or no reviews yet                                                                                                                   |
| Returned by an earlier run    | **Only places not returned before** is on              | Remembered for each combination of search terms and location                                                                                                                 |

#### How does it cover a whole city, county or state?

It starts from the area Google Maps itself shows when you search the location. That area is a rectangle, so it can reach a little past city or county lines; every row keeps its own city and postal code, so you can filter on them. Busy tiles are split and searched again until each is listed to the end, and the run summary says whether the whole area was covered or the run stopped first at your **Maximum places**, your spending limit or its timeout.

### Why use Google Maps Scraper - Every Business in an Area?

- **Complete lists of local businesses.** Tiling finds what one search cannot. In tests against a full scan of the same area on the same day, it found 98% of the plumbing businesses in Gillespie County, Texas, 97% of the restaurants in Santa Monica, California, and 91% of the plumbing businesses in Austin, Texas.
- **Only the new businesses, every week.** Switch on **Only places not returned before** and schedule the run: each run returns only places the same search has not returned before, and charges for nothing else.
- **Lead signals for agencies.** Find businesses with no website for web design, unclaimed or low-rated listings for local SEO and reputation work, and filter on them at no extra cost.
- **Pay for what you keep.** Filtered places, duplicates, places outside the area and places returned before are free. Contacts are charged only where some are found.
- **No login, no proxy to buy.** It needs no Google account.
- **Everything Apify adds.** Run it on a schedule, call it from the API, connect it to Make, n8n or Zapier, and export the places as CSV, Excel or JSON.

### How to scrape every business in an area from Google Maps

1. Open the Actor in Apify Console and press **Start** with **Search terms** empty. You get the free sample: 25 coffee shops in Austin, TX, from a saved search, at no charge.
2. Enter what you would type into Google Maps in **Search terms**, one per line, such as `plumber` or `dentist`.
3. Set **Location** to a city, county, state, ZIP or postal code, or country, such as `Austin, TX`, `Gillespie County, TX` or `90210`.
4. Set **Maximum places**. The default is 500; set 0 to search the whole area.
5. Pick any **Filters**: only places of the kind you searched for, website, claimed listing, rating, and only places not returned before.
6. To collect emails and social profiles, tick **Find emails and social profiles**.
7. Press **Start**. When the run finishes, open the **Places** tab, or export the rows as CSV, Excel or JSON.

To get new businesses every week, save the input as a task with **Only places not returned before** switched on, and add a schedule in Apify Console.

### Input

| Field                                        | What it does                                                                                                                             |
| -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| **Search terms**                             | What you would type into Google Maps, one per line, up to 10. Each is searched across the whole location. Empty returns the free sample. |
| **Location**                                 | City, county, state, ZIP or postal code, or country. The whole area Google Maps shows for it is searched.                                |
| **Maximum places**                           | Stop after this many places. Default 500; 0 means no limit.                                                                              |
| **Skip permanently closed places**           | On by default. Off keeps them, marked in `isPermanentlyClosed`.                                                                          |
| **Only places of the kind you searched for** | Off by default. On leaves out the other kinds of business Google adds to a search.                                                       |
| **Website**                                  | Any, only places with a website, or only places without one.                                                                             |
| **Listing claimed by the owner**             | Any, only claimed listings, or only unclaimed ones.                                                                                      |
| **Rating**                                   | Any, 4.0 stars or more, below 4.0, below 3.0, or no reviews yet.                                                                         |
| **Only places not returned before**          | Return only places that earlier runs with the same search terms and location did not return.                                             |
| **Find emails and social profiles**          | Visit each business's website for emails and social profiles. Off by default.                                                            |
| **Proxy configuration**                      | No proxy by default. Choose the RESIDENTIAL group if Google refuses a search.                                                            |

Get the free sample, with no search terms at all:

```json
{}
```

Find the plumbers in Fredericksburg, Texas, leaving out the other trades Google lists alongside them, and only the ones earlier runs of this search did not return:

```json
{
    "searchTerms": ["plumber"],
    "location": "Fredericksburg, TX",
    "maxPlaces": 0,
    "onlyMatchingCategory": true,
    "onlyNewPlaces": true
}
```

Find dentists in ZIP code 90210 that have no website, with their emails and social profiles:

```json
{
    "searchTerms": ["dentist"],
    "location": "90210",
    "website": "without",
    "scrapeContacts": true
}
```

### Output

Each run writes one row per business to its default dataset, shown in the **Places** tab. You can export it as JSON, CSV, Excel, XML or HTML, or read it through the API. The run's totals go to its key-value store as `summary-run`.

The free sample input above produces 25 rows. This is the seventh:

```json
{
    "name": "UFO Coffee & Tea",
    "category": "Coffee shop",
    "categories": "Coffee shop",
    "rating": 4.9,
    "reviewCount": 50,
    "phone": "(512) 850-5150",
    "phoneInternational": "+1 512-850-5150",
    "website": "http://ufo-coffee.com/",
    "domain": "ufo-coffee.com",
    "emails": null,
    "facebook": null,
    "instagram": null,
    "linkedin": null,
    "twitter": null,
    "youtube": null,
    "tiktok": null,
    "isClaimed": false,
    "isPermanentlyClosed": false,
    "openingHours": "Monday: 7 AM–4 PM; Tuesday: 7 AM–4 PM; Wednesday: 7 AM–4 PM; Thursday: 7 AM–4 PM; Friday: 7 AM–4 PM; Saturday: 7 AM–4 PM; Sunday: 7 AM–4 PM",
    "imageCount": 15,
    "address": "2307 1/2 Manor Rd, Austin, TX 78722",
    "street": "2307 1/2 Manor Rd",
    "neighborhood": "East Austin",
    "city": "Austin",
    "postalCode": "78722",
    "state": "Texas",
    "countryCode": "US",
    "latitude": 30.2844171,
    "longitude": -97.71734699999999,
    "placeId": "ChIJ0S8AJAC1RIYRLIa71SkPRXc",
    "cid": "8594292136260372012",
    "googleMapsUrl": "https://www.google.com/maps?cid=8594292136260372012",
    "isNew": null,
    "searchTerm": "coffee shops",
    "searchLocation": "Austin, TX",
    "source": "Google Maps sample",
    "collectedAt": "2026-10-12T07:08:40.000Z"
}
```

A live search returns rows of the same shape, with `source` set to `Google Maps`, `isNew` set to `true` or `false`, and the contact fields filled when you ask for contacts and the website lists them.

#### What does each place row contain?

| Columns                                                                           | Meaning                                                                                                                                                                                         |
| --------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`, `category`, `categories`                                                  | The business, the first category Google lists for it, and every category, separated by commas                                                                                                   |
| `rating`, `reviewCount`, `imageCount`                                             | Star rating, number of Google reviews and number of photos. Empty when Google shows none                                                                                                        |
| `phone`, `phoneInternational`                                                     | The phone number as Google shows it, and in international format                                                                                                                                |
| `website`, `domain`                                                               | The website on the listing and its domain                                                                                                                                                       |
| `emails`                                                                          | Up to three addresses from the business's website, on its own domain or role inboxes such as `info@`. Never personal mailboxes such as gmail.com. Only with **Find emails and social profiles** |
| `facebook`, `instagram`, `linkedin`, `twitter`, `youtube`, `tiktok`               | The business's own profile on each network, from its website. Only with **Find emails and social profiles**                                                                                     |
| `isClaimed`                                                                       | Whether the owner has claimed the Google listing. `false` means Google Maps shows "Claim this business"                                                                                         |
| `isPermanentlyClosed`                                                             | Whether Google marks the business permanently closed. `true` appears only when **Skip permanently closed places** is off                                                                        |
| `openingHours`                                                                    | Weekly hours, one day after another                                                                                                                                                             |
| `address`, `street`, `neighborhood`, `city`, `postalCode`, `state`, `countryCode` | The address, whole and in parts                                                                                                                                                                 |
| `latitude`, `longitude`                                                           | Where Google places the business on the map                                                                                                                                                     |
| `placeId`, `cid`, `googleMapsUrl`                                                 | Google's place ID, its numeric customer ID, and a link that opens the listing on Google Maps                                                                                                    |
| `isNew`                                                                           | Whether earlier runs of the same search had not returned it. Empty on the free sample                                                                                                           |
| `searchTerm`, `searchLocation`, `source`, `collectedAt`                           | Which of your terms found it, the location searched, where the row came from, and when                                                                                                          |

#### What is in the run summary?

The `summary-run` record in the key-value store says what the run did:

- the area searched, with its name and size, and whether every tile was searched to the end;
- how many places Google listed, how many were outside the area, how many your filters left out, and of those how many were other kinds of business, with their categories;
- how many were left out as returned before, how many were delivered and how many charged;
- with contacts on, how many websites were visited and how many gave an email or a social profile;
- why the run stopped, if it stopped early: your maximum, your spending limit or its timeout.

### How much does it cost to scrape businesses from Google Maps?

The Actor is **pay per event**, at the prices shown on this page:

| Event                      | Charged                                                           | When                                                                     |
| -------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------ |
| Place (`place-scraped`)    | Once per business delivered                                       | After that business's row is saved to your dataset                       |
| Contact (`contacts-found`) | Once per business whose website gave an email or a social profile | Only with **Find emails and social profiles** on, after the row is saved |

A place costs **$4.00 per 1,000 on the Free plan, $3.66 on Bronze, $3.33 on Silver and $3.00 on Gold and above**. Contacts cost **$2.00 per 1,000 places where some are found**, on every plan. Apify also charges its usual small start fee per run.

What whole areas cost on the Free plan, from real searches:

| Search                                                      | Places | Cost  |
| ----------------------------------------------------------- | ------ | ----- |
| Plumbers across Gillespie County, TX                        | 282    | $1.13 |
| The same, with **Only places of the kind you searched for** | 115    | $0.46 |
| Plumbers across Austin, TX                                  | 517    | $2.07 |
| Restaurants across Santa Monica, CA                         | 1,688  | $6.75 |

Nothing else is charged:

- **The free sample** costs nothing.
- **Places your filters leave out** cost nothing, whichever filter it is.
- **Duplicates, places outside the area and places returned before** cost nothing.
- **Websites with no contacts** cost nothing, and neither do places with no website.
- **A search that finds nothing** costs nothing, and neither does a run that cannot reach Google Maps.

To set a budget, set **Maximum cost per run** in the run options. The Actor stops when it reaches it, never delivers a place it cannot charge for, and its status message says how many it delivered. If your budget does not cover a single place, the run stops before it searches.

### How to run the Google Maps scraper from the API or from Make, n8n and Zapier

A town's businesses usually arrive within a minute, so the Actor can run synchronously: one request in, places out.

```bash
curl -X POST "https://api.apify.com/v2/acts/mediocre_interest~google-maps-business-list/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
        "searchTerms": ["plumber"],
        "location": "Fredericksburg, TX",
        "maxPlaces": 20
      }'
```

The response is a JSON array of up to 20 place rows like the one above. Add `&format=csv` for a spreadsheet, or `&fields=name,phone,website,rating,reviewCount,address,isClaimed` to keep only the columns you need. A run that searches a whole city takes longer than a synchronous request waits, so start it with `/runs` and read its dataset when it finishes.

To feed a CRM, a Google Sheet or an outreach tool, use Apify's integrations for [Make, n8n, Zapier and others](https://docs.apify.com/platform/integrations). For a weekly list of new businesses, schedule the run in Apify Console with **Only places not returned before** switched on.

### Tips for better results

- **Use Google's own word for the kind of business.** Search terms work best as Google Maps names categories: "dentist", "hair salon", "coffee shop". This matters most with **Only places of the kind you searched for**, which reads categories word for word, in English.
- **One location per run, as large as you need.** A county or a state works as well as a city; set **Maximum places** low to try a search first.
- **Search several terms together.** Up to 10 terms share one run, and a business that two of them find is delivered and charged once.
- **Build lead lists with the free filters.** "Without a website" finds businesses that need one, "unclaimed" finds listings nobody manages, and "below 4.0 stars" finds businesses with a reputation to repair.
- **If Google refuses a search,** run it again later, or choose the RESIDENTIAL proxy group under **Advanced**.

### FAQ

#### Can it get more than 120 results from Google Maps?

Yes. The Google Maps list stops at about 120 places and one search at about 200. This Actor runs as many searches as the area needs, one per map tile, and joins their results. How many places you get depends on how many Google lists in the area: 282 for plumbers in a rural Texas county, 1,688 for restaurants in Santa Monica.

#### Why do I get businesses that are not what I searched for?

Google Maps fills a search with other kinds of business once an area runs out of what you asked for: a search for plumbers in the countryside also lists handymen, builders and hardware stores. They are inside the area, so by default they are delivered. Switch on **Only places of the kind you searched for** to leave them out, uncharged. It keeps a place when one of its Google categories holds every word of one of your search terms, ignoring words such as "near me" and "best". Because it reads words, it also leaves out a business Google files under a synonym, such as a coffee shop listed only as "Cafe", which is why it is off by default.

#### Is it legal to scrape Google Maps?

The Actor reads business listings that Google Maps shows to anyone, without logging in. It returns business information only: no reviews, no reviewer names and no owner names, and only email addresses a business publishes for itself. Whether a particular use is lawful depends on where you are and what you do with the data, so if you are unsure, ask a lawyer.

#### Does it scrape Google Maps reviews and photos?

No. Each row has the rating, the number of reviews and the number of photos, but not the reviews or the photos themselves.

#### Why did my run return no places?

The run's status message gives the reason:

- **Google Maps lists nothing for the search.** The message names the term and the place searched.
- **Your filters left everything out.** The message counts what was left out, and when **Only places of the kind you searched for** removed them, names the categories Google uses for them, so you can search with one of those words.
- **Nothing new.** With **Only places not returned before** on, a run that finds only places it has already returned succeeds with "No new places".
- **The location is not an area.** If Google matches your location to a business rather than a place, the run fails and names what it matched.

None of these is charged.

#### How does it remember which places it already returned?

Every live run records the places it returned in a key-value store in your Apify account, `google-maps-business-list-seen`, with one record per combination of search terms and location. With **Only places not returned before** on, a run leaves out the places in that record. Delete the store to start over.

#### Where do the emails and social profiles come from?

From the business's own website, never from Google. With **Find emails and social profiles** on, the Actor reads the home page, and the contact page when the home page shows no address. It keeps addresses on the business's own domain and role inboxes such as `info@` or `bookings@`, and drops personal mailboxes such as gmail.com. A LinkedIn link is kept only when it is a company page, never a person's profile. Places whose website shows nothing are not charged.

#### Which countries does it work in?

Any country Google Maps covers. Locations are looked up as Google Maps looks them up, so a postal code from the UK, Canada or Germany works as well as a US ZIP code. Categories and opening hours come back in English.

### What other Actors work with this one?

- [Job Posting Leads for Recruiters & Agencies](https://apify.com/mediocre_interest/job-posting-leads): companies hiring right now, from Indeed, one row per company. Pair it with this Actor to find local businesses that are growing.
- [Ad Library Scraper — Google, Meta & LinkedIn](https://apify.com/mediocre_interest/ads-library-scraper): the ads a business is running, another sign that it spends on growth.
- [Airtable Data Quality Scan - Find Duplicates](https://apify.com/mediocre_interest/airtable-data-quality-scan): duplicate records and broken values in an Airtable base, such as the CRM your leads end up in.
- [n8n Workflow Auditor - Linter & Security Review](https://apify.com/mediocre_interest/n8n-workflow-auditor): a review of the n8n workflows that move your leads around.

### Support

Found a business the Actor missed, a place it should have left out, or a run that returned nothing it should have? Open an issue on the **Issues** tab, with the run ID and the search terms and location that show it. Custom work, such as a scheduled lead list for your agency or extra fields, is available on request.

# Actor input Schema

## `searchTerms` (type: `array`):

What you would type into Google Maps, one per line, up to 10, such as plumber or coffee shop. Each is searched across the whole location. Leave empty to get a free sample instead: coffee shops in Austin, TX from a saved search, which searches nothing and costs nothing.

## `location` (type: `string`):

City, county, state, ZIP or postal code, or country to search, such as Austin, TX or 90210. The whole area is searched.

## `maxPlaces` (type: `integer`):

Stop after this many places. You are charged once per place returned. 0 means no limit: the whole area is searched.

## `skipClosedPlaces` (type: `boolean`):

Leave out businesses Google marks as permanently closed. Turn it off to keep them, marked in isPermanentlyClosed.

## `onlyMatchingCategory` (type: `boolean`):

Leave out the other businesses Google Maps lists once an area runs out of what you searched for, such as handymen and hardware stores in a search for plumbers. A place is kept when one of its Google categories holds every word of one of your search terms; words such as near me and best are ignored. Use Google's own word for the kind: a coffee shop Google lists only as Cafe is left out of a search for coffee shop.

## `website` (type: `string`):

Keep places by whether their Google listing shows a website.

## `claimStatus` (type: `string`):

Keep places by whether the owner has claimed the Google listing. Unclaimed listings show "Claim this business" on Google Maps.

## `rating` (type: `string`):

Keep places by their Google star rating.

## `onlyNewPlaces` (type: `boolean`):

Return only places that earlier runs with the same search terms and location did not return. Schedule the Actor with this on to get just the new listings each time. Every run remembers the places it returned, in the key-value store google-maps-business-list-seen in your account: delete that store to start over.

## `scrapeContacts` (type: `boolean`):

Visit each business's own website and read its email addresses and social profiles off it, into the emails, facebook, instagram, linkedin, twitter, youtube and tiktok fields. One or two extra requests per place that has a website. You are charged for this only where something is found. Business addresses only: personal mailboxes such as gmail.com are left out.

## `proxyConfiguration` (type: `object`):

No proxy by default: Google Maps answers Apify's own servers directly, faster and more completely than through a datacenter proxy. If a run fails because Google refused the search, choose the RESIDENTIAL proxy group here.

## Actor input object example

```json
{
  "location": "Austin, TX",
  "maxPlaces": 500,
  "skipClosedPlaces": true,
  "onlyMatchingCategory": false,
  "website": "any",
  "claimStatus": "any",
  "rating": "any",
  "onlyNewPlaces": false,
  "scrapeContacts": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `places` (type: `string`):

Every business found in the area that passed your filters, with its rating, phone, website, address and hours.

## `runSummary` (type: `string`):

What the run did: how much of the area it searched, places found, filtered out and delivered, and the budget it worked to.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "location": "Austin, TX",
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("mediocre_interest/google-maps-business-list").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "location": "Austin, TX",
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("mediocre_interest/google-maps-business-list").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "location": "Austin, TX",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call mediocre_interest/google-maps-business-list --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mediocre_interest/google-maps-business-list"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/j25hKVg7Z3mc63qxc/builds/i9p8wKjQo0Echwqq4/openapi.json
