Yelp Reviews Scraper avatar

Yelp Reviews Scraper

Pricing

from $0.50 / 1,000 reviews

Go to Apify Store
Yelp Reviews Scraper

Yelp Reviews Scraper

The Yelp Reviews Scraper extracts customer reviews from any Yelp business page, capturing full review text, star ratings, dates, review photos, and reviewer profiles with location and Elite status β€” plus optional business details β€” ideal for reputation monitoring and competitor research.

Pricing

from $0.50 / 1,000 reviews

Rating

0.0

(0)

Developer

FalconScrape

FalconScrape

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

1

Monthly active users

6 days ago

Last modified

Share

πŸš€ Yelp Reviews Scraper

Extract customer reviews from any Yelp business page β€” with the full review text, star rating, date, reviewer profile, reactions, owner replies and review photos. Paste one or more Yelp business URLs (or business IDs), choose how many reviews you want, and get clean structured data you can download as JSON, CSV or Excel, or pull straight from the Apify API.

Reviews are collected newest first by default, and pagination goes all the way back through a business's history β€” so you can pull the latest 20 for monitoring or the entire back catalogue for analysis. You can also sort by rating or Elite reviewers, and narrow a run to specific star ratings or a single review language β€” Yelp applies both filters itself, so you are only charged for the reviews you asked for.

✨ Features

  • πŸ’¬ Complete review text β€” the whole review, with paragraph breaks preserved, not a truncated snippet.
  • ⭐ Ratings and dates β€” star rating and review date on every record, ready for trend analysis.
  • πŸ‘€ Reviewer profiles β€” reviewer name, profile link, home city, Elite status and badge year, plus their total review and photo counts.
  • πŸ“Έ Review photos β€” direct image URLs for the photos attached to each review.
  • πŸ‘ Reactions and owner replies β€” Helpful/Thanks/Love this/Oh no counts, plus the business owner's public response where one exists.
  • 🏒 Optional business details β€” name, overall rating, total review count, star and language breakdowns, categories and neighborhoods, in one record per business.
  • πŸ”€ Sorting β€” newest first, oldest first, highest or lowest rated first, or Elite reviewers first.
  • ⭐ Rating filter β€” pull only 1- and 2-star reviews for complaint triage, and pay for just those.
  • 🌍 Language filter β€” collect only the reviews written in a given language, and get a language code on every record.
  • πŸ” Deep pagination β€” pull the newest handful of reviews or thousands going back years, controlled by a single limit.
  • 🧱 Reliable at scale β€” built-in retries, and a run that collects nothing fails loudly instead of quietly returning an empty dataset.

πŸ’‘ Why use Yelp Reviews Scraper?

  • Reputation monitoring β€” schedule a run every morning and get alerted to new 1- and 2-star reviews on your own locations.
  • Competitor research β€” see exactly what customers praise and complain about at every rival within a market.
  • Location benchmarking β€” compare ratings and review sentiment across dozens or hundreds of your own branches.
  • Market and product research β€” mine thousands of real customer opinions about a category before you enter it.
  • AI and sentiment analysis β€” feed full review text into an LLM or sentiment model instead of scraping it yourself.

πŸ› οΈ How to use Yelp Reviews Scraper

  1. Add Yelp business URLs or IDs β€” paste one or more links like https://www.yelp.com/biz/gary-danko-san-francisco, or business IDs like WavvLdfdP6g8aZTtbBQHTw. You can add as many as you want.
  2. Set the review limit β€” choose how many reviews to collect per business (50 by default).
  3. Pick a sort order β€” newest first by default; switch to lowest rated first to triage complaints, or oldest first to walk the full history.
  4. Optionally filter β€” pick the star ratings you want (e.g. 1 and 2 for complaints only), and/or enter a language code like es or zh.
  5. Optionally include business details β€” turn this on if you also want each business's overall rating, star and language breakdowns, categories and its reusable business ID.
  6. Run the Actor β€” start it from the Console, on a schedule, or via the API.
  7. Download your data β€” export the dataset as JSON, CSV, Excel or XML, or send it straight to Google Sheets, Slack, Zapier, Make or your own webhook.

πŸ“₯ Input

FieldTypeDescription
businessUrlsarrayYelp business page URLs to scrape reviews from. Provide these or businessIds.
businessIdsarrayYelp business IDs, e.g. WavvLdfdP6g8aZTtbBQHTw. Skips the URL lookup, so runs start faster.
maxReviewsPerBusinessintegerMaximum reviews to collect per business. Default 50.
sortBystringdate_desc (default), date_asc, rating_desc, rating_asc, elites_desc or relevance_desc.
ratingsarrayStar ratings to collect, e.g. ["1","2"]. Filtered by Yelp, so you only pay for matches. Empty collects all.
languagestringTwo-letter code, e.g. en, es, zh. Empty collects all languages.
includeBusinessDetailsbooleanAlso emit one record per business with its profile data. Default false.

Example input:

{
"businessUrls": [{ "url": "https://www.yelp.com/biz/gary-danko-san-francisco" }],
"businessIds": [],
"maxReviewsPerBusiness": 50,
"sortBy": "date_desc",
"ratings": [],
"language": "",
"includeBusinessDetails": false
}

πŸ“Š Sample output data

Each review is one dataset item. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

[
{
"businessUrl": "https://www.yelp.com/biz/gary-danko-san-francisco",
"businessName": "Gary Danko",
"reviewId": "Juu70dcrjVcV51qkQ9LCOQ",
"userId": "JlIOcz6igNDfr9xpA-_DXw",
"author": "Jim P.",
"authorUrl": "https://www.yelp.com/user_details?userid=JlIOcz6igNDfr9xpA-_DXw",
"authorLocation": "Cape Coral, FL",
"isElite": true,
"eliteBadge": "Elite '26",
"authorReviewCount": 263,
"authorPhotoCount": 924,
"authorFriendCount": 226,
"rating": 5,
"date": "2026-08-10T09:28:18-07:00",
"language": "en",
"text": "I've had the pleasure to dine at Gary Danko three times in the last 20 years. The quality and preparation of the food is impeccable, and has stood the test of time.",
"photos": ["https://s3-media0.fl.yelpcdn.com/bphoto/zJQi-VIQLMVcmC4itungcw/o.jpg"],
"ownerReply": null,
"reactions": { "HELPFUL": 3, "THANKS": 0, "LOVE_THIS": 1, "OH_NO": 0 },
"checkInCount": 0,
"isFirstReviewer": false,
"hasPaidThroughYelp": false,
"hasPlacedReservation": false,
"expertRecognition": "FOODIE",
"previousReviewCount": 0
}
]

With Include business details enabled, each business also produces one record like this:

[
{
"businessUrl": "https://www.yelp.com/biz/gary-danko-san-francisco",
"encBizId": "WavvLdfdP6g8aZTtbBQHTw",
"name": "Gary Danko",
"rating": 4.5,
"reviewCount": 6136,
"reviewCountsByRating": [124, 216, 484, 1097, 4220],
"reviewCountsByLanguage": { "en": 6138, "zh": 2, "de": 1 },
"categories": ["New American", "French", "Cocktail Bars"],
"city": "San Francisco",
"state": "CA",
"neighborhoods": ["Russian Hill", "Fisherman's Wharf"]
}
]

πŸ“‹ Data fields

Review records

FieldTypeDescription
businessNamestringName of the reviewed business
businessUrlstringYelp URL of the business
reviewIdstringStable identifier for the review
authorstringReviewer's display name
authorUrlstringLink to the reviewer's Yelp profile
userIdstringYelp user ID of the reviewer
authorLocationstringReviewer's home city and state
isElitebooleanWhether the reviewer holds Yelp Elite status
eliteBadgestringElite badge label, e.g. Elite 26
authorReviewCountnumberHow many reviews the reviewer has written
authorPhotoCountnumberHow many photos the reviewer has posted
authorFriendCountnumberHow many friends the reviewer has on Yelp
ratingnumberStar rating, 1–5
datestringISO timestamp of the review, in the business's local time
textstringFull review text
languagestringLanguage code of the review, e.g. en, zh
photosarrayImage URLs of photos attached to the review
ownerReplystringThe business owner's public response, if any
reactionsobjectReaction counts, e.g. {"HELPFUL": 3, "OH_NO": 0}
checkInCountnumberCheck-ins the reviewer logged at this business
isFirstReviewerbooleanWhether this was the business's first review
hasPaidThroughYelpbooleanWhether the reviewer paid through Yelp
hasPlacedReservationbooleanWhether the reviewer booked through Yelp
expertRecognitionstringYelp expert badge earned on this review, if any
previousReviewCountnumberEarlier reviews the same author wrote for this business

Business records (optional)

FieldTypeDescription
encBizIdstringYelp business ID β€” reuse it in businessIds
namestringBusiness name
ratingnumberOverall star rating
reviewCountnumberTotal number of reviews on Yelp
reviewCountsByRatingarrayReview counts from 1β˜… to 5β˜…
reviewCountsByLanguageobjectReview counts per language, e.g. {"en": 6138}
categoriesarrayYelp categories for the business
city, statestringBusiness location
neighborhoodsarrayNeighborhoods Yelp lists for the business

πŸ’° How much does it cost to scrape Yelp reviews?

This Actor uses pay per event pricing, so you only pay for the data you actually receive:

EventPrice
Review scraped$0.0015
Business profile scraped$0.001
Actor start$0.00005

That works out to $1.50 per 1,000 reviews, or about $0.15 per 100. A daily reputation check on 10 locations pulling the 20 newest reviews each costs roughly $0.30 per day.

Prices step down automatically on larger Apify plans β€” you do not need to do anything to get them:

EventFreeBronzeSilverGold, Platinum & Diamond
Review scraped$0.0015$0.00115$0.00095$0.00075
Business profile scraped$0.001$0.00075$0.00065$0.0005

New Apify accounts include $5 in free usage every month on the free plan, which is enough for around 3,300 reviews before you pay anything.

The filters are the real cost lever: because Yelp applies them on its side, a ratings: ["1"] run on a 6,000-review business collects and charges only the ~120 one-star reviews.

βš™οΈ Tips and advanced options

  • Keep the limit tight for monitoring. For daily checks, maxReviewsPerBusiness of 20–30 with the default newest-first sort is plenty β€” you pay nothing for history you already have.
  • Filter by rating instead of sorting to it. ratings: ["1","2"] with the default newest-first sort gives you every recent complaint and nothing else β€” Yelp does the filtering, so you are not billed for the 4- and 5-star reviews you would have paged past. Use date_asc when you want a business's history from its very first review.
  • Filtering shrinks the bill. Both ratings and language are applied by Yelp before anything is collected, so you are charged for matches only β€” a business with 5,000 English and 16 Chinese reviews costs 16 reviews, not 5,000.
  • Reuse business IDs. Turn Include business details on once, copy the encBizId from the output, and pass it in businessIds on later runs β€” every URL has to be looked up first, an ID does not.
  • Batch your businesses. Put every location into one run rather than starting a run per URL; a batch avoids paying the per-run startup over and over.
  • Leave business details off unless you need them. The review records already carry the business name and URL, so the extra profile record is only worth it when you want the rating and language breakdowns or the business ID.
  • Schedule it. Use Apify Schedules to run the Actor every morning and route new reviews to Slack, a Google Sheet or your own webhook via integrations.
  • Raise the run timeout for very large pulls. Businesses with thousands of reviews take a while; the default 1-hour timeout covers most runs, but a full multi-thousand-review pull may need more.

❓ FAQ

Is scraping Yelp reviews legal? This Actor collects only publicly available information β€” reviews that anyone can read on Yelp without logging in. Web scraping of public data is generally legal, but how you use the data matters. Do not use it in ways that breach applicable privacy laws such as GDPR or CCPA, and consult a lawyer if you plan to process personal data. See Is web scraping legal? for a longer discussion.

How many reviews can I get from one business? Yelp exposes a business's full review history, so you can page back through thousands of reviews, all the way to the earliest ones. Set maxReviewsPerBusiness to whatever you need.

In what order do reviews come back? Newest first by default, which is what you want for monitoring: a run with a limit of 50 gives you the 50 most recent reviews. Use sortBy to switch to oldest first, highest or lowest rated first, or Elite reviewers first β€” the order is kept all the way through pagination, and rows land in the dataset in that order.

Can I filter reviews by language? Yes β€” set language to a two-letter code such as es, zh or fr and only reviews written in that language are collected. Every record also carries a language field.

Can I filter reviews by rating? Yes β€” set ratings to the stars you care about, e.g. ["1","2"] for complaints only. Yelp applies the filter on its side, so the run collects and charges only the matching reviews. There is no keyword filter; collect the reviews and filter the dataset afterwards, since every record carries the full text.

What is a business ID and where do I get one? It is Yelp's own 22-character identifier for a business, such as WavvLdfdP6g8aZTtbBQHTw. Turn on Include business details and it comes back as encBizId on the business record. Passing IDs instead of URLs skips a lookup step, so runs start faster.

Why are some fields empty? Not every review carries every field: ownerReply is only set when the owner responded, expertRecognition only when the reviewer earned a badge on that review, and photos only when photos were attached. Core fields β€” rating, date, review text, reviewer name, location and reaction counts β€” are present on every record.

Can I get reviews for many businesses at once? Yes. Add as many business URLs or IDs as you like; they are all processed in the same run and written to the same dataset.

Something is not working or I need a different field. Report it on the Issues tab of this Actor and it will be looked at. If you need a tailored version or a different Yelp dataset, custom solutions are available.

Start pulling real customer feedback from Yelp today! πŸš€