# Local Business Lead Intelligence (`blacksab/local-business-lead-intelligence`) Actor

- **URL**: https://apify.com/blacksab/local-business-lead-intelligence.md
- **Developed by:** [Marcus AI](https://apify.com/blacksab) (community)
- **Categories:** Lead generation, Agents, AI
- **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/platform/actors/running/actors-in-store#pay-per-usage

## 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

## Local Business Lead Intelligence

Find high-intent local service businesses, score their digital readiness, and receive AI-written outreach copy for every qualified lead.

### What it does

1. Searches Google Maps for local businesses (plumber, HVAC, roofer, electrician, cleaning, landscaping, pest control).
2. Filters by rating and review count.
3. Analyzes each business website for missing growth features: online booking, estimate intake, quote form, live chat, contact form.
4. Scores every lead and flags qualified opportunities.
5. Generates a personalized opening message and growth opportunity per qualified lead using Mistral AI.

### Why agencies use this

- Stop copying business names from Google Maps manually.
- Get **qualified leads + outreach copy**, not just raw data.
- Transparent cost: pay only for Google Maps scraping + a tiny fraction for AI copy.

### Example output fields

| Field | Example |
|---|---|
| `businessName` | Stan's Heating, Air, Plumbing & Electrical |
| `rating` | 4.7 |
| `reviewCount` | 6482 |
| `leadScore` | 40 |
| `qualifiedLead` | true |
| `primaryRecommendedService` | quote-request form |
| `opportunity` | Increase high-intent leads by adding an instant quote tool for emergency services. |
| `personalizedOpeningMessage` | Hi Stan, your 4.7 rating reflects the trust customers place in your team... |
| `modelCost` | 0.00014 |

### Quick start

```json
{
  "businessType": "plumber",
  "locations": ["Austin, Texas, United States"],
  "maximumLeads": 50,
  "minimumRating": 4.0,
  "minimumReviews": 20,
  "analyzeWebsites": true,
  "generateRecommendations": true,
  "qualifiedLeadThreshold": 30,
  "maximumWebsitePages": 5,
  "maximumRunCostUsd": 2.50
}
````

### Pricing guidance

- **Pay-per-result**: ~USD 0.022 per collected business + ~USD 0.00014 per qualified lead for AI copy.
- **Rental option**: Run daily/weekly and pipe results to your CRM.
- **No minimum commitment**: test with 5 leads for under USD 0.15.

### Required Apify secrets

Add these in the Apify console (never paste them into Actor input):

- `APIFY_TOKEN` — provided by Apify automatically.
- `MODEL_PROVIDER` = `openai`
- `MODEL_API_BASE_URL` = `https://api.mistral.ai/v1`
- `MODEL_NAME` = `mistral-small-latest`
- `MODEL_API_KEY` = your Mistral API key

If LLM secrets are omitted, the Actor still works and uses deterministic templates.

### Supported business types

plumber, HVAC, roofer, electrician, cleaning service, landscaping, pest control

### Test locally

```bash
python -m pytest tests/ -q
```

### Cost cap

`maximumRunCostUsd` defaults to USD 0.25 and is hard-capped at USD 1.00 without an owner-approved change.

### Dataset schema

See `DATASET_SCHEMA.md` for the full output field list.

# Actor input Schema

## `businessType` (type: `string`):

Primary service category to target.

## `locations` (type: `array`):

One or more location queries for Google Maps search.

## `maximumLeads` (type: `integer`):

Maximum number of leads to collect across all locations.

## `minimumRating` (type: `number`):

Minimum Google Maps rating for a business to be included.

## `minimumReviews` (type: `integer`):

Minimum number of Google Maps reviews for inclusion.

## `analyzeWebsites` (type: `boolean`):

When true, inspect public websites for automation signals.

## `generateRecommendations` (type: `boolean`):

When true, generate evidence-based service recommendations for qualified leads.

## `qualifiedLeadThreshold` (type: `integer`):

Lead score required to mark a record as a qualified lead.

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

Language code used for keyword matching.

## `maximumWebsitePages` (type: `integer`):

Maximum pages to inspect per business website.

## `maximumRunCostUsd` (type: `number`):

Maximum USD to spend on the child Google Maps Actor. Hard capped at 1.00 for MVP.

## `dryRun` (type: `boolean`):

When true, validate input and return a plan without paid calls.

## Actor input object example

```json
{
  "maximumLeads": 5,
  "minimumRating": 4,
  "minimumReviews": 20,
  "analyzeWebsites": true,
  "generateRecommendations": true,
  "qualifiedLeadThreshold": 50,
  "language": "English",
  "maximumWebsitePages": 5,
  "maximumRunCostUsd": 0.25,
  "dryRun": true
}
```

# 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("blacksab/local-business-lead-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("blacksab/local-business-lead-intelligence").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 '{}' |
apify call blacksab/local-business-lead-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=blacksab/local-business-lead-intelligence",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Local Business Lead Intelligence",
        "version": "0.1",
        "x-build-id": "fodqMF7g1wriLR3M4"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/blacksab~local-business-lead-intelligence/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-blacksab-local-business-lead-intelligence",
                "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/blacksab~local-business-lead-intelligence/runs": {
            "post": {
                "operationId": "runs-sync-blacksab-local-business-lead-intelligence",
                "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/blacksab~local-business-lead-intelligence/run-sync": {
            "post": {
                "operationId": "run-sync-blacksab-local-business-lead-intelligence",
                "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",
                "required": [
                    "businessType",
                    "locations"
                ],
                "properties": {
                    "businessType": {
                        "title": "Business Type",
                        "enum": [
                            "plumber",
                            "HVAC",
                            "roofer",
                            "electrician",
                            "cleaning service",
                            "landscaping",
                            "pest control"
                        ],
                        "type": "string",
                        "description": "Primary service category to target."
                    },
                    "locations": {
                        "title": "Locations",
                        "minItems": 1,
                        "type": "array",
                        "description": "One or more location queries for Google Maps search.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maximumLeads": {
                        "title": "Maximum Leads",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of leads to collect across all locations.",
                        "default": 5
                    },
                    "minimumRating": {
                        "title": "Minimum Rating",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "number",
                        "description": "Minimum Google Maps rating for a business to be included.",
                        "default": 4
                    },
                    "minimumReviews": {
                        "title": "Minimum Reviews",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum number of Google Maps reviews for inclusion.",
                        "default": 20
                    },
                    "analyzeWebsites": {
                        "title": "Analyze Websites",
                        "type": "boolean",
                        "description": "When true, inspect public websites for automation signals.",
                        "default": true
                    },
                    "generateRecommendations": {
                        "title": "Generate Recommendations",
                        "type": "boolean",
                        "description": "When true, generate evidence-based service recommendations for qualified leads.",
                        "default": true
                    },
                    "qualifiedLeadThreshold": {
                        "title": "Qualified Lead Threshold",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Lead score required to mark a record as a qualified lead.",
                        "default": 50
                    },
                    "language": {
                        "title": "Language",
                        "type": "string",
                        "description": "Language code used for keyword matching.",
                        "default": "English"
                    },
                    "maximumWebsitePages": {
                        "title": "Maximum Website Pages",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Maximum pages to inspect per business website.",
                        "default": 5
                    },
                    "maximumRunCostUsd": {
                        "title": "Maximum Run Cost (USD)",
                        "minimum": 0,
                        "maximum": 1,
                        "type": "number",
                        "description": "Maximum USD to spend on the child Google Maps Actor. Hard capped at 1.00 for MVP.",
                        "default": 0.25
                    },
                    "dryRun": {
                        "title": "Dry Run",
                        "type": "boolean",
                        "description": "When true, validate input and return a plan without paid calls.",
                        "default": true
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
