# Yellow Pages Reviews Scraper (`kaix/yellowpages-reviews-scraper`) Actor

Collect every review of US (yellowpages.com), UK (yell.com) or Canada (yellowpages.ca) Yellow Pages businesses from listing links or IDs. One review per row, with rating, text, date and author.

- **URL**: https://apify.com/kaix/yellowpages-reviews-scraper.md
- **Developed by:** [Kai](https://apify.com/kaix) (community)
- **Stats:** 4 total users, 3 monthly users, 90.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.04 / 1,000 reviews

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

## Yellow Pages Reviews Scraper - Most Comprehensive

Get the reviews of Yellow Pages businesses in the United States, the United
Kingdom, and Canada. Each review has 18 fields: rating, title, text, date,
reviewer details, helpful votes, the reply of the business, sub-ratings such as
food and service, and every field of the review as the country sends it. Each
business also gets a row with its address, rating, and how many reviews it has
and how many were saved. Sort the reviews and keep one language in Canada.

Read a few reviews or the full history of a business. Start with a Yellow Pages
link or a listing ID. Starting at $0.04 per 1,000 reviews. In platform tests at
256 MB, a run of 62 US reviews from 4 businesses took 12 seconds. A run of 168
Canada reviews from 3 businesses also took 12 seconds.

To find the businesses first, use the
[Yellow Pages Scraper](https://apify.com/kaix/yellowpages-scraper). It searches by
term and location. Pass the `ypid` or `yellowPagesUrl` of its results to this
Actor.

### Countries

Set **Country** to the Yellow Pages you want. Each is a different company, so
your links and IDs must match the country you pick.

- **United States** (`us`, the default): yellowpages.com. Links look like
  `https://www.yellowpages.com/new-york-ny/mip/nello-4654897`. There is no fixed
  review limit. In a sample of 200 businesses, 135 had no reviews and the most
  had 305.
- **United Kingdom** (`uk`): yell.com. Links look like
  `https://www.yell.com/biz/thai-edge-leeds-3390417/`. Yell serves up to about
  20 reviews per business, so a higher **Max reviews per business** cannot add
  more. See
  [Why do I get no more than about 20 reviews in the UK?](#why-do-i-get-no-more-than-about-20-reviews-in-the-uk)
- **Canada** (`ca`): yellowpages.ca. Links look like
  `https://www.yellowpages.ca/bus/Ontario/Toronto/Bardi-s-Steak-House/156059.html`.
  pagesjaunes.ca links work too. Yellow Pages Canada serves the written reviews
  only. It is the only country where you can sort the reviews or keep one
  language.

### What can you do with it?

- **Reputation monitoring.** Collect the newest reviews of your places on a
  schedule. Use `reviewId` to skip the reviews that you already have.
- **Competitor benchmarking.** Compare ratings and review text across nearby
  businesses in one run.
- **Sentiment and topic analysis.** Feed the review text and sub-ratings such as
  food and service to your own model.
- **Complaint finding.** In Canada, sort by lowest rating and read the worst
  reviews first.
- **Owner reply audits.** In the US, find the reviews that got a reply, and read
  the replies.
- **Market research by language.** In Canada, read only the English or only the
  French reviews.
- **Full review archives.** Download every review of a business.
- **Lead research.** Find the businesses with low ratings, and the reviews that
  say why.

### What data does it extract?

| Data | When you get it |
|---|---|
| Review ID, rating, text, date | Every review. A star-only US rating has no text. |
| Title | When the review has one. In a sample of 550 US reviews, 58 had one. |
| Reviewer name | Every review that has one |
| Reviewer ID, source site, reply of the business | US only |
| Reviewer photo | When Yellow Pages sends one. Canada does, and the US and the UK can. |
| Helpful votes | US and Canada |
| Sub-ratings (food, service, and more) | US and Canada |
| The business: ID, name, link, address, coordinates, rating, rating count | On every review, and in the business row |
| Every field of the review as the country sends it | In `native` |
| The business row: status, reviews listed, reviews saved | One row for every business that you enter |

Yellow Pages does not send every field for every review. A field that it does
not send is `null`, or `[]` for `ratingAttributes`.

### Quick start

1. Pick the **Country**.
2. Add listing links or IDs to **Listing links or IDs**.
3. Set **Max reviews per business**. Use `0` to get all reviews.
4. Click **Start**. Download the results as JSON, CSV, Excel, or HTML.

The same input as JSON:

```json
{
  "country": "us",
  "businesses": ["https://www.yellowpages.com/new-york-ny/mip/nello-4654897"],
  "maxReviewsPerBusiness": 20
}
```

The reviews are in the default dataset. The business rows are in the second
dataset. Open the **Output** tab and choose **Businesses**. In the API, read it
from `storageIds.datasets.businesses` on the run.

### Examples by use case

**The newest reviews of a US business.** Use a link or the ID. This is the
default order:

```json
{
  "businesses": ["4654897"],
  "maxReviewsPerBusiness": 50
}
```

**Every review of a business.** Nello has 60 reviews:

```json
{
  "businesses": ["https://www.yellowpages.com/new-york-ny/mip/nello-4654897"],
  "maxReviewsPerBusiness": 0
}
```

**Several businesses in one run.** The reviews of each business come as one
block, in your order:

```json
{
  "businesses": [
    "https://www.yellowpages.com/new-york-ny/mip/nello-4654897",
    "467675667",
    "https://m.yp.com/austin-tx/mip/ars-rescue-rooter-473194899"
  ],
  "maxReviewsPerBusiness": 10
}
```

**The reviews of a business in the UK.** Yell serves up to about 20:

```json
{
  "country": "uk",
  "businesses": ["https://www.yell.com/biz/thai-edge-leeds-3390417/"],
  "maxReviewsPerBusiness": 0
}
```

**The worst reviews of a business in Canada.** Lowest rated first, in English:

```json
{
  "country": "ca",
  "businesses": ["https://www.yellowpages.ca/bus/Ontario/Burlington/Leggat/6146283.html"],
  "maxReviewsPerBusiness": 50,
  "sortBy": "lowest_rating",
  "language": "en"
}
```

**Only the French reviews in Canada:**

```json
{
  "country": "ca",
  "businesses": ["2103257"],
  "maxReviewsPerBusiness": 0,
  "language": "fr"
}
```

**Monitor new reviews.** Run this on a schedule. Use a limit that is larger than
the number of new reviews that you expect between two runs. Remove the reviews
that you already have with the `reviewId` field:

```json
{
  "country": "ca",
  "businesses": ["156059"],
  "sortBy": "newest",
  "maxReviewsPerBusiness": 100
}
```

### Choose the businesses

Put one or more entries in `businesses`. Each entry is a listing link or a
listing ID of the country that you picked. You can mix links and IDs in one run.

- **Link.** A business page link, such as
  `https://www.yellowpages.com/new-york-ny/mip/nello-4654897`. The host must be
  one of these:
  - United States: yellowpages.com or yp.com, also with a subdomain such as
    `m.yp.com`. The business profile pages, with `/bpp/` or `/bp/` in place of
    `/mip/`, work too. A link with `?lid=` works. The `lid` is not needed,
    because all listings of a business share its reviews.
  - United Kingdom: yell.com.
  - Canada: yellowpages.ca or pagesjaunes.ca.
  - A link without `https://` works.
- **Listing ID.** The number at the end of the link, such as `4654897`. It is a
  positive number without leading zeros. The ID `0` and an ID such as `04654897`
  stop the run at the start. The UK and Canada also accept the prefixed forms
  that the Yellow Pages Scraper gives: `uk_3390417` and `ca_156059`. A UK ID with
  an advert suffix, such as `uk_3390417_100041025313000070`, is the same business
  as `uk_3390417`.
- **Not found.** A business that does not exist. The log shows `does not exist
  on Yellow Pages`, and the business row has the status `not_found`. The other
  businesses still run.

The Actor reads the businesses in your order, so the reviews of each business
come as one block in that order. A business that you enter twice, in any two
forms, is read and saved once. A business that fails does not stop the others.
If every business fails, the run fails.

### Sort and filter by language (Canada)

Only Yellow Pages Canada has these options. The United States and the United
Kingdom serve one fixed order and all languages. In our checks, that order was
newest first. A `sortBy` or `language` other than the default stops a US or UK
run at the start.

`sortBy` sets the order of the Canada reviews. The default is `newest`.

| Value | Order |
|---|---|
| `newest` | Newest first. |
| `oldest` | Oldest first. |
| `highest_rating` | Highest rated first. |
| `lowest_rating` | Lowest rated first. |

`language` keeps the reviews in one language: `all` (the default), `en`, or `fr`.
For example, one business had 13 reviews: 9 in English and 4 in French. The
`reviewsListed` of the business row stays the total without the filter. When the
filter leaves no reviews, the status is `no_reviews`.

The Actor does not sort or filter the reviews itself. It sends your choice to the
site and saves the reviews in the order that the site returns them.

### Input reference

| Field | Type | Default | Description |
|---|---|---|---|
| `country` | string | `us` | `us` (yellowpages.com), `uk` (yell.com), or `ca` (yellowpages.ca). Links and IDs must match it. |
| `businesses` | string\[] | none | Listing links or IDs of the chosen country. Needs at least one. Two forms of one business count once. |
| `maxReviewsPerBusiness` | integer | `20` | Maximum reviews for each business. `0` collects all reviews. |
| `sortBy` | string | `newest` | Canada only: `newest`, `oldest`, `highest_rating`, or `lowest_rating`. |
| `language` | string | `all` | Canada only: `all`, `en`, or `fr`. |
| `proxyConfiguration` | object | Apify Proxy enabled | Optional connection settings managed by Apify. The default datacenter proxy works. |

These inputs stop the run at the start, with the message in quotes:

| Input | Message |
|---|---|
| No `businesses` | `businesses: Provide at least one business link or ID` |
| An entry in `businesses` that is not a listing link or ID of the country | `businesses.0: Not a US Yellow Pages listing link or ID: ...` |
| `sortBy` other than `newest` with `us` or `uk` | `sortBy: Only Canada can sort reviews; ...` |
| `language` other than `all` with `us` or `uk` | `language: Only Canada can filter reviews by language` |

The number in `businesses.0` is the place of the entry in your list, from 0.
Unknown input fields are ignored. Apify rejects a value of the wrong type before
the run starts. Examples are a negative or fractional `maxReviewsPerBusiness` and
a `sortBy` that is not in the list above.

<details>
<summary>Complete input example</summary>

This valid input shows how the fields fit together.

```json
{
  "country": "ca",
  "businesses": [
    "https://www.yellowpages.ca/bus/Ontario/Toronto/Bardi-s-Steak-House/156059.html",
    "6146283"
  ],
  "maxReviewsPerBusiness": 50,
  "sortBy": "highest_rating",
  "language": "all",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

</details>

### Output

Each item in the default dataset is one review. The **Overview** table shows the
review ID, business, country, rating, title, text, author, created time, helpful
votes, and the Yellow Pages link. Every field below is in every item. A field
without data is `null`, or `[]` for `ratingAttributes`.

Each item in the `businesses` dataset is one business. The **Overview** table
shows the ID, name, status, reviews listed, reviews saved, rating, rating count,
city, and the Yellow Pages link. The dataset has one item for each business that
you enter, also when the business has no reviews, does not exist, or failed.

#### Fields by topic

- **Review.** ID, rating, title, text, the reply of the business, and sub-ratings.
- **Date.** The created time (`createdAt`).
- **Reviewer.** Name, ID, photo, and the source site.
- **Votes.** The helpful count.
- **Business.** The business ID (`ypid`), name, and link.
- **Native.** Every field of the review as the country sends it.
- **Run.** The country and the UTC time at which the Actor saved the review.

#### Review example

This example is a 5-star review in the US with a reply of the business. It is
shortened. Square brackets mark values removed from the documentation.

<details>
<summary>Open the review JSON</summary>

```json
{
  "reviewId": "[review ID]",
  "country": "us",
  "ypid": "512719731",
  "businessName": "Urgent Leak Repair Dallas",
  "businessUrl": "https://www.yellowpages.com/dallas-tx/mip/urgent-leak-repair-dallas-512719731",
  "rating": 5,
  "title": null,
  "text": "[review text]",
  "createdAt": "2026-08-05T10:32:11.000Z",
  "authorName": "[reviewer name]",
  "authorId": "[reviewer ID]",
  "authorImageUrl": null,
  "helpfulCount": 1,
  "ownerReply": "[reply text]",
  "ratingAttributes": [
    { "name": "Expertise", "score": 5 },
    { "name": "Professionalism", "score": 5 },
    { "name": "Promptness", "score": 5 }
  ],
  "source": "YP.com",
  "native": {
    "authorName": "[reviewer name]",
    "authorUserId": "[reviewer ID]",
    "body": "[review text]",
    "createdAt": "2026-08-05T10:32:11+00:00",
    "id": "[review ID]",
    "images": [],
    "imageCount": 0,
    "rating": 5,
    "ratingAttributeScores": [{ "id": "1007", "name": "Expertise", "score": 5 }],
    "ratingResponse": {
      "id": "[reply ID]",
      "body": "[reply text]",
      "suppressed": false,
      "isDeleted": false,
      "verifiedBusinessOwner": true
    },
    "reviewSource": "YP.com",
    "subject": "",
    "thumbsUp": 1,
    "userInfo": { "user": { "displayName": "[reviewer name]" } }
  },
  "scrapedAt": "2026-10-22T15:31:00.018Z"
}
```

</details>

#### Field groups

| Group | Root fields |
|---|---|
| Review | `reviewId`, `rating`, `title`, `text`, `ownerReply`, `ratingAttributes` |
| Date | `createdAt` |
| Reviewer | `authorName`, `authorId`, `authorImageUrl`, `source` |
| Votes | `helpfulCount` |
| Business | `ypid`, `businessName`, `businessUrl` |
| Native | `native` |
| Run | `country`, `scrapedAt` |

<details>
<summary>Field types</summary>

**Root fields**

| JSON type | Root fields |
|---|---|
| string | `reviewId`, `country`, `ypid`, `scrapedAt` |
| string or `null` | `businessName`, `businessUrl`, `title`, `text`, `createdAt`, `authorName`, `authorId`, `authorImageUrl`, `ownerReply`, `source` |
| number or `null` | `rating`, `helpfulCount` |
| object\[] | `ratingAttributes` |
| object | `native` |

**Nested fields**

| Object | Field types |
|---|---|
| `ratingAttributes[]` | `name`: string, such as `Food` or `Service`; `score`: number or `null`. |

**Native fields by country**

`native` holds the review as the country sends it. The keys are in camelCase for
the US. The other two countries send them as shown.

| Country | Keys |
|---|---|
| US | `authorName`, `authorUpdatedAt`, `authorUserId`, `body`, `createdAt`, `currentUserMarkedHelpful`, `id`, `images`, `imageCount`, `isCommentingEnabled`, `promoId`, `rating`, `ratingAttributeScores`, `ratingResponse`, `reviewSource`, `subject`, `thumbsDown`, `thumbsUp`, `userInfo` |
| UK | `title`, `content`, `rating`, `listingid`, `reviewid`, `username`, `creationtimestamp`, and sometimes `avatarurl` and `avatarurls` |
| Canada | `id`, `rating`, `title`, `text`, `author`, `authorImage`, `date`, `subRatings`, `helpfulCount` |

</details>

#### Field notes

- `reviewId` is the Yellow Pages review ID. Use it to remove the reviews that you
  already have, for example when you run a monitor on a schedule.
- `ypid` is the business ID. It is a number for the US, `uk_<number>` for the UK,
  and `ca_<number>` for Canada. It is the same ID that the Yellow Pages Scraper
  gives.
- `createdAt` is an ISO 8601 date. Yellow Pages Canada gives the day only, so its
  value looks like `2025-12-01`.
- `text` keeps the line breaks that the writer typed. In Canada, 11 of 100
  sampled reviews had one. Other runs of white space become one space.
- `text` is `null` for a star-only rating. In a sample of 550 US reviews from 44
  businesses, 4 had no text.
- `title` is `null` when the review has none. 58 of the 550 US reviews had one.
- `authorId`, `source`, and `ownerReply` come from the US only. In the same
  sample, 10 reviews had a reply of the business, and `source` was `YP.com` for
  541 and `YPmobile` for 9.
- `ownerReply` is the text of the reply. The whole reply is in
  `native.ratingResponse`. A reply that Yellow Pages hid or deleted gives `null`.
- `helpfulCount` comes from the US and Canada. It was `null` for 525 of the 550
  US reviews.
- `ratingAttributes` come from the US (for example Food and Service; 457 of 550
  reviews had them) and Canada (`atmosphere`, `food`, `service`). Yell sends
  none.
- Some Canada titles are cut short by the site. The Actor saves them as the site
  sends them.
- A review that a page repeats is saved once.

#### Business row

```json
{
  "country": "ca",
  "ypid": "ca_6146283",
  "name": "Leggat",
  "yellowPagesUrl": "https://www.yellowpages.ca/bus/Ontario/Burlington/Leggat/6146283.html",
  "address": "850 Brant St",
  "city": "Burlington",
  "region": "ON",
  "postalCode": "L7R 2J5",
  "latitude": 43.3347373,
  "longitude": -79.8122995,
  "averageRating": 4.9,
  "ratingCount": 172,
  "reviewsListed": 152,
  "status": "ok",
  "reviewsSaved": 152,
  "scrapedAt": "2026-10-22T14:12:05.471Z"
}
```

`reviewsListed` is the review count that the listing shows. `reviewsSaved` is
the number of rows in the default dataset for this business. A business that does
not exist, or that failed, has only `country`, `ypid`, `status`, `reviewsSaved`,
and `scrapedAt`. A failed business also has `error`.

| `status` | Meaning |
|---|---|
| `ok` | The reviews were saved. `reviewsSaved` can be lower than `reviewsListed` when you set a maximum. |
| `no_reviews` | The business has no reviews, or your language filter matched none. |
| `reviews_unserved` | The listing shows reviews, but Yellow Pages did not serve them. This happens in the US. For the UK it is not confirmed yet. |
| `not_found` | The ID does not exist. |
| `failed` | The business could not be read after retries. `error` says why. |
| `cost_limit` | The maximum cost per run ran out. This business has fewer reviews than it could, or it was not read at all (`reviewsSaved` is `0` and it has no name). |

### FAQ

#### How many reviews can I get?

In the US there is no fixed limit. Set `maxReviewsPerBusiness` to `0` to get all
the reviews that Yellow Pages serves. In a sample of 200 businesses, 135 had no
reviews, and the most was 305. In the UK, Yell serves up to about 20 reviews per
business. In Canada, yellowpages.ca serves every written review. Its star-only
ratings count in `ratingCount`, but the site does not serve them.

#### Why did I get fewer reviews than `ratingCount`?

`maxReviewsPerBusiness` is an upper limit, and it is 20 by default. Also, some
ratings exist only as counts. Yellow Pages does not serve them as reviews. For
example, a US business can show 113 ratings and have no reviews. The Yellow Pages
app shows the same empty list. The business row shows both numbers.

#### Why do I get no more than about 20 reviews in the UK?

Yell serves one page of its reviews, up to about 20, and has no way to ask for
the next page. For example, a listing with 32 reviews returned 20 when asked for
300\. The business row shows `reviewsListed` 32 and `reviewsSaved` 20.

#### Why do some reviews have no text?

They are star-only ratings in the US. The Actor saves them with the reviews, so
you get every rating that Yellow Pages serves. In Canada, the site serves written
reviews only.

#### Why can I not sort US or UK reviews?

The Yellow Pages apps for those countries have no sort and no filter for reviews.
Only Yellow Pages Canada has them, so the Actor offers them for Canada only and
does not pretend to sort the others.

#### How do I get only the new reviews?

The Actor has no date filter. Run it on a schedule with a limit that is larger
than the number of new reviews between two runs. Remove the reviews that you
already have with the `reviewId` field, or keep the reviews with a `createdAt`
after your last run.

#### How do I find the link or listing ID?

Open the business on the Yellow Pages site and copy the address from the browser.
Or run the [Yellow Pages Scraper](https://apify.com/kaix/yellowpages-scraper) and
use `ypid` or `yellowPagesUrl`.

#### Can I find businesses by location or category?

This Actor needs the business link or ID. To search by term and location, use the
[Yellow Pages Scraper](https://apify.com/kaix/yellowpages-scraper).

#### What happens if a business fails?

The Actor writes a `failed` row with the reason and goes on with the next
business. The log shows `Failed to collect business` with the listing ID. If every
business fails, the run fails.

#### What happens if the run restarts?

A run can move to another server. The Actor keeps a `PROGRESS` record in the
run's key-value store and skips the businesses that it already stored, so you
are not charged twice for them. The count is saved after each business, at most
once a second. After a crash, the businesses of the last second and the one in
progress can be stored twice. If you resurrect a run with another input, it
starts over.

#### How much does it cost?

You pay for each saved review and for the start of the run. A review costs
$0.00005 on the Free and Bronze plans and $0.00004 on higher plans, which is
$0.05 or $0.04 per 1,000 reviews. The start costs $0.00005 for each GB of memory.
The Actor uses 256 MB by default. The business rows are free.

#### How do I stop at a cost?

Set the maximum cost per run in the Apify run options. The Actor stops when the
limit is reached. It writes `cost_limit` for the business it stopped in and for
each business after it, so every business you entered has one row. You pay only
for the reviews that were saved.

#### A feature or field that I need is missing. What can I do?

Tell us in the **Issues** tab. Describe what you need and give an example
business.

#### Where can I report a problem?

Open an issue in the **Issues** tab. Include the run ID and the input, so that we
can reproduce it.

### Similar Actors

- [Yellow Pages Scraper](https://apify.com/kaix/yellowpages-scraper). Yellow Pages
  businesses with every field, from links, IDs, or a search by term and location.
- [Yelp Reviews Scraper](https://apify.com/kaix/yelp-reviews-scraper). Yelp
  reviews and business details from business URLs, aliases, or business IDs.
- [Yelp Business Scraper](https://apify.com/kaix/yelp-business-scraper). Yelp
  businesses with ratings, hours, categories, attributes, photos, and reviews.
- [Google Maps Reviews Scraper](https://apify.com/kaix/google-maps-reviews-scraper).
  Google Maps reviews with place context, from place URLs or Place IDs.
- [TripAdvisor Reviews](https://apify.com/kaix/tripadvisor-reviews-scraper).
  TripAdvisor reviews for restaurants, hotels, attractions, and cruises.
- [Trustpilot Reviews Scraper](https://apify.com/kaix/trustpilot-reviews-scraper).
  Trustpilot reviews and business profiles.

# Actor input Schema

## `country` (type: `string`):

Which Yellow Pages to read. The United States is yellowpages.com. The United Kingdom is yell.com. Canada is yellowpages.ca. Links and IDs must match the country you pick.

## `businesses` (type: `array`):

Listing links or IDs for the country above. US: https://www.yellowpages.com/new-york-ny/mip/nello-4654897 or 4654897. UK: https://www.yell.com/biz/thai-edge-leeds-3390417/ or 3390417. Canada: https://www.yellowpages.ca/bus/Ontario/Toronto/Bardi-s-Steak-House/156059.html or 156059. The `ypid` and `yellowPagesUrl` of the Yellow Pages Scraper work too.

## `maxReviewsPerBusiness` (type: `integer`):

The most reviews to collect for each business. Use 0 for all. Yell serves at most about 20 reviews for a UK business.

## `sortBy` (type: `string`):

Canada only. The United States and the United Kingdom have one fixed order, and any other choice fails the run.

## `language` (type: `string`):

Canada only. Keep the reviews in one language. The United States and the United Kingdom serve all languages, and any other choice fails the run.

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

Proxy settings. The default Apify datacenter proxy works.

## Actor input object example

```json
{
  "country": "us",
  "businesses": [
    "https://www.yellowpages.com/new-york-ny/mip/nello-4654897"
  ],
  "maxReviewsPerBusiness": 20,
  "sortBy": "newest",
  "language": "all",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `reviews` (type: `string`):

No description

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

No description

# 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 = {
    "businesses": [
        "https://www.yellowpages.com/new-york-ny/mip/nello-4654897"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("kaix/yellowpages-reviews-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 = {
    "businesses": ["https://www.yellowpages.com/new-york-ny/mip/nello-4654897"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("kaix/yellowpages-reviews-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 '{
  "businesses": [
    "https://www.yellowpages.com/new-york-ny/mip/nello-4654897"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call kaix/yellowpages-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,kaix/yellowpages-reviews-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/VOC9DruP5aLBpfpHK/builds/8mZNnyt1um5s9yMJN/openapi.json
