Yelp Reviews Scraper & Monitor: Owner Replies, All Languages avatar

Yelp Reviews Scraper & Monitor: Owner Replies, All Languages

Pricing

$0.25 / 1,000 review saveds

Go to Apify Store
Yelp Reviews Scraper & Monitor: Owner Replies, All Languages

Yelp Reviews Scraper & Monitor: Owner Replies, All Languages

Scrape Yelp reviews from business URLs, names or searches: full text, stars, date, owner replies, photos, Elite reviewer stats and the star breakdown. Get the full history in every language, or schedule it to get only new reviews. $0.25 per 1,000 reviews.

Pricing

$0.25 / 1,000 review saveds

Rating

0.0

(0)

Developer

Epic Scrapers

Epic Scrapers

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

7 days ago

Last modified

Share

Yelp Reviews Scraper: full review history, owner replies, every language, and only new reviews on repeat runs

Yelp Reviews Scraper exports the reviews of any Yelp business to a spreadsheet: the full text, star rating, date, photos, the owner's public reply, the reviewer's profile and Elite status, and the business's star breakdown. Give it business URLs, business names or a Yelp search, and get one clean row per review.

  • Only new reviews on repeat runs. Turn on Only new reviews, save the input as a task and schedule it. The first run collects the history; every later run returns only reviews posted or edited since the last one, and you pay only for those. Most Yelp review scrapers start from zero every time.
  • The full history, in every language. The Yelp app shows one language at a time. This actor collects all of them and merges them into one list sorted by date, so a business with 13,000 reviews in 11 languages comes back complete.
  • Owner replies and edits. Every row says whether the business replied, with the reply text and who wrote it. If a reviewer edited their review, the earlier versions and their star ratings come with it.
  • Fast. In our tests a full history of 13,183 reviews took under 2 minutes, and a daily check of a few businesses takes seconds.
  • $0.25 per 1,000 reviews, no start fee. No Yelp account, API key or proxy setup. Export to JSON, CSV, Excel or Google Sheets, or use the API.

What can you do with Yelp Reviews Scraper?

GoalHow
Monitor your own locationsSchedule your business URLs with Only new reviews on, and send new reviews to Slack, email or a spreadsheet.
Answer reviews fasterSort by lowest or filter to 1 and 2 stars, then check hasOwnerReply to see which complaints still need an answer.
Benchmark competitorsPut nearby competitors in one run and compare businessRatingCounts, review volume per month and owner reply rates.
Find recurring complaints or praiseUse Only reviews mentioning with words such as parking, wait, rude or dirty, or feed all reviews to an AI assistant.
Research a local marketPaste a Yelp search URL (e.g. "ramen in Portland") and collect the reviews of the top results.
Sentiment analysis and AI trainingCollect the full history in every language, with dates and star ratings as labels.
Lead generation for agenciesFind businesses with many recent bad reviews and no owner replies: they need reputation help.

How it compares

What you needYelp Reviews ScraperMost Yelp review scrapers on ApifyYelp Fusion API (official)
Reviews per businessAll recommended reviewsAll, or a capped number3 review excerpts
Repeat runsReturns only new and edited reviews, you pay only for themCollect everything again, or a date rangeNo
LanguagesEvery language, merged and sortedOften one language per runOne locale
Owner repliesText, author and roleVariesNo
Edited reviewsEarlier versions with their ratingsRarelyNo
Star breakdown of the businessOn every rowSomeNo
Business names and search URLsYesMostly URLs onlySearch, but 3 reviews each
Price$0.25 per 1,000 reviews, no start feeMostly $0.30 to $2 per 1,000, some with start feesPaid plans for commercial use

Quick start

  1. Click Try for free and sign in to Apify. The free plan's monthly credit covers about 20,000 reviews.
  2. Paste a Yelp business URL into Businesses, for example https://www.yelp.com/biz/gary-danko-san-francisco. Links from any Yelp country site work.
  3. For a first run, set Max reviews per business to 20.
  4. Click Start. When the run finishes, open the Output tab and export the data.
{
"businesses": ["https://www.yelp.com/biz/gary-danko-san-francisco"],
"maxReviewsPerBusiness": 20
}

You can also enter a business name with a location, or a Yelp search URL:

{
"businesses": [
"Gary Danko",
"Tartine Bakery",
"https://www.yelp.com/search?find_desc=ramen&find_loc=Portland%2C+OR"
],
"location": "San Francisco, CA",
"maxBusinessesPerSearch": 5
}

What data can you extract?

Every row is one review, with the business attached, so no joins are needed:

GroupFields
ReviewreviewId, reviewUrl, rating, text, language, date, isFeatured, isFirstReview, usefulCount, funnyCount, coolCount
EditsisEdited, previousVersions (earlier text, rating and date)
MediaphotoCount, photos (full-size URL and caption), videos
Owner replyhasOwnerReply, ownerReply, ownerReplyAuthor, ownerReplyAuthorRole
ReviewerreviewerId, reviewerName, reviewerNickname, reviewerUrl, reviewerLocation, reviewerReviewCount, reviewerFriendCount, reviewerPhotoCount, reviewerEliteYears, isReviewerElite, reviewerMemberSince, reviewerPhotoUrl, reviewerCheckIns, paidThroughYelp
BusinessbusinessId, businessAlias, businessName, businessUrl, businessRating, businessReviewCount, businessRatingCounts (1 to 5 stars), businessCategories, businessAddress, businessCity, businessPostalCode, businessState, businessCountry, businessPhone, businessWebsite, businessPrice, isBusinessClosed
Runinput (what you entered), scrapedAt

The run's key-value store also has an OUTPUT record with one line per business: how many reviews were saved, the newest review date, and whether the business failed.

Track new Yelp reviews with repeat runs

Most of the value comes from running the same businesses again and getting only what changed. Apify can run the actor for you on a schedule and send the new reviews wherever you need them.

1. Save your input as a task

Open the actor, add your businesses, turn on Only new reviews, then click Save as a new task. A task is a saved input you can run again with one click or on a schedule. Each task keeps its own memory of what it has seen, so you can have one task for your own locations and another for competitors.

2. Schedule the task

In Apify Console, go to Schedules, click Create new, choose how often to run (for example daily at 07:00 in your time zone), and add your task. See Schedules and How to create a schedule.

Watch how to schedule an Actor:

Or schedule a saved task:

Common schedules:

Use caseFrequencyCron expression
Answer new reviews of your locationsEvery 6 hours0 */6 * * *
Daily reputation reportDaily0 7 * * *
Competitor watchWeekly (Monday)0 7 * * 1
Monthly rating and review-volume reportMonthly0 7 1 * *

3. Send new reviews to a spreadsheet, Slack or email

Connect Google in the task's Integrations tab to add every run's reviews to Google Sheets or Google Drive automatically:

The Integrations tab also connects Slack, email, Make, Zapier, n8n and webhooks. A run with no new reviews has an empty dataset, which is easy to filter out in Make, Zapier or n8n.

4. What counts as new

  • A review posted since the last run.
  • A review that was edited since the last run. It comes back with isEdited: true and its earlier versions in previousVersions, so you see when a 2-star review becomes a 4-star one, or the other way round.
  • The memory is kept per task, per business and per filter set. If you change the languages, star ratings or keywords, the next run starts fresh for that combination.
  • To collect everything again, turn Only new reviews off for one run, or save a new task.

Input reference

FieldTypeDefaultEffect
businessesArray of stringsRequiredYelp business URLs (any Yelp country site), business aliases or IDs, business names (with location), or Yelp search URLs.
locationStringEmptyCity or area for business names, e.g. San Francisco, CA. Not needed for URLs.
maxReviewsPerBusinessInteger100Maximum reviews saved per business. 0 means every review.
onlyNewReviewsBooleanfalseReturn only reviews posted or edited since the last run of the same task. Reviews are walked newest first.
sortByString"newest""newest", "oldest", "highest", "lowest", "elite" (Elite reviewers first) or "recommended" (Yelp's order). Decides which reviews a limit keeps.
ratingsArray of stringsAllOnly these star ratings, e.g. ["1", "2"].
newerThanStringEmptyOnly reviews newer than a date (2026-01-31) or an age (7 days, 3 months, 1 year).
languagesArray of stringsAllTwo-letter codes such as ["en", "es"]. Empty collects every language the business has.
keywordsArray of stringsEmptyOnly reviews whose text contains one of these words or phrases (not case-sensitive).
maxBusinessesPerSearchInteger10For Yelp search URLs: how many of the top results to include.
includeReviewerDetailsBooleantrueTurn off to leave reviewer fields empty (the columns stay, with null).

Ready-to-run examples

Get new reviews of your locations every morning

{
"businesses": [
"https://www.yelp.com/biz/your-business-san-francisco",
"https://www.yelp.com/biz/your-business-oakland"
],
"maxReviewsPerBusiness": 0,
"onlyNewReviews": true
}

Save it as a task and schedule it daily. The first run collects every review; later runs return only new and edited ones.

Find unanswered complaints

{
"businesses": ["https://www.yelp.com/biz/hotel-zetta-san-francisco-san-francisco-3"],
"ratings": ["1", "2"],
"newerThan": "1 year",
"maxReviewsPerBusiness": 0
}

Filter the dataset on hasOwnerReply = false.

Compare competitors over the last 6 months

{
"businesses": ["Gary Danko", "Kokkari Estiatorio", "Quince"],
"location": "San Francisco, CA",
"newerThan": "6 months",
"maxReviewsPerBusiness": 0
}

Open the Businesses view, or count reviews per business and month and compare the average rating.

Collect complaints about one topic

{
"businesses": ["https://www.yelp.com/biz/mon-ami-gabi-las-vegas-2"],
"keywords": ["wait", "reservation", "line"],
"maxReviewsPerBusiness": 0
}

Research a local market

{
"businesses": ["https://www.yelp.com/search?find_desc=dentist&find_loc=Austin%2C+TX"],
"maxBusinessesPerSearch": 20,
"maxReviewsPerBusiness": 50
}

The 50 newest reviews of the top 20 dentists in Austin.

Full history for sentiment analysis, in every language

{
"businesses": ["https://www.yelp.com/biz/mon-ami-gabi-las-vegas-2"],
"maxReviewsPerBusiness": 0
}

Analyze the results with ChatGPT or Claude

Export the dataset as CSV (the Overview view keeps it small) and attach it to a chat with ChatGPT, Claude or another AI assistant. Some prompts to start with:

Find what to fix. "These are Yelp reviews of my business. Group the 1- to 3-star reviews by topic (for example wait time, staff, price, cleanliness). For each topic, give the number of reviews, two short quotes, and the most recent date."

Draft replies. "For each review where hasOwnerReply is false and rating is 2 or lower, draft a short, specific reply that addresses the reviewer's main point. Don't offer refunds."

Compare competitors. "This file has reviews of several businesses (businessName). For each business, show the average rating per quarter, the share of reviews with an owner reply, and the three things customers praise and criticize most."

The dataset is also available through the Apify API and integrations such as Make, Zapier and n8n, so you can feed it into an automated workflow.

Output

Results go to the run's default dataset. Use the views Overview, Reviewers, Owner replies or Businesses, or export everything as JSON, CSV, Excel, XML or HTML.

This is a real row from a run on October 6, 2026, with the reviewer's profile fields left out:

{
"reviewId": "zy3zc_AWy56uNjp1bpkDRA",
"reviewUrl": "https://www.yelp.com/biz/hotel-zetta-san-francisco-san-francisco-3?hrid=zy3zc_AWy56uNjp1bpkDRA",
"rating": 1,
"text": "Everything about this hotel was great except for the $62 valet parking that took 40 minutes. It's one thing to pay over $50 for one night of valet parking, and another to wait 40 for your car. Staff was not willing to reimburse or partially reimburse. Happy to change this review shall another staff member be willing to work something out.",
"language": "en",
"date": "2015-12-21T05:31:31.000Z",
"isEdited": false,
"previousVersions": [],
"usefulCount": 0,
"funnyCount": 1,
"coolCount": 0,
"photoCount": 0,
"photos": [],
"hasOwnerReply": true,
"ownerReply": "Emerald G,\n\nI am sorry about the valet incident you experienced! I agree that 40 minutes to retrieve your car is unacceptable, especially when paying for such a service. Please drop me a line directly with your info so that I can reach out to you further and resolve this issue.\n\n-Michel N\nGeneral Manager",
"ownerReplyAuthor": "Michel N.",
"ownerReplyAuthorRole": "Business Manager",
"reviewerName": "Emerald T.",
"reviewerLocation": "Los Angeles, CA",
"reviewerReviewCount": 109,
"reviewerEliteYears": [2023],
"isReviewerElite": false,
"reviewerMemberSince": "2010-06-04T03:12:26.000Z",
"businessId": "4IZUuGz6odBxqY6jISF8GQ",
"businessName": "Hotel Zetta - San Francisco",
"businessUrl": "https://www.yelp.com/biz/hotel-zetta-san-francisco-san-francisco-3",
"businessRating": 3.8,
"businessReviewCount": 297,
"businessRatingCounts": { "1": 37, "2": 27, "3": 29, "4": 64, "5": 141 },
"businessCategories": ["Hotels"],
"businessAddress": "55 5th St, San Francisco, CA 94103",
"businessPhone": "(415) 543-8555",
"businessWebsite": "https://www.zhotelssf.com",
"businessPrice": "$$$",
"input": "hotel-zetta-san-francisco-san-francisco-3",
"scrapedAt": "2026-10-06T19:00:52.269Z"
}

Notes on fields

  • date is when the review was posted or last edited. Edited reviews have isEdited: true and their earlier versions in previousVersions.
  • isReviewerElite means Elite in the current year. reviewerEliteYears lists every Elite year.
  • businessRating and businessRatingCounts describe the whole business, not the review.
  • ownerReply has no date: Yelp's app doesn't publish one.
  • With Include reviewer details off, reviewer fields are null (or []), and the columns stay the same.
  • Missing values are null. Every row has scrapedAt in UTC.

FAQ

How many reviews can I get?

Every review Yelp recommends for the business, in every language, with no cap. Set Max reviews per business to 0. Yelp hides some reviews as "not recommended"; those aren't part of the business's rating and aren't included. That's why businessReviewCount can be a little different from the number of reviews you get.

How fast is it?

In our tests, the full history of a business with 13,183 reviews took under 2 minutes, and 20 reviews each from two businesses took about 6 seconds. Repeat runs with Only new reviews usually finish in seconds, because they stop at the first review they've already seen.

How does "Only new reviews" know what's new?

After each business, the actor remembers the newest review it saw in a key-value store in your Apify account (yelp-reviews-scraper-state). The next run of the same task walks reviews newest first and stops there. Runs started without a task (for example from the API) share one memory per business and filter set. If a run stops early because it hit your spending limit, that business isn't marked as done, so the next run picks up the reviews you didn't get.

Can I collect reviews in one language only?

Yes. Add language codes in Review languages, e.g. en. Leave it empty to get every language.

Can I use business names instead of URLs?

Yes. Enter the name and set Location to the city. The actor picks Yelp's top match and logs which business it chose; every row has the original input next to businessName, so a wrong match is easy to spot. For chains, use the URL of the exact location.

Why did I get no reviews for a business?

The log says why: the URL didn't match a business, the business has no reviews in the languages you chose, or your filters (stars, date, keywords) matched nothing. With Only new reviews on, 0 means nothing new since the last run.

Why did my run stop before reaching my limit?

If the log says the charge limit was reached, the run hit its maximum cost or your account's spending limit. Everything collected before that is saved. Raise the limit in the run options to collect more.

How is this different from the Yelp Fusion API?

Yelp's official API returns at most 3 review excerpts per business. This actor returns every review in full, with owner replies, reviewer details, photos and edits.

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

No. The actor handles connections and retries itself and doesn't log in.

The actor collects publicly visible reviews and business data. Reviewer names and profiles are personal data under laws such as GDPR and CCPA. If you have no lawful basis to process them, turn off Include reviewer details. You are responsible for how you use the data, including Yelp's terms.

Cost

This actor uses pay-per-event pricing. You pay only for reviews saved, with no subscription and no start fee:

EventPricePer 1,000Charged when
review$0.00025$0.25A review is saved. Business lookups, the star breakdown, reviews skipped by filters and already-seen reviews are free.

Example runs:

RunCost
100 reviews$0.025
1,000 reviews$0.25
Full history of a business with 13,183 reviews$3.30
20 locations checked daily, about 3 new reviews each per day, 30 days$0.45

Set a maximum cost per run; the actor stops cleanly when it's reached. The Pricing tab always shows the current prices.

Support

Report problems or request features in the Issues tab. Include the run ID, the input and what you expected. We read every issue.

This actor is not affiliated with or endorsed by Yelp Inc. "Yelp" is a trademark of Yelp Inc.