# B2B Lead Email, Tech-Stack & Agency Pain-Point Enricher (`mrf-lab/b2b-lead-painpoint-enricher`) Actor

Fast B2B website lead enricher extracting emails, phone numbers, social links, CMS & ad pixels (Meta, TikTok, GTM), WCAG accessibility violations, and optional AI cold outreach icebreakers with Gemini Flash.

- **URL**: https://apify.com/mrf-lab/b2b-lead-painpoint-enricher.md
- **Developed by:** [Maruf Belete](https://apify.com/mrf-lab) (community)
- **Categories:** Lead generation, Marketing
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 1,000 enriched business lead & audits

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?

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

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

## How to integrate an Actor?

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

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

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

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

# README

## 🎯 B2B Lead Email, Tech-Stack & Agency Pain-Point Enricher (v1.1)

> **Turn raw business websites into pitch-ready agency leads.** Extract verified decision-maker emails, MX mail-server validation, booking system detection, ad tracking pixels (Meta, TikTok, Google Ads, LinkedIn), WCAG accessibility compliance audits, 0–100 Lead Opportunity Scores, and hyper-personalized AI cold outreach openers in seconds.

***

### 💡 Why This Tool?

Generic cold emails like *"I can build you a great website"* get ignored or marked as spam.

High-converting outreach requires **immediate, verified proof of digital gaps**:

- *"I noticed your Shopify store is driving Google traffic without a Meta or TikTok retargeting pixel installed..."*
- *"Your site currently has 42 images missing WCAG alt tags, hurting your SEO and creating ADA legal exposure..."*
- *"You don't have an online booking system or a 24/7 AI chat widget to capture inbound leads after hours..."*

This Actor automatically audits any business website and equips your sales team, marketing agency, or SDRs with **both the verified contact info and the exact angle needed to close the deal**.

***

### ✨ What You Get In Every Lead Record (Version 1.1)

Every company URL you provide produces a clean, enriched profile containing:

#### 1. 🎯 Lead Opportunity Score & Top Pitch (NEW)

- **`leadOpportunityScore` (0–100)**: Proprietary algorithm calculating how contactable the business is and how urgently they need agency services. Sort your leads by score to pitch highest-value accounts first!
- **`topRecommendedPitch`**: Instant pitch angle ready to paste into your cold email subject line or opening sentence (e.g. *"Pitch Meta Retargeting Pixel (Has Traffic/Analytics but 0 Retargeting)"* or *"Pitch WCAG Accessibility Fix (18 Missing Alt Tags)"*).

#### 2. 📬 Verified Contacts & DNS MX Validation (NEW)

- **Decision-Maker vs. Generic Separation**: Automatically splits emails into **`decisionMakerEmails`** (`sarah.founder@...`, `dr.smith@...`) and **`genericEmails`** (`info@...`, `support@...`).
- **Real-Time DNS MX Verification**: Validates that the company's mail server is actively accepting emails.
- **Mail Hosting Provider Badge**: Detects whether they use **Google Workspace**, **Microsoft 365**, **Zoho Mail**, **Proton Mail**, or enterprise relays.
- **Direct Phone Numbers**: Normalizes telephone and `tel:` / `callto:` links.
- **Social Profiles**: Direct links to **LinkedIn**, **Instagram**, **Facebook**, **X (Twitter)**, **WhatsApp**, and **YouTube**.

#### 3. 📅 Booking Systems & Funnel Spy (NEW)

- Detects appointment and scheduling engines: **Calendly**, **Acuity Scheduling**, **Mindbody**, **Vagaro**, **JaneApp**, **Doctolib**, **ServiceTitan**, **Housecall Pro**, **GoHighLevel**, and **ClickFunnels**.

#### 4. 💻 Tech Stack, Tracking Pixels & Heatmaps

- **CMS Identification**: **Shopify**, **WordPress**, **Webflow**, **Wix**, **Squarespace**, or Custom builds.
- **Paid Ads Pixels**: **Meta Pixel (Facebook Ads)**, **TikTok Pixel**, **Google Ads Conversion Tracking**, and **LinkedIn Insight Tag**.
- **Analytics & Heatmaps**: **Google Tag Manager (GTM)**, **Google Analytics (GA4)**, **Microsoft Clarity**, and **Hotjar**.
- **Email Marketing & CRM**: **Klaviyo**, **Mailchimp**, **ActiveCampaign**, **Omnisend**, and **HubSpot**.
- **Live Chat Solutions**: **Intercom**, **Zendesk**, **Tidio**, **Crisp**, **Drift**, **GoHighLevel Chat**, **Tawk.to**, or **LiveChat**.

#### 5. 📍 Local Business Schema.org Metadata (NEW)

- Extracts structured Schema.org (`application/ld+json`) metadata: **Street Address**, **City**, **State**, **Postal Code**, **Price Range**, **Google/Schema Star Rating**, and **Review Count**.

#### 6. 🚩 Ready-to-Pitch Agency Opportunities

- `needsPaidAdsManagement`: **`true`** if they are missing Meta/TikTok/Google ad tracking pixels.
- `needsRetargetingPixel`: **`true`** if they have Google Analytics traffic but 0 retargeting pixels installed.
- `needsAiChatWidget`: **`true`** if no live chat tool is found.
- `needsOnlineBookingSystem`: **`true`** if no appointment scheduling system is found.
- `needsEmailMarketingSetup`: **`true`** if a Shopify store lacks Klaviyo/ecommerce email flows.
- `needsWcagAccessibilityFix`: **`true`** if multiple images lack `alt` descriptions (ADA legal risk).
- `missingAltTagsCount`: Exact count of uncaptioned images to cite in your pitch.
- `needsSeoMetaFix`: **`true`** if meta description is missing or too short (< 20 characters).
- `hasContactForm`: Whether the site has an active inbound contact form.

#### 7. 🤖 Optional Gemini AI Cold Email Icebreaker

- Generates a **1-sentence hyper-personalized opener** (under 26 words) tailored to the company's business model and their biggest missing growth asset.
- **Zero generic flattery**: No cliché phrases like *"I hope this email finds you well"*.

***

### ⚡ How It Works (No Code Required)

1. **Paste Your URLs**: Paste a list of business domains (e.g. from Google Maps, Apollo, ZoomInfo, or a CSV file) into the **Business Website URLs** box.
2. **Enable Deep Contact Crawl**: Automatically visits `/contact`, `/about`, or `/impressum` pages when no email is on the homepage, and consolidates everything into **one single lead row**.
3. **Optional Webhook Push**: Provide an n8n, Make, Clay, or GoHighLevel webhook URL to receive enriched lead records in real-time as they finish.
4. **Click "Start"**: Apify runs the audit in parallel with high-speed proxy rotation.
5. **Export Your Leads**: Download directly as **CSV**, **Excel**, **JSON**, or sync live with your CRM.

***

### 📊 Sample Output Record

```json
{
  "domain": "acmegrowth.com",
  "url": "https://acmegrowth.com",
  "companyTitle": "Acme Growth - Full-Funnel Growth Marketing",
  "leadOpportunityScore": 85,
  "topRecommendedPitch": "Pitch Meta Retargeting Pixel (Has Traffic/Analytics but 0 Retargeting)",
  "emails": [
    "sarah.founder@acmegrowth.com",
    "hello@acmegrowth.com"
  ],
  "decisionMakerEmails": [
    "sarah.founder@acmegrowth.com"
  ],
  "genericEmails": [
    "hello@acmegrowth.com"
  ],
  "emailDeliverability": {
    "hasValidMx": true,
    "mailProvider": "Google Workspace"
  },
  "phones": [
    "+15551234567"
  ],
  "socials": {
    "linkedin": "https://www.linkedin.com/company/acme-growth/",
    "instagram": "https://www.instagram.com/acmegrowth/",
    "facebook": "https://www.facebook.com/acmegrowth/",
    "twitter": "https://x.com/acmegrowth",
    "whatsapp": "https://wa.me/15551234567",
    "youtube": "https://www.youtube.com/@acmegrowth"
  },
  "localBusinessData": {
    "businessType": "LocalBusiness",
    "streetAddress": "123 Market St",
    "city": "Austin",
    "region": "TX",
    "postalCode": "78701",
    "country": "US",
    "priceRange": "$$$",
    "ratingValue": "4.9",
    "reviewCount": "84"
  },
  "techStack": {
    "cms": "WordPress",
    "hasMetaPixel": false,
    "hasTikTokPixel": false,
    "hasGoogleAdsConversion": false,
    "hasLinkedInInsight": true,
    "hasGoogleTagManager": true,
    "hasGoogleAnalytics": true,
    "liveChatProvider": "Intercom",
    "bookingProvider": "Calendly",
    "emailMarketingTool": "Klaviyo",
    "heatmapTool": "Microsoft Clarity"
  },
  "agencyPitchSignals": {
    "needsPaidAdsManagement": true,
    "needsRetargetingPixel": true,
    "needsAiChatWidget": false,
    "needsOnlineBookingSystem": false,
    "needsEmailMarketingSetup": false,
    "needsWcagAccessibilityFix": true,
    "needsSeoMetaFix": false,
    "missingAltTagsCount": 18,
    "hasContactForm": true
  },
  "aiSalesIcebreaker": "While Acme Growth drives solid brand traffic, your site is losing qualified leads without a Meta retargeting pixel to re-engage past visitors.",
  "pagesChecked": 2,
  "scrapedAt": "2026-10-29T07:30:00.000Z"
}
```

***

### 📥 Input Settings

| Parameter | Type | Default | Description |
|---|---|:---:|---|
| **`startUrls`** | Array | *Required* | List of company websites to audit and enrich. |
| **`deepContactCrawl`** | Boolean | `true` | Automatically checks internal `/contact`, `/about`, and `/impressum` pages and merges all data into 1 row. |
| **`verifyEmailMx`** | Boolean | `true` | Real-time DNS MX lookup verifying email domain validity and detecting mail host (Google Workspace, M365, etc.). |
| **`enableAiPitch`** | Boolean | `false` | Generates a custom 1-sentence sales pitch opener using Gemini Flash. |
| **`geminiApiKey`** | String (Secret) | *Optional* | Your free Google AI Studio key if you prefer to bring your own key. |
| **`webhookUrl`** | String | *Optional* | Real-time webhook URL (n8n, Make, Clay, GoHighLevel) to receive leads as soon as they finish. |
| **`proxyConfiguration`** | Object | `Apify Proxy` | Uses residential/datacenter proxy pool to prevent blocking when enriching large lists. |

***

### 🔗 Integrations & Outbound Workflows

Easily feed your enriched dataset into any modern outbound sales engine:

- **Cold Email Platforms**: Instantly.ai, Smartlead.ai, Lemlist, Woodpecker.
- **Automation & CRMs**: Clay.com, GoHighLevel, HubSpot, Salesforce, Close, Pipedrive.
- **Workflow Automation**: Make, Zapier, n8n, Apify Webhooks.

# Actor input Schema

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

Paste a list of company websites (from Google Maps, Apollo, Clay, or CSV) to enrich with verified emails, tech stack, and agency pitch angles.

## `deepContactCrawl` (type: `boolean`):

Automatically checks internal contact/about/impressum pages when no email is found on the homepage and merges everything into 1 record at no extra charge.

## `verifyEmailMx` (type: `boolean`):

Performs a real-time DNS MX check to verify the email domain can receive mail and identifies the provider (Google Workspace, Microsoft 365, etc.).

## `enableAiPitch` (type: `boolean`):

Uses Gemini Flash to generate a personalized 1-sentence cold email opener based on the company's services and detected digital gaps.

## `geminiApiKey` (type: `string`):

Optional: Provide your own free Google AI Studio API key if enabling AI Cold Email Icebreakers.

## `webhookUrl` (type: `string`):

Optional: Instant HTTP POST of each enriched lead JSON record to your automation webhook the moment it finishes.

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

Use Apify Proxy to prevent blocks when enriching large lists of business domains.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://apify.com"
    }
  ],
  "deepContactCrawl": true,
  "verifyEmailMx": true,
  "enableAiPitch": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `enrichedLeads` (type: `string`):

Complete dataset of enriched company domains with contact info and pitch signals.

# 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://apify.com"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("mrf-lab/b2b-lead-painpoint-enricher").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://apify.com" }],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("mrf-lab/b2b-lead-painpoint-enricher").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 '{
  "startUrls": [
    {
      "url": "https://apify.com"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call mrf-lab/b2b-lead-painpoint-enricher --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mrf-lab/b2b-lead-painpoint-enricher"
        }
    }
}
```

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/pvoeCqqzNt18icNiZ/builds/tP5bCxr8qKG41ZJyp/openapi.json
