# Yelp Reviews Scraper: Reviews, Ratings and Owner Replies (`themineworks/yelp-reviews-scraper`) Actor

Scrape Yelp reviews by business link, alias or name and city: text, stars, date, reviewer, photos and the owner reply, newest first, with star and date filters. Plus one row per business with rating, review count, stars breakdown, categories and address. No login, no browser.

- **URL**: https://apify.com/themineworks/yelp-reviews-scraper.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.90 / 1,000 reviews

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

## Yelp Reviews Scraper: Reviews, Ratings and Owner Replies

[![500 Yelp reviews from 5 businesses in 28 seconds, with stars, reviewer and owner reply](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/yelp-reviews-scraper-hero.png)](https://console.apify.com/actors/ahKhOxn6POeBWWGc7/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

From **The Mine Works**, makers of [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) and [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), with over 245,000 runs across 280+ public actors.

Yelp Reviews Scraper returns Yelp reviews with text, stars, date, reviewer, photos and the owner's reply, plus one profile row per business with its rating and star breakdown, for businesses, agencies and analysts who track reputation, complaints and competitors on Yelp.

Updated 27 Oct 2026: first release. Yelp business links, aliases, ids, or a business name with its city; one profile row per business with rating, review count and the count per star; its reviews newest first with text, stars, date, reviewer, photos, reactions and the owner's public reply. Bookmark this Actor on its Store page so it is one click away next time.

What it does not include: phone numbers, websites, opening hours and claimed status are not in the output, and it does not search Yelp by keyword or category. Bring the businesses you want to track, by link or by name and city.

### Why choose this actor?

- **Reviews and the business in one run.** Every business gets a profile row with its rating, total reviews and the number of 5, 4, 3, 2 and 1 star reviews, then its reviews as rows you can sort and filter. Each review row repeats the business id, name and link, so the review rows work on their own in a sheet.
- **The owner reply next to the review.** `has_owner_reply`, the reply text, its date and who replied (for example `CUSTOMER_SERVICE`). In our test of 500 reviews from 5 businesses, 107 had a public reply. Useful to see which complaints a business answers and how fast.
- **Pay per row, nothing for errors.** Links that are not Yelp businesses, names Yelp does not know, duplicates and the summary row are never charged. No Yelp account, cookies, API key or browser.

[![Run it on Apify](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/button-run.png)](https://console.apify.com/actors/ahKhOxn6POeBWWGc7/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Part of The Mine Works Marketing, SEO and reviews family:** [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Google News Scraper](https://apify.com/themineworks/google-news?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Trustpilot Reviews Scraper](https://apify.com/themineworks/trustpilot-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Google Trends Scraper](https://apify.com/themineworks/google-trends-pro?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

Guide and FAQs: [Yelp Reviews Scraper on themineworks.com](https://themineworks.com/actors/yelp-reviews-scraper/).

### Try it in one minute

Paste this into the input (JSON view) and press Start. It returns the profile of Prince Street Pizza in New York and its 20 newest reviews. It took 5 seconds in our test run:

```json
{
  "businessUrls": ["https://www.yelp.com/biz/prince-street-pizza-new-york-2"],
  "maxReviewsPerBusiness": 20
}
```

Put several links on separate lines to read several businesses at once, or put "Name, City" lines in `businessNames`. A business you give twice is read and charged once.

Apify's free plan includes $5 of credit every month, which covers about 2,700 reviews at this actor's price.

#### Copy to your AI assistant

```text
themineworks/yelp-reviews-scraper on Apify. Reads Yelp businesses you name and returns one profile row per business (rating, review count, count per star, categories, street, city, state, price range) and its reviews (text, stars, date, reviewer, photos, reactions, owner reply), with no login. It has no phone, website, opening hours or claimed status, and no keyword search. Call ApifyClient("TOKEN").actor("themineworks/yelp-reviews-scraper").call(run_input={"businessUrls": ["https://www.yelp.com/biz/prince-street-pizza-new-york-2"], "maxReviewsPerBusiness": 100}), then client.dataset(run["defaultDatasetId"]).list_items().items. Give businessUrls (Yelp business links, aliases such as prince-street-pizza-new-york-2, or 22 character business ids) and/or businessNames ("Business name, City, ST", the first comma splits name and place); up to 2000 businesses per run. Optional: maxReviewsPerBusiness (default 20, 0 to 10000, 0 = profile row only), sortBy (newest default, oldest, relevance, highest, lowest), reviewsNewerThan (date YYYY-MM-DD, reads newest first and stops at the first older review), starRatings (list of "1" to "5"), reviewLanguage (all default, or a two letter code). Every data row has record_type "business" or "review". Business rows carry business_id, alias, name, url, categories, address, city, state, price_range, rating, review_count, stars_5, stars_4, stars_3, stars_2, stars_1, reviews_by_language, photo_url, input, matched_by, name_match_score, scraped_at. Review rows carry review_id, business_id, business_alias, business_name, business_url, review_url, rating, text, language, date, local_date, reviewer_id, reviewer_name, reviewer_location, reviewer_review_count, reviewer_friend_count, reviewer_photo_count, reviewer_elite_year, reviewer_url, reviewer_photo_url, photos_count, photo_urls, videos_count, reactions_helpful, reactions_thanks, reactions_love_this, reactions_oh_no, check_in_count, is_first_review_of_business, is_review_of_the_day, previous_reviews_count, has_owner_reply, owner_reply_text, owner_reply_date, owner_reply_name, owner_reply_role, position, sort_by, scraped_at. Each run also writes one row with _type "summary", one with _type "info" when rows were delivered, and a row with _type "error" for each input that could not be read; none of these is charged. Full spec: GET https://api.apify.com/v2/acts/themineworks~yelp-reviews-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
```

### Key features

- **Links, aliases, ids or names.** A Yelp business link from any Yelp country site, the mobile site, or a link to one review, photo page or menu of the business; the alias after `/biz/`; the 22 character business id; or "Name, City". Up to 2,000 businesses per run.
- **Name and city lookups.** Each "Name, City" line goes through Yelp's own business suggestions for that place and the closest name is taken. `name_match_score` says how close (1 means every word you gave is in Yelp's name). When nothing is close, the error row lists the businesses Yelp offered, so you can pick the right one.
- **Newest first, or the order you choose.** Newest, oldest, Yelp's own relevance order, highest or lowest rated first. Up to 10,000 reviews per business, read up to 49 at a time.
- **Only new reviews on a schedule.** Set `reviewsNewerThan` and each business stops at its first older review, so a weekly run fetches and charges only that week's reviews.
- **Star filter on Yelp's side.** Pick 1 and 2 stars to collect complaints only. The filter runs before the reviews are sent, so you pay only for matching reviews.
- **Every language.** By default English reviews come first, then each other language the business has, from most to fewest reviews; `reviews_by_language` on the profile row has the counts. Or pick one language.
- **Stops cleanly.** 8 failed requests in a row end the run; the run stops before its time limit and keeps every row. The summary row says why it stopped.

### How to use it

#### Reputation report for your locations

```json
{
  "businessUrls": [
    "https://www.yelp.com/biz/katzs-delicatessen-new-york",
    "https://www.yelp.com/biz/franklin-barbecue-austin"
  ],
  "maxReviewsPerBusiness": 200
}
```

The profile rows give rating and the star breakdown per location; the review rows give the text to read. Filter on `has_owner_reply: false` and `rating` 1 or 2 to find complaints nobody answered.

#### Find businesses from a list of names

```json
{
  "businessNames": ["Katz's Delicatessen, New York, NY", "Franklin Barbecue, Austin, TX", "Roto-Rooter, Denver, CO"],
  "maxReviewsPerBusiness": 0
}
```

Paste a column from your CRM or spreadsheet. With `maxReviewsPerBusiness` at 0 you get only the profile rows: Yelp link, rating, review count, stars breakdown, categories, street, city and price range. Each row keeps your original line in `input` and the match quality in `name_match_score`.

#### Weekly new reviews

```json
{
  "businessUrls": ["https://www.yelp.com/biz/prince-street-pizza-new-york-2"],
  "maxReviewsPerBusiness": 500,
  "reviewsNewerThan": "2026-10-20"
}
```

Run it on a schedule and move the date each week (or use a task per location). The business stops at the first review older than the date.

#### Complaints only, across competitors

```json
{
  "businessUrls": ["prince-street-pizza-new-york-2", "katzs-delicatessen-new-york"],
  "starRatings": ["1", "2"],
  "maxReviewsPerBusiness": 100
}
```

Up to 100 one and two star reviews per business, newest first, for complaint themes and service gaps.

### Input parameters

| Parameter | Type | Default | What it does |
|---|---|---|---|
| `businessUrls` | array of strings | empty | Yelp business links, aliases or 22 character business ids. |
| `businessNames` | array of strings | empty | "Business name, City, ST" lines, matched through Yelp's business suggestions. |
| `maxReviewsPerBusiness` | integer | `20` | Most reviews per business, 0 to 10,000. 0 returns the profile row only. |
| `sortBy` | string | `newest` | `newest`, `oldest`, `relevance`, `highest` or `lowest`. |
| `reviewsNewerThan` | date | none | Only reviews on or after this date; reads newest first. |
| `starRatings` | array | all | Star ratings to include, `"1"` to `"5"`. |
| `reviewLanguage` | string | `all` | `all`, or a two letter code such as `en`, `es`, `fr`. |

Give `businessUrls`, `businessNames` or both. Up to 2,000 businesses per run.

### What data do you get?

Two kinds of data rows, told apart by `record_type`: one `business` row per business, then its `review` rows. Data rows have no `_type` field; the summary, info and error rows do, so a filter on `_type` separates them.

**Not included:** phone number, website, opening hours, claimed status, amenities, menus and business photos beyond the main one. Yelp shows those on its business pages, which this actor does not open. It also does not search Yelp by keyword, category or area. For phone numbers and websites of local businesses use [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

**Business rows** (`record_type: "business"`):

| Field | What it is |
|---|---|
| `business_id`, `alias`, `name`, `url` | The business on Yelp |
| `categories` | Yelp categories, e.g. `Barbeque` |
| `address`, `city`, `state` | Street, city and state or province code (street is empty for service area businesses) |
| `price_range` | e.g. `$$$` |
| `rating`, `review_count` | Rating out of 5 and total reviews |
| `stars_5`, `stars_4`, `stars_3`, `stars_2`, `stars_1` | Number of reviews per star |
| `reviews_by_language` | Recommended reviews per language, e.g. `{"en": 6480, "es": 8}` |
| `photo_url` | Main business photo |
| `input`, `matched_by`, `name_match_score` | Your original value, how it was found (`link`, `alias`, `business_id`, `name`) and the name match score for name lookups |

**Review rows** (`record_type: "review"`):

| Field | What it is |
|---|---|
| `review_id`, `review_url` | The review and a link that opens it on Yelp |
| `business_id`, `business_alias`, `business_name`, `business_url` | The business it is about |
| `rating`, `text`, `language` | Stars (1 to 5), the full text and its language |
| `date`, `local_date` | When it was posted, in UTC and in the business time zone |
| `reviewer_id`, `reviewer_name`, `reviewer_location`, `reviewer_url`, `reviewer_photo_url` | The reviewer as Yelp shows them, e.g. `Mike S.`, `Yucca Valley, CA` |
| `reviewer_review_count`, `reviewer_friend_count`, `reviewer_photo_count`, `reviewer_elite_year` | How active the reviewer is on Yelp, and their latest Elite year |
| `photos_count`, `photo_urls`, `videos_count` | Photos and videos attached to the review |
| `reactions_helpful`, `reactions_thanks`, `reactions_love_this`, `reactions_oh_no` | Reactions from other Yelp users |
| `check_in_count`, `is_first_review_of_business`, `is_review_of_the_day`, `previous_reviews_count` | Review tags; `previous_reviews_count` above 0 means the reviewer updated an earlier review |
| `has_owner_reply`, `owner_reply_text`, `owner_reply_date`, `owner_reply_name`, `owner_reply_role` | The business's public reply |
| `position`, `sort_by`, `scraped_at` | Place in the order you chose, the order, when the row was written |

**Summary row** (`_type: "summary"`, never charged): `businesses_requested`, `businesses_found`, `businesses_not_found`, `duplicates_skipped`, `invalid_inputs`, `businesses_delivered`, `reviews_delivered`, `charged_businesses`, `charged_reviews`, `review_pages_read`, `http_requests`, `http_megabytes`, `stopped_by_max_cost`, `stopped_by_block_guard`, `shortfall_reason` when the run stopped early, and `per_business`, one entry per business with `reviews_available`, `reviews_delivered` and why it `stopped`. The same summary is saved as the `OUTPUT` record of the run.

**Error rows** (`_type: "error"`, never charged): one per input that could not be read, with `error_type` (`invalid_input`, `not_found`, `no_close_match`, `blocked`, `fetch_error`), `identifier`, `reason`, and `candidates` for a name with no close match.

#### Stable fields for automations

These were present in every row of their kind in our test runs (5 businesses, 500 reviews), and their names will not change:

| Field | What it is |
|---|---|
| `record_type` | `business` or `review` |
| `business_id` | The business key, on both row kinds |
| `name`, `url`, `rating`, `review_count` | Business rows |
| `stars_5` to `stars_1` | Business rows |
| `review_id` | The review key |
| `rating`, `text`, `date` | Review rows |
| `reviewer_name`, `reviewer_location` | Review rows |
| `photos_count`, `has_owner_reply` | Review rows |
| `scraped_at` | When the row was written |

Optional, present only when Yelp has a value: `address` (empty for service area businesses), `price_range`, `reviewer_elite_year` (255 of 500 test reviews), `reviewer_photo_url` (400 of 500), the `owner_reply_*` fields (107 of 500), `name_match_score` (name lookups only).

#### Output examples

A business row (test run, 27 Oct 2026):

```json
{
  "record_type": "business",
  "business_id": "MGzro82Fi4LYvc86acoONQ",
  "alias": "franklin-barbecue-austin",
  "name": "Franklin Barbecue",
  "url": "https://www.yelp.com/biz/franklin-barbecue-austin",
  "categories": ["Barbeque"],
  "address": "900 E 11th St",
  "city": "Austin",
  "state": "TX",
  "price_range": "$$$",
  "rating": 4.5,
  "review_count": 6494,
  "stars_5": 4667,
  "stars_4": 1030,
  "stars_3": 391,
  "stars_2": 209,
  "stars_1": 199,
  "reviews_by_language": { "en": 6480, "es": 8, "de": 3, "ja": 2, "da": 2, "tr": 1 },
  "input": "https://www.yelp.com/biz/franklin-barbecue-austin",
  "matched_by": "link"
}
```

A review row with the owner's reply (same day, trimmed):

```json
{
  "record_type": "review",
  "review_id": "sWlBAGzmZVs5pskECtWLzQ",
  "business_name": "Prince Street Pizza",
  "review_url": "https://www.yelp.com/biz/prince-street-pizza-new-york-2?hrid=sWlBAGzmZVs5pskECtWLzQ",
  "rating": 4,
  "text": "I was told to try this place out by a friend & I was not disappointed! ...",
  "language": "en",
  "date": "2026-09-24T10:40:48Z",
  "reviewer_name": "Rebecca C.",
  "reviewer_location": "San Antonio, TX",
  "reviewer_review_count": 150,
  "reviewer_elite_year": 2026,
  "photos_count": 1,
  "has_owner_reply": true,
  "owner_reply_text": "Thank You Rebecca",
  "owner_reply_date": "2026-10-04T02:10:04Z",
  "owner_reply_name": "Edgar T.",
  "owner_reply_role": "CUSTOMER_SERVICE",
  "position": 10,
  "sort_by": "newest"
}
```

The summary row of the 5 business test run, trimmed:

```json
{
  "_type": "summary",
  "businesses_requested": 5,
  "businesses_found": 5,
  "businesses_delivered": 5,
  "reviews_delivered": 500,
  "charged_businesses": 5,
  "charged_reviews": 500,
  "review_pages_read": 15,
  "http_requests": 25,
  "per_business": [
    { "input": "https://www.yelp.com/biz/katzs-delicatessen-new-york", "name": "Katz's Delicatessen", "reviews_available": 16913, "reviews_delivered": 100, "stopped": "max_reviews_reached" }
  ]
}
```

An error row for a name Yelp does not know (nothing charged):

```json
{ "_type": "error", "error_type": "not_found", "identifier": "Joes Plumbing Supreme, Austin, TX", "reason": "Yelp has no business called \"Joes Plumbing Supreme\" near \"Austin, TX\"." }
```

### Pricing

Pay per event: you pay for the reviews and business rows you receive, plus a flat $0.001 per run, whatever memory you choose.

| Event | When it is charged | Free plan | Bronze (Starter) | Silver (Scale) | Gold (Business) |
|---|---|---|---|---|---|
| `review-scraped` | Once per review row stored in your dataset | $1.80 per 1,000 | $1.35 per 1,000 | $1.13 per 1,000 | $0.90 per 1,000 |
| `business-scraped` | Once per business profile row stored in your dataset | $1.80 per 1,000 | $1.35 per 1,000 | $1.13 per 1,000 | $0.90 per 1,000 |
| `run-start` | Once per run, after the first row is stored | $0.001 | $0.001 | $0.001 | $0.001 |

The price of one row is the price per 1,000 divided by 1,000.

Never charged:

- inputs that are not Yelp businesses, and businesses or names Yelp does not know (each gets an error row);
- a business you give twice in the same run (two links, or a link and a name);
- reviews past your `maxReviewsPerBusiness`, older than `reviewsNewerThan`, or outside your `starRatings`;
- the summary, info and error rows;
- a run that stores no row: the start fee is charged only after the first one;
- anything past your "Max cost per run". The actor checks the budget before each batch of rows and stops while the total is still below your limit, so the run ends SUCCEEDED with a partial result and a status message saying so.

### Run it on a schedule

1. Open the actor in Apify Console, set your input and click **Save as a new task**.
2. In the task, open **Schedules**, click **Add schedule** and pick how often (every Monday at 08:00, every day and so on).
3. Set `reviewsNewerThan` to the date of the last run, or compare runs on `review_id` to keep only new reviews; compare `rating` and `review_count` on the business rows to track a location over time.
4. Optional: add an integration (Google Sheets, Slack, a webhook) so each run lands where your team works.

### FAQ

#### What does this actor read?

Yelp's public review and rating data for the businesses you give, as anyone sees it without logging in. It does not log in, does not open Yelp's business pages and does not read anything behind a sign in.

#### Why are phone, website and opening hours missing?

Yelp shows them on its business pages, which this actor does not open, so they are not in the output. The profile row has what Yelp's review data carries: name, categories, street, city, state, price range, rating, review count and the star breakdown. For phones and websites of local businesses, run the business names through [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

#### Can I search Yelp for "plumbers in Austin"?

No. This actor reads the businesses you name, by link, alias, id or name and city. Build the list first (from your CRM, Google Maps, or Yelp in your browser), then paste it in.

#### How does the name and city lookup choose a business?

It asks Yelp for the businesses it suggests for that name near that place and takes the first one whose name contains your words; `name_match_score` is the share of your words found. A chain gives the location Yelp ranks first for that place (Roto-Rooter, Denver, CO returned the Lakewood branch in our test), so for a specific branch paste its link instead.

#### Which reviews are included?

The reviews Yelp recommends and shows on the business page, in every language unless you pick one. Reviews Yelp lists as "not currently recommended" are not included.

#### How many reviews can I get?

Up to 10,000 per business and 2,000 businesses per run. Yelp serves them 49 at a time; 100 reviews take 3 pages. In our test, 5 businesses with 100 reviews each took 28 seconds.

#### How long does a run take?

In our tests: 5 seconds for the "Try it" input (1 business, 20 reviews), 28 seconds for 5 businesses with 100 reviews each, and 11 seconds for 5 profile rows only. The default time limit is 3,600 seconds; the actor stops before it and keeps every row.

#### Do I need a Yelp account, cookies or an API key?

No. The actor reads public data over Apify Proxy, which is included.

#### Can I use it from Claude, ChatGPT or Cursor (MCP)?

Yes, through Apify's MCP server. Connector URL: https://mcp.apify.com/?tools=themineworks/yelp-reviews-scraper

- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: turn on developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code: `claude mcp add -t http yelp-reviews-scraper "https://mcp.apify.com/?tools=themineworks/yelp-reviews-scraper"`

#### Which formats can I download?

JSON, CSV, Excel, XML, RSS and HTML from the run's Storage tab or through the API. The dataset has three ready views: Reviews, Businesses, and Reviewers and replies. In CSV and Excel, `categories`, `photo_urls` and `reviews_by_language` are flattened into columns such as `categories/0`.

#### Is it legal to scrape Yelp reviews?

The actor reads only reviews and ratings that anyone can see on Yelp without logging in. Reviewer names are shown as Yelp shows them (first name and last initial) and are personal data under laws such as the GDPR and CCPA: keep only what you need and use it for a legitimate purpose. You are responsible for how you use the data and for Yelp's terms. This is general information, not legal advice. Yelp is a trademark of Yelp Inc.; this actor is independent and not affiliated with it.

### Integrations

- **Google Sheets**: send each run's rows to a sheet with Apify's Google Sheets integration; filter on `record_type` to split businesses and reviews into two tabs.
- **Make, Zapier and n8n**: start a run and read its dataset with the Apify apps and nodes, for example "new 1 and 2 star Yelp reviews every morning to Slack".
- **Clay and AI agents**: call it once per business with one link or one "Name, City" line; the profile row comes back first.
- **Webhooks**: have Apify call your URL when a run succeeds, then fetch the dataset.
- **API and SDKs**: run it from Python or JavaScript with the Apify client, or with a plain HTTP call (see "Copy to your AI assistant" above).
- **MCP clients**: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.

### More from The Mine Works

**Marketing, SEO and reviews**

- [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google News Scraper](https://apify.com/themineworks/google-news?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Trustpilot Reviews Scraper](https://apify.com/themineworks/trustpilot-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Trends Scraper](https://apify.com/themineworks/google-trends-pro?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Semrush Scraper](https://apify.com/themineworks/semrush-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [App Reviews Scraper](https://apify.com/themineworks/app-reviews-monitor?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Trustpilot Business Search](https://apify.com/themineworks/trustpilot-business-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [TripAdvisor Reviews Scraper](https://apify.com/themineworks/tripadvisor-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Username Checker](https://apify.com/themineworks/username-checker?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Backlink Building Agent](https://apify.com/themineworks/backlink-building-agent?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Social media and video**

- [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Leads and business directories**

- [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Skip Trace Lookup](https://apify.com/themineworks/skip-trace-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [2GIS Places Scraper](https://apify.com/themineworks/2gis-places-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**LinkedIn**

- [LinkedIn Company Scraper](https://apify.com/themineworks/linkedin-company-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Post Scraper](https://apify.com/themineworks/linkedin-post-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Profile Scraper](https://apify.com/themineworks/linkedin-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Real estate**

- [Zillow Rentals Scraper](https://apify.com/themineworks/zillow-rental-listings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Sold Comps Scraper](https://apify.com/themineworks/zillow-recently-sold?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Science, health and government data**

- [Academic Research MCP](https://apify.com/themineworks/academic-research-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [CourtListener Scraper](https://apify.com/themineworks/courtlistener-court-records?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Socrata Open Data Scraper](https://apify.com/themineworks/socrata-open-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [OpenAlex Scraper](https://apify.com/themineworks/openalex-scholarly-works?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Jobs and hiring**

- [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Company and business data**

- [Company Domain Finder](https://apify.com/themineworks/company-domain-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GST Taxpayer Lookup](https://apify.com/themineworks/gst-taxpayer-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Company KYB Resolver](https://apify.com/themineworks/company-identity-resolver?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [SEC EDGAR Filings Scraper](https://apify.com/themineworks/sec-edgar-filings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**E-commerce and marketplaces**

- [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Etsy Listings Scraper](https://apify.com/themineworks/etsy-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Food and local services**

- [NoBroker Scraper](https://apify.com/themineworks/nobroker-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Swiggy Restaurant Scraper](https://apify.com/themineworks/swiggy-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zomato Scraper](https://apify.com/themineworks/zomato-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Developer and AI tools**

- [Website to Markdown Crawler](https://apify.com/themineworks/rag-crawler?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Skill Finder](https://apify.com/themineworks/github-skill-discovery?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Repo Scraper](https://apify.com/themineworks/github-repo-intelligence?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Trending Scraper](https://apify.com/themineworks/github-trending-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**More tools**

- [G2 Reviews Scraper](https://apify.com/themineworks/g2-reviews-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naver Blog Scraper](https://apify.com/themineworks/naver-blog-posts-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [WeChat Article Scraper 微信公众号文章](https://apify.com/themineworks/wechat-article-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Taobao Products Scraper 淘宝 天猫](https://apify.com/themineworks/taobao-products-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

### Support

Found a business the actor could not read, or a review field that comes back empty? Open an issue in the Issues tab with the input and the run ID, and we will look at it. For a field you need or a new source, email dmineworks@gmail.com.

*Give Yelp business links or names and get each business back as one row with rating and star breakdown, then its reviews newest first with text, reviewer, photos and the owner's reply, no login.*

# Actor input Schema

## `businessUrls` (type: `array`):

One per line. A link such as https://www.yelp.com/biz/prince-street-pizza-new-york-2 (any Yelp country site, the mobile site and links to a review or the menu work too), the alias prince-street-pizza-new-york-2, or the 22 character business id zj8Lq1T8KIC5zwFief15jg. Up to 2,000 businesses per run.

## `businessNames` (type: `array`):

One per line: the business name, a comma, then the city, for example Katz's Delicatessen, New York, NY or Franklin Barbecue, Austin, TX. Yelp's own business suggestions are used and the closest name is taken; name_match_score on the row says how close it was. A name with no close match gets an error row with the candidates Yelp offered.

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

The most reviews to return for each business, 0 to 10,000. 0 returns the profile row only (rating, review count, count per star, categories, address). Example: 100.

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

The order Yelp returns reviews in. Newest first is the default and the one to use for monitoring.

## `reviewsNewerThan` (type: `string`):

A date such as 2026-09-01. Reviews are read newest first and the business stops at the first older review, so a weekly run fetches only the new ones. When set, Review order is newest first.

## `starRatings` (type: `array`):

Leave empty for all reviews. Pick 1 and 2 to collect only negative reviews, for example. The filter runs on Yelp's side, so you only pay for matching reviews.

## `reviewLanguage` (type: `string`):

all (default) reads English reviews first, then each other language the business has, from most to fewest reviews. A two letter code such as en, es, fr or de reads that language only.

## Actor input object example

```json
{
  "businessUrls": [
    "https://www.yelp.com/biz/prince-street-pizza-new-york-2"
  ],
  "maxReviewsPerBusiness": 20,
  "sortBy": "newest",
  "reviewLanguage": "all"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (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 = {
    "businessUrls": [
        "https://www.yelp.com/biz/prince-street-pizza-new-york-2"
    ],
    "maxReviewsPerBusiness": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/yelp-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 = {
    "businessUrls": ["https://www.yelp.com/biz/prince-street-pizza-new-york-2"],
    "maxReviewsPerBusiness": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/yelp-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 '{
  "businessUrls": [
    "https://www.yelp.com/biz/prince-street-pizza-new-york-2"
  ],
  "maxReviewsPerBusiness": 20
}' |
apify call themineworks/yelp-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,themineworks/yelp-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/ahKhOxn6POeBWWGc7/builds/JUTCfLUg2CQIlmuG7/openapi.json
