# Google Maps Business Leads Scraper & Sales Intelligence (`techforce.global/google-maps-leads-sales-intelligence-tool`) Actor

Scrape Google Maps leads for any business type, names, phones, emails, websites, ratings & social links. Enriched with website audits and AI sales intelligence. Export to CSV, Excel & JSON or send to Notion, Slack & Airtable via MCP.

- **URL**: https://apify.com/techforce.global/google-maps-leads-sales-intelligence-tool.md
- **Developed by:** [Techforce Global](https://apify.com/techforce.global) (community)
- **Categories:** Agents, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.50 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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 Leads & Sales Intelligence Scraper & MCP Connector

Turn **any Google Maps search into a ready-to-work lead list** — business names, phone numbers, addresses, websites, **company emails**, ratings, hours, and social links — then layer on **sales intelligence**: a website performance grade, prioritized improvement recommendations, a full pitch playbook, and a website tech audit. **No copy-pasting, no clicking through hundreds of listings, no manual research.**

Built for agencies, freelancers, and sales teams who need **qualified leads with a reason to reach out** — not just a raw list of names.

> **Type a business type + location → get every business's contact details + a tailored sales angle → deliver it straight into your CRM, Notion, Slack, or Sheets.**

---

### ⭐ Why This Actor?

- ✅ **Search anything, anywhere** — type any business type or keyword (`florist`, `dentist`, `law firm`, `coffee shops`) and a city/area. Works for **any industry**, not just one niche.
- ✅ **Real contact data** — pulls the **company email** from each business's website (not just the phone on the map listing), plus social profiles and working hours.
- ✅ **Built-in sales intelligence** — every lead comes with a **lead priority**, **revenue opportunity level**, a **recommended pitch**, and estimated service potential — so your team knows who to call first and what to say.
- ✅ **Website performance report** — each business's site gets a **letter grade** and classification, with a breakdown of what's dragging it down.
- ✅ **Actionable improvement list** — prioritized fixes (what to fix, why it matters, the outcome after the fix, and the exact selling point) you can turn straight into a proposal.
- ✅ **Website tech audit** — tech stack, SSL/security status, robots.txt, sitemap, pages audited, and key technical issues.
- ✅ **Pay only for what you use** — each analysis layer is an optional toggle, so you're billed only for the intelligence you actually turn on.
- ✅ **Never dumps junk rows** — listings with no resolvable business name are skipped, so your dataset stays clean.
- ✅ **Deliver anywhere via MCP connectors** — push leads straight into Notion, Slack, Airtable, HubSpot, Google Sheets, Jira, GitHub, Linear, and more.
- ✅ **Export-ready** — JSON, CSV, Excel, or direct API integration for your own pipeline.

---

### 📝 Use Cases & ROI

| Use Case | Time Saved | What You Get |
| --- | --- | --- |
| **Cold outreach / lead gen** | 5–10 hrs/list | Names, phones, emails, and a tailored pitch angle per business |
| **Web design & SEO agencies** | 4–8 hrs/list | A website grade + prioritized fixes = an instant proposal per lead |
| **Local marketing services** | 3–6 hrs/list | Businesses with weak online presence, ranked by opportunity |
| **Market & competitor research** | 2–5 hrs/area | A full map of who operates in a category and how strong they are online |
| **CRM enrichment** | 2–4 hrs/batch | Structured records pushed straight into your CRM via a connector |

---

### 🚀 How to Use

1. Open the Actor on Apify.
2. Enter a **Search query** — e.g. `dentist`, `coffee shops`, `law firm`. Add several, one per line, to run multiple searches.
3. Enter a **Location** — city, area, state, or country (ignored for any query that already contains a place, like `cafe in Mumbai`).
4. Set **Maximum businesses** — the total number of listings to analyze across the run (default: `20`, up to `500`).
5. _(Optional)_ Toggle the intelligence layers you want: **Sales & Growth Strategy**, **Website Performance Report**, **Suggested Business Improvements**, **Website Technology Details**.
6. _(Optional)_ Pick an **MCP connector** to deliver each lead into Notion, Slack, Airtable, your CRM, etc.
7. Click **Run** — results stream into the dataset as each business is analyzed.
8. Download as CSV, Excel, or JSON — or let the connector push them into your tools automatically.

> 🌐 **Proxy**: leave the proxy **OFF** for the fastest, most reliable runs — a direct connection works best for Google Maps here. Only enable Apify Proxy if you start getting blocked (note: residential proxies can be slow and may time out).
> 💡 First time with a connector? Run once with a connector selected — the run log prints the connector's available tool names, so you know what to put in **Connector tool name**.

---

### 🧩 Input Configuration

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `searchQuery` | String | ✔️ Yes | What to search for on Google Maps — a business type or keyword. Enter several queries, one per line. If a query has no place in it, it's combined with `location`. Default: `Restaurant`. |
| `location` | String | Optional | City/area/state/country to search in. Ignored for any query that already contains a place. Default: `Ahmedabad`. |
| `maxResults` | Integer | Optional | Max total businesses to analyze across the whole run (1–500). Default: `20`. |
| `includeSalesStrategy` | Boolean | Optional | Generate the full sales playbook: lead priority, revenue opportunity level, sales angle, recommended pitch, estimated service potential, opening hook, services to pitch, pain points, outcomes, and closing strategy. Default: `true`. |
| `includeWebsiteHealthScorecard` | Boolean | Optional | Analyze website quality — final grade, classification, and grade breakdown. Default: `true`. |
| `includeServiceRecommendations` | Boolean | Optional | Prioritized improvement recommendations: what to fix, why it matters, expected outcome, and selling point. Default: `true`. |
| `includeTechnicalIntel` | Boolean | Optional | Website tech details: tech stack, SSL/security, robots.txt, sitemap, audited pages/URLs, navigation notes, and key technical issues. Default: `true`. |
| `proxyConfiguration` | Object | Optional | Proxy used for requests. **Off by default** — a direct connection works best for Google Maps. |
| `mcpConnector` | Connector | Optional | Deliver each lead into a connector you've authorized (Notion, Slack, Airtable, HubSpot, Sheets, Jira, GitHub, Linear, …). |
| `deliveryMode` | Enum | Optional | `perLead` (one call per business — best for CRM rows/records), `summary` (one call with all leads — best for a single message/page), or `none`. Default: `perLead`. |
| `mcpTool` | String | Optional | Tool to call on the connector (e.g. `create_record`, `send_message`, `create_page`). |
| `mcpArguments` | Object | Optional | Arguments for the tool; string values support `{placeholders}`. |
| `mcpMessageTemplate` | String | Optional | Template rendered per lead (or once in summary mode), exposed as the `{message}` placeholder. |

#### Example — Basic lead list

```json
{
    "searchQuery": "dentist",
    "location": "Austin, Texas",
    "maxResults": 50
}
````

#### Example — Multiple searches, contacts only (fastest)

```json
{
    "searchQuery": "coffee shops\nbakeries\njuice bars",
    "location": "Ahmedabad",
    "maxResults": 100,
    "includeSalesStrategy": false,
    "includeWebsiteHealthScorecard": false,
    "includeServiceRecommendations": false,
    "includeTechnicalIntel": false
}
```

#### Example — Post a summary of all leads to Slack

```json
{
    "searchQuery": "law firm",
    "location": "Chicago",
    "maxResults": 30,
    "mcpConnector": "<your-slack-connector>",
    "deliveryMode": "summary",
    "mcpTool": "send_message",
    "mcpArguments": { "channel": "#leads", "text": "{message}" },
    "mcpMessageTemplate": "{leadCount} new leads for {searchQuery} in {location}:\n\n{leads}"
}
```

#### Example — Create a CRM/Airtable record per lead

```json
{
    "searchQuery": "florist",
    "location": "Mumbai",
    "maxResults": 40,
    "mcpConnector": "<your-airtable-connector>",
    "deliveryMode": "perLead",
    "mcpTool": "create_record",
    "mcpArguments": {
        "fields": {
            "Name": "{businessName}",
            "Phone": "{phone}",
            "Email": "{companyEmail}",
            "Website": "{website}",
            "Rating": "{googleRating}",
            "Address": "{address}",
            "Maps": "{googleMapsUrl}"
        }
    }
}
```

#### Example — Create a Notion page per lead

Notion's `notion-create-pages` tool expects a top-level `pages` array; the title is a plain string and the body goes in `content` as markdown.

```json
{
    "searchQuery": "gym",
    "location": "Ahmedabad",
    "maxResults": 25,
    "mcpConnector": "<your-notion-connector>",
    "deliveryMode": "perLead",
    "mcpTool": "notion-create-pages",
    "mcpArguments": {
        "parent": { "page_id": "<your-page-id>" },
        "pages": [
            {
                "properties": { "title": "{businessName}" },
                "content": "{lead}"
            }
        ]
    }
}
```

#### Placeholders available in arguments / template

**perLead mode:** `{businessName}` · `{category}` · `{address}` · `{phone}` · `{website}` · `{companyEmail}` · `{emailStatus}` · `{googleRating}` · `{totalReviews}` · `{googleMapsUrl}` · `{searchQuery}` · `{lead}` (a formatted multi-line summary of the business) · `{message}`
**summary mode:** `{leadCount}` · `{searchQuery}` · `{location}` · `{leads}` (all businesses formatted as a list) · `{message}`

***

### 📦 Output Fields

Every record carries the **business profile** below. The four intelligence blocks are included only when their toggle is on.

#### Business profile (always included)

| Field | Description |
| --- | --- |
| `businessName` | Business name |
| `category` | Business category from Google Maps |
| `address` | Full address |
| `phone` | Phone number |
| `website` | Website URL |
| `companyEmail` | Email found on the business's website |
| `emailStatus` | Whether/how an email was found |
| `socialMedia` | Social profile links (Facebook, Instagram, LinkedIn, …) |
| `workingHours` | Opening hours by day |
| `googleRating` | Star rating |
| `totalReviews` | Number of reviews |
| `googleMapsUrl` | Link to the Google Maps listing |
| `searchQuery` | The query that produced this result |

#### `LEAD_OVERVIEW` + `PITCH_STRATEGY` — *Sales & Growth Strategy*

Lead priority, revenue opportunity level, sales angle, recommended pitch, estimated monthly/one-time service potential, opening hook, best services to pitch, pain points to highlight, outcomes to promise, and closing strategy.

#### `WEBSITE_HEALTH_SCORECARD` — *Website Performance Report*

Final website grade, final classification, and a grade breakdown by category.

#### `SERVICE_RECOMMENDATIONS` — *Suggested Business Improvements*

A prioritized list — each with the current grade, what to fix, why it matters, the outcome after the fix, and the selling point.

#### `TECHNICAL_INTEL` — *Website Technology Details*

Tech stack, SSL status, robots.txt status, sitemap URL, number of pages audited, audited URLs, navigation notes, and key technical issues.

#### Example Output

```json
[
    {
        "businessName": "Bright Smile Dental",
        "category": "Dental clinic",
        "address": "1200 W 6th St, Austin, TX 78703",
        "phone": "+1 512-555-0142",
        "website": "https://brightsmileaustin.com",
        "companyEmail": "hello@brightsmileaustin.com",
        "emailStatus": "found",
        "googleRating": "4.6",
        "totalReviews": "312",
        "googleMapsUrl": "https://www.google.com/maps/place/...",
        "searchQuery": "dentist in Austin, Texas",
        "LEAD_OVERVIEW": {
            "leadPriority": "High",
            "revenueOpportunityLevel": "High",
            "salesAngle": "Strong reviews but an outdated, slow website losing new-patient bookings.",
            "recommendedPitch": "Modernize the site and add online booking to convert more of your 4.6-star reputation.",
            "estimatedMonthlyServicePotential": "$800–$1,500/mo"
        },
        "WEBSITE_HEALTH_SCORECARD": {
            "finalGrade": "C",
            "finalClassification": "Needs Improvement"
        }
    }
]
```

> You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
> Note: some fields (e.g. `companyEmail`) come back empty when a business has no website or publishes no contact email.

***

### 🔌 Integrations & Delivery

Deliver leads into any MCP connector you've authorized in Apify — no glue code, no webhooks:

- **Notion** — create a page per lead (or one summary page for the whole run)
- **Slack / Discord** — post new leads or a run summary to a channel
- **Airtable / Google Sheets / HubSpot** — append a structured record per lead
- **Jira / GitHub / Linear** — open a follow-up task per lead
- …or any other MCP-compatible connector

Credentials stay private — delivery runs through the **Apify MCP Proxy**, so the Actor never sees your connector tokens. You can also consume the dataset directly via the **Apify API**, or wire it into **n8n, Zapier, and Make**.

> ⚙️ **Delivery modes:** `perLead` makes one connector call per business (ideal for CRM rows/records/tasks), `summary` sends a single call with every lead (ideal for one Slack message or Notion page), and `none` saves to the dataset only. MCP delivery only runs on the Apify platform and never affects what's saved to the dataset.

***

### 💳 Pricing

This Actor uses **pay-per-event** billing — you're charged only for the analysis layers you turn on. Each of the four intelligence toggles is a separate billable event:

- **Sales & Growth Strategy** (`includeSalesStrategy`)
- **Website Performance Report** (`includeWebsiteHealthScorecard`)
- **Suggested Business Improvements** (`includeServiceRecommendations`)
- **Website Technology Details** (`includeTechnicalIntel`)

Turn off the layers you don't need to keep runs lean and cheap. The core business profile (name, phone, email, address, rating, etc.) is always included.

***

### 🛠️ How It Works

`my_actor/main.py` reads the input, then:

1. Builds one or more Google Maps searches from your `searchQuery` + `location`.
2. Collects business listings with Playwright, using resilient extraction that tolerates Google's rotating markup (name, category, rating, reviews, address, phone, website).
3. Visits each business's website to find its **company email** and audit the site (performance grade, tech stack, SSL, robots.txt, sitemap, navigation).
4. Generates the enabled **sales intelligence** — lead priority, pitch strategy, improvement recommendations — pushes a clean record to the dataset, and, if a connector is configured, delivers it via MCP.

**Built with:** [Apify SDK for Python](https://docs.apify.com/sdk/python/) · [Playwright](https://playwright.dev/python/) · [MCP](https://modelcontextprotocol.io/)

***

### 🆘 Support

For issues, custom scraping requests, or feature suggestions:

**Email**: bhavin.shah@techforceglobal.com

***

#### Need a Custom Pipeline?

Want multi-city batch runs, scheduled refreshes, deeper enrichment, or a full CRM/data-warehouse integration?

#### [📅 Book a Free 15-min Consultation](https://calendly.com/techforce-infotech-pvt-ltd/intro-meeting?month=2026-01)

***

Made with ❤️ by **[Techforce](https://www.techforceglobal.com)**
Specialists in High-Performance Web Scrapers and AI Automation.

***

### Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Google. Google Maps™ is a trademark of Google LLC; all trademarks are property of their respective owners. The Actor collects only publicly available information (business listings and publicly published website content) and does not log into, or scrape behind the authentication of, any platform. Use the data responsibly and in compliance with applicable laws (including GDPR/CCPA) and the terms of the platforms you operate on.

# Actor input Schema

## `subcategory` (type: `string`):

Compatibility field for older saved inputs.

## `searchQuery` (type: `string`):

Type anything to search for on Google Maps — a business type or keyword such as "florist", "coffee shops", or "law firm". You can enter several queries, one per line. If you don't include a place in the text, each query is combined with the Location field below.

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

City/area/state/country to search in. Ignored for any query that already contains a place (e.g. "cafe in Mumbai").

## `maxResults` (type: `integer`):

Maximum total number of Google Maps businesses to analyze across the whole run.

## `includeSalesStrategy` (type: `boolean`):

Generate the full sales playbook: lead priority, revenue opportunity level, sales angle, recommended pitch, and estimated service potential, plus the opening hook, services to pitch, pain points, outcomes, and closing strategy.

## `includeWebsiteHealthScorecard` (type: `boolean`):

Analyze website quality and generate final grade, final classification, and grade breakdown.

## `includeServiceRecommendations` (type: `boolean`):

Generate prioritized service recommendations with what to fix, why it matters, expected outcome, and selling point.

## `includeTechnicalIntel` (type: `boolean`):

Analyze tech stack, SSL/security status, robots.txt, sitemap, audited pages, audited URLs, navigation notes, and key technical issues.

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

Optional. Leave OFF for a direct connection (fastest, and what works best for Google Maps here). Only enable Apify Proxy if you start getting blocked; note that RESIDENTIAL proxies can be slow and may time out.

## `mcpConnector` (type: `string`):

Optionally deliver the scraped leads into a connector you have authorized — Notion, Slack, Airtable, HubSpot, Google Sheets, Linear, Jira, GitHub, or any MCP-compatible connector. Leave empty to only save the results to the dataset.

## `deliveryMode` (type: `string`):

How to deliver to the connector: 'perLead' (one call per business — best for creating a CRM row/record/issue per lead), 'summary' (a single call containing all leads — best for one Slack message or one Notion page), or 'none' (save to dataset only).

## `mcpTool` (type: `string`):

Name of the tool to call on the connector (e.g. 'create\_page' for Notion, 'send\_message' for Slack, 'create\_record' for Airtable, 'create\_issue' for Jira/GitHub). If unsure, run once with a connector selected — the log lists the connector's available tools.

## `mcpArguments` (type: `object`):

Arguments passed to the connector tool. String values support {placeholders}. In 'perLead' mode, per-business placeholders: {businessName}, {category}, {address}, {phone}, {website}, {companyEmail}, {googleRating}, {totalReviews}, {googleMapsUrl}, {searchQuery}, {lead} (a formatted multi-line summary of the business) and {message} (the rendered template below). In 'summary' mode: {leadCount}, {searchQuery}, {location}, {leads} (all businesses formatted as a list) and {message}. Example for Airtable: {"fields": {"Name": "{businessName}", "Phone": "{phone}", "Email": "{companyEmail}", "Website": "{website}"}}. Example for Slack: {"channel": "#leads", "text": "{message}"}.

## `mcpMessageTemplate` (type: `string`):

Optional template rendered and exposed as the {message} placeholder in the tool arguments. Per-lead example: 'New lead: {businessName} — {phone} — {website}'. Summary example: '{leadCount} leads for {searchQuery} in {location}:\n\n{leads}'.

## Actor input object example

```json
{
  "subcategory": "",
  "searchQuery": "Restaurant",
  "location": "Ahmedabad",
  "maxResults": 20,
  "includeSalesStrategy": true,
  "includeWebsiteHealthScorecard": true,
  "includeServiceRecommendations": true,
  "includeTechnicalIntel": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "deliveryMode": "perLead",
  "mcpTool": "",
  "mcpArguments": {},
  "mcpMessageTemplate": ""
}
```

# Actor output Schema

## `results` (type: `string`):

Default dataset items produced by this actor.

# 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 = {
    "searchQuery": "Restaurant",
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("techforce.global/google-maps-leads-sales-intelligence-tool").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 = {
    "searchQuery": "Restaurant",
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("techforce.global/google-maps-leads-sales-intelligence-tool").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "searchQuery": "Restaurant",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call techforce.global/google-maps-leads-sales-intelligence-tool --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=techforce.global/google-maps-leads-sales-intelligence-tool",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Maps Business Leads Scraper & Sales Intelligence",
        "description": "Scrape Google Maps leads for any business type, names, phones, emails, websites, ratings & social links. Enriched with website audits and AI sales intelligence. Export to CSV, Excel & JSON or send to Notion, Slack & Airtable via MCP.",
        "version": "0.0",
        "x-build-id": "Ns6uix45VS0fjHhOS"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/techforce.global~google-maps-leads-sales-intelligence-tool/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-techforce.global-google-maps-leads-sales-intelligence-tool",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/techforce.global~google-maps-leads-sales-intelligence-tool/runs": {
            "post": {
                "operationId": "runs-sync-techforce.global-google-maps-leads-sales-intelligence-tool",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/techforce.global~google-maps-leads-sales-intelligence-tool/run-sync": {
            "post": {
                "operationId": "run-sync-techforce.global-google-maps-leads-sales-intelligence-tool",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "subcategory": {
                        "title": "Legacy subcategory",
                        "type": "string",
                        "description": "Compatibility field for older saved inputs.",
                        "default": ""
                    },
                    "searchQuery": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Type anything to search for on Google Maps — a business type or keyword such as \"florist\", \"coffee shops\", or \"law firm\". You can enter several queries, one per line. If you don't include a place in the text, each query is combined with the Location field below.",
                        "default": "Restaurant"
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City/area/state/country to search in. Ignored for any query that already contains a place (e.g. \"cafe in Mumbai\").",
                        "default": "Ahmedabad"
                    },
                    "maxResults": {
                        "title": "Maximum businesses",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum total number of Google Maps businesses to analyze across the whole run.",
                        "default": 20
                    },
                    "includeSalesStrategy": {
                        "title": "Sales & Growth Strategy",
                        "type": "boolean",
                        "description": "Generate the full sales playbook: lead priority, revenue opportunity level, sales angle, recommended pitch, and estimated service potential, plus the opening hook, services to pitch, pain points, outcomes, and closing strategy.",
                        "default": true
                    },
                    "includeWebsiteHealthScorecard": {
                        "title": "Website Performance Report",
                        "type": "boolean",
                        "description": "Analyze website quality and generate final grade, final classification, and grade breakdown.",
                        "default": true
                    },
                    "includeServiceRecommendations": {
                        "title": "Suggested Business Improvements",
                        "type": "boolean",
                        "description": "Generate prioritized service recommendations with what to fix, why it matters, expected outcome, and selling point.",
                        "default": true
                    },
                    "includeTechnicalIntel": {
                        "title": "Website Technology Details",
                        "type": "boolean",
                        "description": "Analyze tech stack, SSL/security status, robots.txt, sitemap, audited pages, audited URLs, navigation notes, and key technical issues.",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional. Leave OFF for a direct connection (fastest, and what works best for Google Maps here). Only enable Apify Proxy if you start getting blocked; note that RESIDENTIAL proxies can be slow and may time out.",
                        "default": {
                            "useApifyProxy": false
                        }
                    },
                    "mcpConnector": {
                        "title": "Deliver to (MCP connector)",
                        "type": "string",
                        "description": "Optionally deliver the scraped leads into a connector you have authorized — Notion, Slack, Airtable, HubSpot, Google Sheets, Linear, Jira, GitHub, or any MCP-compatible connector. Leave empty to only save the results to the dataset."
                    },
                    "deliveryMode": {
                        "title": "Delivery mode",
                        "enum": [
                            "perLead",
                            "summary",
                            "none"
                        ],
                        "type": "string",
                        "description": "How to deliver to the connector: 'perLead' (one call per business — best for creating a CRM row/record/issue per lead), 'summary' (a single call containing all leads — best for one Slack message or one Notion page), or 'none' (save to dataset only).",
                        "default": "perLead"
                    },
                    "mcpTool": {
                        "title": "Connector tool name",
                        "type": "string",
                        "description": "Name of the tool to call on the connector (e.g. 'create_page' for Notion, 'send_message' for Slack, 'create_record' for Airtable, 'create_issue' for Jira/GitHub). If unsure, run once with a connector selected — the log lists the connector's available tools.",
                        "default": ""
                    },
                    "mcpArguments": {
                        "title": "Connector tool arguments",
                        "type": "object",
                        "description": "Arguments passed to the connector tool. String values support {placeholders}. In 'perLead' mode, per-business placeholders: {businessName}, {category}, {address}, {phone}, {website}, {companyEmail}, {googleRating}, {totalReviews}, {googleMapsUrl}, {searchQuery}, {lead} (a formatted multi-line summary of the business) and {message} (the rendered template below). In 'summary' mode: {leadCount}, {searchQuery}, {location}, {leads} (all businesses formatted as a list) and {message}. Example for Airtable: {\"fields\": {\"Name\": \"{businessName}\", \"Phone\": \"{phone}\", \"Email\": \"{companyEmail}\", \"Website\": \"{website}\"}}. Example for Slack: {\"channel\": \"#leads\", \"text\": \"{message}\"}.",
                        "default": {}
                    },
                    "mcpMessageTemplate": {
                        "title": "Message template",
                        "type": "string",
                        "description": "Optional template rendered and exposed as the {message} placeholder in the tool arguments. Per-lead example: 'New lead: {businessName} — {phone} — {website}'. Summary example: '{leadCount} leads for {searchQuery} in {location}:\\n\\n{leads}'.",
                        "default": ""
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
