Canada411 Scraper avatar

Canada411 Scraper

Pricing

Pay per event

Go to Apify Store
Canada411 Scraper

Canada411 Scraper

Search public Canada411 people records by name, location, phone, address, or URL and export normalized contact data.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Search public Canada411 people records by name and location, run Canada411 reverse phone or address lookups, and export normalized contact records. Use it for repeatable Canadian contact verification, enrichment, research, and data-pipeline inputs without manually copying directory pages.

The Actor intentionally covers people records only. Canada411 business searches redirect to YellowPages.ca and are outside this product's scope.

What can Canada411 Scraper do?

  • Search a person's full or partial name in a Canadian city, province, or postal area.
  • Reverse lookup one or many Canadian phone numbers.
  • Reverse lookup streets or postal codes.
  • Extract supplied Canada411 search and person-profile URLs.
  • Follow server-rendered people-search pagination within your limits.
  • Export normalized names, 10-digit phones, addresses, profile URLs, source modes, queries, and lookup statuses.
  • Return an explicit not_found record when a lookup produces no Canada411 people result.
  • Deduplicate the same public profile across lookup routes.

Who is this Actor for?

Contact operations teams can verify whether existing Canadian contact details still match a public directory listing.

Data enrichment teams can add source-attributed public phone, address, and profile links to lawful internal records.

Researchers and journalists can turn bounded Canada411 searches into structured datasets with traceable source URLs.

Automation builders can schedule recurring Apify Tasks and send normalized records to spreadsheets, warehouses, or webhooks.

Why use this Canada411 lookup workflow?

The Actor uses Canada411's lightweight server-rendered pages instead of a browser. That keeps runs fast and resource-efficient while preserving the useful public fields.

Each output row includes its source mode, query, source URL, extraction timestamp, and match status. These fields make downstream review and change comparison easier than un-attributed copied contact details.

Limits are explicit. The Actor stops at maxItems and maxPages; it never silently expands into business/category search.

What data does it extract?

FieldTypeMeaning
namestring or nullNormalized public listed person name
phonestring or nullPublic phone normalized to 10 digits
addressstring or nullNormalized public listed address
profileUrlstring or nullCanonical Canada411 person profile URL
sourceUrlstringCanada411 page fetched for the record
sourceModestringpeople_search, reverse_phone, reverse_address, or url
querystringLookup value or supplied URL
lookupStatusstringmatched or not_found
scrapedAtISO timestampTime the record was extracted

Null contact fields are expected on not_found status rows.

Getting started

  1. Open the Actor in Apify Console.
  2. Enter a person name and optional Canadian location, add phone numbers, add addresses, or provide Canada411 URLs.
  3. Set maxItems to your desired dataset size.
  4. Keep maxPages conservative for broad names.
  5. Click Start.
  6. Review the Canada411 people records dataset view.
  7. Export JSON, CSV, Excel, XML, or RSS, or connect the dataset to your integration.

A simple first run is:

{
"name": "John Smith",
"location": "Toronto ON",
"maxItems": 10,
"maxPages": 1
}

Input parameters

name

A full or partial person name. Use it with location to narrow common names.

location

A Canadian city, province, or postal area. A location by itself is accepted, but a name plus location is usually more useful.

phoneNumbers

An array of Canadian 10-digit phone numbers. Formatting characters are removed automatically. Invalid lengths fail closed rather than producing misleading matches.

addresses

An array of objects with street, city, province, and postalCode. Each object must contain at least a street or postal code.

{
"addresses": [
{
"street": "21 Rainsford",
"city": "Toronto",
"province": "ON"
}
]
}

startUrls

Canada411 people-search, reverse-search, or /res/ person-profile URLs. Other hosts and unsupported Canada411 paths are rejected.

maxItems

Maximum output rows across all lookup jobs. Range: 1–10,000. Default: 100.

maxPages

Maximum people-search pages fetched per lookup. Range: 1–100. Default: 10.

Output example

A matched record looks like this (example values are illustrative):

{
"name": "Sample Person",
"phone": "4165550100",
"address": "100 Sample Street Toronto ON M1A 1A1",
"profileUrl": "https://www.canada411.ca/res/4165550100/Sample-Person/123456789.html",
"sourceUrl": "https://www.canada411.ca/search/?stype=si&what=Sample+Person&where=Toronto+ON",
"sourceMode": "people_search",
"query": "Sample Person in Toronto ON",
"lookupStatus": "matched",
"scrapedAt": "2026-01-15T12:00:00.000Z"
}

A lookup without a people match returns one status row with null contact fields and lookupStatus: "not_found".

How much does it cost to extract Canada411 people records?

This Actor uses pay-per-event pricing: a one-time $0.0007 run-start fee plus one item event for each matched or not-found record saved. The current per-record tiers decrease with your Apify plan:

PlanPrice per record
Free$0.000184
Bronze$0.000160
Silver$0.0001248
Gold$0.000096
Platinum$0.000064
Diamond$0.0000448

At Bronze pricing, 10 records cost about $0.0023, 100 records about $0.0167, and 1,000 records about $0.1607, including one start event. Platform compute is included in pay-per-event pricing, subject to Apify's current billing terms.

Pagination, limits, and deduplication

People and reverse-address searches may have multiple pages. maxPages bounds work for every lookup, while maxItems bounds the whole run.

The Actor follows only Canada411 pagination links. It deduplicates by canonical person profile URL, or by normalized phone and address when no profile link exists.

When the same person matches several inputs, the first saved record is retained. This prevents duplicate downstream charges and rows.

Reverse lookup behavior

Reverse phone accepts normalized Canadian 10-digit numbers. A public people listing can resolve directly to a person detail page.

Some numbers resolve to businesses and redirect to YellowPages.ca. Because business search is excluded, the Actor does not scrape that external page; it emits a not_found people-status record.

Reverse address supports street, city, province, and postal-code combinations exposed by Canada411's public form.

Tips for useful results

  • Add a city and province for common names.
  • Begin broad searches with one page, inspect quality, then raise maxPages.
  • Normalize your own input identifiers and retain query when joining outputs.
  • Use smaller scheduled batches instead of one very large common-name search.
  • Treat not_found as “no public Canada411 people match observed,” not proof that a person or phone does not exist.
  • Keep sourceUrl and scrapedAt for auditability.

Failure and retry behavior

The Actor retries transient network errors, HTTP 429 responses, and temporary server errors up to three times with a short backoff.

Malformed phone numbers, external URLs, and unsupported Canada411 paths fail the run immediately.

Challenge pages and unrecognized HTML fail visibly rather than being reported as empty results. External business redirects are handled as valid out-of-scope not_found people lookups.

Scheduling contact verification

Create an Apify Task with a stable input set, then schedule it daily, weekly, or monthly. Send completed-run data through a webhook or integration.

For change detection, compare stable profileUrl, phone, and address fields between run datasets. The Actor does not itself maintain history or send change alerts.

Export and integrations

The default dataset can be downloaded as JSON, CSV, Excel, XML, HTML, or RSS.

Common workflows include:

  • Google Sheets contact-review queues;
  • Make or Zapier enrichment automations;
  • webhook delivery after a scheduled Task;
  • BigQuery, Snowflake, or PostgreSQL ingestion;
  • Python or JavaScript dataset post-processing;
  • source-attributed CRM review, where lawful.

Run through the Apify API with cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~canada411-directory-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"phoneNumbers":["416-699-4961"],"maxItems":5}'

To wait for completion and receive dataset items:

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~canada411-directory-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"John Smith","location":"Toronto ON","maxItems":10,"maxPages":1}'

Run with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/canada411-directory-scraper').call({
phoneNumbers: ['416-699-4961'],
maxItems: 5,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Run with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/canada411-directory-scraper').call(run_input={
'name': 'John Smith',
'location': 'Toronto ON',
'maxItems': 10,
'maxPages': 1,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Use with Apify MCP

Claude Code

Add the Actor to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/canada411-directory-scraper"

Claude Desktop, Cursor, and VS Code

Claude Desktop, Cursor, and VS Code can use the equivalent remote MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/canada411-directory-scraper"
}
}
}

Example prompts:

  • “Run Canada411 Scraper for John Smith in Toronto ON, limited to 10 results.”
  • “Reverse lookup these Canadian phone numbers and return names, addresses, match statuses, and source links.”
  • “Check this list of Toronto addresses and format matched public Canada411 records as CSV.”

Responsible use and legality

Canada411 exposes public directory information, but public availability does not remove privacy, contractual, or legal obligations.

Use the Actor only for lawful purposes. Follow Canada411's applicable terms, robots rules, rate expectations, and Canadian privacy and anti-spam laws. Do not use output for harassment, discrimination, stalking, identity theft, unsolicited messaging, or decisions that require consent or authoritative verification.

Minimize collection, secure exported data, set retention limits, and honor deletion or suppression obligations. Consult qualified counsel for your use case.

Limitations

  • People records only; business/category search is excluded.
  • Results depend on what Canada411 publicly lists at run time.
  • A missing match is not an authoritative identity or occupancy conclusion.
  • Names may be common, abbreviated, stale, or shared.
  • Address text is normalized for whitespace but not geocoded or independently verified.
  • The Actor does not provide historical snapshots, monitoring alerts, or private/unlisted numbers.
  • Canada411 markup or access behavior can change.

FAQ

Can I search Canada411 Ottawa records?

Yes. Set a name and location such as Ottawa ON. Use a narrow name and conservative page limit for useful results.

Does it support Canada411 reverse address lookup?

Yes. Supply addresses with a street or postal code and optional city/province fields.

Why did a phone return not_found?

The number may have no public people listing, may be unlisted, or may redirect to an out-of-scope business record. Check sourceMode, query, and sourceUrl before drawing conclusions.

Why did my run fail instead of returning zero records?

Malformed inputs, unsupported hosts, upstream challenges, and unrecognized source pages fail visibly to avoid misleading empty datasets.

Can I scrape business listings?

No. Canada411 routes business lookup to YellowPages.ca. This Actor intentionally excludes that separate source and workflow.

How do I avoid too many common-name records?

Add a city and province, reduce maxPages, and begin with a small maxItems value.

Choose the Actor whose source, country, and entity scope match your lawful workflow.

Support

For reproducible problems, include the input shape (with sensitive values removed), run ID, expected mode, observed status, and whether the failure affected every lookup or one source record. Do not post private contact lists or credentials in support messages.