# Global Ai B2b Lead Enrichment Actor (`josiah_essau/global-ai-b2b-lead-enrichment-actor`) Actor

Find, crawl, enrich, score, and prepare outreach for B2B sales leads.

This Actor is built for agencies, consultants, lead brokers, SEO teams, web design businesses, and SaaS outbound teams that need more than raw scraped URLs.

- **URL**: https://apify.com/josiah\_essau/global-ai-b2b-lead-enrichment-actor.md
- **Developed by:** [josiah essau](https://apify.com/josiah_essau) (community)
- **Categories:** Lead generation, Agents, SEO tools
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.025 / enriched lead

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

## Global AI B2B Lead Enrichment

Find, crawl, enrich, score, and prepare outreach for B2B sales leads.

This Actor is built for agencies, consultants, lead brokers, SEO teams, web design businesses, and SaaS outbound teams that need more than raw scraped URLs. It extracts public company website signals, detects sales gaps, recommends an offer, gives every lead a score, and writes outreach copy.

### What it does

1. Accepts company websites, manual lead records, or search queries.
2. Optionally discovers company websites using SerpApi, Google Custom Search, or Bing Web Search.
3. Crawls each company website with Crawlee CheerioCrawler.
4. Extracts public B2B signals: business name, website, emails, phones, social links, contact forms, booking signals, WhatsApp signals, ecommerce signals, schema, and visible technologies.
5. Detects problems and gaps.
6. Recommends a saleable offer.
7. Scores the lead.
8. Outputs a ready-to-use outreach message.

### Example input

```json
{
  "startUrls": [{ "url": "https://www.example.com" }],
  "manualLeads": [{
    "businessName": "Acme Dental Clinic",
    "website": "https://www.example.com",
    "category": "dentist",
    "city": "Austin",
    "country": "United States"
  }],
  "maxPagesPerWebsite": 3,
  "maxResults": 100
}
````

### Discovery mode

```json
{
  "discoveryProvider": "serpapi",
  "serpApiKey": "YOUR_KEY",
  "searchQueries": ["dentists in Austin Texas contact", "roofing companies in Toronto website"],
  "maxSearchResultsPerQuery": 20,
  "maxResults": 100
}
```

Supported discovery providers: `serpapi`, `googleCustomSearch`, `bing`, and `none`.

### Output fields

Each dataset item includes `businessName`, `website`, `category`, `emails`, `phones`, `socialLinks`, `technologies`, `digitalSignals`, `problemFound`, `allProblems`, `leadScore`, `priority`, `recommendedOffer`, `salesAngle`, `outreachMessage`, `sourceUrl`, and `sourceUrls`.

### Privacy and compliance notes

This Actor is designed for public business website data. By default, it filters likely personal email addresses and prioritizes generic business addresses such as `info@`, `hello@`, `sales@`, and `contact@`.

Users are responsible for complying with applicable laws, website terms, search API terms, and outreach rules such as CAN-SPAM, GDPR, ePrivacy, PECR, and local anti-spam laws.

### Monetization suggestion

If publishing to Apify Store, consider charging per result or per event: basic lead, enriched lead, and outreach message generated. Before enabling pay-per-event in code, configure pricing events in Apify Console and test on a private Actor first.

### Local development

```bash
npm install
npm start
npm run check
```

### Apify deployment

```bash
apify login
apify push
```

# Actor input Schema

## `startUrls` (type: `array`):

Optional list of public company websites to crawl and enrich.

## `manualLeads` (type: `array`):

Optional JSON array of known leads. Each object can include businessName, website, category, city, country, phone, email, and notes.

## `discoveryProvider` (type: `string`):

Optional search provider for finding company websites from queries.

## `searchQueries` (type: `array`):

Optional list of search queries. If empty and a discovery provider is selected, queries are generated from countries and niches.

## `countries` (type: `array`):

Countries used to generate search queries.

## `niches` (type: `array`):

Business niches to target and score highly.

## `maxSearchResultsPerQuery` (type: `integer`):

Maximum URLs fetched per search query.

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

Maximum final leads pushed to dataset.

## `maxPagesPerWebsite` (type: `integer`):

Same-host pages to crawl for each website.

## `maxConcurrency` (type: `integer`):

Maximum parallel crawling requests.

## `includePersonalEmails` (type: `boolean`):

When false, prefer generic business emails such as info@, sales@, hello@, contact@.

## `outreachLanguage` (type: `string`):

Language used for outreach messages.

## `outreachTone` (type: `string`):

Tone used for generated outreach copy.

## `serpApiKey` (type: `string`):

Secret SerpApi API key.

## `googleApiKey` (type: `string`):

Secret Google Custom Search JSON API key.

## `googleCx` (type: `string`):

Google Custom Search engine ID.

## `bingApiKey` (type: `string`):

Secret Bing Web Search API key.

## `excludeDomains` (type: `array`):

Domains to exclude from discovery results.

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

Optional proxy configuration for crawling.

## `debug` (type: `boolean`):

Include extraction evidence and diagnostics in each dataset item.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.example.com"
    }
  ],
  "manualLeads": [],
  "discoveryProvider": "none",
  "searchQueries": [],
  "countries": [
    "United States",
    "United Kingdom",
    "Canada",
    "Australia"
  ],
  "niches": [
    "dentists",
    "law firms",
    "roofing companies",
    "real estate agents",
    "clinics"
  ],
  "maxSearchResultsPerQuery": 10,
  "maxResults": 100,
  "maxPagesPerWebsite": 3,
  "maxConcurrency": 10,
  "includePersonalEmails": false,
  "outreachLanguage": "English",
  "outreachTone": "consultative",
  "excludeDomains": [
    "facebook.com",
    "instagram.com",
    "linkedin.com",
    "youtube.com",
    "twitter.com",
    "x.com",
    "tiktok.com",
    "yelp.com",
    "tripadvisor.com",
    "yellowpages.com"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "debug": false
}
```

# Actor output Schema

## `leads` (type: `string`):

Dataset items containing enriched B2B leads, detected website gaps, lead scores, recommended offers, and outreach messages.

## `summary` (type: `string`):

Summary JSON saved by the Actor to the default key-value store.

# 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 = {
    "startUrls": [
        {
            "url": "https://www.example.com"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("josiah_essau/global-ai-b2b-lead-enrichment-actor").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 = { "startUrls": [{ "url": "https://www.example.com" }] }

# Run the Actor and wait for it to finish
run = client.actor("josiah_essau/global-ai-b2b-lead-enrichment-actor").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 '{
  "startUrls": [
    {
      "url": "https://www.example.com"
    }
  ]
}' |
apify call josiah_essau/global-ai-b2b-lead-enrichment-actor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=josiah_essau/global-ai-b2b-lead-enrichment-actor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Global Ai B2b Lead Enrichment Actor",
        "description": "Find, crawl, enrich, score, and prepare outreach for B2B sales leads.\n\nThis Actor is built for agencies, consultants, lead brokers, SEO teams, web design businesses, and SaaS outbound teams that need more than raw scraped URLs.",
        "version": "0.0",
        "x-build-id": "NiwJPDlhI9VSBS3m9"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/josiah_essau~global-ai-b2b-lead-enrichment-actor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-josiah_essau-global-ai-b2b-lead-enrichment-actor",
                "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/josiah_essau~global-ai-b2b-lead-enrichment-actor/runs": {
            "post": {
                "operationId": "runs-sync-josiah_essau-global-ai-b2b-lead-enrichment-actor",
                "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/josiah_essau~global-ai-b2b-lead-enrichment-actor/run-sync": {
            "post": {
                "operationId": "run-sync-josiah_essau-global-ai-b2b-lead-enrichment-actor",
                "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": {
                    "startUrls": {
                        "title": "Company website URLs",
                        "type": "array",
                        "description": "Optional list of public company websites to crawl and enrich.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "manualLeads": {
                        "title": "Manual leads",
                        "type": "array",
                        "description": "Optional JSON array of known leads. Each object can include businessName, website, category, city, country, phone, email, and notes.",
                        "default": []
                    },
                    "discoveryProvider": {
                        "title": "Discovery provider",
                        "enum": [
                            "none",
                            "serpapi",
                            "googleCustomSearch",
                            "bing"
                        ],
                        "type": "string",
                        "description": "Optional search provider for finding company websites from queries.",
                        "default": "none"
                    },
                    "searchQueries": {
                        "title": "Search queries",
                        "type": "array",
                        "description": "Optional list of search queries. If empty and a discovery provider is selected, queries are generated from countries and niches.",
                        "default": []
                    },
                    "countries": {
                        "title": "Countries",
                        "type": "array",
                        "description": "Countries used to generate search queries.",
                        "items": {
                            "type": "string",
                            "enumSuggestedValues": [
                                "United States",
                                "United Kingdom",
                                "Canada",
                                "Australia",
                                "Germany",
                                "United Arab Emirates",
                                "South Africa",
                                "Kenya",
                                "Tanzania"
                            ]
                        },
                        "default": [
                            "United States",
                            "United Kingdom",
                            "Canada",
                            "Australia"
                        ]
                    },
                    "niches": {
                        "title": "High-value niches",
                        "type": "array",
                        "description": "Business niches to target and score highly.",
                        "items": {
                            "type": "string",
                            "enumSuggestedValues": [
                                "dentists",
                                "law firms",
                                "roofing companies",
                                "real estate agents",
                                "clinics",
                                "solar installers",
                                "restaurants",
                                "salons",
                                "hotels",
                                "SaaS companies"
                            ]
                        },
                        "default": [
                            "dentists",
                            "law firms",
                            "roofing companies",
                            "real estate agents",
                            "clinics"
                        ]
                    },
                    "maxSearchResultsPerQuery": {
                        "title": "Max search results per query",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum URLs fetched per search query.",
                        "default": 10
                    },
                    "maxResults": {
                        "title": "Max output leads",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum final leads pushed to dataset.",
                        "default": 100
                    },
                    "maxPagesPerWebsite": {
                        "title": "Max pages per website",
                        "minimum": 1,
                        "maximum": 25,
                        "type": "integer",
                        "description": "Same-host pages to crawl for each website.",
                        "default": 3
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum parallel crawling requests.",
                        "default": 10
                    },
                    "includePersonalEmails": {
                        "title": "Include personal-looking emails",
                        "type": "boolean",
                        "description": "When false, prefer generic business emails such as info@, sales@, hello@, contact@.",
                        "default": false
                    },
                    "outreachLanguage": {
                        "title": "Outreach language",
                        "enum": [
                            "English",
                            "Swahili",
                            "Spanish",
                            "French",
                            "German"
                        ],
                        "type": "string",
                        "description": "Language used for outreach messages.",
                        "default": "English"
                    },
                    "outreachTone": {
                        "title": "Outreach tone",
                        "enum": [
                            "direct",
                            "friendly",
                            "consultative",
                            "premium"
                        ],
                        "type": "string",
                        "description": "Tone used for generated outreach copy.",
                        "default": "consultative"
                    },
                    "serpApiKey": {
                        "title": "SerpApi key",
                        "type": "string",
                        "description": "Secret SerpApi API key."
                    },
                    "googleApiKey": {
                        "title": "Google API key",
                        "type": "string",
                        "description": "Secret Google Custom Search JSON API key."
                    },
                    "googleCx": {
                        "title": "Google Custom Search CX",
                        "type": "string",
                        "description": "Google Custom Search engine ID."
                    },
                    "bingApiKey": {
                        "title": "Bing Web Search API key",
                        "type": "string",
                        "description": "Secret Bing Web Search API key."
                    },
                    "excludeDomains": {
                        "title": "Exclude domains",
                        "type": "array",
                        "description": "Domains to exclude from discovery results.",
                        "default": [
                            "facebook.com",
                            "instagram.com",
                            "linkedin.com",
                            "youtube.com",
                            "twitter.com",
                            "x.com",
                            "tiktok.com",
                            "yelp.com",
                            "tripadvisor.com",
                            "yellowpages.com"
                        ]
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional proxy configuration for crawling.",
                        "default": {
                            "useApifyProxy": false
                        }
                    },
                    "debug": {
                        "title": "Debug output",
                        "type": "boolean",
                        "description": "Include extraction evidence and diagnostics in each dataset item.",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
