YellowPages Canada Business Scraper avatar

YellowPages Canada Business Scraper

Pricing

Pay per event

Go to Apify Store
YellowPages Canada Business Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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-phone attributes 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

FieldDescriptionExample
nameBusiness name"La Bella Trattoria"
urlYellowPages listing URL"https://www.yellowpages.ca/bus/..."
listingIdYP internal listing ID"2088985"
phonePhone number"416-800-2993"
streetAddressStreet address"1975A Queen St E"
cityCity"Toronto"
provinceProvince abbreviation"ON"
postalCodePostal code"M4L 1J1"
fullAddressFull formatted address"1975A Queen St E, Toronto, ON M4L 1J1"
ratingStar rating (1–5)4.5
reviewCountNumber of YP reviews23
descriptionBusiness description"Experience authentic Italian cuisine..."
categoriesBusiness categories["Restaurants", "Italian Restaurants"]
websiteBusiness website URL"https://labella.ca/"
isAdWhether listing is sponsoredfalse
searchQueryQuery used for this result"restaurant"
locationLocation used for this result"Toronto ON"

💰 How much does it cost to scrape YellowPages Canada businesses?

Each run charges two types of events:

EventCost (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

  1. Open the actor on the Apify platform and click Try for free
  2. Enter your search query — e.g. plumber, dentist, restaurant, auto body shop
  3. Enter the location — Canadian city and province, e.g. Vancouver BC, Calgary AB, Montreal QC
  4. Set your result limit — how many businesses you need (default: 50)
  5. Click Run and wait for results (typically 5–30 seconds for 50 results)
  6. Download results in CSV, JSON, Excel, or XML from the dataset tab

⚙️ Input parameters

ParameterTypeDefaultDescription
searchQuerystringrequiredBusiness type or keyword (e.g. "restaurant", "dentist")
locationstringrequiredCity and province (e.g. "Toronto ON", "Vancouver BC")
maxResultsinteger50Maximum number of listings to extract
includeAdsbooleantrueInclude sponsored/ad listings in results
maxRequestRetriesinteger3Retry attempts for failed requests
proxyConfigurationobjectnoneOptional 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 ApifyClient
client = 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?"

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.