N49 Canada Business Leads Scraper (Phone, Email, Address)
Pricing
from $17.00 / 1,000 results
N49 Canada Business Leads Scraper (Phone, Email, Address)
Scrape Canadian business directory listings by category and city: business name, phone, toll-free, email, website, full address (street, city, province, postal code), category, rating, reviews and a direct listing link. Export to JSON, CSV or Excel.
Pricing
from $17.00 / 1,000 results
Rating
5.0
(1)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 days ago
Last modified
Categories
Share
N49 Canada Business Leads Scraper (Phone, Email, Address)
Here is one real result, with every field the actor returns:
{"imageUrl": "https://rimages.n49.ca/r_images/100x100/1453/1452233.jpg","name": "Plumbera","businessId": "3854907","listingUrl": "https://www.n49.com/biz/3854907","category": "Plumbers","categories": ["Plumbers"],"phone": "844-394-3734","tollFreePhone": null,"fax": null,"additionalPhones": null,"email": "service@plumbera.ca","website": "https://www.plumbera.ca/","street": "1520 Lodestar Rd #17","city": "Toronto","province": "ON","postalCode": "M3J 3C1","address": "1520 Lodestar Rd #17, Toronto, ON, M3J 3C1","latitude": 43.762032,"longitude": -79.468361,"rating": 5,"reviewCount": 4,"verified": true,"yearEstablished": 1999,"logoUrl": "https://rimages.n49.ca/r_images/100x100/1453/1452233.jpg","photos": ["https://rimages.n49.ca/r_images/640x640/1453/1452233.jpg","https://rimages.n49.ca/r_images/640x640/1460/1459902.jpg","https://rimages.n49.ca/r_images/640x640/1476/1475102.jpg"],"description": "PLUMBERA is a Canadian owned and operated with plumbers standing by in multiple locations such as Toronto. We are premier plumbing company that offer expert plumbing repair services, emergency plumbers, sump pump installations, plumbing fixture repairs and installations, toilet and sink installations, sewage pumps replacements and other quality installations. Plumbera is one of the most reputable plumbing companies Toronto and surrounding cities have to offer.","searchQuery": "Plumbers","searchCity": "Toronto","source": "n49","observedAt": "2026-08-10T14:29:56.980Z","error": null}
The most complete N49 Canada business directory scraper available. It returns every contact and address field the listing exposes for each business, plus ratings, reviews, coordinates, photos and year established, and gives you a combination of category and city filters plus an optional contact-enrichment add-on to target exactly the leads you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor searches the N49 Canadian business directory for every combination of the categories and cities you pass, paginates through the matching listings, and writes one normalized record per business to the run's dataset. Each record carries the business name, phone, category, address, rating and review count from the listing. When withDetails is enabled it opens each listing page to add email, website, toll-free number, fax, postal code, photos and description. Missing source values are returned as null.
An optional paid contact-enrichment add-on can try to find a public business contact email and a contact person for results that have no email.
Quickstart
Open the actor, paste this into the input, and press Run. It returns up to 10 plumbers in Toronto with full contact details.
{"searchQueries": ["Plumbers"],"cities": ["Toronto"],"maxBusinesses": 10,"withDetails": true,"enrichContacts": false,"enrichContactsMax": 50}
Combine several categories and cities to search every pairing in one run. Turn off withDetails for a faster listing-only run.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchQueries | string[] | no | ["Plumbers"] | One or more business categories or keywords, for example Plumbers, Restaurants, Dentists, Real Estate. Each query runs against every city. |
cities | string[] | no | ["Toronto"] | One or more Canadian cities, for example Toronto, Vancouver, Montreal, Calgary. Each city is combined with every query. |
maxBusinesses | integer | no | 10 | Maximum businesses to collect across all query and city combinations. |
withDetails | boolean | no | true | When enabled, enriches each business from its listing page with email, website, toll-free number, fax and postal code. Turn off for a faster listing-only run. |
enrichContacts | boolean | no | false | Optional paid add-on. For each result without an email, attempt to find a public business contact email and a contact person's name. Billed per attempt, plus an extra charge only when an email is found. |
enrichContactsMax | integer | no | 50 | Cap how many results the add-on tries to enrich, to control add-on cost. Free Apify accounts are capped at 3. |
Output reference
One dataset item per business. Types: string, number, boolean, string[], or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
name | string | Business name. |
businessId | string | Directory listing ID (unique per business). |
listingUrl | string | Direct link to the listing. |
imageUrl | string | Business logo or photo thumbnail, or null. |
category | string | Primary category. |
categories | string[] | All categories the business is listed under. |
phone | string | Phone number. |
tollFreePhone | string | Toll-free number, or null. |
fax | string | Fax number, or null. |
additionalPhones | string[] | Additional phone numbers, or null. |
email | string | Contact email, or null. |
website | string | Business website, or null. |
street | string | Street address. |
city | string | City. |
province | string | Province code, for example ON, BC, QC. |
postalCode | string | Postal code. |
address | string | Single-line assembled full address. |
latitude | number | Latitude, or null. |
longitude | number | Longitude, or null. |
rating | number | Average star rating, or null. |
reviewCount | number | Number of reviews. |
verified | boolean | Whether the listing is verified. |
yearEstablished | number | Year the business was established, or null. |
logoUrl | string | Business logo image URL, or null. |
photos | string[] | Business photo gallery URLs. |
description | string | Business description, or null. |
searchQuery | string | The category that produced this result. |
searchCity | string | The city that produced this result. |
source | string | Source identifier (n49). |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. On a failed run, a single item with a populated error field is written instead. |
enrichedEmail | string | Contact email found by the add-on (only when enrichContacts is on). |
enrichedContactName | string | Contact person name found by the add-on. |
enrichedJobTitle | string | Contact job title found by the add-on. |
enrichedEmailStatus | string | Deliverability status of the enriched email. |
enrichedSource | string | Source URL where the enriched contact was found. |
enrichedConfidence | string | Confidence rating for the enriched contact. |
Example output record
Real record from a live run (input {"searchQueries":["Plumbers"],"cities":["Toronto"],"maxBusinesses":10,"withDetails":true}):
{"name": "Plumbera","businessId": "3854907","listingUrl": "https://www.n49.com/biz/3854907","category": "Plumbers","phone": "844-394-3734","email": "service@plumbera.ca","website": "https://www.plumbera.ca/","street": "1520 Lodestar Rd #17","city": "Toronto","province": "ON","postalCode": "M3J 3C1","address": "1520 Lodestar Rd #17, Toronto, ON, M3J 3C1","latitude": 43.762032,"longitude": -79.468361,"rating": 5,"reviewCount": 4,"verified": true,"yearEstablished": 1999,"source": "n49","observedAt": "2026-08-10T14:29:56.980Z","error": null}
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~n49-canada-business-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["Plumbers"],"cities":["Toronto"],"maxBusinesses":25,"withDetails":true}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~n49-canada-business-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["Dentists","Restaurants"],"cities":["Vancouver","Montreal"],"maxBusinesses":200}'
Apify CLI:
apify call scrapers_lat/n49-canada-business-scraper \--input '{"searchQueries":["Real Estate"],"cities":["Calgary"]}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "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 (
resultevent). See the pricing tab for the current per-result price. - Details and enrichment add-ons. The full-detail step and the optional contact-enrichment add-on are billed separately, only when they add real data. See the pricing tab for add-on prices.
- No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run (and 3 contact-enrichment attempts). Upgrade for higher
maxBusinesses.
FAQ and troubleshooting
A run returned 0 records. Why?
The category and city combination matched nothing. Try a broader category (for example Restaurants), or a larger city. Zero-result runs are not charged.
How do I get emails and websites?
Keep withDetails enabled (the default). It opens each listing page to add email, website, tollFreePhone, fax, postalCode, photos and description.
Why is email null for some businesses?
The listing did not publish an email. Enable the enrichContacts add-on to try to find a public business contact email for those results.
Can I search several cities at once?
Yes. Pass multiple cities and multiple searchQueries; the actor runs every category and city pairing in one run.
Is this an official N49 tool? No. This actor is independent and has no affiliation with N49. It reads only data that is publicly available in the directory. Use it in accordance with the source terms of service and applicable data protection law.
Related scrapers
- Canpages Canada Scraper: Canadian business directory leads.
- Google Maps Business Leads Scraper: local business leads with contacts.
- Brownbook Business Scraper: global business directory listings.
- Checkatrade UK Scraper: UK trade business leads.
- Canada Corporations Scraper: Canadian federal corporation records.
- Kijiji Canada Scraper: Canadian classified listings.
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 N49. Accesses only publicly available business directory data. Use in accordance with the source terms of service.
