# LeadBlast Canada

LeadBlast Canada is an automation tool that scrapes business leads from Yellow Pages Canada, validated the numbers with 2Chat and instantly sends personalized WhatsApp messages using AiSensy. LeadBlast handles the delivering of high-quality, local B2B leads and real-time outreach in minutes

## Actor Statistics

- Total users: 8
- Monthly users: 3
- Runs succeeded: 100.00%
- Categories: Automation, Lead generation, Integrations

## Pricing

$50.00/month + usage

## Input Schema

- **business\_category** (type: string): The Business Category you want to target in your campaign
- **city\_and\_province** (type: string): The Business City you want to target
- **apify\_api\_token** (type: string): The API token to access Apify Actors
- **aisensy\_api\_key** (type: string): The AiSensy API key to send WhatsApp campaign to businesses
- **two\_chat\_api\_key** (type: string): The 2Chat API key to verify Valid Phone numbers and Available on Whatsapp
- **my\_2chat\_connected\_number** (type: string): Your 2Chat connected whatsapp number
- **aisensy\_campaign\_name** (type: string): The name of the Campaign Template created on AiSensy to broadcast to businesses
- **media\_url** (type: string): The URL to image you added to the campaign message content
- **media\_filename** (type: string): The filename of the media you are including in the campaign

## API example

## LeadBlast Canada

- **OpenAPI Version:** `3.1.1`
- **API Version:** `0.0`

LeadBlast Canada is an automation tool that scrapes business leads from Yellow Pages Canada, validated the numbers with 2Chat and instantly sends personalized WhatsApp messages using AiSensy. LeadBlast handles the delivering of high-quality, local B2B leads and real-time outreach in minutes

### Servers

- **URL:** `https://api.apify.com/v2`

### Operations

#### Executes an Actor, waits for its completion, and returns Actor's dataset items in response.

- **Method:** `POST`
- **Path:** `/acts/lead.gen.labs~leadblast-canada/run-sync-get-dataset-items`
- **Tags:** Run Actor

##### Request Body

###### Content-Type: application/json

- **`aisensy_api_key` (required)**

  `string`, default: `""` — The AiSensy API key to send WhatsApp campaign to businesses

- **`aisensy_campaign_name` (required)**

  `string`, default: `""` — The name of the Campaign Template created on AiSensy to broadcast to businesses

- **`apify_api_token` (required)**

  `string`, default: `""` — The API token to access Apify Actors

- **`business_category`**

  `string`, default: `"Chiropractor"` — The Business Category you want to target in your campaign

- **`city_and_province`**

  `string`, default: `"East York, TO"` — The Business City you want to target

- **`media_filename`**

  `string`, default: `""` — The filename of the media you are including in the campaign

- **`media_url`**

  `string`, default: `""` — The URL to image you added to the campaign message content

- **`my_2chat_connected_number`**

  `string`, default: `""` — Your 2Chat connected whatsapp number

- **`two_chat_api_key`**

  `string`, default: `""` — The 2Chat API key to verify Valid Phone numbers and Available on Whatsapp

**Example:**

```
{
  "business_category": "Chiropractor",
  "city_and_province": "East York, TO",
  "apify_api_token": "",
  "aisensy_api_key": "",
  "two_chat_api_key": "",
  "my_2chat_connected_number": "",
  "aisensy_campaign_name": "",
  "media_url": "",
  "media_filename": ""
}
```

##### Responses

###### Status: 200 OK

#### Executes an Actor and returns information about the initiated run in response.

- **Method:** `POST`
- **Path:** `/acts/lead.gen.labs~leadblast-canada/runs`
- **Tags:** Run Actor

##### Request Body

###### Content-Type: application/json

- **`aisensy_api_key` (required)**

  `string`, default: `""` — The AiSensy API key to send WhatsApp campaign to businesses

- **`aisensy_campaign_name` (required)**

  `string`, default: `""` — The name of the Campaign Template created on AiSensy to broadcast to businesses

- **`apify_api_token` (required)**

  `string`, default: `""` — The API token to access Apify Actors

- **`business_category`**

  `string`, default: `"Chiropractor"` — The Business Category you want to target in your campaign

- **`city_and_province`**

  `string`, default: `"East York, TO"` — The Business City you want to target

- **`media_filename`**

  `string`, default: `""` — The filename of the media you are including in the campaign

- **`media_url`**

  `string`, default: `""` — The URL to image you added to the campaign message content

- **`my_2chat_connected_number`**

  `string`, default: `""` — Your 2Chat connected whatsapp number

- **`two_chat_api_key`**

  `string`, default: `""` — The 2Chat API key to verify Valid Phone numbers and Available on Whatsapp

**Example:**

```
{
  "business_category": "Chiropractor",
  "city_and_province": "East York, TO",
  "apify_api_token": "",
  "aisensy_api_key": "",
  "two_chat_api_key": "",
  "my_2chat_connected_number": "",
  "aisensy_campaign_name": "",
  "media_url": "",
  "media_filename": ""
}
```

##### Responses

###### Status: 200 OK

\####### Content-Type: application/json

- **`data`**

  `object`

  - **`actId`**

    `string`

  - **`buildId`**

    `string`

  - **`buildNumber`**

    `string`

  - **`containerUrl`**

    `string`

  - **`defaultDatasetId`**

    `string`

  - **`defaultKeyValueStoreId`**

    `string`

  - **`defaultRequestQueueId`**

    `string`

  - **`finishedAt`**

    `string`, format: `date-time`

  - **`id`**

    `string`

  - **`meta`**

    `object`

    - **`origin`**

      `string`

    - **`userAgent`**

      `string`

  - **`options`**

    `object`

    - **`build`**

      `string`

    - **`diskMbytes`**

      `integer`

    - **`memoryMbytes`**

      `integer`

    - **`timeoutSecs`**

      `integer`

  - **`startedAt`**

    `string`, format: `date-time`

  - **`stats`**

    `object`

    - **`computeUnits`**

      `integer`

    - **`inputBodyLen`**

      `integer`

    - **`rebootCount`**

      `integer`

    - **`restartCount`**

      `integer`

    - **`resurrectCount`**

      `integer`

  - **`status`**

    `string`

  - **`usage`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `integer`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`usageTotalUsd`**

    `number`

  - **`usageUsd`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `number`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`userId`**

    `string`

**Example:**

```
{
  "data": {
    "id": "",
    "actId": "",
    "userId": "",
    "startedAt": "2025-01-08T00:00:00.000Z",
    "finishedAt": "2025-01-08T00:00:00.000Z",
    "status": "READY",
    "meta": {
      "origin": "API",
      "userAgent": ""
    },
    "stats": {
      "inputBodyLen": 2000,
      "rebootCount": 0,
      "restartCount": 0,
      "resurrectCount": 0,
      "computeUnits": 0
    },
    "options": {
      "build": "latest",
      "timeoutSecs": 300,
      "memoryMbytes": 1024,
      "diskMbytes": 2048
    },
    "buildId": "",
    "defaultKeyValueStoreId": "",
    "defaultDatasetId": "",
    "defaultRequestQueueId": "",
    "buildNumber": "1.0.0",
    "containerUrl": "",
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 1,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    },
    "usageTotalUsd": 0.00005,
    "usageUsd": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 0.00005,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    }
  }
}
```

#### Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.

- **Method:** `POST`
- **Path:** `/acts/lead.gen.labs~leadblast-canada/run-sync`
- **Tags:** Run Actor

##### Request Body

###### Content-Type: application/json

- **`aisensy_api_key` (required)**

  `string`, default: `""` — The AiSensy API key to send WhatsApp campaign to businesses

- **`aisensy_campaign_name` (required)**

  `string`, default: `""` — The name of the Campaign Template created on AiSensy to broadcast to businesses

- **`apify_api_token` (required)**

  `string`, default: `""` — The API token to access Apify Actors

- **`business_category`**

  `string`, default: `"Chiropractor"` — The Business Category you want to target in your campaign

- **`city_and_province`**

  `string`, default: `"East York, TO"` — The Business City you want to target

- **`media_filename`**

  `string`, default: `""` — The filename of the media you are including in the campaign

- **`media_url`**

  `string`, default: `""` — The URL to image you added to the campaign message content

- **`my_2chat_connected_number`**

  `string`, default: `""` — Your 2Chat connected whatsapp number

- **`two_chat_api_key`**

  `string`, default: `""` — The 2Chat API key to verify Valid Phone numbers and Available on Whatsapp

**Example:**

```
{
  "business_category": "Chiropractor",
  "city_and_province": "East York, TO",
  "apify_api_token": "",
  "aisensy_api_key": "",
  "two_chat_api_key": "",
  "my_2chat_connected_number": "",
  "aisensy_campaign_name": "",
  "media_url": "",
  "media_filename": ""
}
```

##### Responses

###### Status: 200 OK

### Schemas

#### inputSchema

- **Type:**`object`

* **`aisensy_api_key` (required)**

  `string`, default: `""` — The AiSensy API key to send WhatsApp campaign to businesses

* **`aisensy_campaign_name` (required)**

  `string`, default: `""` — The name of the Campaign Template created on AiSensy to broadcast to businesses

* **`apify_api_token` (required)**

  `string`, default: `""` — The API token to access Apify Actors

* **`business_category`**

  `string`, default: `"Chiropractor"` — The Business Category you want to target in your campaign

* **`city_and_province`**

  `string`, default: `"East York, TO"` — The Business City you want to target

* **`media_filename`**

  `string`, default: `""` — The filename of the media you are including in the campaign

* **`media_url`**

  `string`, default: `""` — The URL to image you added to the campaign message content

* **`my_2chat_connected_number`**

  `string`, default: `""` — Your 2Chat connected whatsapp number

* **`two_chat_api_key`**

  `string`, default: `""` — The 2Chat API key to verify Valid Phone numbers and Available on Whatsapp

**Example:**

```
{
  "business_category": "Chiropractor",
  "city_and_province": "East York, TO",
  "apify_api_token": "",
  "aisensy_api_key": "",
  "two_chat_api_key": "",
  "my_2chat_connected_number": "",
  "aisensy_campaign_name": "",
  "media_url": "",
  "media_filename": ""
}
```

#### runsResponseSchema

- **Type:**`object`

* **`data`**

  `object`

  - **`actId`**

    `string`

  - **`buildId`**

    `string`

  - **`buildNumber`**

    `string`

  - **`containerUrl`**

    `string`

  - **`defaultDatasetId`**

    `string`

  - **`defaultKeyValueStoreId`**

    `string`

  - **`defaultRequestQueueId`**

    `string`

  - **`finishedAt`**

    `string`, format: `date-time`

  - **`id`**

    `string`

  - **`meta`**

    `object`

    - **`origin`**

      `string`

    - **`userAgent`**

      `string`

  - **`options`**

    `object`

    - **`build`**

      `string`

    - **`diskMbytes`**

      `integer`

    - **`memoryMbytes`**

      `integer`

    - **`timeoutSecs`**

      `integer`

  - **`startedAt`**

    `string`, format: `date-time`

  - **`stats`**

    `object`

    - **`computeUnits`**

      `integer`

    - **`inputBodyLen`**

      `integer`

    - **`rebootCount`**

      `integer`

    - **`restartCount`**

      `integer`

    - **`resurrectCount`**

      `integer`

  - **`status`**

    `string`

  - **`usage`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `integer`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`usageTotalUsd`**

    `number`

  - **`usageUsd`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `number`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`userId`**

    `string`

**Example:**

```
{
  "data": {
    "id": "",
    "actId": "",
    "userId": "",
    "startedAt": "2025-01-08T00:00:00.000Z",
    "finishedAt": "2025-01-08T00:00:00.000Z",
    "status": "READY",
    "meta": {
      "origin": "API",
      "userAgent": ""
    },
    "stats": {
      "inputBodyLen": 2000,
      "rebootCount": 0,
      "restartCount": 0,
      "resurrectCount": 0,
      "computeUnits": 0
    },
    "options": {
      "build": "latest",
      "timeoutSecs": 300,
      "memoryMbytes": 1024,
      "diskMbytes": 2048
    },
    "buildId": "",
    "defaultKeyValueStoreId": "",
    "defaultDatasetId": "",
    "defaultRequestQueueId": "",
    "buildNumber": "1.0.0",
    "containerUrl": "",
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 1,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    },
    "usageTotalUsd": 0.00005,
    "usageUsd": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 0.00005,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    }
  }
}
```

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("lead.gen.labs/leadblast-canada").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("lead.gen.labs/leadblast-canada").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call lead.gen.labs/leadblast-canada --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?actors=lead.gen.labs/leadblast-canada",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## LeadBlast Canada – Automate B2B Outreach with Yellow Pages Scraper + WhatsApp Messaging

**LeadBlast Canada** is a powerful, end-to-end automation tool that extracts verified business leads from **Yellow Pages Canada** and instantly sends personalized WhatsApp messages using [AiSensy](https://wa.aisensy.com/ref/aabafm0).

Designed for **marketers**, **freelancers**, **agencies**, and **sales teams**, this tool streamlines local **B2B lead generation in Canada**. Simply enter a **business category**, **city**, and **province**—LeadBlast does the rest. It's the fastest way to generate, contact, and convert local business leads.

***

### Unique Features

✅ **Hyper-Targeted Lead Extraction**\
Scrape verified business listings from YellowPages.ca based on category, city, and province.

✅ **📲 Whatsapp Number Validation (with [2Chat API](https://2chat.co/?ref=daniel4l))**\
Avoid wasted credits—only verified mobile numbers with WhatsApp accounts are messaged.

✅ **WhatsApp Broadcast Automation**\
Seamlessly integrates with [AiSensy](https://wa.aisensy.com/ref/aabafm0) to deliver personalized WhatsApp messages at scale.

✅ **Real-Time Lead Delivery**\
Get clean, structured leads in minutes—automatically sent or downloadable for instant outreach.

✅ **Multi-Format Export**\
Export leads in **CSV**, **JSON**, or connect directly to **Google Sheets**.

✅ **No Code Required**\
Built for marketers, not developers. Just plug in your inputs and hit run—zero technical setup needed.

✅ **Scalable & Reliable**\
Runs on **Apify’s robust infrastructure**, suitable for both small campaigns and high-volume lead scraping.

***

### Use Cases

- B2B Lead Generation for Canadian Markets
- Local Business Marketing Campaigns
- Freelance Outreach & Cold Messaging
- Agency Client Prospecting by Niche & Region
- WhatsApp Automation for Sales Teams

***

### Input Example

```json
{
  "business_category": "Plumber",
  "city": "Toronto",
  "province": "ON",
  "apify_api_token": "Check your Apify profile to copy the API TOKEN to use for the Yellow Pages Canada Scraper",
  "two_chat_api_key": "Your 2Chat API Key for WhatsApp validation",
  "my_2chat_connected_number": "Your WhatsApp-enabled number in 2Chat",
  "aisensy_api_key": "Check your Aisensy profile to copy the API Key to use for Whatsapp Broadcast",
  "aisensy_campaign_name": "The campaign template you created on Aisensy for the whatsapp broadcast"
}
```

### ☎️ Whatsapp Number Validation (Before WhatsApp Campaign)

To maximize delivery rates and avoid sending messages to invalid or landline numbers:

- Each phone number scraped is validated using 2Chat’s WhatsApp check API.
- Only numbers registered on WhatsApp pass the filter.
- Numbers not linked to WhatsApp are skipped automatically.
- Logs of skipped numbers are available in your Apify actor log.

🔒 This guarantees that every message targets a real, reachable WhatsApp user.

### How to Create Campaign name on AiSensy

After Successful login to [AiSensy](https://wa.aisensy.com/ref/aabafm0) platfrom

- Navigate from the Dashboard
  ![AiSensy Dashboard](https://drive.google.com/uc?export=view\&id=10qXCfVG4RnNbzP43XcN-LduF7PnMDMMm)

- Click on the ViewBox at the top left from the Dashboard Pages

- Scroll down and click on Manage and go through `Template Message` to create new template for your campaigns using the `+New`
  ![AiSensy Template Mesage](https://drive.google.com/uc?export=view\&id=1dPrYFRcCXhqZKSu60dYkwSiuHy3K9zRb)

- After succesful creation, click on Campaigns from the View box to set up your Campaigns, then copy the campaign name to LeadBlast input
  ![AiSensy Campaign](https://drive.google.com/uc?export=view\&id=1dX1OzPpgvftJ0iEX1JDS70mk6NY2Yoal)

***

### 💥 Ready to Automate Your Canadian B2B Outreach?

Launch your first campaign with **LeadBlast Canada** today. Start scraping targeted leads and broadcasting personalized WhatsApp messages—**in just minutes**.

Need help with your first campaign? Prefer a done-for-you setup?
Reach me on [Discord:](https://discord.com/users/928560630204604437) or [X](https://x.com/lead_gen_labs)
