# Canpages Email Scraper (`email_scraper/canpages-email-scraper`) Actor

Canpages Email Scraper extracts publicly indexed email addresses from Canpages.ca using targeted keywords, custom email domains, location filters, and exclusion terms. Build structured contact datasets with titles, descriptions, URLs, and emails for lead research and market analysis.

- **URL**: https://apify.com/email\_scraper/canpages-email-scraper.md
- **Developed by:** [Email Scraper](https://apify.com/email_scraper) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.49 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

### 🔍 Canpages Email Scraper

Canpages Email Scraper extracts publicly indexed email addresses associated with Canpages.ca search results based on the keywords, email domains, and optional location you provide. It returns structured contact records containing the search keyword, result title, description, URL, and extracted email address.

The Actor is designed for users who need organized Canpages contact data for business research, lead research, market analysis, prospect discovery, and dataset creation. You can process multiple keywords and multiple email-domain suffixes in the same run, while an optional location can narrow the search.

The workflow is straightforward: provide one or more search keywords, optionally specify a country, state, or city, choose email domains such as `@gmail.com` or `@yahoo.com`, and start the Actor. Results are collected into an Apify dataset as structured records.

### 🧩 What Is the Canpages Email Scraper?

The Canpages Email Scraper is an email extraction Actor focused on publicly indexed Canpages.ca information.

Instead of manually reviewing search results and copying contact addresses, you can define the search terms and email domains you are interested in and let the Actor collect matching email addresses into a structured dataset.

The Actor searches for Canpages.ca results relevant to each keyword and configured email domain. When an indexed result contains a matching email address in its searchable description, that contact can be added to the output dataset.

This makes the Actor useful for structured Canpages contact extraction, business research, and keyword-based lead discovery.

### ⚙️ Key Features

| Feature                           | Description                                                            | User Benefit                                                   |
| --------------------------------- | ---------------------------------------------------------------------- | -------------------------------------------------------------- |
| Keyword-based search              | Search Canpages.ca using one or more keywords or queries.              | Target specific businesses, professions, services, or topics.  |
| Email-domain filtering            | Specify domains such as `@gmail.com`, `@yahoo.com`, or other suffixes. | Focus collection on the email types relevant to your workflow. |
| Location filtering                | Optionally provide a country, state, or city.                          | Narrow searches to a geographic area.                          |
| Exclusion filtering               | Skip result descriptions containing specified words or phrases.        | Reduce unwanted records from the dataset.                      |
| Per-combination collection target | Configure `maxEmails` for the keyword and domain search combinations.  | Control the desired collection depth.                          |
| Multiple keywords                 | Supply a list of search terms in one run.                              | Build broader datasets from related search intent.             |
| Structured dataset                | Results contain keyword, title, description, URL, and email.           | Make collected data easier to review and analyze.              |
| Duplicate prevention              | Previously collected email addresses are not added again.              | Reduce duplicate email records.                                |
| Incremental results               | Records are pushed to the dataset during collection.                   | Results become available as the run progresses.                |

### 📊 What Data Can You Extract?

The Canpages Email Scraper produces contact-oriented structured data from matching indexed results.

Each dataset record can contain:

- **Keyword** — The keyword associated with the search that produced the record.
- **Title** — The title of the matching search result.
- **Description** — The indexed description or snippet associated with the result.
- **URL** — The URL associated with the search result.
- **Email** — The email address matching one of your configured email-domain suffixes.

The output is particularly useful when you want to connect an extracted email address with the search context that produced it.

Because the Actor works with publicly indexed search-result information, the availability and completeness of individual contact details depend on what is publicly indexed and returned for your search terms.

### 💡 Why Use This Actor?

Manual Canpages research can involve repeatedly searching for businesses, reviewing result descriptions, identifying contact addresses, and recording the associated information.

The Canpages Email Scraper turns that repetitive keyword-based workflow into a structured Actor run.

You can define several related search terms instead of relying on a single broad query. For example, a business-oriented research project could use terms such as `Business`, `Contractor`, `Construction Company`, or other relevant search phrases.

You can also combine keyword targeting with location filtering and email-domain selection. This gives you more control over the type of Canpages contact data collected.

### ✅ Benefits

The main practical benefits include:

- **Automated contact research** — Reduce repetitive manual searching and copying.
- **Structured results** — Receive consistent fields for keyword, title, description, URL, and email.
- **Multiple search terms** — Explore several related search intents within one run.
- **Domain targeting** — Focus searches on selected email suffixes.
- **Geographic targeting** — Narrow searches by entering a location.
- **Filtering** — Exclude descriptions containing unwanted words or phrases.
- **Dataset creation** — Build organized Canpages contact datasets for later analysis.
- **Research flexibility** — Adjust keywords, domains, and location according to the project.

### 🚀 How to Use the Canpages Email Scraper

A typical workflow is:

1. Open the Actor input configuration.
2. Add one or more keywords to `keywords`.
3. Optionally enter a country, state, or city in `location`.
4. Select the email-domain suffixes to search through `customDomains`.
5. Set the desired `maxEmails` value.
6. Optionally add unwanted terms to `excludeWords`.
7. Start the Actor.
8. Review the resulting dataset.
9. Use the structured records in your research or downstream workflow.

For an initial test, use a small number of keywords and a modest email limit. Once you understand the result quality for your target search terms, you can broaden the configuration.

### 📥 Input

The Actor requires a `keywords` array. The remaining fields provide optional search and filtering controls.

| Field           | Type             | Required | Default                      | Description                                                                      |
| --------------- | ---------------- | -------- | ---------------------------- | -------------------------------------------------------------------------------- |
| `keywords`      | Array of strings | Yes      | `["Business", "Contractor"]` | Keywords or queries used to search Canpages.ca.                                  |
| `location`      | String           | No       | `""`                         | Optional country, state, or city used to narrow the search.                      |
| `customDomains` | Array of strings | No       | `["@gmail.com"]`             | Email-domain suffixes to search for.                                             |
| `maxEmails`     | Integer          | No       | `5`                          | Maximum configured collection target, with a minimum of 1 and maximum of 10,000. |
| `excludeWords`  | Array of strings | No       | `[]`                         | Words or phrases that cause matching descriptions to be skipped.                 |

The `keywords` field accepts multiple values, allowing you to search several related terms in one run.

The `location` field can be left empty when you do not want geographic narrowing. When used, enter a location such as a city, state, province, or country.

The `customDomains` field accepts email suffixes. Examples include `@gmail.com`, `@yahoo.com`, and `@outlook.com`.

The `maxEmails` field controls the collection target used for keyword and domain combinations. The configured schema allows values from 1 through 10,000. Results are not guaranteed to reach the requested target because the Actor can only collect matching publicly indexed information that is available for the selected searches.

For free-tier runs, the Actor applies a maximum collection ceiling of 100 emails. Paid runs do not apply that code-level free-tier ceiling.

The `excludeWords` field accepts individual words or phrases. Single words are matched case-insensitively as whole words, while phrases are matched case-insensitively within the description.

### 📝 Input Example

```json
{
  "keywords": [
    "Business",
    "Contractor",
    "Construction Company"
  ],
  "location": "Toronto",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com",
    "@outlook.com"
  ],
  "maxEmails": 5,
  "excludeWords": [
    "crypto",
    "onlyfans"
  ]
}
```

This configuration searches several business-related terms, narrows the search to Toronto, checks multiple email domains, requests a collection target of 5, and skips descriptions containing the specified exclusion terms.

### 📤 Output

The Canpages Email Scraper stores results in the **Canpages Emails Dataset**.

The public dataset view contains five primary fields:

| Field         | Description                                                      |
| ------------- | ---------------------------------------------------------------- |
| `keyword`     | Search keyword associated with the result.                       |
| `title`       | Title of the matching indexed result.                            |
| `description` | Description or search-result snippet associated with the result. |
| `url`         | URL associated with the result.                                  |
| `email`       | Matching email address extracted from the result description.    |

Each record connects the email address with the search context and source URL that produced it.

The Actor also avoids adding the same email address more than once during its collection process, helping keep the resulting contact dataset cleaner.

### 📦 Output Example

```json
{
  "keyword": "Contractor",
  "title": "Example Construction Services",
  "description": "Example Construction Services provides contractor services in Toronto. Contact us at example@gmail.com for more information.",
  "url": "https://www.canpages.ca/page/ON/toronto/example-construction-services",
  "email": "example@gmail.com"
}
```

The example illustrates the structure of a typical dataset record. Actual titles, descriptions, URLs, and email addresses depend on the indexed Canpages.ca results available for the selected search configuration.

### 🎯 Use Cases

The Canpages Email Scraper can support several research and data-collection workflows.

- **Business lead research** — Discover publicly indexed business contacts related to specific services or industries.
- **Local market research** — Combine business keywords with a city, state, province, or country.
- **Contractor research** — Search for contractors and related service providers using targeted terms.
- **B2B prospect research** — Explore business-oriented keywords and selected email domains.
- **Supplier discovery** — Search terms such as supplier, manufacturer, distributor, or other relevant categories.
- **Market analysis** — Build datasets of businesses associated with particular search topics.
- **Contact dataset creation** — Collect keyword-linked email records into a structured Apify dataset.
- **Research workflows** — Use titles, descriptions, URLs, and emails as source context for further analysis.
- **Business intelligence preparation** — Organize publicly indexed contact information for downstream review.
- **Location-based research** — Compare contact discovery across different geographic search terms.

### 🏆 Advantages

The Actor provides several practical configuration options without requiring users to manually organize search results.

Its keyword array makes it possible to test multiple search intents in a single run. Email-domain filtering provides additional control over the type of contact addresses being targeted.

The optional location field is useful when the research objective is geographic. Exclusion terms provide another layer of control when certain descriptions should not contribute contact records.

The resulting dataset is also organized into consistent fields, making the output easier to inspect and process.

### ⚠️ Limitations

The Actor depends on publicly indexed Canpages.ca information available through its search workflow.

Not every Canpages listing will contain an email address, and an available listing may not expose an email address in the searchable description. Consequently, the requested `maxEmails` value should be treated as a collection target rather than a guarantee.

Narrow keywords, restrictive locations, or uncommon email domains can produce fewer results.

The Actor also filters duplicate email addresses, so the number of unique records can differ from the theoretical number of keyword and domain combinations.

Search-result availability can change over time. A run that produces a certain number of records today may produce a different number for the same configuration later.

### ⚖️ Pros and Cons

| Pros                          | Cons                                                        |
| ----------------------------- | ----------------------------------------------------------- |
| Supports multiple keywords    | Results depend on publicly indexed information              |
| Optional location targeting   | Some searches may return few matching emails                |
| Custom email-domain filtering | Requested limits do not guarantee that many results         |
| Exclusion words and phrases   | Narrow search configurations can reduce coverage            |
| Structured dataset output     | Source availability can vary over time                      |
| Duplicate email prevention    | Email collection is limited to matching indexed information |

### 🔄 Comparison With Alternative Approaches

| Capability                  | Canpages Email Scraper | Manual / Typical Alternative              |
| --------------------------- | ---------------------- | ----------------------------------------- |
| Keyword-based collection    | Supported              | Requires repeated manual searches         |
| Multiple keywords           | Supported              | Usually handled one search at a time      |
| Email-domain targeting      | Supported              | Requires manual filtering                 |
| Location filtering          | Supported              | Requires manual query refinement          |
| Exclusion filtering         | Supported              | Usually performed manually                |
| Structured dataset          | Supported              | May require manual spreadsheet formatting |
| Duplicate prevention        | Supported              | Requires manual checking                  |
| Incremental dataset results | Supported              | Depends on the user's workflow            |

This comparison focuses on workflow characteristics rather than claiming superiority over other tools or methods.

### 💡 Best Practices

For better research workflows:

- Use several specific keywords rather than relying only on one broad term.
- Combine related job titles, services, industries, or business categories when appropriate.
- Start with a small test run before launching a larger collection.
- Use a location when geographic targeting matters.
- Leave `location` empty when broader coverage is preferred.
- Add several relevant email domains when you want broader domain coverage.
- Use `excludeWords` to remove descriptions that are not relevant to your research.
- Keep exclusion terms specific enough to avoid filtering useful records accidentally.
- Review the first results before expanding the number of keywords or domains.
- Treat the requested email count as a target rather than a guarantee.

### 🛠️ Troubleshooting

**Invalid Input**

Check that `keywords` is an array of strings and that numeric settings such as `maxEmails` fall within the documented range of 1 to 10,000.

**Empty Results**

Try broader or more specific keywords depending on your objective. You can also remove a restrictive location or add additional email domains.

**Few Results**

Sparse results can occur when the selected keyword, location, or email domain has limited publicly indexed matches. Adding related search terms can increase the scope of the research.

**Missing Email Addresses**

A matching search result does not necessarily contain an email address. The Actor only adds addresses that match the configured email-domain suffixes and are available in the indexed description.

**Unexpectedly Filtered Results**

Review `excludeWords`. A matching exclusion term causes the corresponding description to be skipped.

**Partial Results**

Partial collection can occur when the available indexed results do not contain enough matching email addresses to reach the requested target. Broadening the search configuration can provide additional coverage.

### ❓ Frequently Asked Questions

**What does the Canpages Email Scraper do?**

It searches publicly indexed Canpages.ca results using your configured keywords and email-domain suffixes and creates structured records containing matching email addresses and source information.

**What inputs are required?**

The required input is `keywords`, which is an array of search terms. Location, email domains, maximum email targets, and exclusion terms are configurable options.

**Can I use multiple keywords?**

Yes. The `keywords` field accepts multiple search terms, making it possible to target several related search intents in one run.

**Can I search a specific city or region?**

Yes. Enter a country, state, province, or city in the `location` field to narrow the search.

**Can I choose which email domains to collect?**

Yes. Use `customDomains` to specify email suffixes such as `@gmail.com`, `@yahoo.com`, or `@outlook.com`.

**What does `maxEmails` control?**

It controls the configured collection target used during the keyword and email-domain search process. The schema accepts values from 1 to 10,000. Actual results depend on available matching indexed data.

**What happens if I use exclusion words?**

If a result description contains an exclusion word or phrase, that description is skipped and no email is collected from it.

**Does the Actor guarantee the requested number of emails?**

No. `maxEmails` is a target. The Actor can only collect matching addresses that are publicly indexed and available for the selected search configuration.

**What data is returned?**

The public dataset contains `keyword`, `title`, `description`, `url`, and `email`.

**Can duplicate email addresses appear?**

The Actor tracks previously collected email addresses and does not add an email again when it has already been collected.

**What should I do if results are too limited?**

Try adding related keywords, broadening or removing the location filter, or adding additional email-domain suffixes. A wider search configuration can provide more opportunities to find matching indexed contacts.

### 🔎 NLP Keywords

- Canpages Email Scraper
- Canpages email extraction
- Canpages contact scraper
- Canpages email finder
- Canpages.ca email scraper
- Canpages lead scraper
- Canpages contact extraction
- Canpages business leads
- Canpages professional contacts
- Canpages email addresses
- Canpages lead generation
- Canpages contact discovery
- Canpages search scraper
- Canpages data extraction
- Canpages public contact data
- Canpages keyword search
- Canpages location search
- Canpages business contact data
- Canpages structured dataset
- Canpages research data

### 🔗 Related Keywords

- scrape emails from Canpages
- extract emails from Canpages.ca
- find Canpages email addresses
- Canpages contact data scraper
- Canpages.ca contact finder
- Canpages lead generation scraper
- Canpages business email finder
- Canpages professional email finder
- Canpages keyword email extractor
- Canpages email lead scraper
- Canpages contact research tool
- Canpages email data extraction
- Canpages public email discovery
- Canpages business contact extraction
- Canpages location-based email search
- Canpages email search by keyword
- Canpages email search by domain
- Canpages contact dataset
- Canpages lead research tool
- Canpages email collection

### 📌 Final Overview

Canpages Email Scraper provides a structured way to research publicly indexed Canpages.ca contact information using targeted keywords, optional locations, custom email domains, and exclusion terms.

You provide the search configuration, and the Actor returns matching records with the keyword, result title, description, URL, and email address in an Apify dataset.

For stronger research coverage, use several relevant keywords, choose appropriate email domains, and adjust geographic targeting according to your objective. When results are limited, broaden the search configuration rather than assuming that the requested email target can always be reached.

The Actor is suitable for structured Canpages contact research, business lead research, local market analysis, and dataset-building workflows where publicly indexed contact information is relevant.

*Contact me:* [Alphascraper69@gmail.com](mailto:alphascraper69@gmail.com)

# Actor input Schema

## `keywords` (type: `array`):

A list of keywords or queries to search for.

## `location` (type: `string`):

Optional country, state or city used to narrow the search. Leave it empty to search without a geographic filter.

## `customDomains` (type: `array`):

List of custom email domains

## `maxEmails` (type: `integer`):

How many addresses each search keyword + domain suffix combination may collect before the finder moves on to the next one. This is a per-combination target, not a run-wide total: with 3 keyword and 2 Domains and a limit of 20, the run works through all 6 combinations and aims for up to 20 addresses in each, so up to 120 overall. Lower values finish sooner and cost less; higher values dig deeper but never guarantee a fuller result, since the run can only find what is publicly listed.

## `excludeWords` (type: `array`):

Words or phrases you do not want to see.

## Actor input object example

```json
{
  "keywords": [
    "Business",
    "Contractor"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com"
  ],
  "maxEmails": 5,
  "excludeWords": []
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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 = {
    "keywords": [
        "Business",
        "Contractor"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com"
    ],
    "excludeWords": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("email_scraper/canpages-email-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 = {
    "keywords": [
        "Business",
        "Contractor",
    ],
    "location": "",
    "customDomains": ["@gmail.com"],
    "excludeWords": [],
}

# Run the Actor and wait for it to finish
run = client.actor("email_scraper/canpages-email-scraper").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 '{
  "keywords": [
    "Business",
    "Contractor"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com"
  ],
  "excludeWords": []
}' |
apify call email_scraper/canpages-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,email_scraper/canpages-email-scraper"
        }
    }
}
```

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/klh4uGvSBaVyGGIta/builds/0jYtcfLWXkE8iucCJ/openapi.json
