Yellow Pages Canada Scraper avatar

Yellow Pages Canada Scraper

Pricing

from $2.50 / 1,000 listings

Go to Apify Store
Yellow Pages Canada Scraper

Yellow Pages Canada Scraper

Scrape yellowpages.ca and pagesjaunes.ca (Canada, not PagesJaunes.fr): business name, phone, email when listed, website, address, hours, rating, and categories. Keyword + city or a .ca search/profile URL. Mobile JSON, no browser. JSON or CSV out. $2.50 per 1,000 listings.

Pricing

from $2.50 / 1,000 listings

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Yellow Pages Canada Scraper logo

Turn a yellowpages.ca or pagesjaunes.ca search into structured Canadian business rows: name, phone, email when listed, website, address, hours, categories, rating, and profile link.

Keyword + city, or a .ca URL. JSON or CSV out.

This is Yellow Pages Canada (YP Group). It is not PagesJaunes.fr and not Canada411 (people / white pages).

Why Use This Scraper?

  • Phone on every listing in the pizza/Toronto sample
  • Native email when Yellow Pages publishes one (about 1 in 4 restaurants; lower on trades)
  • Website and social links on the search row
  • Hours, categories, rating, neighbourhood, coordinates
  • English (yellowpages.ca) and French (pagesjaunes.ca) from the same mobile JSON
  • HTTP only. No browser

Overview

Built for sales teams, agencies, and researchers who need Canadian business leads from yellowpages.ca / pagesjaunes.ca.

Every start type becomes one dataset row per merchant. A keyword search, a pretty /search/si/ URL, and a /bus/ profile URL all emit the same flat shape. Rows are de-duplicated by Yellow Pages merchant id.

pagesjaunes.ca is the French Canadian twin of yellowpages.ca. It is not PagesJaunes.fr (Solocal, France).

Supported Inputs

Search terms and locations

FieldExample
searchTerms["pizza"], ["plumber", "dentist"]
locations["Toronto, ON"], ["Montreal"], ["Vancouver"]

Every term is searched in every location. ["pizza","plumber"] × ["Toronto","Montreal"] is four searches. A term with no location is skipped.

Set language to fr to hit pagesjaunes.ca for keyword searches.

URL types

URL typePatternExample
Pretty search/search/si/{page}/{what}/{where}/https://www.yellowpages.ca/search/si/1/pizza/Toronto/
Query-string search/search/?stype=si&what=&where=https://www.pagesjaunes.ca/search/?stype=si&what=plombier&where=Montreal
Business profile/bus/{Province}/{City}/{Slug}/{id}.htmlhttps://www.yellowpages.ca/bus/Ontario/Toronto/Pizzaville/100363770.html

A pagesjaunes.ca URL forces French regardless of language. Search URLs are paginated automatically.

Unsupported: canada411.ca people pages, yellowpages.com (US), pagesjaunes.fr (France).

Use Cases

AudienceWhat they take from a run
Sales and outreachPhone + website + email (when listed) by category and city
AgenciesCross-joined term × city lists in one dataset
Local SEOCategories, rating, neighbourhood, and the Yellow Pages profile URL
ResearchersHours, coordinates, and out-of-business flags for a trade in a city

How It Works

  1. Cross-join searchTerms × locations, plus any yellowpages.ca / pagesjaunes.ca URLs.
  2. Call the mobile keyword search at 15 businesses per page (pg=N).
  3. Fan out remaining pages in parallel, stopping at maxItems or maxPages.
  4. Read email, website, hours, and categories from the search row.
  5. Optionally load /merchant/{id} for extra phones (toll-free).
  6. De-duplicate by merchant id and push one row per business.

How the Yellow Pages Canada scraper turns a search into business rows

Input Configuration

FieldTypeRequiredNotes
searchTermsarrayone of the start typesWhat you would type into Yellow Pages
locationsarraywith searchTermsCity or City, PV
startUrlsarrayone of the start typesSearch or /bus/ URLs on .ca
maxItemsintegernoDefault 50. Free users capped at 50.
languagestringnoen (yellowpages.ca) or fr (pagesjaunes.ca)
scrapeDetailsbooleannoDefault true. Extra phones only.
maxPagesintegernoDefault 20 (300 rows per search).
maxConcurrencyintegernoDefault 5.
proxyobjectnoOptional. Default is no Apify proxy.

Example input

{
"searchTerms": ["pizza"],
"locations": ["Toronto, ON"],
"maxItems": 50
}

French Canadian twin:

{
"searchTerms": ["plombier"],
"locations": ["Montreal"],
"language": "fr",
"maxItems": 50
}

Output Overview

One flat row per business. Contact and address fields sit at the top level. searchTerm tells you which input produced the row. Email and website are present only when Yellow Pages lists them.

Output Samples

Search: pizza in Toronto, ON.

{
"listingId": "100363770",
"name": "Pizzaville",
"phone": "4167363636",
"phones": ["4167363636"],
"email": "info@pizzaville.ca",
"website": "https://www.pizzaville.ca/",
"social": [{ "type": "FACEBOOK", "url": "http://www.facebook.com/pizzavilleinc" }],
"street": "796 College St",
"city": "Toronto",
"province": "ON",
"postalCode": "M6G 1C6",
"neighbourhood": "Little Italy",
"latitude": 43.6548587,
"longitude": -79.4214047,
"categories": ["Pizza & Pizzerias", "Restaurants"],
"rating": null,
"reviewCount": null,
"hours": [{ "day": 1, "open": "11:00", "close": "23:00" }],
"isOpen": true,
"outOfBusiness": false,
"yellowPagesUrl": "http://www.yellowpages.ca/bus/Ontario/Toronto/Pizzaville/100363770.html",
"language": "en",
"searchTerm": "pizza in Toronto, ON"
}

Key Output Fields

Identity: listingId, name, yellowPagesUrl, language

Contact: phone (digits), phones (includes toll-free when scrapeDetails is on), email, website, social

Place: address, street, city, province, postalCode, neighbourhood, latitude, longitude

Directory: categories, rating, reviewCount, hours, isOpen, outOfBusiness

Provenance: searchTerm, scrapedAt

Phone is present on every row in a pizza/Toronto sample. Email is not: Yellow Pages only publishes an inbox on some merchants.

Pricing

EventWhenRate
Actor startOnce per run, per GB of memory$0.005
ListingEach unique business in the dataset$0.0025 ($2.50 / 1k)
Contact phoneRow has a phone$0.002
Contact emailRow has an email$0.05

Phone and email are billed only when Yellow Pages publishes that field. A miss is free.

FAQ

Is this PagesJaunes.fr? No. pagesjaunes.ca is the French Canadian twin of yellowpages.ca. For France use PagesJaunes Scraper.

Does it scrape Canada411 people? No. Use Canada411 Scraper.

Will every row have an email? No. Same as the US directory: phone is common, inbox is not. Phone and email are billed as extra events only when the field is present.

What does scrapeDetails add? Extra phone types (toll-free). Email and website are already on the search row when Yellow Pages has them.

Do I need a proxy? No.

French results? Set language to fr, or paste a pagesjaunes.ca URL.

Support

Additional Services

Bulk province sweeps, scheduled refreshes, or a private API wrapper: muhamed.didovic@gmail.com

Explore More Scrapers

Directory cousins: Yellow Pages US Scraper, Canada411 Scraper, and PagesJaunes.fr Scraper. More actors on memo23 and didovic.

🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/yellowpages-ca-scraper).

Purpose: Extract yellowpages.ca / pagesjaunes.ca business listings (name, phone, email when listed, website, split address, hours, categories) by keyword + city or URL.

Minimal input:

{
"searchTerms": ["pizza"],
"locations": ["Toronto, ON"],
"maxItems": 10
}

Output: one dataset row per business — listingId, name, phone, phones, email, website, social, address, street, city, province, postalCode, neighbourhood, latitude, longitude, categories, rating, reviewCount, hours, isOpen, outOfBusiness, yellowPagesUrl, language, searchTerm, scrapedAt.

Behaviors an agent should know:

  • Always set maxItems. Free users are capped at 50.
  • searchTerms needs at least one entry in locations.
  • startUrls work on their own (yellowpages.ca or pagesjaunes.ca only).
  • language: "fr" hits pagesjaunes.ca. A pagesjaunes.ca URL forces French.
  • Email is often empty. Do not assume a contact-email field exists on every row.
  • Each listing is $0.0025. A phone on the row is $0.002. An email is $0.05. Start is $0.005 per GB.
  • Canada business directory only. Not Canada411 people, not PagesJaunes.fr, not yellowpages.com.

⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Yellow Pages Digital & Media Solutions Limited, Yellow Pages Group, or Pages Jaunes. All trademarks mentioned are the property of their respective owners.

The scraper reads publicly listed Canadian business data from Yellow Pages Canada's mobile search API. Users are responsible for ensuring their use complies with yellowpages.ca and pagesjaunes.ca Terms of Service, PIPEDA and provincial privacy law, CASL if they send outreach, and any contractual obligations of their own organization.

SEO Keywords

yellow pages canada scraper, yellowpages.ca scraper, pagesjaunes.ca scraper, scrape yellow pages canada, Yellow Pages Canada API, Canadian business listings scraper, Canada phone email scraper, pagesjaunes canada scraper, Apify yellow pages canada, Canadian restaurant leads, plumber leads Canada, local SEO Canada data, yellowpages.ca email scraper, Canadian directory scraper, pagesjaunes.ca leads