# Lead Intelligence Scorer Pro (`leadops_lab/lead-intelligence-scorer-pro`) Actor

Clean, deduplicate, score, and prepare B2B leads from Apify datasets for CRM import and outreach workflows.

- **URL**: https://apify.com/leadops\_lab/lead-intelligence-scorer-pro.md
- **Developed by:** [jiaxun mao](https://apify.com/leadops_lab) (community)
- **Categories:** Lead generation, AI, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00 / 1,000 scored leads

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

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

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Lead Intelligence Scorer

Clean, deduplicate, score, and prepare raw B2B leads from Apify datasets for CRM import and outreach workflows.

This Actor is built for one specific job: take messy output from lead-generation scrapers and turn it into a ranked, explainable, CRM-ready list. It does not scrape websites. It works as a post-processing step after Google Maps, event, supplier, directory, or trade-data scrapers.

### What does Lead Intelligence Scorer do?

Lead generation workflows often produce noisy records:

- duplicate companies
- missing emails or phone numbers
- inconsistent company, website, and location fields
- mixed-fit leads in the same dataset
- raw exports that are not ready for a CRM or outreach sequence

This Actor cleans that data and adds a simple lead-prioritization layer.

It outputs:

- normalized company, domain, email, phone, location, and category fields
- deduplication by email, domain, or company + location
- `leadScore` from 0 to 100
- score band: `Excellent`, `Strong`, `Moderate`, or `Weak`
- plain-English scoring reasons
- missing fields to enrich next
- suggested next action
- outreach angle
- original source record for traceability

### Common use cases

- Clean results from Apify lead scrapers before importing them into a CRM.
- Prioritize a large raw lead list before outreach.
- Remove duplicate companies across multiple scraper runs.
- Find which leads need enrichment before a campaign.
- Chain scraper output into n8n, Make, Zapier, HubSpot, Airtable, or Google Sheets.
- Build a repeatable scrape -> clean -> score -> export lead pipeline.

### Input options

Use either:

- `records`: paste a JSON array of raw lead records.
- `sourceDatasetId`: select an existing Apify Dataset ID.

You can also describe your ICP in plain language:

```json
{
  "records": [
    {
      "company": "Northstar HVAC Supply",
      "website": "https://northstarhvacsupply.example/",
      "email": "sales@northstarhvacsupply.example",
      "phone": "+1 555 010 2210",
      "city": "Dallas",
      "state": "TX",
      "category": "Industrial supplier",
      "description": "Commercial HVAC supplier serving contractors and property managers"
    }
  ],
  "icpDescription": "Industrial suppliers, HVAC distributors, manufacturers, logistics companies, and B2B service providers with a website and reachable sales contact.",
  "mode": "industrial_supplier",
  "dedupe": true,
  "minimumScore": 0
}
```

### Scoring modes

Choose the mode that best matches your dataset:

- `generic_b2b`: general B2B records
- `local_business`: local service businesses and appointment-driven companies
- `industrial_supplier`: manufacturers, distributors, suppliers, logistics, RFQ, wholesale
- `event_exhibitor`: events, conferences, expos, exhibitors, sponsors

### Output example

```json
{
  "leadScore": 100,
  "band": "Excellent",
  "companyName": "Acme Industrial Supply",
  "domain": "acme-industrial.example",
  "email": "sales@acme-industrial.example",
  "phone": "+1 555 012 1000",
  "location": "Houston, TX",
  "category": "Industrial supplier",
  "reasons": [
    "Lead has enough contact and firmographic data for prioritization.",
    "Matches ICP terms: industrial, hvac, wholesale, sales.",
    "Matches industrial supplier signals: supplier, industrial, wholesale, distributor.",
    "Has a direct contact channel."
  ],
  "missingFields": [],
  "suggestedNextAction": "Import to CRM and start priority outreach.",
  "outreachAngle": "Industrial/supplier lead. Open with sourcing, RFQ, distribution, or trade-intelligence relevance for Acme Industrial Supply.",
  "dedupeKey": "9ff66ab7b2f7ad170115596449e2daa2ff4f4293"
}
```

### What this Actor is not

- It is not a scraper.
- It does not find emails by itself.
- It does not send outreach.
- It does not use paid AI APIs by default.

This makes it cheaper and more stable as a workflow step. Use it after a scraper and before CRM import, enrichment, or outreach.

### Recommended workflow

1. Run your preferred lead scraper.
2. Copy the output Dataset ID.
3. Run this Actor with your ICP description.
4. Export the scored dataset as CSV, JSON, or Excel.
5. Import only `Excellent` and `Strong` leads into your CRM or outreach workflow.

### Why use this Actor?

Many lead scrapers focus on collecting data. This Actor focuses on making collected data usable.

It is useful when you already have leads, but you do not yet know which records are complete, duplicated, relevant, or worth contacting first.

# Actor input Schema

## `records` (type: `array`):

Paste raw leads as JSON objects. Use this or sourceDatasetId.

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

Optional Apify Dataset ID to read records from instead of inline records.

## `icpDescription` (type: `string`):

Describe the ideal lead. The Actor extracts keywords and scores records against this.

## `mode` (type: `string`):

Choose a scoring lens for the records.

## `maxRecords` (type: `integer`):

Maximum records to read and score.

## `dedupe` (type: `boolean`):

Merge duplicate leads by email, domain, or company + location.

## `minimumScore` (type: `integer`):

Only output records at or above this score.

## Actor input object example

```json
{
  "records": [
    {
      "company": "Northstar HVAC Supply",
      "website": "https://northstarhvacsupply.example/",
      "email": "sales@northstarhvacsupply.example",
      "phone": "+1 555 010 2210",
      "city": "Dallas",
      "state": "TX",
      "description": "Commercial HVAC supplier serving contractors and property managers"
    },
    {
      "company": "Metro Build Expo",
      "url": "https://events.example/metro-build-expo",
      "category": "Building & Construction",
      "city": "Chicago",
      "country": "US",
      "estimatedVisitors": 8500
    }
  ],
  "icpDescription": "B2B companies in construction, HVAC, industrial supply, manufacturing, trade shows, logistics, or services with a website and reachable sales/contact channel.",
  "mode": "generic_b2b",
  "maxRecords": 1000,
  "dedupe": true,
  "minimumScore": 0
}
```

# 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 = {
    "records": [
        {
            "company": "Northstar HVAC Supply",
            "website": "https://northstarhvacsupply.example/",
            "email": "sales@northstarhvacsupply.example",
            "phone": "+1 555 010 2210",
            "city": "Dallas",
            "state": "TX",
            "description": "Commercial HVAC supplier serving contractors and property managers"
        },
        {
            "company": "Metro Build Expo",
            "url": "https://events.example/metro-build-expo",
            "category": "Building & Construction",
            "city": "Chicago",
            "country": "US",
            "estimatedVisitors": 8500
        }
    ],
    "icpDescription": "B2B companies in construction, HVAC, industrial supply, manufacturing, trade shows, logistics, or services with a website and reachable sales/contact channel."
};

// Run the Actor and wait for it to finish
const run = await client.actor("leadops_lab/lead-intelligence-scorer-pro").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 = {
    "records": [
        {
            "company": "Northstar HVAC Supply",
            "website": "https://northstarhvacsupply.example/",
            "email": "sales@northstarhvacsupply.example",
            "phone": "+1 555 010 2210",
            "city": "Dallas",
            "state": "TX",
            "description": "Commercial HVAC supplier serving contractors and property managers",
        },
        {
            "company": "Metro Build Expo",
            "url": "https://events.example/metro-build-expo",
            "category": "Building & Construction",
            "city": "Chicago",
            "country": "US",
            "estimatedVisitors": 8500,
        },
    ],
    "icpDescription": "B2B companies in construction, HVAC, industrial supply, manufacturing, trade shows, logistics, or services with a website and reachable sales/contact channel.",
}

# Run the Actor and wait for it to finish
run = client.actor("leadops_lab/lead-intelligence-scorer-pro").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 '{
  "records": [
    {
      "company": "Northstar HVAC Supply",
      "website": "https://northstarhvacsupply.example/",
      "email": "sales@northstarhvacsupply.example",
      "phone": "+1 555 010 2210",
      "city": "Dallas",
      "state": "TX",
      "description": "Commercial HVAC supplier serving contractors and property managers"
    },
    {
      "company": "Metro Build Expo",
      "url": "https://events.example/metro-build-expo",
      "category": "Building & Construction",
      "city": "Chicago",
      "country": "US",
      "estimatedVisitors": 8500
    }
  ],
  "icpDescription": "B2B companies in construction, HVAC, industrial supply, manufacturing, trade shows, logistics, or services with a website and reachable sales/contact channel."
}' |
apify call leadops_lab/lead-intelligence-scorer-pro --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,leadops_lab/lead-intelligence-scorer-pro"
        }
    }
}

```

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/X9d34B2IdmnZML1DK/builds/CWh9ZXyAMpAyJ3MbJ/openapi.json
