# Yellow Pages Canada Scraper | Business Directory, $1.50/1K (`aurelix/yellow-pages-canada-scraper`) Actor

Scrape Yellow Pages Canada at $1.50 per 1,000 businesses, cheaper than the leading tools, with several cities and an exact business cap per run. Name, categories, address, postal code, phone, website, hours, rating, reviews and coordinates; duplicates free.

- **URL**: https://apify.com/aurelix/yellow-pages-canada-scraper.md
- **Developed by:** [Aurelix](https://apify.com/aurelix) (community)
- **Categories:** Lead generation, Business
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.05 / 1,000 business results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What is Yellow Pages Canada Scraper?

**Build Canadian business lead lists from YellowPages.ca (phone, website, address, hours, rating) for $1.50 per 1,000 businesses, no login, cheaper than the leading tools.**

For agencies and B2B sellers in Canada. Several searches and cities per run with an exact business cap; paid placements are flagged and duplicates are never charged. Your first run with the example input costs about $0.031 (20 businesses in our test run).

[![Yellow Pages Canada Scraper: example output from a real run](https://api.apify.com/v2/key-value-stores/twkCCtTWzsi8fVbx5/records/yellow-pages-canada-scraper-card-v2.png)](https://console.apify.com/actors/oKCr7SxM6YEQNmJPI?addFromActorId=oKCr7SxM6YEQNmJPI)

| | |
|---|---|
| **Search by** | Search terms x Canadian cities, e.g. plumber in Toronto ON |
| **Options** | Opening hours, exact rating and coordinates from each business page (on by default), or a much faster card-only run that loads one search page per 35 businesses |
| **Output** | 22 fields per business; JSON, CSV, Excel, API |
| **Automate** | Schedules, webhooks, Zapier, Make, n8n, Google Sheets, MCP for AI agents |
| **Price** | $1.50 per 1,000 businesses ($1.05 per 1,000 businesses on paid Apify plans) |
| **Free to try** | Runs on Apify's free plan: the $5 monthly credit covers about 3,300 businesses |
| **Login needed** | No |

### Why Yellow Pages Canada Scraper users pick this one

- **Half the usual price.** $1.50 per 1,000 businesses, many cities per run.
- **Clean addresses.** Street, city, province and postal code split; phones in E.164.
- **Real websites.** YP redirect links and social pages removed.
- **Opening hours included.** Weekly hours from each business page, or a faster card-only run.
- **Ads flagged.** Paid placements marked with is_ad.

### Get started in 3 steps

1. Enter one or more search terms, e.g. plumber or dentist, and one or more locations, e.g. Toronto ON or Halifax NS.
2. Set Max businesses per search (default 50); turn off opening hours for a faster, card-only run.
3. Click Start, then download JSON, CSV or Excel, or send the rows to Google Sheets, your CRM, Zapier, Make or n8n through the API.

**[▶ Try it with the example input](https://console.apify.com/actors/oKCr7SxM6YEQNmJPI?addFromActorId=oKCr7SxM6YEQNmJPI)**

The form opens with an example input already filled in: that run costs about $0.031 on the free plan.

### How much does it cost to scrape Yellow Pages Canada?

Pay per event: you pay only for what the run returns, plus a small start fee. Bronze, Silver, Gold and higher Apify plans pay less per result.

| Businesses | Free plan | Paid plans (Bronze, Silver, Gold) |
|---|---|---|
| 100 | $0.15 | $0.11 |
| 1,000 | $1.50 | $1.05 |
| 10,000 | $15.00 | $10.50 |

Totals include the $0.001 start fee per run, rounded to the cent. Apify's free plan includes $5 of credit a month, enough for about 3,300 businesses.

Duplicate listings (YellowPages.ca repeats ads in its results), suppressed businesses, failed pages and the business pages opened for hours are not charged.

#### Billing events

| Event | Free plan | Paid plans (Bronze, Silver, Gold) |
|---|---|---|
| `business-result` | $1.50 per 1,000 businesses | $1.05 per 1,000 businesses |
| `apify-actor-start` | $0.001 per run | $0.001 per run |

### Benchmarks: how we compare

| Test run | Businesses | Run time | Phone | Website | Opening hours | Coordinates |
|---|---|---|---|---|---|---|
| plumber, hair salon x Toronto ON, Winnipeg MB (25 per search) | 100 | 155 s | 100% | 72% | 68% | 87% |
| plumber, accountant x Toronto ON, Halifax NS (10 per search) | 40 | 115 s | 100% | 75% | 78% | 88% |
| plumber in Toronto ON (10) | 10 | 22 s | 100% | 90% | 70% | 70% |
| plumber in Halifax NS (10) | 10 | 27 s | 100% | 50% | 90% | 80% |
| dentist in Halifax NS (10) | 10 | 38 s | 100% | 100% | 100% | 100% |
| locksmith in Yellowknife NT (cap 2,000) | 12 (every listing shown) | 26 s | 100% | 50% | 33% | 33% |
| Search or location that matches nothing | 0 | 3 to 6 s | n/a | n/a | n/a | n/a |

Cloud runs of this Actor on Apify at 256 MB with the default datacenter proxy and opening hours on. Percentages are the share of returned businesses with a non-empty value; a missing website, hours or coordinates means YellowPages.ca shows none for that business. The first prefilled run returned 20 businesses for $0.031 in total. In a separate check, 10 of 10 sampled businesses matched their YellowPages.ca pages, and a feasibility run loaded 30 of 30 pages (10 searches in 10 cities, 20 business pages) with no block or CAPTCHA. Samples are small: 10 to 100 businesses per run.

### What data you get

**Yellow Pages Canada Scraper** turns YellowPages.ca searches into one row per business: name, categories, street, city, province and postal code, phone in E.164, real website URL, weekly opening hours, rating, review count and coordinates. Give search terms and Canadian locations; every term runs in every location and a business found twice is returned once. Paid placements are flagged with is_ad so you can filter them.

- name, category, categories, is_ad (paid placement)
- street, city, province, postal_code, latitude, longitude
- phone (E.164), website
- rating, review_count (count only), open_status, hours \[{day, opens, closes}]
- listing_id, yp_url, search_term, search_location, source_url, scraped_at (ISO 8601 UTC)

| name | category | phone | website | city | province | rating | review_count |
|---|---|---|---|---|---|---|---|
| Drain King Plumbers | Plumbers & Plumbing Contractors | +16473622109 | http://www.drainkingplumbers.ca/ | North York | ON | 5 | 8 |
| Drainbusters | Plumbers & Plumbing Contractors | +19027015298 | http://drainbustersns.com/ | Burnside | NS | 5 | 2 |
| BFC Tax Accountants | Accounting Services | +17053159249 | https://bfc.tax/ | Barrie | ON |  | 0 |
| Click2biz Inc | Accounting Services | +19027019774 | https://www.canadacompanyregistry.com/companies/click2biz... | HALIFAX | NS |  | 0 |
| Lira Tax & Accounting Inc. | Accounting Services | +14374217171 | https://liratax.ca/ | East York | ON | 5 | 1 |

One full business record, exactly as a real run returned it (long text and lists shortened here). From a real run:

```json
{
  "listing_id": "101902936",
  "name": "Drain King Plumbers",
  "category": "Plumbers & Plumbing Contractors",
  "categories": [
    "Plumbers & Plumbing Contractors"
  ],
  "street": "100 Saint Regis Crescent",
  "city": "North York",
  "province": "ON",
  "postal_code": "M3J 1Y8",
  "phone": "+16479560539",
  "website": "http://www.drainkingplumbers.ca/",
  "rating": 5,
  "review_count": 8,
  "open_status": "Open 24 hours",
  "is_ad": true,
  "yp_url": "https://www.yellowpages.ca/bus/Ontario/North-York/Drain-King-Plumbers/101902936.html",
  "hours": [
    {
      "day": "Monday",
      "opens": "00:00",
      "closes": "23:59"
    },
    {
      "day": "Tuesday",
      "opens": "00:00",
      "closes": "23:59"
    },
    {
      "day": "Wednesday",
      "opens": "00:00",
      "closes": "23:59"
    },
    "... [4 more]"
  ],
  "latitude": 43.7550621,
  "longitude": -79.4822464,
  "search_term": "plumber",
  "search_location": "Toronto ON",
  "source_url": "https://www.yellowpages.ca/bus/Ontario/North-York/Drain-King-Plumbers/101902936.html",
  "scraped_at": "2026-11-04T11:26:27Z"
}
```

### Use cases

- Canadian agencies and B2B sellers building trade lead lists by city
- Home-services platforms sourcing contractors by province
- Market researchers counting businesses by category and city
- Sales teams adding phones, websites and hours to a prospect list

### Use-case recipes

#### Contractor list for one province

For home-services platforms and trade suppliers. Put the trades in searchTerms and the cities in locations; keep opening hours on. Drop rows with is_ad = true if you only want organic listings, load phone into your dialer or CRM, and pass the website column to Company Contact Finder for emails.

```json
{
  "searchTerms": [
    "plumber",
    "electrician",
    "roofing"
  ],
  "locations": [
    "Calgary AB",
    "Edmonton AB"
  ],
  "maxResultsPerSearch": 20,
  "includeDetails": true
}
```

#### Count businesses by category and city

For market researchers sizing a category. Turn opening hours off for a fast card-only run and set a cap above what you expect. Group the rows by search_location and category to count businesses, and use review_count as a rough sign of how active each one is. Counts are what YellowPages.ca lists, not a census.

```json
{
  "searchTerms": [
    "dentist"
  ],
  "locations": [
    "Toronto ON",
    "Vancouver BC",
    "Montreal QC"
  ],
  "maxResultsPerSearch": 30,
  "includeDetails": false
}
```

#### Businesses with no website

For web agencies selling sites to local businesses. Run the categories you sell to, then keep the rows where website is empty and phone is filled. In our 100-business test run, 28 had no website. Call or visit them; the street and postal_code columns give the address.

```json
{
  "searchTerms": [
    "hair salon"
  ],
  "locations": [
    "Winnipeg MB"
  ],
  "maxResultsPerSearch": 35,
  "includeDetails": false
}
```

#### Plan field-sales visits by opening hours

For reps who visit businesses in person. Keep opening hours on so each row has hours by day and latitude and longitude. Filter hours for the day you plan to visit, then load the coordinates into a map or route planner.

```json
{
  "searchTerms": [
    "accountant"
  ],
  "locations": [
    "Halifax NS"
  ],
  "maxResultsPerSearch": 20,
  "includeDetails": true
}
```

### Input

| Field | Type | What it does | Default |
|---|---|---|---|
| `searchTerms` (Search terms) | array | What to search for, as on YellowPages.ca, e.g. \['plumber', 'dentist']. | \["plumber"] |
| `locations` (Locations) | array | Canadian cities or areas with province, e.g. \['Toronto ON', 'Calgary AB']. | \["Toronto ON"] |
| `maxResultsPerSearch` (Max businesses per search) | integer | Stop each term/location search after this many businesses, e.g. 100. | 50 |
| `includeDetails` (Include opening hours and coordinates) | boolean | Also open each business page for the weekly opening hours, exact rating and map coordinates, e.g. true. | true |
| `proxyConfiguration` (Proxy) | object | Apify Proxy; the default datacenter group works for YellowPages.ca. | {"useApifyProxy": true} |

All 5 fields, with examples: see the **Input** tab.

### Use with AI agents (MCP)

MCP (Model Context Protocol) is the open standard that lets AI assistants such as Claude, ChatGPT and Cursor call outside tools. Apify's hosted MCP server at `https://mcp.apify.com/?tools=aurelix/yellow-pages-canada-scraper` gives your assistant this Actor only: it fills in the input from your request, runs it and reads the businesses back, at the same per-result price as a run started by hand.

#### Example prompts

- "Find 50 dentists in Calgary AB on Yellow Pages Canada with their phones and websites and give me a table"
- "List plumbers and electricians in Toronto ON and Ottawa ON from YellowPages.ca, leave out paid ads, and show which ones open on Sundays"
- "Get 100 accountants in Halifax NS from Yellow Pages Canada with postal codes, ratings and review counts, sorted by review count"

#### Claude Desktop and claude.ai

**Settings > Connectors > Add custom connector**, name it Apify, paste `https://mcp.apify.com/?tools=aurelix/yellow-pages-canada-scraper`, keep the detected OAuth settings, select **Add** and sign in to Apify.

#### Claude Code

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=aurelix/yellow-pages-canada-scraper"
```

#### Cursor and VS Code

Add this to `~/.cursor/mcp.json` (Cursor); in VS Code's `.vscode/mcp.json` put the same entry under `"servers"` with `"type": "http"`. Sign in to Apify when asked.

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com/?tools=aurelix/yellow-pages-canada-scraper"
    }
  }
}
```

#### ChatGPT

Turn on **Developer mode**, open **Settings > Apps & Connectors > Create**, paste the URL above as the MCP server URL, choose **OAuth** and authorize Apify.

Clients without sign-in send `Authorization: Bearer <YOUR_APIFY_TOKEN>` instead. No Apify account? This Actor supports Apify's agentic payments: an agent can pay per run with a prepaid, spend-capped token, bought with x402 stablecoin payments.

#### n8n AI agent

Give an **AI Agent** node an **MCP Client Tool** with the endpoint `https://mcp.apify.com/?tools=aurelix/yellow-pages-canada-scraper` and a Bearer credential holding your Apify token.

### Use it from AI agents (MCP), the API or no-code

#### Copy this to your AI assistant

```text
Use the Apify Actor aurelix/yellow-pages-canada-scraper (Yellow Pages Canada Scraper) through Apify's MCP server or API. Main input: searchTerms (Search terms); locations (Locations). Example input: {"searchTerms": ["plumber", "electrician"], "locations": ["Toronto ON", "Calgary AB"], "maxResultsPerSearch": 100, "includeDetails": true}. Each result is one business with fields such as listing_id, name, category, categories, street, city, province, postal_code. It costs $1.50 per 1,000 businesses on Apify's free plan plus a $0.001 start fee per run, and needs no login.
```

MCP server URL for this Actor: `https://mcp.apify.com/?tools=aurelix/yellow-pages-canada-scraper` (setup for each client in the section above).

#### API

Start a run and read the dataset with Apify's REST API or the Python and JavaScript clients:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("aurelix/yellow-pages-canada-scraper").call(run_input={'searchTerms': ['plumber', 'electrician'], 'locations': ['Toronto ON', 'Calgary AB'], 'maxResultsPerSearch': 100, 'includeDetails': True})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

#### No-code: schedule it in 3 clicks

Send the results to Google Sheets, Zapier, Make, n8n, Slack or any webhook URL.

1. Fill in the input, then click **Save as a new task**.
2. In the task, click **Schedule** and pick daily or weekly (Apify Schedules).
3. Open the task's **Integrations** tab to send every run's results to Slack, Google Sheets, email or any webhook.

Prefer n8n or Make? Ask in the **Issues** tab and we will share a ready-made workflow for it.

### FAQ

#### Can I scrape Yellow Pages Canada without login?

Yes. It never logs in, so you need no Yellow Pages account, password or cookies; only a free Apify account to run it.

#### Is there a Yellow Pages Canada API?

You can use this Actor as one. Start it with Apify's REST API or the Python and JavaScript clients and read the results as JSON (see the code above), or call it from an AI agent through MCP.

#### How much does it cost to scrape Yellow Pages Canada?

About $1.50 for 1,000 businesses on Apify's free plan and $1.05 on paid plans, start fee included. The free $5 monthly credit covers about 3,300 businesses.

#### Can I export Yellow Pages Canada data to Excel or Google Sheets?

Yes. Download the results as Excel, CSV, JSON, XML or HTML from the run's **Storage** tab, or send them to Google Sheets with Apify's Google Sheets integration or the API.

#### Is it legal to scrape Yellow Pages Canada?

It reads only public data any logged-out visitor can see: YellowPages.ca search and business pages. It goes at a polite pace, respects robots.txt, never logs in and never solves CAPTCHAs. It returns business listing fields (name, categories, address, phone, website, rating, hours); no review text or reviewer data. To have a record removed, open an issue on this Actor's Issues tab; if Yellow Pages formally asks us to stop, this Actor will stop. You are responsible for using the data lawfully, incl. anti-spam and privacy laws; this is not legal advice.

#### What is charged?

One business-result per business returned. Duplicates across searches, businesses on the suppression list and pages that fail are not charged.

#### Why do some businesses have no rating?

A rating is shown only when the business has YP reviews; review_count is then 0 and rating is empty.

#### What does 'Include opening hours' do?

It opens each business page for the weekly hours, the exact rating and the map coordinates. Without it you get the search-card fields (name, categories, address, phone, website, rating rounded to half stars, review count and today's open status). That run loads only the search pages, one per 35 businesses, instead of one extra page per business, so it is much faster on large runs.

#### Are ads included?

Yes, paid placements appear in YellowPages.ca results; they are real businesses and are flagged with is_ad so you can filter them.

#### Does it respect robots.txt?

Always. Only search and business pages that YellowPages.ca's robots.txt allows are requested, one at a time, about once a second.

#### How do I get a business removed?

Open an issue in the Issues tab with the business name or website. It is added to the shared suppression list within 7 days.

#### What happens if a search finds nothing or a page fails?

A search that matches nothing returns no rows, and the run pays only the $0.001 start fee. Each page is tried 3 times; if a search page still fails (for example HTTP 429), that search stops and keeps the businesses already saved. If a business page fails, the business is still returned with its search-card fields but no hours or coordinates. The status message counts failed pages, and failed pages are never charged.

#### How are duplicates removed?

By YellowPages.ca listing_id, within one run. The first search that finds a business keeps it, and its search_term and search_location show which one. A business that YellowPages.ca repeats as an ad on later pages is skipped and not charged. Separate runs do not share memory, so a new run returns and charges the same business again; dedupe across runs on listing_id.

#### How many businesses can one run return?

Up to 2,000 per search (Max businesses per search), and a run holds as many searches as search terms x locations. A search also ends when YellowPages.ca runs out: two result pages in a row with no new business, or a page with fewer than 35 results. The run stops shortly before Apify's run timeout and at the maximum charge you set, and keeps every business saved so far.

#### How fast is it?

It loads about one page per second. With opening hours on, it opens one business page per business: in our test runs 40 businesses took about 2 minutes and 100 took about 2.5 minutes. With hours off it loads one search page per 35 businesses.

#### How should I write the location?

As on YellowPages.ca: a city or area plus the province code, e.g. Toronto ON or Kelowna BC. YellowPages.ca also returns businesses from nearby towns, so a Halifax NS search can include Bedford or Mount Uniacke; the city column shows the real town. A location it does not know returns no businesses.

#### What format are phone, address and website in?

phone is E.164: +1 and 10 digits; a number that is not a valid North American number is left empty. street, city, province and postal_code are separate columns as YellowPages.ca lists them, e.g. province ON. website is the business's own site with the YellowPages.ca redirect removed; Facebook, Instagram, LinkedIn and other social pages are dropped, so website is empty when a business lists only those.

#### Can I schedule it to get only new businesses?

You can schedule it in Apify, but there is no new-since-last-run mode: every run returns and charges all matching businesses again. Keep a list of listing_id values and filter new rows on your side, or run less often with a lower cap.

### Lawful use

- B2B use only: the data is business listing information that businesses publish to be found and contacted. Do not use it for consumer marketing.
- No spam: contact businesses only with relevant, individual messages, identify yourself, and honour every opt-out at once.
- You are responsible for complying with the anti-spam and privacy laws that apply to you, including Canada's CASL, the US CAN-SPAM Act and the EU/UK GDPR.
- Listings are as published by the business, including sole proprietors: a sole trader's listing can carry their name, business address and phone exactly as they published them. No review text, no reviewer names or profiles, no sensitive data.

### Removal requests

Anyone can ask for their name, email or domain to be removed: open an issue in this Actor's **Issues tab** with the domain, email or name. Requests are honoured within **7 days**: the entry is added to the suppression list that every Aurelix contact Actor checks before returning data, so it is dropped from all future runs.

### Limits (stated honestly)

- Results are what YellowPages.ca shows for the search, in its order, including paid placements; very broad searches stop when YellowPages.ca stops returning new businesses.
- Canada only (YellowPages.ca). YellowPages.com (US) blocks Apify's free datacenter proxy, so it is not covered.
- Emails are not collected; use the website with the Company Contact Finder for published company emails.
- Opening hours are as listed by the business on YellowPages.ca and can be out of date.
- A business whose name contains a name on the suppression list is skipped (titles such as Dr., case and accents ignored).

### Works great with

- **Then: [Contact Page Scraper](https://apify.com/aurelix/contact-details-scraper)**: put the `website` column into its `domains` input to get each business's emails, phones and social links
- **Then: [Tech Stack API](https://apify.com/aurelix/tech-stack-detector)**: put the `website` column into its `domains` input to keep only businesses on Shopify, WordPress, HubSpot and so on
- **Then: [Decision Maker Finder](https://apify.com/aurelix/decision-maker-finder)**: put the `website` column into its `domains` input to get owners' and managers' names and titles

### Related Aurelix tools

Public Aurelix Actors, grouped by the data they collect. All are pay-per-result and need no login.

#### Leads and company data

- **[Companies House Scraper](https://apify.com/aurelix/companies-house-scraper)**: Newly incorporated UK companies from Companies House: SIC codes, region, registered office, directors with roles.
- **[Contact Page Scraper](https://apify.com/aurelix/contact-details-scraper)**: Published company emails, phones, addresses, social pages and team members from a list of company websites.
- **[Decision Maker Finder](https://apify.com/aurelix/decision-maker-finder)**: Founders, CEOs, VPs and department heads from company team pages, with title, seniority and function.
- **[Newly Funded Companies Hiring](https://apify.com/aurelix/funded-companies-hiring)**: Companies that just raised money (SEC Form D), with their open roles and business contacts, as a new-only monitor.
- **[Google Maps Phone Scraper](https://apify.com/aurelix/google-maps-scraper)**: Local business lists from Google Maps: phones, websites, ratings, hours, coordinates; optional website emails and socials.
- **[Recently Funded Companies API](https://apify.com/aurelix/recently-funded-companies)**: US companies that just filed an SEC Form D: amount raised, industry, state, executives, confirmed website.
- **[Tech Stack API](https://apify.com/aurelix/tech-stack-detector)**: CMS, e-commerce platform, analytics, ad pixels, chat, CDN and email provider for each domain you enter.

#### Jobs and hiring data

- **[Job Bank Canada Scraper API](https://apify.com/aurelix/job-bank-canada-scraper)**: Official Job Bank Canada postings by month: NOC and NAICS codes, wages, hours and location.
- **[Greenhouse Jobs Scraper](https://apify.com/aurelix/greenhouse-jobs-scraper)**: Live jobs from a company's Greenhouse, Lever, Ashby or SmartRecruiters board, with salary and Canadian province tags.
- **[LinkedIn Jobs Country Filter Scraper](https://apify.com/aurelix/linkedin-jobs)**: Public LinkedIn job postings by keyword and country: title, company, location, seniority, job type, salary text, description.
- **[Multiple Job Boards Scraper](https://apify.com/aurelix/multi-job-board-scraper)**: LinkedIn, about 50 company career sites, Remote OK and We Work Remotely jobs in one deduplicated list.
- **[Remote Job Board Scraper API](https://apify.com/aurelix/remote-jobs-scraper)**: Remote OK and We Work Remotely jobs in one deduplicated list with salary, regions and tags.

#### E-commerce and product data

- **[AliExpress Scraper API](https://apify.com/aurelix/aliexpress-product-search)**: AliExpress search results by keyword: price, discount, rating, units sold, ship-from country and sponsored flag.
- **[Amazon Best Sellers & Amazon New Releases](https://apify.com/aurelix/amazon-best-sellers)**: Amazon Best Sellers and New Releases top 100 on 10 marketplaces: rank, ASIN, price, rating, rank change.
- **[Best Buy Canada Scraper API](https://apify.com/aurelix/best-buy-canada-scraper)**: Best Buy Canada search results: CAD price, sale savings, rating, reviews and seller, plus optional UPC and specs.
- **[Shopify Product Export Scraper](https://apify.com/aurelix/shopify-products-scraper)**: Every public product of any Shopify store with variants, SKUs, prices, barcodes, stock counts and collections.
- **[Shopify Best Sellers Tracker](https://apify.com/aurelix/shopify-best-sellers-tracker)**: Competitor Shopify stores' best-sellers, new products, price changes, stock-outs and restocks since your last run, plus catalogue summary.

#### Ad intelligence

- **[Competitor Watch](https://apify.com/aurelix/competitor-watch)**: One report per competitor with only what is new: Meta and TikTok ads, page changes, Shopify products and prices, jobs.
- **[Facebook Ad Library Search & API](https://apify.com/aurelix/facebook-ad-library-scraper)**: Facebook and Instagram business ads from the Meta Ad Library: copy, creatives, landing pages, dates, optional EU reach.
- **[TikTok Ads Library API](https://apify.com/aurelix/tiktok-ads-library-scraper)**: TikTok Ads Library ads for Europe, UK, Switzerland and Turkey with targeting, reach, ad text and landing pages.

#### Canada and government data

- **[Canada Building Permits](https://apify.com/aurelix/canada-building-permits-scraper)**: Building permits and development applications from 7 Canadian cities: address, type, status, dates, value, applicant, contractor and Toronto planner contact.
- **[Government Tenders Scraper](https://apify.com/aurelix/government-tenders-scraper)**: Open tenders from SAM.gov, CanadaBuys and EU TED in one table: buyer, codes, value, deadline, contact and link.
- **[USPTO Trademark API](https://apify.com/aurelix/uspto-trademark-search)**: US trademark search and watch from USPTO: mark, owner or number lookups, new filings, owner, attorney, goods.

#### AI, content and SEO

- **[Google Trends by Region](https://apify.com/aurelix/google-trends-scraper)**: Google Trends interest over time, by region and rising queries for any number of keywords, plus trending searches.
- **[Google Autocomplete API](https://apify.com/aurelix/google-autocomplete-scraper)**: Expands seed keywords into hundreds of real Google and YouTube autocomplete phrases, tagged by search intent.
- **[PDF Table Extraction & PDF to Markdown OCR](https://apify.com/aurelix/pdf-to-markdown)**: Turns linked PDF and Word files into Markdown per page, with tables as JSON rows, RAG chunks and OCR.
- **[Broken Link Crawler & SEO Audit](https://apify.com/aurelix/seo-audit-crawler)**: Audits a whole site: one row per page with SEO checks and broken links, plus a ranked issues summary.
- **[Website to Markdown API](https://apify.com/aurelix/website-to-markdown)**: Crawls a site and returns one row of clean main-content Markdown per page, with title, headings and links.
- **[YouTube Transcript Scraper](https://apify.com/aurelix/youtube-transcript-scraper)**: Returns YouTube video transcripts as text, timed segments and AI chunks, from videos, channels, playlists or searches.

#### More data tools

- **[Agoda API (Unofficial)](https://apify.com/aurelix/agoda-reviews-scraper)**: Scrape Agoda guest reviews at $0.50 per 1,000 with this unofficial Agoda API, cheaper than the leading tools: Agoda and...
- **[Tennis Betting Odds Scraper](https://apify.com/aurelix/tennis-odds-scraper)**: Tennis results and upcoming matches with opening and closing odds per bookmaker and implied probabilities.

### Recent changes

- **0.1**: Price unchanged at $1.50 per 1,000 businesses.

The full history is on the **Changelog** tab.

### Tested daily

An automated health check runs this Actor every day on a fixed input and checks that at least 8 businesses come back with `listing_id`, `name`, `phone`, `yp_url`, `source_url`, `scraped_at` filled in; a failed check alerts the maintainer straight away.

### Your feedback

Missing a field, found a bug or need another filter? Open an issue on the **Issues** tab; we aim to answer within a day. If this Actor saved you time, a short review helps other people find it.

# Changelog

This Actor's version history is a separate document: https://apify.com/aurelix/yellow-pages-canada-scraper/changelog.md

# Actor input Schema

## `searchTerms` (type: `array`):

What to search for, as on YellowPages.ca, e.g. \['plumber', 'dentist'].

## `locations` (type: `array`):

Canadian cities or areas with province, e.g. \['Toronto ON', 'Calgary AB'].

## `maxResultsPerSearch` (type: `integer`):

Stop each term/location search after this many businesses, e.g. 100. YellowPages.ca shows 35 per page.

## `includeDetails` (type: `boolean`):

Also open each business page for the weekly opening hours, exact rating and map coordinates, e.g. true. Off is much faster (one search page per 35 businesses, no business pages) and returns the search card fields only.

## `proxyConfiguration` (type: `object`):

Apify Proxy; the default datacenter group works for YellowPages.ca.

## Actor input object example

```json
{
  "searchTerms": [
    "plumber"
  ],
  "locations": [
    "Toronto ON"
  ],
  "maxResultsPerSearch": 20,
  "includeDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `businesses` (type: `string`):

One item per business: name, categories, address, phone, website, hours, rating, review count and coordinates.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchTerms": [
        "plumber"
    ],
    "locations": [
        "Toronto ON"
    ],
    "maxResultsPerSearch": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("aurelix/yellow-pages-canada-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchTerms": ["plumber"],
    "locations": ["Toronto ON"],
    "maxResultsPerSearch": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("aurelix/yellow-pages-canada-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "plumber"
  ],
  "locations": [
    "Toronto ON"
  ],
  "maxResultsPerSearch": 20
}' |
apify call aurelix/yellow-pages-canada-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,aurelix/yellow-pages-canada-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/oKCr7SxM6YEQNmJPI/builds/YdqpHZP9e2ZOs8aR0/openapi.json
