Yelp Reviews Scraper - Ratings, Owner Replies & Photos
Pricing
$0.05 / 1,000 reviews
Yelp Reviews Scraper - Ratings, Owner Replies & Photos
Scrape every public Yelp review of any business by URL, alias, id or Yelp search: star rating, full text, date, reviewer, reactions, owner reply, photos and the business. All languages, keyword, date and star filters, monitor mode. No login. $0.047 per 1,000 reviews.
Pricing
$0.05 / 1,000 reviews
Rating
0.0
(0)
Developer
Top Api
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
What does Yelp Reviews Scraper do?
Yelp Reviews Scraper extracts Yelp reviews from any business on yelp.com and turns business URLs, aliases, business ids or a Yelp search into structured rows: one review per row with the star rating, full text, date, reviewer, reactions, the owner's reply, photos and the business it belongs to. Built for reputation managers, agencies, franchise owners and analysts who need every review of a business in a spreadsheet or pipeline without copying them by hand.
Yelp review scraper ยท Yelp reviews API ยท Yelp review extractor ยท Yelp review export
- Every review of a business: paste a Yelp business URL from any Yelp domain, an alias or a business id and get all of its reviews, 30 per request, newest first or in any of Yelp's six sort orders
- Search-to-reviews in one run: give a search term and a location (or paste a Yelp search URL) and the actor reviews the businesses the search returns (Businesses per search, default 10, up to Yelp's 240; sponsored results skipped)
- All languages: walks every language a business has reviews in, or just the one you pick, with Yelp's own translation on request
- Filters Yelp applies itself: for recommended reviews, star ratings (except in keyword searches), language and keyword search run on Yelp's side; date window, photos-only and owner-reply-only are applied to each review. Not-recommended reviews are matched against your star ratings and keywords by the actor; the language pick does not apply to them
- Owner replies, reactions and legacy votes: the business's public reply with its date, Helpful/Thanks/Love this/Oh no reactions and the older Useful/Funny/Cool votes (votes on recommended reviews read without a keyword search or a proxy)
- Not-recommended reviews too: optionally adds the reviews Yelp's software filters out, marked
isRecommended: false - Monitor mode: on a schedule, return only reviews posted since the last run (plus, with not-recommended reviews on, any not-recommended review not delivered before); a review is never delivered twice through the same store
- No login, cookies or Yelp API key: you pass URLs or a search; nothing else
- Export anywhere: JSON, CSV, Excel, XML; schedules, webhooks, Make, Zapier, n8n, Google Sheets; the Apify API and MCP server for AI agents
What data can you get from Yelp reviews?
โญ Star rating (rating) | ๐ Full review text (text) | ๐ Review date, local and UTC |
๐ Review link (reviewUrl) | ๐ Language + Yelp translation | ๐ค Reviewer name, location, profile link |
| ๐ Elite badge and expert badge | ๐ Reviewer review, friend and photo counts | ๐ Helpful, Thanks, Love this, Oh no |
| ๐ณ๏ธ Useful, Funny, Cool votes | ๐ฌ Owner reply text, date, role | ๐ท Review photos (full size) and videos |
| ๐ Reviewer's earlier reviews of the business | โ Check-ins, first-reviewer, paid/reserved via Yelp | ๐ซ Not-recommended flag |
| ๐ช Business name, id, alias, URL | โญ Business rating, total reviews, stars breakdown | ๐ท๏ธ Categories, city, region, neighborhoods |
On a 1,000-review platform run of one business, every row had a review id, link, rating, text, language, date, reviewer name and the business fields; 50% had photos and 48% an expert badge.
How to scrape Yelp reviews with Yelp Reviews Scraper
- Create a free Apify account โ $5 of monthly credit, no card needed.
- Open Yelp Reviews Scraper and click Try for free.
- Paste Yelp business URLs into Businesses (or fill Search terms + Search location) and set Max reviews per business.
- Pick a sort order, star ratings, language or keywords if you need them.
- Click Start. Reviews stream into the dataset as they are read.
- Open the Storage tab and Export as JSON, CSV or Excel โ or save the input as a task and schedule it.
โฌ๏ธ Input
| Parameter | Type | Description |
|---|---|---|
| ๐ What to scrape | ||
businesses | List | Business URLs from any Yelp domain (https://www.yelp.com/biz/franklin-barbecue-austin, https://www.yelp.de/biz/...), aliases (franklin-barbecue-austin), business ids (MGzro82Fi4LYvc86acoONQ) or Yelp search URLs. Mix freely. |
searchTerms | List | Find businesses with a Yelp search, e.g. pizza, dentist. Needs searchLocation. |
searchLocation | Text | City, ZIP or neighborhood for the search terms, e.g. Austin, TX. |
maxBusinessesPerSearch | Integer | Businesses each search adds (sponsored results skipped). Default 10, Yelp shows at most 240. |
searchSort | Select | Recommended, Highest rated or Most reviewed businesses first. Default: recommended |
| ๐ฏ Filters (applied by Yelp to recommended reviews; the actor applies star ratings in keyword searches) | ||
reviewsSort | Select | Newest first, Oldest first, Yelp Sort, Highest rated, Lowest rated, Elites first. Default: newest |
reviewRatings | Multi-select | Only these star ratings. Default: all |
reviewLanguage | Select | all (every language the business has, largest first) or one language. Does not apply to not-recommended reviews. Default: all |
keywords | List | Yelp's own review search, one search per keyword (max 10), e.g. parking. Not-recommended reviews are kept only when their text contains one of the keywords. |
translateTo | Select | Adds Yelp's translation of each review to translatedText. Default: none |
| โ๏ธ Refine results | ||
reviewsNewerThan / reviewsOlderThan | Text | Date window: 2026-09-01 or relative 30 days, 6 months. |
withPhotosOnly | Boolean | Keep only reviews with photos or videos. Default false |
withOwnerReplyOnly | Boolean | Keep only reviews the business answered. Default false |
| โ Extra data | ||
includePersonalData | Boolean | Reviewer name, profile, location, counts, Elite and expert badges, and the reviewer's earlier reviews of the business. Off = those fields are null. Default true |
includeNotRecommended | Boolean | Also scrape Yelp's not-recommended reviews (isRecommended: false). The review-language pick does not apply to not-recommended reviews, and those rows carry no language, reactions, Useful/Funny/Cool votes or review tags (null), and no translation, photos or expert badge. Default false |
| ๐ Monitoring | ||
monitorMode | Boolean | Return only reviews posted since the newest one earlier runs saw with the same filters, plus (with includeNotRecommended) any not-recommended review not delivered before. A review is never delivered twice through the same store. Pair with a schedule. |
monitorStoreName | Text | Named store that remembers what was delivered. One name per schedule. Changing the language, star-rating, keyword or not-recommended settings starts a new baseline; reviews already delivered through the store are still skipped. |
| ๐ฆ Output | ||
maxReviewsPerBusiness | Integer | Default 100; 0 = every review Yelp lists. |
maxReviews | Integer | Run-wide limit across all businesses. 0 = none. |
compact | Boolean | Core fields only, sized for AI agents and MCP: author keeps only name, publicReply only text. |
| โ๏ธ Advanced | ||
proxyConfiguration | Proxy | Used only if Yelp stops answering direct requests; a named proxy group is used from the first request. Useful/funny/cool votes are left empty on proxied pages. |
Input JSON
{"businesses": ["https://www.yelp.com/biz/franklin-barbecue-austin"],"maxReviewsPerBusiness": 200,"reviewsSort": "newest","reviewsNewerThan": "90 days","reviewRatings": ["1", "2"]}
Paste the business page URL, not a review link
Any /biz/ address works, from any Yelp country site, with or without ?osq= or ?hrid= parameters. Do: https://www.yelp.com/biz/home-slice-pizza-austin ยท Don't: a Google Maps link or the business's own website (the run log lists lines it could not read; nothing is charged for them).
Use a search to cover a whole category
searchTerms: ["auto repair"] with searchLocation: "Los Angeles, CA" and maxBusinessesPerSearch: 20 reviews the first 20 organic results. For price or feature filters, filter the search on yelp.com and paste the search URL into Businesses.
Combine Newest first with a date window
With reviewsSort: "newest" and reviewsNewerThan: "30 days" the run stops reading each review language as soon as it reaches older reviews, so a 6,000-review business costs one or two requests per language it has reviews in, plus one page to look up its id when you give a URL or alias. Franklin Barbecue has reviews in 7 languages, so our test run made 7 review requests. Add reviewLanguage: "en" to read English reviews only.
โฌ๏ธ Output
Every review becomes one dataset item. Here is the table view of a platform run for the search pizza in Austin, TX (5 businesses ร 20 newest reviews):
And one row as JSON (shortened):
{"review_position": 1,"reviewEncid": "Q1kUFPnl5j3_0xrsLfLRYg","reviewUrl": "https://www.yelp.com/biz/franklin-barbecue-austin?hrid=Q1kUFPnl5j3_0xrsLfLRYg","rating": 5,"text": "Finally got back to Franklin bbq. Was here last year for a conference...","language": "en","reviewDate": "2026-10-03T19:58:20-05:00","reviewDateUtc": "2026-10-04T00:58:20.000Z","isRecommended": true,"author": { "name": "Mike S.", "location": "Yucca Valley, CA", "review_count": 168, "isElite": true },"helpfulCount": 0, "thanksCount": 0, "loveThisCount": 0, "ohNoCount": 0,"usefulCount": 0, "funnyCount": 0, "coolCount": 0,"publicReply": null,"photos": [{ "url": "https://s3-media0.fl.yelpcdn.com/bphoto/qpFcPpcLCuQDbaHM0F2nrQ/o.jpg", "caption": "Brisket closeup" }],"expertRecognition": "BBQ","encid": "MGzro82Fi4LYvc86acoONQ","name": "Franklin Barbecue","businessRating": 4.5,"totalReviews": 6489,"ratingDetail": { "5_star": 4661, "4_star": 1031, "3_star": 391, "2_star": 209, "1_star": 199 },"categories": ["Barbeque"],"businessCity": "Austin"}
Fields
| Field | Type | What it is | Fill on test runs |
|---|---|---|---|
reviewEncid, reviewUrl | string | Yelp's review id and a direct link to the review | 100% |
rating | number | Stars the reviewer gave, 1-5 | 100% |
text, language | string | Full review text and its language code (language null on not-recommended reviews) | 100% (recommended reviews) |
translatedText | string | Yelp's translation (with translateTo) | when requested |
reviewDate, reviewDateUtc | string | Review date in the business's local time and in UTC | 100% |
author | object | Reviewer name, encid, profile URL, location, review/friend/photo counts, profile photo, Elite badge | 100% (photo 72-75%) |
feedback, helpfulCount โฆ ohNoCount | array, number | Yelp reactions on the review (null on not-recommended reviews) | 100% (recommended reviews) |
usefulCount, funnyCount, coolCount | number | Legacy votes (null in keyword searches, on not-recommended reviews and on pages read through a proxy, e.g. when you pick a proxy group) | 100% (recommended reviews, no keywords, no proxy) |
publicReply | object | The business's reply: text, date, dateUtc, authorName, authorRole | when the business replied (9 of 30 on a tire shop) |
photos, videos | array | Media attached to the review (full-size photo URL + thumbnail) | 44-50% |
expertRecognition | string | Reviewer's Yelp expert badge for this kind of place (null with includePersonalData off) | 48-61% |
previousReviews | array | The reviewer's earlier reviews of the same business (null with includePersonalData off) | 2-3% |
checkInCount, isFirstReviewer, hasPaidThroughYelp, hasPurchasedDeal, hasPlacedReservation, reservationProvider | mixed | Review tags Yelp shows (null on not-recommended reviews) | 100% (recommended reviews; provider when booked) |
isRecommended | boolean | false for Yelp's not-recommended reviews | 100% |
encid, alias, businessUrl, name, primaryPhoto | string | The business | 100% |
businessRating, totalReviews, ratingDetail, reviewsCountByLanguage | mixed | Business rating summary | 100% |
categories, businessCity, businessRegion, neighborhoods | mixed | Business categories and location | 100% (neighborhoods 80-100%) |
input, searchTerm, searchLocation, review_position, scrapedAt | mixed | Where the row came from | 100% (search fields for searches) |
Fill measured on two platform runs: 100 reviews from a 5-business search and 1,000 reviews of one business.
How can I use Yelp reviews data?
- ๐ช Franchise and multi-location owners โ pull every location's reviews weekly and compare ratings by city
- ๐ฃ Reputation and review-management agencies โ watch new 1- and 2-star reviews with monitor mode and route them to Slack
- ๐ Market researchers โ read what customers say about a whole category in a city with one search
- ๐ค AI and data teams โ feed
text,ratingandreviewDateto sentiment models or LLM summaries - ๐งญ Competitor analysts โ track a rival's review velocity and owner-reply rate over time
- ๐๏ธ Product teams โ use
keywordsto find every review mentioning "parking", "wait" or a dish
How much does it cost to scrape Yelp reviews?
Yelp Reviews Scraper is pay-per-result: $0.047 per 1,000 reviews ($0.000047 per review), no start fee.
| Reviews | Cost |
|---|---|
| 100 | $0.0047 |
| 1,000 | $0.047 |
| 10,000 | $0.47 |
| 100,000 | $4.70 |
There is nothing else to pay: Apify platform usage is included in these prices. Measured at the default 256 MB: 100 reviews from a 5-business search in 5.6 s, 1,000 reviews of one business in 32.5 s.
Integrations, API, scheduling & MCP
- Schedules: run Yelp Reviews Scraper daily or weekly from the Schedules tab; with
monitorModeeach run returns only new reviews. - Webhooks: fire a URL when a run finishes โ push reviews to your CRM, Slack or a sheet.
- No-code: Make, Zapier, n8n, Google Sheets, Airtable, Slack via Apify integrations.
- API: call it from Node.js or Python with
apify-clientโ code on the API tab and the Apify API reference. - MCP / AI agents: connect Claude, Cursor or any MCP client through the MCP tab and ask for Yelp reviews in plain language.
More review and local-business scrapers
| ๐ Google Maps Reviews Scraper โ the same business's Google reviews | ๐ฌ Facebook Comments Scraper โ comments on a brand's posts | ๐ Facebook Search Posts Scraper โ public posts that mention a business | ๐งฐ All TopApi actors |
Limits & empty runs
- Reviews per business: every review Yelp lists can be read, 30 per request; 1,000 reviews of one business took 32.5 s.
- Searches: Yelp shows at most 240 businesses per search; use several locations or terms to cover more.
- Keyword searches come in Yelp's relevance order; star ratings are then applied to each review, and the legacy Useful/Funny/Cool votes are empty.
- Not-recommended reviews are read 10 per page, more slowly, lowest rating first. The review-language pick does not apply to not-recommended reviews, and those rows carry no language, reactions, Useful/Funny/Cool votes or review tags (null). With
keywords, a not-recommended review is kept only when its text contains one of the keywords. - Empty dataset: the inputs matched no business, your filters removed every review, or (in monitor mode) nothing is new. The status line says which.
- Not in the rows: Review of the Day and the reviewer's date of visit were empty on all 1,100 test reviews, and Yelp sends the Elite All-Star flag empty on every review, so none of them is shipped; business phone, website and opening hours are not part of review rows.
FAQ
How many reviews can Yelp Reviews Scraper collect in one run?
All of them. Set maxReviewsPerBusiness to 0 and the run reads every review Yelp lists for each business, 30 per request. A 1,000-review business took 32.5 seconds on a platform test.
Can I get only new Yelp reviews on a schedule?
Yes. Turn on monitorMode, keep the same monitorStoreName, and schedule the task. The first run delivers up to your per-business limit; later runs with the same filters return only reviews posted since then. A run that stops early (at maxReviews, your maximum charge, its time limit, an abort or a Yelp error) keeps the old bookmark, so the next run first picks up the older reviews it did not reach. A review delivered through the store is never delivered or charged again by a later run on that store, even after you change a filter or abort a run. Changing the language, star-rating, keyword or not-recommended settings starts a new baseline for the new settings (up to your per-business limit, skipping reviews already delivered). With includeNotRecommended, each run also delivers any not-recommended review that no earlier run delivered, whatever its date. An empty check took under 6 seconds in testing.
Does Yelp Reviews Scraper get reviews in every language?
Yes. With reviewLanguage: "all" (the default) it walks every language the business has reviews in, largest first. Pick one language to get only that one, and use translateTo for Yelp's own translation. Not-recommended reviews carry no language, so the language pick does not apply to them.
Can Yelp Reviews Scraper search reviews for a keyword?
Yes. keywords runs Yelp's own review search for each word, so only matching recommended reviews are read. With includeNotRecommended, the not-recommended reviews are read in full and kept only when their text contains one of the keywords.
Can I scrape Yelp reviews from a search instead of URLs?
Yes. Give searchTerms and searchLocation, or paste a Yelp search URL with your filters into businesses.
Can I use Yelp Reviews Scraper with the Apify API?
Yes. The API lets you start runs, fetch datasets and manage schedules. Use apify-client for Node.js or Python; the API tab has ready-to-paste code.
Can I use Yelp Reviews Scraper through an MCP server?
Yes. Open the MCP tab, connect your MCP client (Claude Desktop, Cursor and others) and ask for Yelp reviews in plain language. Turn on compact for smaller rows.
Do I need a Yelp account, cookies or a Yelp API key?
No. Yelp Reviews Scraper reads only what Yelp shows publicly; you pass business URLs, ids or a search.
Why did my Yelp reviews run return no results?
Most often the input was not a Yelp business address (the log lists skipped lines), the filters removed every review (the run summary counts them per filter), or monitor mode found nothing new.
Is it legal to scrape Yelp reviews?
Yelp Reviews Scraper reads public reviews only and does not log in. Reviews and reviewer names are personal data, so you are responsible for using them lawfully, including under GDPR and CCPA; includePersonalData: false empties every field about the reviewer: name, profile link, location, review/friend/photo counts, profile photo, Elite and expert badges, and their earlier reviews of the business. The review itself, its tags and the business's reply stay.
Your feedback
We keep improving Yelp Reviews Scraper. Found a bug or missing a field? Open an issue on the Issues tab.

