Yellow Pages Canada Scraper — Business Leads
Pricing
from $4.00 / 1,000 business listing scrapeds
Yellow Pages Canada Scraper — Business Leads
Scrape Yellow Pages Canada listings with names, phones, websites, addresses, categories, ratings, and structured local business leads.
Pricing
from $4.00 / 1,000 business listing scrapeds
Rating
0.0
(0)
Developer
Muhammad Afzal
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Yellow Pages CA Scraper — Canadian Business Leads
Free plan limit: Free-plan users can receive up to 5 result records per run. Paid-plan and local/unknown runs retain the Actor's existing limits.
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: DataImpulse residential proxies with Canada country targeting, session rotation, and 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
| Parameter | Type | Default | Description |
|---|---|---|---|
searchTerms | string[] | ["plumber"] | Keywords/categories to search (cross-joined with locations) |
locations | string[] | ["Toronto, ON"] | Canadian locations in "City, Province" format |
startUrls | array | [] | Direct YellowPages.ca URLs (search, category, or detail pages) |
maxResults | integer | 20 | Hard cap on total business records (0 = unlimited) |
maxPagesPerSearch | integer | 3 | Max result pages to crawl per search term × location |
extractDetails | boolean | false | Visit detail pages for richer fields (email, hours, social, etc.); adds a page visit for each result |
includeReviews | boolean | false | Add reviews found on each detail page (requires extractDetails) |
maxReviewsPerBusiness | integer | 30 | Max reviews per business (0 = all, ~500 cap) |
sortBy | enum | "default" | Sort: default, distance, name, or rating |
maxConcurrency | integer | 5 | Concurrent browser pages |
Output Data
Each record contains:
| Field | Type | Description |
|---|---|---|
businessName | string | Business name |
phone | string|null | Phone number |
email | string|null | Email address (from detail page) |
website | string|null | Business website URL |
address | object | {street, city, province, postalCode} |
addressFormatted | string|null | Full address as single string |
coordinates | object|null | {lat, lng} geo-coordinates |
categories | string[] | Business categories |
primaryCategory | string|null | First category |
rating | number|null | Star rating (1-5) |
reviewCount | number|null | Total review count |
hours | object|null | Day-by-day operating hours |
socialLinks | object | {facebook, instagram, linkedin, twitter, youtube} |
logo | string|null | Logo image URL |
photos | string[] | Photo image URLs |
services | string[] | Services offered |
paymentMethods | string[] | Accepted payment methods |
yearsInBusiness | number|null | Years in operation |
claimed | boolean|null | Whether listing is owner-claimed |
profileUrl | string | YellowPages.ca profile URL |
yellowPagesId | string|null | Internal YP listing ID |
searchTerm | string|null | Search keyword used |
searchLocation | string|null | Search location used |
sourceUrl | string | Page URL where data was extracted |
scrapedAt | string | ISO 8601 timestamp |
reviews | array|undefined | Customer 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. These are the current Apify Store event prices:
| Event | FREE | BRONZE | SILVER | GOLD | PLATINUM | DIAMOND | When it is charged |
|---|---|---|---|---|---|---|---|
business-scraped | $0.005001 | $0.004875 | $0.004750 | $0.004000 | $0.004000 | $0.004000 | One event for each business listing saved to the dataset. This is the primary event. |
apify-actor-start | $0.006251 | $0.006094 | $0.005938 | $0.005000 | $0.005000 | $0.005000 | System-generated; one event per GB of run memory, with at least one event. |
Tier discounts are approximately 2.5% for BRONZE, 5% for SILVER, and 20% for GOLD, PLATINUM, and DIAMOND, with prices matching the current live Actor configuration. Apify platform usage is not passed through to users as a separate per-run fee.
At FREE tier, one result plus one start event costs $0.011252 on a 1 GB run. One result plus two start events costs $0.017503 on a 2 GB run. The run's platform usage is billed separately to the Actor owner's Apify account.
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 ApifyClientclient = 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: Uses the configured DataImpulse residential proxy with Canadian country targeting. The proxy credentials are stored as Actor secrets and are not part of the input.
- 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: This Actor routes through a Canadian DataImpulse residential proxy. Check the search terms and locations first; if the proxy route is temporarily unavailable, the run reports the proxy error rather than silently switching providers.
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.
