# Google Maps Business Intelligence MCP (`rothy/gmaps-intel-mcp`) Actor

Find and score local business leads with AI. Every result includes a Lead Quality Score showing which businesses need your services most — no website, low ratings, new listings. Built for sales agents and lead gen workflows.

- **URL**: https://apify.com/rothy/gmaps-intel-mcp.md
- **Developed by:** [Sam Rothschild](https://apify.com/rothy) (community)
- **Categories:** AI, Lead generation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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 Business Intelligence MCP

**The only Google Maps tool that scores lead quality.**

Every business listing comes with a **Lead Quality Score (0–100)** and an outreach hint — so sales agents and AI workflows instantly know which businesses need your services and exactly what to pitch.

This is the third in a portfolio of intelligence-first Apify MCP tools, alongside [Amazon Intel MCP](https://apify.com/actors/amazon-intel-mcp) and [Shopify Intel MCP](https://apify.com/actors/shopify-intel-mcp).

***

### ⚠️ Requirements: Google Places API Key

This actor uses the **Google Places API** for reliable, structured data — no scraping, no bot detection issues.

**You need a free Google API key to use this actor.**

**Setup (2 minutes):**

1. Go to [console.cloud.google.com](https://console.cloud.google.com)
2. Create a project → search **"Places API"** → Enable it
3. Go to **APIs & Services** → **Credentials** → **Create API Key**
4. Pass the key in the Actor input as `googleApiKey`

**Cost:** Google gives you $200/month free credit (~28,000 Text Search calls). For most workflows this is effectively free.

Pass your key in the Actor input:

```json
{
  "tool": "find_leads",
  "params": { "industry": "plumber", "location": "Austin TX" },
  "googleApiKey": "AIzaSy..."
}
```

Or set it as an environment variable `GOOGLE_PLACES_API_KEY` in the Actor's secret env vars.

***

### Example output

```json
{
  "name": "Metro Plumbing Co.",
  "address": "412 Oak St, Austin TX",
  "phone": null,
  "website": null,
  "rating": 3.2,
  "review_count": 7,
  "category": "Plumber",
  "hours_status": "Open now",
  "lead_quality_score": {
    "total": 79,
    "label": "hot",
    "breakdown": {
      "digital_presence_gap": 55,
      "review_health": 90,
      "business_maturity": 65,
      "category_premium": 85,
      "contact_accessibility": 80
    }
  },
  "outreach_hint": "No website — offer web design and Google Business Profile setup"
}
```

***

### The Lead Quality Score

A composite 0–100 metric across five signals — each weighted by how much it predicts agency revenue opportunity:

| Component | Weight | What it measures |
|---|---|---|
| Digital Presence Gap | 30% | No website, no phone, missing hours, unclaimed listing |
| Review Health | 25% | Few reviews + low rating = hungry for customers |
| Business Maturity | 20% | New/early-stage businesses need everything |
| Category Premium | 15% | HVAC/plumbing/medical pay more than retail/restaurants |
| Contact Accessibility | 10% | Hard-to-reach = high need but lower conversion |

**Score bands:**

- 🔥 **60–100** `hot` — prioritise immediately
- 🟡 **40–59** `warm` — good prospect
- 🟠 **20–39** `lukewarm` — worth a look
- 🔵 **0–19** `cold` — skip

***

### Tools

#### `search_businesses` — $0.05/call

Broad search with lead scoring. Best for initial prospecting.

```json
{
  "query": "HVAC",
  "location": "Austin TX",
  "max_results": 20
}
```

Returns every listing with `lead_quality_score`, sorted hottest first. Includes `search_summary` with counts of hot/warm/lukewarm/cold leads and average score.

***

#### `get_business_details` — $0.08/call

Deep-scrape a single business. Returns everything: phone, website, hours, photos count, recent reviews (up to 5), booking URL, attributes, and a score calculated from the full signal set.

```json
{
  "business_url": "https://www.google.com/maps/place/...",
  "name_and_address": "Metro Plumbing Co, 412 Oak St Austin TX"
}
```

***

#### `find_leads` — $0.10/call ⭐ The killer tool

Purpose-built for sales agents. Searches, filters, groups, and adds outreach hints.

```json
{
  "industry": "plumber",
  "location": "Chicago IL",
  "lead_quality_min": 65,
  "max_results": 30
}
```

Returns:

```json
{
  "hot_leads": [
    {
      "name": "...",
      "lead_quality_score": { "total": 78, "label": "hot", ... },
      "outreach_hint": "No website — offer web design and Google Business Profile setup"
    }
  ],
  "warm_leads": [...],
  "total_searched": 40,
  "total_qualified": 12
}
```

**Outreach hints are automatically generated from the signals that drove the score:**

- `"No website — offer web design and Google Business Profile setup"`
- `"Low rating (3.1/5) — offer reputation management and review strategy"`
- `"New business with no reviews — offer full digital launch package"`
- `"No contact info listed — offer business presence setup"`
- `"Early-stage business with few reviews — offer local SEO and growth package"`

***

#### `analyze_area` — $0.08/call

Market intelligence overview for an area or industry.

```json
{
  "location": "Brooklyn NY",
  "industry": "restaurant"
}
```

Returns:

- `total_businesses_found`, `avg_lead_quality_score`
- `opportunity_index` — composite area score (higher = more underserved market)
- `category_breakdown` — top categories by count and average score
- `digital_gap_analysis` — % with no website, % with no phone, % low rating, % few reviews
- `top_10_leads` — the hottest prospects in the area

***

### Pricing

| Tool | Price | Best for |
|---|---|---|
| `search_businesses` | $0.05/call | Initial prospecting, list building |
| `get_business_details` | $0.08/call | Deep research on a single business |
| `find_leads` | $0.10/call | Sales outreach, CRM enrichment |
| `analyze_area` | $0.08/call | Market reports, territory planning |

***

### Use cases

**Sales agents & SDRs** — Run `find_leads` for a territory + industry. Get a sorted, hinted list ready to dial. No manual research needed.

**Marketing agencies** — Use `analyze_area` to generate market reports showing clients how underserved their area is. Close more deals with data.

**Local SEO tools** — Enrich your database with Lead Quality Scores. Surface which clients are falling behind competitors.

**CRM enrichment** — Pipe results into Salesforce, HubSpot, or Clay. Score existing leads against the 0–100 scale.

**AI lead gen workflows** — Connect via MCP to Claude, Cursor, or any MCP client. Ask "find me hot HVAC leads in Denver" and get a scored list in seconds.

***

### Connecting as an MCP server

This actor runs in [Apify Standby mode](https://docs.apify.com/platform/actors/running/standby) as a persistent MCP server.

**Endpoint:** `POST {actor_standby_url}/mcp`

**Claude Desktop config** (`~/.claude/claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "gmaps-intel": {
      "url": "https://{your-actor-standby-url}/mcp"
    }
  }
}
```

**Cursor / Windsurf config:**

```json
{
  "mcp": {
    "servers": {
      "gmaps-intel": {
        "url": "https://{your-actor-standby-url}/mcp",
        "transport": "http"
      }
    }
  }
}
```

***

### Proxy

Residential proxies are **strongly recommended** for Google Maps — datacenter IPs are frequently blocked. The actor is pre-configured to use Apify Residential proxies when available.

Configure in the Actor input:

```json
{
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

***

### Single-run mode

Run one tool via the Apify UI or API without an MCP client:

**Input:**

```json
{
  "tool": "find_leads",
  "params": {
    "industry": "dentist",
    "location": "Miami FL",
    "lead_quality_min": 60
  }
}
```

Results are pushed to the Actor dataset.

***

### Tech stack

- TypeScript, Node.js 22
- Apify SDK v3 (pay-per-event billing, proxy management)
- Playwright (Chromium) for Google Maps scraping
- MCP Streamable HTTP transport (`@modelcontextprotocol/sdk`)
- Express HTTP server

# Actor input Schema

## `googleApiKey` (type: `string`):

Required. Get a free API key at console.cloud.google.com — enable the Places API.

## `tool` (type: `string`):

Name of the tool to run in single-run mode.

## `params` (type: `object`):

Parameters to pass to the selected tool. See tool documentation for required fields.

## Actor input object example

```json
{}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("rothy/gmaps-intel-mcp").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("rothy/gmaps-intel-mcp").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 '{}' |
apify call rothy/gmaps-intel-mcp --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rothy/gmaps-intel-mcp"
        }
    }
}

```

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/YUNn3SCogmVnrsUp4/builds/HqBfjY5Fv6FRGyprr/openapi.json
