# Google Maps Places Scraper - Fast & Cheap Bulk Places (`johnvc/google-maps-places-api`) Actor

Fast, low-cost Google Maps places scraper. Get business names, addresses, phone numbers, websites, ratings, categories, coordinates, and opening hours as clean structured JSON. Built for bulk research and dataset building.

- **URL**: https://apify.com/johnvc/google-maps-places-api.md
- **Developed by:** [John](https://apify.com/johnvc) (community)
- **Categories:** SEO tools, Developer tools, Travel
- **Stats:** 461 total users, 233 monthly users, 100.0% runs succeeded, 6 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.88 / 1,000 place (rich details)s

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Google Maps Places Scraper - Fast & Cheap Bulk Places

Pull Google Maps places in bulk and get clean, structured JSON, fast and cheap. Business names, addresses, phone numbers, websites, ratings, categories, GPS coordinates, opening hours, price levels, and Google Place IDs. Search by keyword and location, run many searches at once, and export thousands of places.

This is the **Lite** option: just the place data, fast, no enrichment and no fuss. It talks to a structured search API instead of driving a slow, breakable headless browser, so it is quick and reliable. If you need emails, reviews, or popular times, this is not the tool - see the comparison below.

### What you get

One clean row per place:

- Name, full address, latitude, longitude
- Rating and review count
- Category (`type`) and all categories (`types`)
- Phone number and website
- Opening hours
- Price level and a short description
- Photo thumbnail, plus Google `cid`, `fid`, and `placeId`

### What you do NOT get

- Emails and contact discovery
- Individual reviews and review text
- Popular times / busyness graphs
- Photo galleries, owner info, social links

Need emails, social profiles, or amenity attributes? Feed the `placeId` from these results into the [Google Maps Place ID & Business Contact API](https://apify.com/johnvc/google-maps-place-id-contact-api?fpr=9n7kx3\&fp_sid=readme_notget), which resolves a place ID to a contact email, social profiles, accessibility and payment attributes, and permanent-closure status. Search here, enrich there, and you only pay for enrichment on the places you actually want. For photo galleries, use the [Google Maps Photos API](https://apify.com/johnvc/google-maps-photos-api?fpr=9n7kx3\&fp_sid=readme_notget).

This actor stays the fast, cheap complement for everyone who just needs the place data.

### Use cases

- Build local business datasets for market research or site-selection analysis
- Pull competitor locations, ratings, and price levels across whole cities
- Assemble location-intelligence layers (names, categories, GPS coordinates) for mapping and GIS work
- Collect training data for machine-learning models that need real-world place attributes
- Refresh a directory or listings product with current phone numbers, websites, and opening hours

### When to use this actor

|  | This actor (Lite) | Full enrichment scrapers |
|---|---|---|
| Price | $0.80 - $2.00 / 1,000 places | $0.76 - $4.00 / 1,000 places |
| Emails, reviews, popular times | Not included | Included |
| Speed | API-based, fast | Browser-based, slower |
| Best for | Bulk research, datasets, location intelligence, ML training | Lead generation, sales prospecting |

Rule of thumb: **bulk place data → this actor; sales enrichment → a full enrichment scraper.**

### 🔌 Integrations: Automate Local Lead Collection with This Google Maps Scraper

A single run answers one question ("who are the coffee shops in Austin?"). The real value comes from running this Google Maps scraper on a schedule, so fresh place data, new phone numbers, and updated ratings land in your stack automatically. See the full list of [Apify platform integrations](https://docs.apify.com/platform/integrations).

**Tasks and Schedules (the core recipe).** Save one [task](https://docs.apify.com/platform/actors/running/tasks) per area or niche you track (for example "roofing contractors in Tampa" or "med spas in Miami"), then attach a [schedule](https://docs.apify.com/platform/schedules) from the Actor's Actions, then Schedule menu. Useful cron strings: `0 7 * * *` (daily at 7 AM), `0 */6 * * *` (every six hours), `0 9 * * 1` (Mondays). One schedule can trigger many saved tasks at once, so a whole city of niches refreshes in a single pass.

**n8n.** This Actor ships an n8n community node (see the n8n integration section below). A four-step lead pipeline: Schedule Trigger, then the Google Maps Places node, then a Filter on `rating` or `ratingCount`, then Slack or a Google Sheet.

**Make and Zapier.** The same pattern works no-code with [Make](https://docs.apify.com/platform/integrations/make) and [Zapier](https://docs.apify.com/platform/integrations/zapier): trigger on a schedule, run the Actor, then route each new place where you need it.

**Store the history (Supabase).** Send each run's rows into a table so a place and lead history accumulates across runs. No-code: the n8n Actor node, then a Supabase node. Or in Python (each row carries `title`, `address`, `phoneNumber`, `website`, `rating`, `ratingCount`, `latitude`, `longitude`, and `placeId`):

```python
from apify_client import ApifyClient
from supabase import create_client

apify = ApifyClient("YOUR_APIFY_TOKEN")
supabase = create_client("YOUR_SUPABASE_URL", "YOUR_SUPABASE_KEY")

run = apify.actor("johnvc/google-maps-places-api").call(run_input={
    "searchTerms": ["coffee shops in Austin, TX"],
    "maxResultsPerSearch": 40,
})
rows = list(apify.dataset(run["defaultDatasetId"]).iterate_items())
supabase.table("places").upsert(rows).execute()
```

**MCP and AI agents.** Add this API as a tool in [Claude Code](https://claude.ai/referral/uIlpa7nPLg) (free trial) or Cursor through the Apify MCP server so an agent can pull local businesses on request (see the Use from an AI agent section below).

**Webhooks.** For anything custom, fire an [Apify webhook](https://docs.apify.com/platform/integrations/webhooks) on `ACTOR.RUN.SUCCEEDED` to push each run's dataset into your own service.

### Pricing

Pay-per-result: you are charged only for the **unique places** returned (duplicates across pages are removed before billing). The per-place price scales down with your Apify plan:

| Plan | Per place | Per 1,000 places |
|---|---|---|
| Free | $0.0020 | $2.00 |
| Bronze | $0.0017 | $1.70 |
| Silver | $0.0014 | $1.40 |
| Gold | $0.0012 | $1.20 |
| Platinum | $0.0010 | $1.00 |
| Diamond | $0.0008 | $0.80 |

No per-run fee, no monthly minimum. You only pay for places you receive.

### Input

| Field | Type | Description |
|-------|------|-------------|
| `searchTerms` | array of strings | One or more searches, e.g. `coffee shops in Austin, TX`. Each is searched independently. Required. |
| `location` | string | Optional place to focus every search term on, e.g. `Austin, TX, United States`. |
| `maxResultsPerSearch` | integer | Places per search term. Minimum 20, default 20. |
| `language` | string | Optional language code, e.g. `en`, `es`, `fr`. |

#### Example input

```json
{
  "searchTerms": ["coffee shops in Austin, TX", "bookstores in Austin, TX"],
  "location": "Austin, TX, United States",
  "maxResultsPerSearch": 40
}
```

### Sample output

```json
{
  "searchTerm": "coffee shops in Austin, TX",
  "position": 1,
  "title": "Epoch Coffee",
  "address": "221 W N Loop Blvd, Austin, TX 78751",
  "latitude": 30.3186037,
  "longitude": -97.7245402,
  "rating": 4.5,
  "ratingCount": 2481,
  "priceLevel": "$1-10",
  "type": "Coffee shop",
  "types": ["Coffee shop"],
  "phoneNumber": "(512) 454-3762",
  "website": "https://www.epochcoffee.com/",
  "description": "Cool, vibrant small-chain cafe featuring nibbles, tea & carefully brewed espresso drinks.",
  "openingHours": { "Monday": "12 AM-11:30 PM", "Tuesday": "6 AM-12 AM", "Wednesday": "Open 24 hours" },
  "thumbnailUrl": "https://lh3.googleusercontent.com/...",
  "cid": "140078896924485689",
  "fid": "0x8644ca6bc309e81b:0x1f1a903bbb66839",
  "placeId": "ChIJG-gJw2vKRIYROWi2uwOp8QE"
}
```

### How to get started

1. Open [Google Maps Places Scraper on the Apify Store](https://apify.com/johnvc/google-maps-places-api?fpr=9n7kx3).
2. Enter one or more `searchTerms` (add a `location` to focus them).
3. Set `maxResultsPerSearch`, then run the Actor.
4. Export the dataset as JSON, CSV, or Excel, or pull it from the API.

Data source: [Google Maps](https://www.google.com/maps).

Prefer to start from code? See the [example repo on GitHub](https://github.com/johnisanerd/Apify-Google-Maps-Places-API) for a Python quick-start and step-by-step MCP setup walkthroughs.

### Run from the API

```bash
curl -X POST "https://api.apify.com/v2/acts/johnvc~google-maps-places-api/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchTerms":["coffee shops in Austin, TX"],"maxResultsPerSearch":40}'
```

### Use from an AI agent (MCP)

This Actor is compatible with the Model Context Protocol (MCP). Connect your agent to the Apify MCP server at `https://mcp.apify.com` and it becomes a callable tool for requests like "find every hardware store in Denver." If you run agents from [Claude Code](https://claude.ai/referral/uIlpa7nPLg) (free trial) or [Claude Cowork](https://claude.ai/referral/uIlpa7nPLg) (free trial), add the Apify MCP server and call this Actor directly.

Add it with this Actor-specific URL:

https://mcp.apify.com/?tools=actors,docs,johnvc/google-maps-places-api

Setup walkthrough:

https://www.youtube.com/watch?v=jREWahDGhJM

Apify MCP integration docs: https://docs.apify.com/platform/integrations/mcp

### 💸 Pay per run with crypto (x402)

The Google Maps Places Scraper supports agentic payments via the [x402 protocol](https://docs.apify.com/platform/integrations/x402).
AI agents and MCP clients can pay for runs in USDC (on Base) with no Apify account or API token needed:
point your agent at the [Apify MCP server](https://mcp.apify.com/?tools=actors,docs,johnvc/google-maps-places-api) and it can
discover, pay for, and run this Actor autonomously. Read the
[Apify x402 announcement](https://apify.com/change-log/pay-for-apify-actors-with-x402?fpr=9n7kx3) for details.

### 🔗 Related Tools

Pair this Google Maps scraper with other tools in the same local-data family:

- [Google Maps Place ID & Business Contact API](https://apify.com/johnvc/google-maps-place-id-contact-api?fpr=9n7kx3\&fp_sid=readme_related): the direct next step after this actor. Feed it a `placeId` and it returns the contact email, social profiles, accessibility and payment attributes, closure status, and plus code, none of which appear in a Google place listing.
- [Google Maps Photos API](https://apify.com/johnvc/google-maps-photos-api?fpr=9n7kx3\&fp_sid=readme_related): the full image gallery for a place, rather than the single thumbnail returned here.
- [Google Maps Contributor Reviews API](https://apify.com/johnvc/google-maps-contributor-reviews-api?fpr=9n7kx3): after you find a place, pull the full review and contribution history behind a reviewer to judge how trustworthy a rating is.
- [Google Local API](https://apify.com/johnvc/google-local-api?fpr=9n7kx3): capture the Local Pack and local business SERP for a keyword, a different angle on which businesses rank in a city.
- [Google Maps Directions API](https://apify.com/johnvc/google-maps-directions-api?fpr=9n7kx3): get routes, distances, and drive times between the places you collect, useful for territory planning and field-sales routing.
- [Google Maps Reviewer Geo Profile API](https://apify.com/johnvc/google-maps-reviewer-geo-profile-api?fpr=9n7kx3): profile the geographic spread of the reviewers behind a place's ratings.

For contrast, a free Google Maps places scraper such as [Free Google Maps Scraper](https://apify.com/s-r/free-google-maps-scraper?fpr=9n7kx3) exists, but its Store listing carries no description, reports a lower run success rate (around 91 percent), and has no user ratings yet. This API is actively maintained, returns clean structured fields, and holds a 100 percent run success rate.

### FAQ

#### How do I get emails?

This actor does not return emails, because Google does not publish an email address in its place listings. Take the `placeId` from any result here and pass it to the [Google Maps Place ID & Business Contact API](https://apify.com/johnvc/google-maps-place-id-contact-api?fpr=9n7kx3\&fp_sid=readme_faq_email). That actor reads the business website, including its contact and about pages, and returns the contact email plus social profiles. Running the two in sequence means you pay for enrichment only on the places you shortlist.

#### Does it return reviews or popular times?

No. It returns place and business listing data only. For reviews, use a reviews scraper; for popular times, use a full enrichment scraper.

#### How many places per search?

Set `maxResultsPerSearch` (minimum 20). Results come in pages of about 20 and are trimmed to your count; a search stops early when the area runs out of places, so you only pay for what exists.

#### Why did I get fewer results than I asked for?

`maxResultsPerSearch` is a ceiling, not a guarantee. Some areas simply have fewer matching places.

#### Can I search many areas at once?

Yes. Pass multiple `searchTerms`; each is searched independently and tagged with its source term in the output.

#### Can I schedule this Google Maps Places Scraper?

Yes, and this is where the tool earns its keep. Any run can be automated on a [schedule](https://docs.apify.com/platform/schedules): create a [saved task](https://docs.apify.com/platform/actors/running/tasks) with your `searchTerms` and `location`, then attach a schedule from the Actor's Actions, then Schedule menu. Handy cron strings are `0 7 * * *` for daily at 7 AM, `0 */6 * * *` for every six hours, and `0 9 * * 1` for Mondays, and one schedule can trigger many saved tasks at once. See the Integrations section above for the full monitoring recipe.

#### Should I use an API or a web scraper for Google Maps?

Both, and here you get the best of each. An official [API](https://en.wikipedia.org/wiki/API) is rate limited, quota bound, and often missing fields like phone numbers or opening hours. This Actor gives you the same place data through [web scraping](https://en.wikipedia.org/wiki/Web_scraping), delivered either as a no-code run in the Apify console or a clean endpoint you call yourself, with no per-request quota to manage.

#### Can I integrate this Google Maps scraper with other apps?

Yes. The Actor connects to almost any cloud service through [Apify integrations](https://docs.apify.com/platform/integrations): [Make](https://docs.apify.com/platform/integrations/make), [Zapier](https://docs.apify.com/platform/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), Google Drive, and more, plus [webhooks](https://docs.apify.com/platform/integrations/webhooks) that fire on `ACTOR.RUN.SUCCEEDED` for custom actions. See the Integrations section above for copy-paste recipes.

#### Can I use this Google Maps Places API with the Apify API?

Yes. The [Apify API](https://apify.com/johnvc/google-maps-places-api/api?fpr=9n7kx3) gives programmatic access to run the Actor, schedule it, and fetch datasets, and the `apify-client` package is available for both Node.js and Python. There is a ready-to-run curl example in the Run from the API section above.

#### Can I use this scraper through an MCP server?

Yes. Add it as a tool to any MCP client, including [Claude Code](https://claude.ai/referral/uIlpa7nPLg) (free trial) and Cursor, through the hosted [Apify MCP server](https://mcp.apify.com/) using the Actor-specific URL `https://mcp.apify.com/?tools=actors,docs,johnvc/google-maps-places-api`. See the Use from an AI agent section above and the [Apify MCP docs](https://docs.apify.com/platform/integrations/mcp).

#### How else can I collect Google Maps data?

Chain this Actor with its neighbors. Use the [Google Local API](https://apify.com/johnvc/google-local-api?fpr=9n7kx3) for Local Pack SERP results, the [Google Maps Contributor Reviews API](https://apify.com/johnvc/google-maps-contributor-reviews-api?fpr=9n7kx3) for reviewer history, and the [Google Maps Directions API](https://apify.com/johnvc/google-maps-directions-api?fpr=9n7kx3) for routes and drive times between the places you collect. See Related Tools above for the full list.

#### Do I need a Google Maps API key to use this?

No. You do not need a Google Cloud project or a Google Maps Platform key, and you are not bound by Google's usage quotas or per-request billing. You run this Actor with your Apify account and it handles access to [Google Maps](https://www.google.com/maps) for you, then bills only for the unique places you receive.

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

Scraping publicly visible business listings is widely practiced, and this Actor collects only public place data (names, addresses, ratings, and the like), not private or personal information. For a plain-language overview see Apify's note on [the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/). If you plan to scrape at scale or reuse the data commercially, check the current terms and take your own legal advice.

#### What is Google Maps scraping?

Google Maps scraping is the automated collection of public business listings from [Google Maps](https://www.google.com/maps) into structured data you can analyze, using [web scraping](https://en.wikipedia.org/wiki/Web_scraping) rather than manual copy and paste. This Actor does exactly that in bulk: you pass search terms, and it returns clean rows of place data.

### n8n integration

Available as an n8n community node, **[n8n-nodes-google-maps-places-api](https://www.npmjs.com/package/n8n-nodes-google-maps-places-api)**. In n8n: Settings, Community Nodes, install `n8n-nodes-google-maps-places-api`, then use it in any workflow (it also works as an AI Agent tool).

### Featured Tasks

Ready-made use cases you can run in one click:

- [Find roofing contractor leads in Tampa with phone numbers](https://apify.com/johnvc/google-maps-places-api/examples/find-roofing-contractor-leads-in-tampa-with-phone-numbers?fpr=9n7kx3) - pull roofing contractors in Tampa from Google Maps: business name, phone number, address, rating, reviews, and website for each lead as JSON..
- [Extract phone numbers from Google Maps by zip code](https://apify.com/johnvc/google-maps-places-api/examples/extract-phone-numbers-from-google-maps-by-zip-code?fpr=9n7kx3) - scrape phone numbers from Google Maps for any zip code search.
- [Build a list of med spas in Miami with phone numbers](https://apify.com/johnvc/google-maps-places-api/examples/build-a-list-of-med-spas-in-miami-with-phone-numbers?fpr=9n7kx3) - build a med spa lead list for Miami from Google Maps: name, phone number, address, rating, review count, and website for every spa as JSON..
- [Extract local business leads from Google Maps by API](https://apify.com/johnvc/google-maps-places-api/examples/extract-local-business-leads-from-google-maps-by-api?fpr=9n7kx3) - google Maps leads extractor by API: feed it search terms and get business names, phone numbers, addresses, ratings, and websites in bulk as JSON..
- [Generate local leads in Claude via Google Maps MCP](https://apify.com/johnvc/google-maps-places-api/examples/generate-local-leads-in-claude-via-google-maps-mcp?fpr=9n7kx3) - connect this MCP-ready Google Maps API to [Claude](https://claude.ai/referral/uIlpa7nPLg) and pull local business leads with phone numbers and websites directly in chat. (free trial available).
- [Export Google Maps Places to CSV](https://apify.com/johnvc/google-maps-places-api/examples/export-google-maps-places-to-csv?fpr=9n7kx3)
- [批量导出谷歌地图商家数据到 CSV](https://apify.com/johnvc/google-maps-places-api/examples/piliang-daochu-google-ditu-shangjia-csv?fpr=9n7kx3) - 按关键词批量抓取谷歌地图商家: 名称、地址、电话、评分、坐标、营业时间, 一键导出 CSV/JSON/Excel。
- [抓取洛杉矶中餐馆名单(含电话和评分)](https://apify.com/johnvc/google-maps-places-api/examples/luoshanji-zhongcanguan-mingdan-dianhua?fpr=9n7kx3) - 从谷歌地图提取洛杉矶中餐馆: 店名、电话、地址、评分、评论数、网站, 结构化 JSON 输出。

***

### 🌐 About Alpha OSINT

This Actor is part of [Alpha OSINT](https://www.alphaosint.com), toolset of financial and operations data sources and APIs.
See the [Google Maps Places Scraper - Fast & Cheap source page](https://www.alphaosint.com/sources/google-maps-places-scraper-fast-cheap-bulk-places/) for related tools and use cases.
For support or requests for this actor, please start a ticket [directly on our support page](https://apify.com/johnvc/google-maps-places-api/issues/open?fpr=9n7kx3).

Last Updated: 2026.09.10

# Actor input Schema

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

One or more searches, for example 'coffee shops in Austin, TX' or 'dentists in 90210'. Each term is searched independently. Include a location here, or set the Location field below to apply one to every term.

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

Optional place to focus all search terms on, for example 'Austin, TX, United States'. Leave blank if your terms already include a location.

## `maxResultsPerSearch` (type: `integer`):

How many places to return per search term. Results come in pages of about 20; the Actor pulls just enough pages to reach this count, then stops early when a term runs out of places. Minimum 20.

## `language` (type: `string`):

Optional two-letter language code for results, for example 'en', 'es', 'fr'.

## Actor input object example

```json
{
  "searchTerms": [
    "coffee shops in Austin, TX"
  ],
  "maxResultsPerSearch": 20
}
```

# Actor output Schema

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

All place records stored in the default dataset, one item per unique place.

# 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 = {
    "searchTerms": [
        "coffee shops in Austin, TX"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("johnvc/google-maps-places-api").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 = { "searchTerms": ["coffee shops in Austin, TX"] }

# Run the Actor and wait for it to finish
run = client.actor("johnvc/google-maps-places-api").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 '{
  "searchTerms": [
    "coffee shops in Austin, TX"
  ]
}' |
apify call johnvc/google-maps-places-api --silent --output-dataset

```

## MCP server setup

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

```

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/WQbrHYgrJV5fP6b09/builds/VbRlTuIRtSwYytDpT/openapi.json
