# Google Maps Lead Enrichment & ICP Intelligence (`quanmatrix/google-maps-lead-enrichment-icp-intelligence`) Actor

Use this Actor to analyze google maps lead enrichment and icp and return decision-ready structured signals. Find Google Maps businesses and turn them into decision-ready B2B leads with contactability, ICP fit, reputation, change signals and agent actions in one workflow.

- **URL**: https://apify.com/quanmatrix/google-maps-lead-enrichment-icp-intelligence.md
- **Developed by:** [Rafael Barreto Haddad](https://apify.com/quanmatrix) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.45 / 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

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

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

## How to integrate an Actor?

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

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

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

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

# README

## Google Maps Lead Enrichment & ICP Intelligence

Use this Actor to analyze google maps lead enrichment and icp and return decision-ready structured signals. It is designed for repeatable human, API, Apify AI, and MCP-driven workflows.

Find Google Maps businesses and turn them into decision-ready B2B leads with contactability, ICP fit, reputation, change signals and agent actions in one workflow.

### Why use this Actor

Teams buy Google Maps rows, then still need to decide which businesses are reachable, commercially attractive and worth contacting first. This Actor converts structured source data into a decision-ready result so recurring workflows do not need a separate manual analysis step. It supports repeatable monitoring, scheduled execution, dashboards, and agent workflows. Scores are deterministic and traceable to observable input fields.

### Key features

- Direct Google Maps query mode plus reusable Dataset-input mode.
- Deterministic ICP/contactability/reputation scoring on every business.
- Previous-snapshot field changes and lead-priority movement.
- Agent-ready action and reason fields without a paid LLM.
- 256 MB HTTP-first architecture with one predictable PPE result price.
- Structured Dataset output for API, Task, schedule, and agent use.
- Current-versus-previous snapshot analysis when prior records are supplied.
- Limited-permission, data-first execution design.

### Input

The JSON input schema includes explicit fields and prefilled examples. Important fields include `currentItems`, `currentDatasetId`, `previousItems`, `previousDatasetId`, `queries`, `urls`, `directFetch`, `language`, `countryCode`, `maxResults`, `maxItems`. Inline records are convenient for small tests. Dataset identifiers are better for recurring pipelines because one Actor can consume the structured output of another without copying rows manually. Stable entity identifiers improve snapshot comparison.

### Output

Results are written to the default Apify Dataset as structured JSON. Output fields include `ok`, `sourceType`, `analysisKind`, `entityId`, `signalScore`, `changeScore`, `agentAction`, `agentReason`, `metrics`, `changes`, `observedAt`, `source`. These fields are designed for dashboards, databases, automation tools, and downstream Actors. Decision fields summarize observable evidence instead of returning only a large unranked export.

### Example

Run the prefilled example once in the Apify Console. For a recurring workflow, save the current Dataset or upstream Dataset ID and provide a later snapshot on the next run. Compare the emitted scores, changes, and action fields. Through API or public Tasks, keep the same field mapping between runs so time-series comparisons remain meaningful.

### Use cases

- recurring competitive monitoring.
- AI-agent and automation workflows.
- market research and prospect prioritization.
- period-over-period change detection.
- Scheduled daily or weekly monitoring with repeatable decision logic.
- Agent workflows that need compact actions rather than raw rows.
- Research pipelines that need stable JSON and traceable signals.

### Pricing

The Actor uses pay-per-event pricing with one primary measurable result. The base design price is USD 0.0035 per primary result before Apify tier discounts. There is no mandatory external AI subscription in the deterministic scoring path. Platform usage varies with run duration, memory, and data volume. The release gate checks margin from real validation costs before publication.

### Limitations

- Only public or appropriately licensed data should be supplied or fetched.
- Instagram and TikTok direct public-URL mode is best-effort; Dataset input is the stable mode when those sites block anonymous requests.
- Signals are deterministic decision support, not guarantees.
- Public-source availability and upstream schemas can change over time.
- Missing source fields can reduce the strength of a score or comparison.
- Decision scores are prioritization signals, not promises of commercial or operational outcomes.
- Users remain responsible for source access rules and platform terms.

### Operational notes

For production use, prefer scheduled runs with stable input definitions. Review the Dataset after the first production run before connecting downstream systems. Preserve raw snapshots when a source changes schema so transformations remain auditable. Market evidence and competitor capabilities are rechecked before publication because Store conditions can change.

# Changelog

This Actor's version history is a separate document: https://apify.com/quanmatrix/google-maps-lead-enrichment-icp-intelligence/changelog.md

# Actor input Schema

## `currentItems` (type: `array`):

Optional current source rows. If supplied, these are analyzed directly and no source fetch is required.

## `currentDatasetId` (type: `string`):

Optional current Dataset from an upstream extraction workflow.

## `previousItems` (type: `array`):

Optional previous rows for deterministic change intelligence.

## `previousDatasetId` (type: `string`):

Optional prior Dataset for recurring comparisons.

## `queries` (type: `array`):

Direct-source queries for Google Maps or Google Search modes.

## `urls` (type: `array`):

Direct public URLs for web or social best-effort modes.

## `directFetch` (type: `boolean`):

Enable direct-source retrieval only when inline rows and Dataset input are not supplied.

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

Language code used by supported direct-source retrieval modes.

## `countryCode` (type: `string`):

Two-letter country code used to localize supported search-source modes.

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

Maximum number of direct-source results requested per query or URL batch.

## `maxItems` (type: `integer`):

Maximum number of records analyzed and written to the output Dataset.

## `mcpConnectors` (type: `array`):

Optional MCP connectors authorized in your Apify account. Use them to send or write this Actor result to tools such as Slack, Notion, GitHub, Sentry, Supabase, or another compatible MCP service.

## `mcpToolName` (type: `string`):

Optional exact MCP tool name. Leave blank to let the selected MCP action preset discover a compatible tool automatically.

## `mcpToolArguments` (type: `object`):

JSON object passed to the selected MCP tool. String values may use {{actor\_title}}, {{result\_summary}}, or {{result\_json}} placeholders.

## `mcpFailOnError` (type: `boolean`):

When enabled, an MCP delivery error fails the Actor run. Disabled by default so data extraction and intelligence results remain available even if the external destination is unavailable.

## `mcpActionPreset` (type: `string`):

Choose a safe action pattern. AUTO\_SAFE\_WRITE discovers a compatible non-destructive write tool automatically; use a specific preset for Slack, GitHub, Notion, or database delivery.

## Actor input object example

```json
{
  "currentItems": [
    {
      "placeId": "qm-a",
      "name": "Northstar Dental",
      "address": "Austin TX",
      "rating": 4.6,
      "reviews": 184,
      "website": "https://northstar.example",
      "phone": "+1 555 0101",
      "email": "hello@northstar.example",
      "category": "dentist",
      "rank": 2
    },
    {
      "placeId": "qm-b",
      "name": "Lakeview Dental",
      "address": "Austin TX",
      "rating": 3.8,
      "reviews": 57,
      "website": "",
      "phone": "+1 555 0102",
      "category": "dentist",
      "rank": 5
    }
  ],
  "previousItems": [
    {
      "placeId": "qm-a",
      "name": "Northstar Dental",
      "address": "Austin TX",
      "rating": 4.4,
      "reviews": 150,
      "website": "https://northstar.example",
      "phone": "+1 555 0101",
      "category": "dentist",
      "rank": 4
    }
  ],
  "queries": [],
  "urls": [],
  "directFetch": true,
  "language": "en",
  "countryCode": "us",
  "maxResults": 20,
  "maxItems": 20000,
  "mcpToolName": "",
  "mcpToolArguments": {},
  "mcpFailOnError": false,
  "mcpActionPreset": "AUTO_SAFE_WRITE"
}
```

# Actor output Schema

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

Normalized and scored result rows.

## `report` (type: `string`):

Aggregate report.

# 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 = {
    "currentItems": [
        {
            "placeId": "qm-a",
            "name": "Northstar Dental",
            "address": "Austin TX",
            "rating": 4.6,
            "reviews": 184,
            "website": "https://northstar.example",
            "phone": "+1 555 0101",
            "email": "hello@northstar.example",
            "category": "dentist",
            "rank": 2
        },
        {
            "placeId": "qm-b",
            "name": "Lakeview Dental",
            "address": "Austin TX",
            "rating": 3.8,
            "reviews": 57,
            "website": "",
            "phone": "+1 555 0102",
            "category": "dentist",
            "rank": 5
        }
    ],
    "previousItems": [
        {
            "placeId": "qm-a",
            "name": "Northstar Dental",
            "address": "Austin TX",
            "rating": 4.4,
            "reviews": 150,
            "website": "https://northstar.example",
            "phone": "+1 555 0101",
            "category": "dentist",
            "rank": 4
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("quanmatrix/google-maps-lead-enrichment-icp-intelligence").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 = {
    "currentItems": [
        {
            "placeId": "qm-a",
            "name": "Northstar Dental",
            "address": "Austin TX",
            "rating": 4.6,
            "reviews": 184,
            "website": "https://northstar.example",
            "phone": "+1 555 0101",
            "email": "hello@northstar.example",
            "category": "dentist",
            "rank": 2,
        },
        {
            "placeId": "qm-b",
            "name": "Lakeview Dental",
            "address": "Austin TX",
            "rating": 3.8,
            "reviews": 57,
            "website": "",
            "phone": "+1 555 0102",
            "category": "dentist",
            "rank": 5,
        },
    ],
    "previousItems": [{
            "placeId": "qm-a",
            "name": "Northstar Dental",
            "address": "Austin TX",
            "rating": 4.4,
            "reviews": 150,
            "website": "https://northstar.example",
            "phone": "+1 555 0101",
            "category": "dentist",
            "rank": 4,
        }],
}

# Run the Actor and wait for it to finish
run = client.actor("quanmatrix/google-maps-lead-enrichment-icp-intelligence").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 '{
  "currentItems": [
    {
      "placeId": "qm-a",
      "name": "Northstar Dental",
      "address": "Austin TX",
      "rating": 4.6,
      "reviews": 184,
      "website": "https://northstar.example",
      "phone": "+1 555 0101",
      "email": "hello@northstar.example",
      "category": "dentist",
      "rank": 2
    },
    {
      "placeId": "qm-b",
      "name": "Lakeview Dental",
      "address": "Austin TX",
      "rating": 3.8,
      "reviews": 57,
      "website": "",
      "phone": "+1 555 0102",
      "category": "dentist",
      "rank": 5
    }
  ],
  "previousItems": [
    {
      "placeId": "qm-a",
      "name": "Northstar Dental",
      "address": "Austin TX",
      "rating": 4.4,
      "reviews": 150,
      "website": "https://northstar.example",
      "phone": "+1 555 0101",
      "category": "dentist",
      "rank": 4
    }
  ]
}' |
apify call quanmatrix/google-maps-lead-enrichment-icp-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,quanmatrix/google-maps-lead-enrichment-icp-intelligence"
        }
    }
}
```

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/nGWtevaVLmzKd9F4A/builds/SQRdypTOln8IVvD5y/openapi.json
