YellowPages Canada Business Scraper
Pricing
Pay per event
YellowPages Canada Business Scraper
Extract business listings from YellowPages.ca — Canada's largest business directory. Get phone numbers, addresses, star ratings, categories, and website URLs for any city and business type. Ideal for B2B lead generation and market research.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Extract business listings from YellowPages.ca — Canada's largest business directory. Get contact details, ratings, addresses, and categories for any city and business type without coding or API access.
📋 What does it do?
YellowPages Canada Business Scraper fetches search results from yellowpages.ca and extracts structured business data. For any search query (e.g. "dentist", "roofing contractor") and Canadian location (e.g. "Toronto ON", "Calgary AB"), the actor returns:
- Business name and direct YellowPages listing URL
- Phone number (extracted directly from the page, no click required)
- Full address (street, city, province, postal code)
- Star rating and review count
- Business description
- Categories (e.g. Restaurants, Italian Restaurants)
- Website URL
- Sponsored vs organic indicator
Pagination is handled automatically — you set a result limit and the actor pages through results until it hits your target count.
👥 Who is it for?
Sales and business development teams who prospect Canadian leads by industry and geography — search "accountant" in "Vancouver BC" and get a phone-ready list in minutes.
Marketing and advertising agencies that need to audit their clients' local directory presence or benchmark competitors across Canadian cities.
Recruiters and staffing firms looking for companies hiring in specific sectors — scrape industry keywords by province to build employer contact lists.
Data analysts and researchers studying Canadian business density, service coverage, or local market composition by city and category.
Real estate and franchise professionals evaluating commercial opportunity by identifying concentrations or gaps in local business categories.
🏆 Why use this actor?
- No API key or YellowPages account required — runs against the public search interface
- Phone numbers included — extracted from
data-phoneattributes without simulating clicks - Schema.org structured data — addresses parsed field-by-field (street, city, province, postal code) for clean CSV exports
- Canadian-specific — covers all 10 provinces and 3 territories; supports French and English search queries
- Pagination handled automatically — set your limit and let the actor collect results across multiple pages
- Filter ads — toggle to exclude sponsored listings and get only organic results
- Cost-effective — HTTP + Cheerio architecture (no browser), so runs are fast and cheap
📊 Data extraction table
| Field | Description | Example |
|---|---|---|
name | Business name | "La Bella Trattoria" |
url | YellowPages listing URL | "https://www.yellowpages.ca/bus/..." |
listingId | YP internal listing ID | "2088985" |
phone | Phone number | "416-800-2993" |
streetAddress | Street address | "1975A Queen St E" |
city | City | "Toronto" |
province | Province abbreviation | "ON" |
postalCode | Postal code | "M4L 1J1" |
fullAddress | Full formatted address | "1975A Queen St E, Toronto, ON M4L 1J1" |
rating | Star rating (1–5) | 4.5 |
reviewCount | Number of YP reviews | 23 |
description | Business description | "Experience authentic Italian cuisine..." |
categories | Business categories | ["Restaurants", "Italian Restaurants"] |
website | Business website URL | "https://labella.ca/" |
isAd | Whether listing is sponsored | false |
searchQuery | Query used for this result | "restaurant" |
location | Location used for this result | "Toronto ON" |
💰 How much does it cost to scrape YellowPages Canada businesses?
Each run charges two types of events:
| Event | Cost (BRONZE tier) |
|---|---|
| Run start | $0.009 per run |
| Per business extracted | $0.0025 per listing |
Example costs:
- 50 businesses: ~$0.135
- 200 businesses: ~$0.509
- 1,000 businesses: ~$2.509
Volume discounts apply automatically as your Apify usage grows. PLATINUM and DIAMOND tiers (high-volume users) pay as little as $0.001 per listing.
Free plan: Apify's free plan includes enough compute to scrape approximately 50–100 businesses at no cost.
🚀 How to use it
- Open the actor on the Apify platform and click Try for free
- Enter your search query — e.g.
plumber,dentist,restaurant,auto body shop - Enter the location — Canadian city and province, e.g.
Vancouver BC,Calgary AB,Montreal QC - Set your result limit — how many businesses you need (default: 50)
- Click Run and wait for results (typically 5–30 seconds for 50 results)
- Download results in CSV, JSON, Excel, or XML from the dataset tab
⚙️ Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQuery | string | required | Business type or keyword (e.g. "restaurant", "dentist") |
location | string | required | City and province (e.g. "Toronto ON", "Vancouver BC") |
maxResults | integer | 50 | Maximum number of listings to extract |
includeAds | boolean | true | Include sponsored/ad listings in results |
maxRequestRetries | integer | 3 | Retry attempts for failed requests |
proxyConfiguration | object | none | Optional proxy settings for high-volume scraping |
Location format: Use the city name followed by the two-letter province code with a space — "Toronto ON", "Edmonton AB", "Winnipeg MB". Accented characters work too: "Montréal QC" or "Quebec QC".
📦 Output example
{"name": "La Sala Restaurant","url": "https://www.yellowpages.ca/bus/Ontario/Toronto/La-Sala-Restaurant/2088985.html","listingId": "2088985","phone": "416-800-2993","streetAddress": "1975A Queen St E","city": "Toronto","province": "ON","postalCode": "M4L 1J1","fullAddress": "1975A Queen St E, Toronto, ON M4L 1J1","rating": 5,"reviewCount": 1,"description": "Experience authentic Italian cuisine at La Sala Restaurant. Fresh ingredients, handcrafted dishes, and a warm atmosphere await.","categories": ["Restaurants", "Italian Restaurants"],"website": "https://www.lasalaristorante.com/","isAd": true,"searchQuery": "restaurant","location": "Toronto ON"}
💡 Tips for best results
Use specific search queries for better data quality. Searching "plumber" returns plumbing companies; searching "emergency plumber" may return fewer but more targeted results.
Combine with automation. Run the actor multiple times with different cities or business types using the Apify Scheduler to build a comprehensive national database.
Filter ads for research use cases. Set includeAds: false to exclude sponsored listings if you only want organic directory entries.
Use exact province codes. YellowPages.ca uses standard two-letter codes: ON, BC, AB, QC, MB, SK, NS, NB, NL, PE, YT, NT, NU.
For French-language results in Quebec, use French search terms like "restaurant" or "plombier" with "Montreal QC" or "Quebec QC".
Scraping large datasets. For 500+ results, the actor paginates automatically. Set maxResults to your target and let it run — expect roughly 20–40 results per page depending on the search.
🔗 Integrations
Google Sheets via Apify webhooks: After each run, automatically push results to a Google Sheet using the Google Sheets integration. Use for sales teams that need fresh lead lists without logging into Apify.
CRM lead import (HubSpot / Salesforce): Export results as CSV and import directly into your CRM. The phone, fullAddress, name, and website fields map cleanly to standard CRM contact fields.
Make (Integromat) and Zapier: Trigger the actor on a schedule and route results to any app — Airtable, Notion, Slack notifications, or email — using Apify's native Make and Zapier integrations.
Airtable lead database: Use Apify's Airtable export actor to sync results into an Airtable base for your sales or research team.
Python/Node.js data pipelines: Pull results from the Apify dataset API and enrich them with additional sources (e.g. LinkedIn company data, Google Maps reviews) for more complete prospect profiles.
🤖 API usage
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('automation-lab/yellowpages-canada-scraper').call({searchQuery: 'dentist',location: 'Vancouver BC',maxResults: 100,});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('automation-lab/yellowpages-canada-scraper').call(run_input={'searchQuery': 'dentist','location': 'Vancouver BC','maxResults': 100,})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item['name'], item['phone'], item['fullAddress'])
cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~yellowpages-canada-scraper/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQuery": "dentist","location": "Vancouver BC","maxResults": 100}'
🧠 Use with Claude and MCP
You can control this actor directly from Claude using the Apify MCP server.
Claude Code / CLI
$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/yellowpages-canada-scraper"
Claude Desktop / Cursor / VS Code
Add to your MCP config file (~/.config/claude/claude_desktop_config.json on macOS):
{"mcpServers": {"apify": {"command": "npx","args": ["-y", "@apify/mcp-server"],"env": {"APIFY_TOKEN": "YOUR_TOKEN","APIFY_MCP_ACTOR_IDS": "automation-lab/yellowpages-canada-scraper"}}}}
Example Claude prompts
- "Find all dentists in Calgary AB and export their phone numbers to a table"
- "Scrape 200 restaurants in Vancouver BC and show me which ones have ratings above 4 stars"
- "Get a list of plumbers in Toronto ON with their website URLs"
- "How many Italian restaurants are listed in Montreal QC on YellowPages Canada?"
⚖️ Is it legal to scrape YellowPages Canada?
This actor scrapes publicly available business directory data from YellowPages.ca — the same information anyone can view in a browser. The data consists of business names, contact details, and categories that businesses have voluntarily listed in a public directory.
Web scraping of public information is generally lawful in Canada and most jurisdictions. Scraping public data for research, analysis, or lead generation is a widely accepted practice. We recommend reviewing YellowPages.ca's terms of service for your specific use case, and ensuring your use of the data complies with Canadian privacy legislation (PIPEDA) if you process personal data.
This actor does not bypass authentication, access private data, or violate any access controls.
❓ FAQ
What locations does it support?
All Canadian cities and regions. Use the city name and two-letter province code: "Toronto ON", "Vancouver BC", "Calgary AB", "Montreal QC", "Ottawa ON", etc. Remote or smaller communities may return fewer results.
How many results per page does YellowPages.ca show?
Typically 20–40 organic listings per search page. The actor paginates automatically until your maxResults limit is reached.
Can I scrape multiple cities in one run?
Not directly — the actor takes one searchQuery and one location per run. For multiple cities, start multiple runs via the API or use the Apify Scheduler with different inputs.
Why am I getting fewer results than expected? YellowPages.ca may have fewer listings for your category in that city. Try a broader search term (e.g. "food" instead of "Thai restaurant") or check yellowpages.ca manually to confirm total result count.
I'm getting empty results or errors — what should I try?
First, verify your search works on yellowpages.ca in a browser using the same query and location. If the site is accessible but the actor fails, try increasing maxRequestRetries to 5 or enabling datacenter proxies via proxyConfiguration.
Does it scrape business detail pages? No — this actor scrapes the search results page only, which contains phone numbers, addresses, ratings, and categories without needing to visit each business's detail page. This keeps costs low.
Can I get email addresses?
YellowPages.ca does not publicly display email addresses on the search results page. Business websites (extracted in the website field) may have contact forms or email addresses.
Is the data always current? The actor fetches live data from yellowpages.ca at run time. However, individual business listings are only as up-to-date as YellowPages.ca's own index.
🔗 Related scrapers
- YellowPages US Scraper — Same format, US-based yellowpages.com
- PagesJaunes France Business Scraper — French business directory (pagesjaunes.fr)