Google Maps Places MCP server

Registry name: io.github.johnisanerd/google-maps-places. Maintained by AlphaOSINT (Apify developer johnvc, GitHub johnisanerd).

What it does

Search Google Maps for places by keyword and location and get business name, address, phone, website, rating, review count, categories, coordinates and opening hours.

Bulk place lists from Google Maps, where Google Local returns the local results for a single search. Use it for lead lists, market mapping and store-location research.

This server is not self-hosted. It runs on Apify’s hosted MCP endpoint (mcp.apify.com), which starts the Apify Actor johnvc/google-maps-places-api for each tool call. You need an Apify account, and every call is billed to that account at the Actor’s prices below. Apify’s own pricing and terms apply to the account.

Charge Price (USD) What it covers
place Place (standard) $0.002 Per unique place returned in standard mode: name, address, phone, website, coordinates, and (when available) rating, review count, price level, category.
Place (rich details) $0.004 Per unique place when Rich Details is enabled: adds opening hours, rating, review count, category types, description, photo thumbnail, booking links, and Place ID.

Prices shown are Apify’s free-plan rates; paid Apify plans get lower per-event prices. Apify also bills a token amount per run start and per stored row ($0.00005, $0.00001). Prices change from time to time; the Actor’s page on Apify shows the current ones.

Data source and terms

Google Maps’ public place listings, collected by scraping. The server returns the data as published at the time of the call. You are responsible for using it in line with the source’s terms and the laws that apply to you. AlphaOSINT is not affiliated with the source.

Endpoint

Setup

Claude Code

claude mcp add --transport http google-maps-places "https://mcp.apify.com/?tools=johnvc/google-maps-places-api"

VS Code (.vscode/mcp.json)

{
  "servers": {
    "google-maps-places": {
      "type": "http",
      "url": "https://mcp.apify.com/?tools=johnvc/google-maps-places-api"
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "google-maps-places": {
      "url": "https://mcp.apify.com/?tools=johnvc/google-maps-places-api"
    }
  }
}

Claude Desktop (Settings → Connectors → Add custom connector, paste the URL). Older versions without remote connectors can bridge through mcp-remote in claude_desktop_config.json:

{
  "mcpServers": {
    "google-maps-places": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.apify.com/?tools=johnvc/google-maps-places-api"
      ]
    }
  }
}

Each client opens an Apify sign-in (OAuth) on first use. To use a token instead, send Authorization: Bearer <APIFY_TOKEN> as a header; create one under Apify Console → Settings → API & Integrations.

Tools

Tool What it does
johnvc--google-maps-places-api Runs the Actor with the parameters below and returns the result rows.
get-actor-run Status of a run started by the tool, for long runs.
get-dataset-items Pages through a run’s full output by datasetId when it is larger than the inline result.
get-key-value-store-record Reads a record a run stored, such as a run report.
abort-actor-run Stops a run.

Apify’s endpoint adds the four helper tools automatically whenever an Actor tool is loaded.

Parameters of johnvc--google-maps-places-api

Parameter Type Required Default Description
searchTerms array yes ["coffee shops in Austin, TX"] 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 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 integer   20 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 string     Optional two-letter language code for results, for example ‘en’, ‘es’, ‘fr’.

Example arguments:

{
  "searchTerms": [
    "coffee shops in Austin, TX"
  ]
}

Output

The tool returns JSON rows with these fields.

Field Type Description
searchTerm string The search term this place was returned for.
position integer Rank of the place within its result page.
title string Business or place name.
address string Full street address.
latitude number Latitude coordinate.
longitude number Longitude coordinate.
rating number Average star rating, when available.
ratingCount integer Number of ratings, when available.
priceLevel string Relative price indicator such as ‘$$’ or ‘$1-10’, when available.
type string Primary place category.
types array All place categories.
phoneNumber string Contact phone number, when available.
website string Website URL, when available.
description string Short place description, when available.
openingHours object Map of weekday to opening hours, when available.
bookingLinks array Booking or reservation links, when available.
thumbnailUrl string Place photo thumbnail.
cid string Google customer/place identifier.
fid string Google feature identifier.
placeId string Google Place ID.
error_message string Present only on error rows; explains why a request could not be completed.
cached boolean True when the place came from an identical search made in the last 24 hours; false when it was fetched in this run.
fetchedAt string When the results page holding this place was fetched (ISO 8601, UTC).
cacheAgeDays number Present only on reused rows: how old the reused results page was, in days (0.25 = 6 hours).