Canpages Canada Business Leads Scraper: Phone & Address avatar

Canpages Canada Business Leads Scraper: Phone & Address

Pricing

from $17.00 / 1,000 results

Go to Apify Store
Canpages Canada Business Leads Scraper: Phone & Address

Canpages Canada Business Leads Scraper: Phone & Address

Scrape Canadian business directory listings by keyword and city. Get each business name, phone, full address (street, city, province, postal code), category, website, email when published and a short description. Export to JSON, CSV or Excel.

Pricing

from $17.00 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Canpages Canada Business Leads Scraper: Phone & Address

Canpages Canada Business Leads Scraper: Phone & Address

Here is one real result, with every field the actor returns (long description and attributes lists are trimmed with an ellipsis, every value real):

{
"businessId": "101902936",
"name": "Drain King Plumbers",
"phone": "647-362-2109",
"email": null,
"website": "http://www.drainkingplumbers.ca",
"category": "North York Plumbing Contractors",
"addressStreet": "100 Saint Regis Crescent",
"city": "North York",
"province": "ON",
"postalCode": "M3J 1Y8",
"addressFull": "100 Saint Regis Crescent North York, ON, M3J 1Y8",
"description": "Drain King is the premium choice when you're looking for quality craftsmanship, professionalism and superior customer service in the Greater Toronto Area ...",
"rating": 5,
"reviewCount": 8,
"imageUrl": "https://ssmscdn.yp.ca/image/resize/8bfbcba8-0a3e-48d3-b64b-16df5995779c/yp-serp-thumbnail/1.jpg",
"openingHours": {
"Monday": "12:00 am - 11:59 pm",
"Tuesday": "12:00 am - 11:59 pm"
},
"attributes": {
"Specialities": ["Emergency Plumbing Service", "Residential", "Commercial", "Drain Cleaning / Repair"],
"Methods of Payment": ["American Express", "Cash", "Cheque", "MasterCard", "Visa"],
"Languages Spoken": ["English"],
"Brands Carried": ["Moen", "American Standard", "Grohe", "Delta", "Kohler"]
},
"latitude": null,
"longitude": null,
"listingUrl": "https://www.canpages.ca/page/ON/north-york/drain-king-plumbers/101902936",
"aiProfileSummary": null,
"aiLeadScore": null,
"aiLeadTier": null,
"aiLeadRationale": null,
"searchQuery": "plumber",
"searchCity": "Toronto",
"source": "Canpages",
"observedAt": "2026-08-14T07:05:30.788Z",
"error": null
}

The most complete Canpages Canada business leads scraper available. It returns every field the Canpages listing exposes for each business, including phone, full address, category, website, email when published, opening hours, ratings and a rich attributes block, plus optional contact-finder and AI add-ons, and gives you keyword and city inputs to target exactly the leads you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor searches the Canpages Canada business directory for each of your search queries in each of your cities, and writes one normalized record per business to the run's dataset. Every search query is combined with every city, so more queries and more cities mean more leads per run. Each record carries the business name, phone, full address (street, city, province, postal code), category, listing image, rating and review count. With withDetails on, the actor opens each business page to add the website, published email, a description, opening hours and a structured attributes block (specialities, products and services, payment methods, languages, brands). Missing source values are returned as null.

Optional add-ons: enrichContacts tries to find a public contact email and person for results that lack an email, and withAiProfileSummary / withAiLeadScore add an AI summary and a B2B lead score. All add-ons are paid and charge only when they return usable output.

Quickstart

Open the actor, paste this into the input, and press Run. It returns three plumbers in Toronto with full details.

{
"searchQueries": ["plumber"],
"cities": ["Toronto"],
"withDetails": true,
"maxBusinesses": 3
}

Add more queries and cities to expand the run. With withDetails off you still get name, phone, address and category from the listing, faster and lighter.

Input reference

FieldTypeRequiredDefaultDescription
searchQueriesstring[]no["restaurant"]Categories, keywords or business names to search, for example restaurant, plumber, dentist, law firm.
citiesstring[]no["Toronto"]Canadian cities or postal codes to search in, for example Toronto, Vancouver, BC, M5V 2T6.
maxBusinessesintegerno10Maximum businesses to collect across all queries and cities (1 to 100000).
withDetailsbooleannotrueOpen each business page to add website, published email, description, hours and attributes.
enrichContactsbooleannofalseContact-finder add-on. For each result without an email, attempt to find a public contact email and name. Billed per attempt, plus an extra charge only when an email is found.
enrichContactsMaxintegerno50Cap how many results the contact add-on tries to enrich. Free Apify accounts are capped at 3.
withAiProfileSummarybooleannofalseAI plain-English business summary per record. Paid add-on, billed only when a summary is produced.
withAiLeadScorebooleannofalseAI B2B lead score (0 to 100, hot/warm/cold). Paid add-on, billed only when a score is produced.

Output reference

One dataset item per business. Types: string, integer, number, object, or null when the source value is absent.

FieldTypeDescription
businessIdstringCanpages listing ID.
namestringBusiness name.
phonestringBusiness phone, or null.
emailstringPublished email, or null.
websitestringBusiness website URL, or null.
categorystringListing category.
addressStreetstringStreet address.
citystringCity.
provincestringProvince code, for example ON.
postalCodestringPostal code.
addressFullstringFull single-line address.
descriptionstringBusiness description text, or null.
ratingnumberAverage rating, or null.
reviewCountintegerNumber of reviews, or null.
imageUrlstringListing image URL, or null.
openingHoursobjectDay-to-hours map, when published.
attributesobjectStructured attributes (specialities, products and services, payment methods, languages, brands, categories).
latitudenumberLatitude, or null.
longitudenumberLongitude, or null.
listingUrlstringCanpages listing URL.
aiProfileSummarystringAI profile summary, or null unless withAiProfileSummary is on.
aiLeadScoreintegerAI lead score 0 to 100, or null unless withAiLeadScore is on.
aiLeadTierstringAI lead tier (hot, warm, cold), or null.
aiLeadRationalestringAI reasoning for the lead score, or null.
enrichedEmailstringContact email found by the add-on, or null. Present only when enrichContacts is on.
enrichedContactNamestringContact person found by the add-on, or null.
enrichedJobTitlestringContact job title, or null.
enrichedEmailStatusstringConfidence status (verified, likely, guessed, not_found), or null.
enrichedSourcestringWhere the contact was found, or null.
enrichedConfidencenumberConfidence score for the found contact, or null.
searchQuerystringThe query that produced this record.
searchCitystringThe city that produced this record.
sourcestringData source. Canpages.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success. On a failed run, a single item with a populated error field is written instead.

The enriched* fields appear only when the enrichContacts add-on is enabled.

Example output record

Real record from a live run (input {"searchQueries":["plumber"],"cities":["Toronto"],"maxBusinesses":3,"withDetails":true,"withAiProfileSummary":true,"withAiLeadScore":true}). The AI fields are populated because this run enabled them, and long text is trimmed with an ellipsis:

{
"businessId": "101902936",
"name": "Drain King Plumbers",
"phone": "647-362-2109",
"email": null,
"website": "http://www.drainkingplumbers.ca",
"category": "North York Plumbing Contractors",
"addressStreet": "100 Saint Regis Crescent",
"city": "North York",
"province": "ON",
"postalCode": "M3J 1Y8",
"addressFull": "100 Saint Regis Crescent North York, ON, M3J 1Y8",
"description": "Drain King is the premium choice for quality craftsmanship, professionalism and superior customer service in the Greater Toronto Area ...",
"rating": 5,
"reviewCount": 8,
"imageUrl": "https://ssmscdn.yp.ca/image/resize/8bfbcba8-0a3e-48d3-b64b-16df5995779c/yp-serp-thumbnail/1.jpg",
"attributes": {
"Specialities": ["Emergency Plumbing Service", "Residential", "Commercial", "Drain Cleaning / Repair"],
"Methods of Payment": ["American Express", "Cash", "Cheque", "MasterCard", "Visa"]
},
"listingUrl": "https://www.canpages.ca/page/ON/north-york/drain-king-plumbers/101902936",
"aiProfileSummary": "Drain King Plumbers is a locally-owned, 24/7 plumbing and drain service in North York, ON, offering free quotes and industry-leading warranties across the Greater Toronto Area.",
"aiLeadScore": 90,
"aiLeadTier": "hot",
"aiLeadRationale": "The business has a complete listing with a phone number, website, high rating and positive reviews, indicating strong reachability and value.",
"searchQuery": "plumber",
"searchCity": "Toronto",
"source": "Canpages",
"observedAt": "2026-08-14T07:05:30.788Z"
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~canpages-canada-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"searchQueries":["plumber"],"cities":["Toronto"],"withDetails":true,"maxBusinesses":25}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~canpages-canada-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"searchQueries":["dentist","law firm"],"cities":["Vancouver, BC","Calgary"],"maxBusinesses":200}'

Apify CLI:

apify call scrapers_lat/canpages-canada-scraper \
--input '{"searchQueries":["restaurant"],"cities":["M5V 2T6"]}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per business record returned (result event). See the pricing tab for the current per-result price.
  • Add-ons are billed separately. The details fetch, enrichContacts (per attempt plus per email found), withAiProfileSummary and withAiLeadScore each charge only when they return usable output.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 records per run, and the contact add-on to 3 results. Upgrade for higher maxBusinesses.

FAQ and troubleshooting

Does it include email addresses? Each record includes the published email when Canpages lists one. For results without one, enable enrichContacts to attempt finding a public contact email and name.

How do I get more leads per run? Add more values to searchQueries and cities. Every query is combined with every city.

A run returned 0 records. Why? The keyword may not match any listing in that city. Try a broader category or a larger city. Zero-result runs are not charged.

Why are the AI or enriched fields null? They only populate when you enable the matching add-on (withAiProfileSummary, withAiLeadScore, enrichContacts). Otherwise they stay null.

Is this an official Canpages tool? No. This actor is independent and has no affiliation with Canpages. It reads only data that is publicly available on Canpages listings. Use the results in accordance with the source's terms and applicable anti-spam law (CASL).

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with Canpages. Accesses only publicly available directory data. Use in accordance with the source's terms.