# Google Maps Scored Leads Scraper (`paduchak/google-maps-scored-leads-scraper`) Actor

Score Google Maps businesses by sales opportunity signals such as missing websites, weak online presence, low ratings, low review count, or missing contact details

- **URL**: https://apify.com/paduchak/google-maps-scored-leads-scraper.md
- **Developed by:** [Dmytro Paduchak](https://apify.com/paduchak) (community)
- **Categories:** SEO tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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 Lead Scoring Actor

Score records produced by the separate `apify-actor-google-maps-business` scraper and export a ranked lead dataset.

This Actor does not scrape Google Maps and does not modify the existing business scraper. It reads one or more existing Apify Datasets containing Google Maps business records, keeps the original fields, and appends sales prioritization fields:

- `leadScore`
- `scoreReasons`
- `leadOpportunityType`
- `recommendedPitch`
- `priorityLevel`
- `sourceQuery`
- `scoredAt`

### Input

```json
{
  "sourceDatasetId": "google-maps-business-results",
  "additionalSourceDatasetIds": [],
  "maxItems": 10000,
  "batchSize": 100,
  "checkWebsiteStatus": false,
  "websiteCheckTimeoutSecs": 8,
  "websiteCheckConcurrency": 5,
  "lowRatingThreshold": 4,
  "lowReviewCountThreshold": 20
}
````

| Field | Type | Default | Description |
|---|---|---:|---|
| `sourceDatasetId` | `string` | required | Dataset ID or named dataset from `apify-actor-google-maps-business`. |
| `additionalSourceDatasetIds` | `string[]` | `[]` | More source datasets to score in the same run. |
| `maxItems` | `number` | `10000` | Maximum records to score across all source datasets. |
| `batchSize` | `number` | `100` | Records read and written per batch. |
| `checkWebsiteStatus` | `boolean` | `false` | Enables HTTP checks for listed websites and scores broken websites. |
| `websiteCheckTimeoutSecs` | `number` | `8` | Per-website timeout when status checks are enabled. |
| `websiteCheckConcurrency` | `number` | `5` | Parallel website checks. |
| `lowRatingThreshold` | `number` | `4` | Ratings below this are treated as reputation opportunities. |
| `lowReviewCountThreshold` | `number` | `20` | Review counts below this are treated as review-generation opportunities. |
| `defaultSourceQuery` | `string` | - | Fallback `sourceQuery` when input records do not include one. |

### Scoring Signals

The score is capped at `100`, where higher means a stronger lead opportunity.

- Missing website
- Social-only or third-party profile website
- Broken website when `checkWebsiteStatus` is enabled
- Low rating or missing rating
- Low review count or missing review count
- Missing phone
- Missing or service-oriented category
- Weak direct contact availability

Priority levels are:

- `high`: `leadScore >= 70`
- `medium`: `leadScore >= 40`
- `low`: `leadScore < 40`

### Output

Each output item contains the original source record fields plus scoring fields:

```json
{
  "businessName": "Example Plumbing",
  "category": "Plumber",
  "rating": 3.8,
  "reviewCount": 8,
  "address": "10 Example Street, Austin, TX",
  "phone": "",
  "website": "",
  "googleMapsUrl": "https://www.google.com/maps/place/...",
  "sourceQuery": "plumbers in Austin",
  "scrapedAt": "2026-05-13T08:45:00.000Z",
  "leadScore": 82,
  "scoreReasons": [
    "No public website listed (+35)",
    "Rating is below 4 (3.8) (+12)",
    "Review count is below 20 (8) (+10)",
    "No phone number listed (+9)",
    "Category \"Plumber\" is a local service segment (+6)",
    "No direct contact channel found beyond the Google Maps profile (+10)"
  ],
  "leadOpportunityType": "New website build",
  "recommendedPitch": "Pitch a simple mobile-first website for Example Plumbing that turns Google Maps discovery into calls, directions, and enquiries.",
  "priorityLevel": "high",
  "scoredAt": "2026-05-13T09:00:00.000Z"
}
```

# Actor input Schema

## `sourceDatasetId` (type: `string`):

Dataset ID or named dataset containing records from apify-actor-google-maps-business.

## `additionalSourceDatasetIds` (type: `array`):

Optional additional dataset IDs or names to score in the same run.

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

Maximum number of records to score across all source datasets. Leave high to process all practical records.

## `batchSize` (type: `integer`):

Number of source records to read and write per batch.

## `checkWebsiteStatus` (type: `boolean`):

When enabled, the Actor requests each non-social website and scores broken websites.

## `websiteCheckTimeoutSecs` (type: `integer`):

Maximum time to wait for each website status check.

## `websiteCheckConcurrency` (type: `integer`):

Number of website status checks to run in parallel.

## `lowRatingThreshold` (type: `number`):

Ratings below this value add reputation-improvement score.

## `lowReviewCountThreshold` (type: `integer`):

Review counts below this value add review-generation score.

## `defaultSourceQuery` (type: `string`):

Fallback source query to write when input records do not contain sourceQuery.

## `socialDomains` (type: `array`):

Domains treated as social-only or third-party profile websites.

## `serviceCategoryTerms` (type: `array`):

Category words that indicate a local service business where web, reputation, and contact gaps are stronger lead signals.

## Actor input object example

```json
{
  "sourceDatasetId": "google-maps-business-results",
  "additionalSourceDatasetIds": [],
  "maxItems": 10000,
  "batchSize": 100,
  "checkWebsiteStatus": false,
  "websiteCheckTimeoutSecs": 8,
  "websiteCheckConcurrency": 5,
  "lowRatingThreshold": 4,
  "lowReviewCountThreshold": 20,
  "socialDomains": [
    "facebook.com",
    "instagram.com",
    "linkedin.com",
    "twitter.com",
    "x.com",
    "tiktok.com",
    "youtube.com",
    "linktr.ee",
    "wa.me",
    "whatsapp.com",
    "business.site",
    "sites.google.com"
  ],
  "serviceCategoryTerms": [
    "contractor",
    "plumber",
    "electrician",
    "roofer",
    "builder",
    "cleaner",
    "dentist",
    "clinic",
    "lawyer",
    "accountant",
    "agency",
    "salon",
    "repair",
    "installer",
    "landscaper",
    "mechanic"
  ]
}
```

# Actor output Schema

## `scoredLeads` (type: `string`):

Original Google Maps business records with lead scoring fields appended.

# 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 = {
    "sourceDatasetId": "google-maps-business-results",
    "additionalSourceDatasetIds": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("paduchak/google-maps-scored-leads-scraper").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 = {
    "sourceDatasetId": "google-maps-business-results",
    "additionalSourceDatasetIds": [],
}

# Run the Actor and wait for it to finish
run = client.actor("paduchak/google-maps-scored-leads-scraper").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 '{
  "sourceDatasetId": "google-maps-business-results",
  "additionalSourceDatasetIds": []
}' |
apify call paduchak/google-maps-scored-leads-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Maps Scored Leads Scraper",
        "description": "Score Google Maps businesses by sales opportunity signals such as missing websites, weak online presence, low ratings, low review count, or missing contact details",
        "version": "0.0",
        "x-build-id": "jke0f86QBD0ajO1AC"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/paduchak~google-maps-scored-leads-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-paduchak-google-maps-scored-leads-scraper",
                "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/paduchak~google-maps-scored-leads-scraper/runs": {
            "post": {
                "operationId": "runs-sync-paduchak-google-maps-scored-leads-scraper",
                "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/paduchak~google-maps-scored-leads-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-paduchak-google-maps-scored-leads-scraper",
                "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": [
                    "sourceDatasetId"
                ],
                "properties": {
                    "sourceDatasetId": {
                        "title": "Source Dataset ID or Name",
                        "type": "string",
                        "description": "Dataset ID or named dataset containing records from apify-actor-google-maps-business."
                    },
                    "additionalSourceDatasetIds": {
                        "title": "Additional Source Dataset IDs",
                        "type": "array",
                        "description": "Optional additional dataset IDs or names to score in the same run.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "maxItems": {
                        "title": "Maximum Items",
                        "minimum": 1,
                        "maximum": 250000,
                        "type": "integer",
                        "description": "Maximum number of records to score across all source datasets. Leave high to process all practical records.",
                        "default": 10000
                    },
                    "batchSize": {
                        "title": "Batch Size",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Number of source records to read and write per batch.",
                        "default": 100
                    },
                    "checkWebsiteStatus": {
                        "title": "Check Website Status",
                        "type": "boolean",
                        "description": "When enabled, the Actor requests each non-social website and scores broken websites.",
                        "default": false
                    },
                    "websiteCheckTimeoutSecs": {
                        "title": "Website Check Timeout",
                        "minimum": 1,
                        "maximum": 60,
                        "type": "integer",
                        "description": "Maximum time to wait for each website status check.",
                        "default": 8
                    },
                    "websiteCheckConcurrency": {
                        "title": "Website Check Concurrency",
                        "minimum": 1,
                        "maximum": 25,
                        "type": "integer",
                        "description": "Number of website status checks to run in parallel.",
                        "default": 5
                    },
                    "lowRatingThreshold": {
                        "title": "Low Rating Threshold",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "number",
                        "description": "Ratings below this value add reputation-improvement score.",
                        "default": 4
                    },
                    "lowReviewCountThreshold": {
                        "title": "Low Review Count Threshold",
                        "minimum": 0,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Review counts below this value add review-generation score.",
                        "default": 20
                    },
                    "defaultSourceQuery": {
                        "title": "Default Source Query",
                        "type": "string",
                        "description": "Fallback source query to write when input records do not contain sourceQuery."
                    },
                    "socialDomains": {
                        "title": "Social-Only Domains",
                        "type": "array",
                        "description": "Domains treated as social-only or third-party profile websites.",
                        "items": {
                            "type": "string"
                        },
                        "default": [
                            "facebook.com",
                            "instagram.com",
                            "linkedin.com",
                            "twitter.com",
                            "x.com",
                            "tiktok.com",
                            "youtube.com",
                            "linktr.ee",
                            "wa.me",
                            "whatsapp.com",
                            "business.site",
                            "sites.google.com"
                        ]
                    },
                    "serviceCategoryTerms": {
                        "title": "Service Category Terms",
                        "type": "array",
                        "description": "Category words that indicate a local service business where web, reputation, and contact gaps are stronger lead signals.",
                        "items": {
                            "type": "string"
                        },
                        "default": [
                            "contractor",
                            "plumber",
                            "electrician",
                            "roofer",
                            "builder",
                            "cleaner",
                            "dentist",
                            "clinic",
                            "lawyer",
                            "accountant",
                            "agency",
                            "salon",
                            "repair",
                            "installer",
                            "landscaper",
                            "mechanic"
                        ]
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
