Yellow Pages CA Scraper — Canadian Business Leads avatar

Yellow Pages CA Scraper — Canadian Business Leads

Pricing

from $3.00 / 1,000 business listing scrapeds

Go to Apify Store
Yellow Pages CA Scraper — Canadian Business Leads

Yellow Pages CA Scraper — Canadian Business Leads

Scrape Canadian business listings from YellowPages.ca. Extract names, phones, emails, addresses, websites, ratings, reviews, hours, social links, and coordinates. Search by keyword+location or paste direct URLs.

Pricing

from $3.00 / 1,000 business listing scrapeds

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Scrape Canadian business listings from YellowPages.ca — the largest business directory in Canada. Extract business names, phone numbers, emails, addresses, websites, ratings, reviews, operating hours, social media links, and geo-coordinates. Search by keyword + location or paste direct URLs.

Use Cases

  • B2B Lead Generation: Build targeted prospect lists of Canadian SMBs by category and city for outbound sales
  • Local SEO Analysis: Audit client listings against top-ranked competitors across Canadian markets
  • Market Research: Map business density, compare ratings, and track competitor coverage across provinces
  • CRM Enrichment: Enrich existing business databases with verified phone, website, address, and social handles
  • Recruiting: Find trades and skilled-trade employers (plumbers, electricians, contractors) for sourcing
  • Directory Building: Build structured local-business corpora for RAG, LLM training, or data products

Features

  • Multi-input mode: Search by keyword + location OR paste direct YellowPages.ca URLs
  • Detail page enrichment: Optional visit to each business detail page for email, hours, social links, services, photos, coordinates
  • Customer reviews: Optional review extraction (author, rating, text, date)
  • Anti-bot handling: Residential CA proxies + session rotation + stealth browser args
  • Pagination: Automatic pagination through search results (configurable max pages)
  • Sort options: Default, distance, name, or rating
  • MCP-optimized: Semantic field names, structured output, AI-agent-ready schema
  • Pay-per-event: Only charged for results actually extracted

Input Parameters

ParameterTypeDefaultDescription
searchTermsstring[]["plumber"]Keywords/categories to search (cross-joined with locations)
locationsstring[]["Toronto, ON"]Canadian locations in "City, Province" format
startUrlsarray[]Direct YellowPages.ca URLs (search, category, or detail pages)
maxResultsinteger100Hard cap on total business records (0 = unlimited)
maxPagesPerSearchinteger10Max result pages to crawl per search term × location
extractDetailsbooleantrueVisit detail pages for richer fields (email, hours, social, etc.)
includeReviewsbooleanfalseExtract customer reviews (requires extractDetails)
maxReviewsPerBusinessinteger30Max reviews per business (0 = all, ~500 cap)
sortByenum"default"Sort: default, distance, name, or rating
proxyConfigurationobjectCA residentialProxy settings (CA residential required)
maxConcurrencyinteger5Concurrent browser pages

Output Data

Each record contains:

FieldTypeDescription
businessNamestringBusiness name
phonestring|nullPhone number
emailstring|nullEmail address (from detail page)
websitestring|nullBusiness website URL
addressobject{street, city, province, postalCode}
addressFormattedstring|nullFull address as single string
coordinatesobject|null{lat, lng} geo-coordinates
categoriesstring[]Business categories
primaryCategorystring|nullFirst category
ratingnumber|nullStar rating (1-5)
reviewCountnumber|nullTotal review count
hoursobject|nullDay-by-day operating hours
socialLinksobject{facebook, instagram, linkedin, twitter, youtube}
logostring|nullLogo image URL
photosstring[]Photo image URLs
servicesstring[]Services offered
paymentMethodsstring[]Accepted payment methods
yearsInBusinessnumber|nullYears in operation
claimedboolean|nullWhether listing is owner-claimed
profileUrlstringYellowPages.ca profile URL
yellowPagesIdstring|nullInternal YP listing ID
searchTermstring|nullSearch keyword used
searchLocationstring|nullSearch location used
sourceUrlstringPage URL where data was extracted
scrapedAtstringISO 8601 timestamp
reviewsarray|undefinedCustomer reviews (if enabled)

Sample Output

{
"businessName": "Joe's Plumbing Inc",
"phone": "+1 416-555-0123",
"email": "info@joesplumbing.ca",
"website": "https://joesplumbing.ca",
"address": {
"street": "123 Main Street",
"city": "Toronto",
"province": "ON",
"postalCode": "M1M 1M1"
},
"addressFormatted": "123 Main Street, Toronto, ON, M1M 1M1",
"coordinates": { "lat": 43.6532, "lng": -79.3832 },
"categories": ["Plumbing", "Contractor"],
"primaryCategory": "Plumbing",
"rating": 4.5,
"reviewCount": 127,
"hours": { "Monday": "8:00-17:00", "Tuesday": "8:00-17:00" },
"socialLinks": {
"facebook": "https://facebook.com/joesplumbing",
"instagram": null,
"linkedin": null,
"twitter": null,
"youtube": null
},
"logo": "https://...",
"photos": ["https://..."],
"services": ["Drain cleaning", "Pipe repair"],
"paymentMethods": ["Visa", "Mastercard"],
"yearsInBusiness": 15,
"claimed": true,
"profileUrl": "https://www.yellowpages.ca/bus/Ontario/Toronto/Joes-Plumbing/12345.html",
"yellowPagesId": "12345",
"searchTerm": "plumber",
"searchLocation": "Toronto, ON",
"sourceUrl": "https://www.yellowpages.ca/search/si/1/plumber/Toronto+ON",
"scrapedAt": "2026-07-02T10:30:00.000Z"
}

Pricing

This actor uses pay-per-event pricing:

EventPriceDescription
Actor Start$0.00005Charged once per run start
Business Scraped$0.003Per business listing extracted

Cost Examples

  • Scrape 100 businesses → $0.30
  • Scrape 1,000 businesses → $3.00
  • Scrape 10,000 businesses → $30.00

Code Examples

JavaScript

const { ApifyClient } = require('apify-client');
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('muhammadafzal/yellow-pages-ca-scraper').call({
searchTerms: ['plumber'],
locations: ['Toronto, ON', 'Montreal, QC'],
maxResults: 200,
extractDetails: true
});
const dataset = await client.dataset(run.defaultDatasetId).listItems();
console.log(dataset.items);

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("muhammadafzal/yellow-pages-ca-scraper").call(run_input={
"search_terms": ["dentist"],
"locations": ["Vancouver, BC"],
"max_results": 500,
"extract_details": True
})
dataset = client.dataset(run["defaultDatasetId"]).list_items()
for item in dataset:
print(item["businessName"], item["phone"], item["email"])

Technical Notes

  • Proxy: Canadian residential proxies are required — YellowPages.ca uses CloudFront geo-blocking that blocks datacenter IPs and non-CA traffic
  • Crawler: PlaywrightCrawler with stealth browser args and session rotation
  • Speed: ~2-5 seconds per search page, ~3-8 seconds per detail page
  • Limits: YellowPages.ca returns up to ~500 results per search term × location pair

FAQ

Q: Why am I getting 0 results? A: Ensure proxy is set to Canadian residential (CA). YellowPages.ca geo-blocks non-Canadian IPs. Check that your search terms and locations are valid Canadian locations.

Q: Can I scrape all of Canada? A: Yes — leave locations empty (defaults to Toronto, ON). For comprehensive coverage, specify multiple cities: ["Toronto, ON", "Montreal, QC", "Vancouver, BC", "Calgary, AB", "Ottawa, ON"].

Q: Why is email null for some businesses? A: Email is only available on the business detail page. Ensure extractDetails is true. Some businesses don't list emails publicly.

Q: How do I get reviews? A: Enable both extractDetails and includeReviews. Reviews increase runtime significantly.