Yelp Reviews Scraper - Ratings, Owner Replies & Photos avatar

Yelp Reviews Scraper - Ratings, Owner Replies & Photos

Pricing

$0.05 / 1,000 reviews

Go to Apify Store
Yelp Reviews Scraper - Ratings, Owner Replies & Photos

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

Top Api

Maintained by Community

Actor 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

Yelp reviews page that Yelp Reviews Scraper turns into rows (reviewer details blurred)

  • 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

  1. Create a free Apify account โ€” $5 of monthly credit, no card needed.
  2. Open Yelp Reviews Scraper and click Try for free.
  3. Paste Yelp business URLs into Businesses (or fill Search terms + Search location) and set Max reviews per business.
  4. Pick a sort order, star ratings, language or keywords if you need them.
  5. Click Start. Reviews stream into the dataset as they are read.
  6. Open the Storage tab and Export as JSON, CSV or Excel โ€” or save the input as a task and schedule it.

โฌ‡๏ธ Input

ParameterTypeDescription
๐Ÿ” What to scrape
businessesListBusiness 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.
searchTermsListFind businesses with a Yelp search, e.g. pizza, dentist. Needs searchLocation.
searchLocationTextCity, ZIP or neighborhood for the search terms, e.g. Austin, TX.
maxBusinessesPerSearchIntegerBusinesses each search adds (sponsored results skipped). Default 10, Yelp shows at most 240.
searchSortSelectRecommended, Highest rated or Most reviewed businesses first. Default: recommended
๐ŸŽฏ Filters (applied by Yelp to recommended reviews; the actor applies star ratings in keyword searches)
reviewsSortSelectNewest first, Oldest first, Yelp Sort, Highest rated, Lowest rated, Elites first. Default: newest
reviewRatingsMulti-selectOnly these star ratings. Default: all
reviewLanguageSelectall (every language the business has, largest first) or one language. Does not apply to not-recommended reviews. Default: all
keywordsListYelp'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.
translateToSelectAdds Yelp's translation of each review to translatedText. Default: none
โœ‚๏ธ Refine results
reviewsNewerThan / reviewsOlderThanTextDate window: 2026-09-01 or relative 30 days, 6 months.
withPhotosOnlyBooleanKeep only reviews with photos or videos. Default false
withOwnerReplyOnlyBooleanKeep only reviews the business answered. Default false
โž• Extra data
includePersonalDataBooleanReviewer name, profile, location, counts, Elite and expert badges, and the reviewer's earlier reviews of the business. Off = those fields are null. Default true
includeNotRecommendedBooleanAlso 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
monitorModeBooleanReturn 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.
monitorStoreNameTextNamed 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
maxReviewsPerBusinessIntegerDefault 100; 0 = every review Yelp lists.
maxReviewsIntegerRun-wide limit across all businesses. 0 = none.
compactBooleanCore fields only, sized for AI agents and MCP: author keeps only name, publicReply only text.
โš™๏ธ Advanced
proxyConfigurationProxyUsed 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"]
}

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):

Yelp Reviews Scraper output table (reviewer names blurred)

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

FieldTypeWhat it isFill on test runs
reviewEncid, reviewUrlstringYelp's review id and a direct link to the review100%
ratingnumberStars the reviewer gave, 1-5100%
text, languagestringFull review text and its language code (language null on not-recommended reviews)100% (recommended reviews)
translatedTextstringYelp's translation (with translateTo)when requested
reviewDate, reviewDateUtcstringReview date in the business's local time and in UTC100%
authorobjectReviewer name, encid, profile URL, location, review/friend/photo counts, profile photo, Elite badge100% (photo 72-75%)
feedback, helpfulCount โ€ฆ ohNoCountarray, numberYelp reactions on the review (null on not-recommended reviews)100% (recommended reviews)
usefulCount, funnyCount, coolCountnumberLegacy 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)
publicReplyobjectThe business's reply: text, date, dateUtc, authorName, authorRolewhen the business replied (9 of 30 on a tire shop)
photos, videosarrayMedia attached to the review (full-size photo URL + thumbnail)44-50%
expertRecognitionstringReviewer's Yelp expert badge for this kind of place (null with includePersonalData off)48-61%
previousReviewsarrayThe reviewer's earlier reviews of the same business (null with includePersonalData off)2-3%
checkInCount, isFirstReviewer, hasPaidThroughYelp, hasPurchasedDeal, hasPlacedReservation, reservationProvidermixedReview tags Yelp shows (null on not-recommended reviews)100% (recommended reviews; provider when booked)
isRecommendedbooleanfalse for Yelp's not-recommended reviews100%
encid, alias, businessUrl, name, primaryPhotostringThe business100%
businessRating, totalReviews, ratingDetail, reviewsCountByLanguagemixedBusiness rating summary100%
categories, businessCity, businessRegion, neighborhoodsmixedBusiness categories and location100% (neighborhoods 80-100%)
input, searchTerm, searchLocation, review_position, scrapedAtmixedWhere the row came from100% (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, rating and reviewDate to sentiment models or LLM summaries
  • ๐Ÿงญ Competitor analysts โ€” track a rival's review velocity and owner-reply rate over time
  • ๐Ÿ—๏ธ Product teams โ€” use keywords to 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.

ReviewsCost
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 monitorMode each 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.

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.