Yellow Pages Canada Scraper — Business Leads & Phones avatar

Yellow Pages Canada Scraper — Business Leads & Phones

Pricing

from $4.00 / 1,000 business listing scrapeds

Go to Apify Store
Yellow Pages Canada Scraper — Business Leads & Phones

Yellow Pages Canada Scraper — Business Leads & Phones

Scrape Yellow Pages Canada for business leads by category and city: name, phone, website, address, postal code and rating. USD 5 per 1,000 listings.

Pricing

from $4.00 / 1,000 business listing scrapeds

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

6 days ago

Last modified

Security

Limited permissions

Share

Yellow Pages Canada Scraper searches YellowPages.ca by business category and Canadian city and returns one lead per listing with business name, phone, website, street address, city, province, postal code, categories, star rating and review count. It is built for sales teams, agencies and researchers who need a Canadian business list for outreach or market sizing, and it costs USD 5.00 per 1,000 business listings on the FREE tier (USD 4.00 on GOLD).

What does the Yellow Pages Canada scraper return?

Each dataset row is one YellowPages.ca business listing:

FieldWhat it contains
businessNameBusiness name as listed
phoneListed phone number, for example 416-699-8623
websiteWebsite link from the listing, when present
addressstreet, city, province and postalCode
addressFormattedThe full address on one line
categories, primaryCategoryYellow Pages categories, for example Plumbers & Plumbing Contractors
rating, reviewCountStar rating and number of reviews
profileUrl, yellowPagesIdListing URL (without search parameters) and Yellow Pages listing ID
searchTerm, searchLocation, sourceUrlThe search that found the listing
coordinates, hours, services, paymentMethods, socialLinks, logo, reviewsFilled with extractDetails when the business page shows them (see below)
email, yearsInBusiness, claimed, photosPresent in the schema; YellowPages.ca business pages did not show them in 2026-10-27 checks, so they stay empty or null
scrapedAtCollection time (UTC)

Across 31 listings from 2026-09-23 test runs, phone, address and category were filled for all 31, rating for 30 and website for 22.

How do I build a Canadian business list by category and city?

Put categories in searchTerms and places in locations (City, Province, for example Toronto, ON or Montreal, QC). Every term is searched in every location, so 2 terms × 3 cities make 6 searches.

{
"searchTerms": ["plumber", "electrician"],
"locations": ["Toronto, ON", "Ottawa, ON", "Vancouver, BC"],
"maxResults": 500,
"maxPagesPerSearch": 5
}

maxPagesPerSearch (1 to 100, default 3) limits result pages per term and location, and maxResults (default 20) caps listings for the whole run. When locations is empty, the Actor searches Toronto, ON. The prefilled input (plumbers in Toronto, 20 listings) uses search pages only; a 12-listing version of it finished in about 6 seconds on 2026-09-23.

Can I scrape specific YellowPages.ca search or business URLs?

Yes. Paste YellowPages.ca search result URLs (https://www.yellowpages.ca/search/si/1/dentist/Calgary+AB) or business pages (https://www.yellowpages.ca/bus/...html) into startUrls. Search pages are paginated up to maxPagesPerSearch; a business page returns that one listing.

{
"startUrls": [{ "url": "https://www.yellowpages.ca/search/si/1/dentist/Calgary+AB" }],
"maxResults": 100,
"maxPagesPerSearch": 3
}

Does it return emails, hours or reviews?

Hours and reviews, yes; emails, no. With extractDetails: true the Actor opens each listing's business page and adds map coordinates, opening hours by weekday, services, paymentMethods, the business's own socialLinks and its logo when the page shows them. With includeReviews it also adds review entries with author, star rating, text and date. YellowPages.ca business pages do not show an email address, years in business or a claimed badge, so those fields stay empty. Detail mode roughly doubles run time; for phone-and-address lead lists, keep extractDetails off.

When should I use it, and when not?

Use it when you need Canadian businesses by category and city with phone numbers and addresses, want to size a local market by province, or need a starting list for cold calling or direct mail.

Use something else when:

How do I run it from code?

JavaScript with apify-client:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/yellow-pages-ca-scraper').call({
searchTerms: ['dentist'],
locations: ['Calgary, AB', 'Edmonton, AB'],
maxResults: 200,
maxPagesPerSearch: 5,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const b of items) console.log(b.businessName, b.phone, b.address.city, b.website);

Python with apify-client:

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("muhammadafzal/yellow-pages-ca-scraper").call(run_input={
"searchTerms": ["plumber"],
"locations": ["Toronto, ON"],
"maxResults": 20,
"maxPagesPerSearch": 3,
})
for b in client.dataset(run.default_dataset_id).iterate_items():
print(b["businessName"], b["phone"], b["addressFormatted"], b["rating"])

Use it from an AI assistant

Yellow Pages Canada Scraper works from Claude, ChatGPT, Cursor or any MCP client through Apify's MCP server. Add https://mcp.apify.com/?tools=muhammadafzal/yellow-pages-ca-scraper to your client and ask, for example: "Find 50 roofing contractors in Vancouver, BC on Yellow Pages Canada with phone numbers, websites and ratings." Each listing is charged at the prices below.

What does the output look like?

Two records from a 2026-09-23 cloud run (empty detail fields removed):

[
{
"businessName": "Drain King Plumbers",
"phone": "647-362-2109",
"website": "http://www.drainkingplumbers.ca/",
"address": { "street": "100 Saint Regis Crescent", "city": "North York", "province": "ON", "postalCode": "M3J 1Y8" },
"addressFormatted": "100 Saint Regis Crescent, North York, ON, M3J 1Y8",
"categories": ["Plumbers & Plumbing Contractors"],
"primaryCategory": "Plumbers & Plumbing Contractors",
"rating": 5,
"reviewCount": 8,
"profileUrl": "https://www.yellowpages.ca/bus/Ontario/North-York/Drain-King-Plumbers/101902936.html",
"yellowPagesId": "101902936",
"searchTerm": "plumber",
"searchLocation": "Toronto, ON",
"sourceUrl": "https://www.yellowpages.ca/search/si/1/plumber/Toronto+ON",
"scrapedAt": "2026-09-23T16:37:25.324Z"
},
{
"businessName": "Mr. Rooter Plumbing of Toronto ON",
"phone": "416-699-8623",
"website": "https://mrrooter.ca/",
"address": { "street": "27 Glenmount Park Rd", "city": "Toronto", "province": "ON", "postalCode": "M4E 2M8" },
"addressFormatted": "27 Glenmount Park Rd, Toronto, ON, M4E 2M8",
"categories": ["Plumbers & Plumbing Contractors"],
"rating": 5,
"reviewCount": 2,
"yellowPagesId": "5892681",
"searchTerm": "plumber",
"searchLocation": "Toronto, ON",
"scrapedAt": "2026-09-23T16:37:25.325Z"
}
]

How much does it cost?

The Actor uses pay-per-event pricing, and platform usage is included in the event prices. Each listing saved to the dataset is one charged event; a listing whose Yellow Pages ID is already saved in the run is skipped and not charged, even when a second search finds it.

EventFREEBRONZESILVERGOLD / PLATINUM / DIAMOND
Business listing scrapedUSD 0.005001USD 0.004875USD 0.00475USD 0.004
Actor start (per started GB of allocated memory)USD 0.006251USD 0.006094USD 0.005938USD 0.005

The default memory is 2 GB, so a default run has two start events (USD 0.012502 on FREE). Worked totals on the FREE tier:

  • Prefilled run, 20 listings: 20 × USD 0.005001 + 2 × USD 0.006251 = USD 0.113
  • 1,000 listings: 1,000 × USD 0.005001 + 2 × USD 0.006251 = USD 5.014

Set Apify's maximum cost per run as a spending ceiling. maxResults is the reliable way to stop the crawl at a given number of listings.

Limits and reliability

  • Browser crawl: listings are read in a real browser with 5 pages in parallel by default (maxConcurrency 1 to 20) and up to 3 retries per page.
  • Run size: maxResults: 0 removes the listing cap, but the crawl still stops after 10,000 page requests. The default 5-minute timeout suits small runs; raise it for large lists.
  • Sorting: sortBy (default, distance, name, rating) is passed to Yellow Pages search, but a 2026-09-23 rating-sorted test did not return listings strictly in rating order.
  • Access: the Actor handles data access itself; there is no proxy setting to configure.

FAQ

Is there a free Yellow Pages Canada scraper?

YellowPages.ca is free to browse by hand. This Actor charges USD 0.005001 per listing on the FREE tier for bulk export, plus the start fee.

Can I scrape all of Canada at once?

List the cities you need in locations. An empty locations searches Toronto, not the whole country.

Does it include email addresses?

No. The email field exists, but it was empty in every test listing.

Can I export to CSV or Excel?

Yes. Open the run's dataset in Apify Console and download CSV, Excel, JSON or XML, or fetch it through the API.

How do I avoid duplicate businesses?

You don't need to within one run: each yellowPagesId is saved and charged once, even when several search terms or locations find the same business. Across separate runs, de-duplicate on yellowPagesId.

Can I call Canadian businesses from this list?

You can, but Canada's anti-spam law (CASL) and the National Do Not Call List rules apply to your outreach.

The Actor reads public YellowPages.ca listings and does not log in or bypass access controls. Business contact data is still personal data in some cases: follow YellowPages.ca's terms, PIPEDA, CASL and Do Not Call rules when you store or contact these businesses. This tool is not affiliated with Yellow Pages Canada, and this is not legal advice.

Last verified: 2026-10-27