Yelp Reviews Scraper - Most Comprehensive
Pricing
from $0.04 / 1,000 reviews
Yelp Reviews Scraper - Most Comprehensive
🔥 ~$0.05/1K reviews 🔥 Scrape all reviews for any Yelp business. Full review text, ratings, author profiles, photos, reactions, owner replies. Accepts business URLs or aliases.
Pricing
from $0.04 / 1,000 reviews
Rating
0.0
(0)
Developer
Kai
Maintained by CommunityActor stats
0
Bookmarked
341
Total users
18
Monthly active users
6 days ago
Last modified
Categories
Share
Get the Yelp reviews of any business. Each review has 21 fields: rating, full text, dates, language, translation, reviewer details with Elite status, votes, reactions, photos, videos, the owner's reply, and tags. Each business also gets a profile record with rating counts, categories, address, hours, and price range. Filter by star rating, language, and text. Sort by newest, oldest, highest rated, lowest rated, or Elite reviewers first.
Read a few reviews or the full history of a business. Start with a Yelp URL, an alias, or a business ID. Starting at $0.04 per 1,000 reviews.
What can you do with it?
- Reputation monitoring. Collect the newest reviews of your businesses every day or week, and skip the ones that you already have.
- Competitor benchmarking. Compare ratings, review counts by star, and price range across businesses in one run.
- Sentiment and topic analysis. Feed review text, ratings, and languages into your models.
- Complaint finding. Read only the 1- and 2-star reviews, or only the reviews that mention a topic such as "parking".
- Elite reviewer research. Read the reviews of Yelp Elite members first, with their review, friend, and photo counts.
- Owner reply audits. Find the reviews that got a reply, and read the replies.
- Photo and video collection. Get the photos and videos that reviewers added, with captions, keywords, sizes, and upload dates.
- Market research by language. Read the reviews in one language, such as German or Chinese.
- Full review archives. Download every review of a business, also a business with thousands of reviews.
- Business profiles. Get the categories, address, hours, price range, and rating counts of each business.
What data does it extract?
Reviews are in the default dataset. Business profiles are in a second dataset
with the alias businesses.
| Data | When you get it |
|---|---|
| Review ID, rating (1 to 5), full text, and review language | Every review |
| Created time in UTC and in the business's local time | Every review |
| Business ID, alias, and name | Every review |
| Reviewer name, ID, location, review count, friend count, and photo count | Every review |
| Reviewer profile photo and Elite year | When the reviewer has them |
| Elite All-Star flag | Every review |
| Useful, funny, and cool votes | Every review. The count is 0 when there are none. |
| Reactions (Helpful, Thanks, Love this, Oh no) with counts | When the review has reactions |
| Photos with caption, size, upload date, uploader, keywords, and likes | When the reviewer added photos |
| Videos with caption | When the reviewer added videos |
| Owner reply text | When the owner replied |
| IDs of earlier reviews in the same history | When the reviewer wrote the review again |
| Tags: check-ins, first reviewer, paid through Yelp, deal, reservation, review of the day | Every review |
| Expert badge, such as "Dessert", with the review count | When Yelp gave one to the reviewer |
| Translation | When you set a languageCode other than en |
| Business name, alias, ID, rating, and review count | Every business |
| Review counts by star and by language | Every business |
| Categories, closed flag, phone, price range, and hours | Every business |
| Address, country, and open now flag | Every business |
| Coordinates | When you start with a URL or an alias |
| Photo counts, review snippets, and the number of reviews that Yelp does not recommend | Every business |
| Claimed status, year established, summary, specialties, attributes, health inspections, and links | When Yelp returns the business page. In current runs these fields are null. |
Yelp does not have every field for every review. A field without data is null
or [].
Quick start
- Enter a Yelp business URL, an alias, or a business ID in Business URLs, Aliases, or IDs.
- Set Max Reviews Per Business. Use
0to get all reviews. - Click Start. Download the results as JSON, CSV, Excel, or HTML.
The same input as JSON:
{"businesses": ["https://www.yelp.com/biz/gary-danko-san-francisco"],"maxReviewsPerBusiness": 20}
The reviews are in the default dataset. The business profiles are in the second
dataset. Open the Output tab and choose Businesses. In the API, read it
from storageIds.datasets.businesses on the run.
Examples by use case
The newest reviews of a business. Use an alias or a business ID instead of a URL if you have one. This is the default order:
{"businesses": ["gary-danko-san-francisco"],"maxReviewsPerBusiness": 50}
Every review of a business. This also works for a business with thousands of reviews. Gary Danko has more than 6,000 reviews and takes about 5 minutes:
{"businesses": ["WavvLdfdP6g8aZTtbBQHTw"],"maxReviewsPerBusiness": 0}
Monitor new reviews. Run this on a schedule. Use a limit that is larger than
the number of new reviews that you expect between two runs. Use the id field,
or createdAt, to skip reviews that you already have:
{"businesses": ["gary-danko-san-francisco"],"sortBy": "DATE_DESC","maxReviewsPerBusiness": 100}
Find complaints. Only 1- and 2-star reviews, newest first:
{"businesses": ["gary-danko-san-francisco"],"maxReviewsPerBusiness": 0,"ratings": ["1", "2"]}
Reviews about a topic. Reviews that mention parking. Search results come in Yelp's relevance order, and the matching words have markers:
{"businesses": ["gary-danko-san-francisco"],"query": "parking","maxReviewsPerBusiness": 100}
Elite reviewers first. Reviews from Elite members come before the others:
{"businesses": ["gary-danko-san-francisco"],"sortBy": "ELITES_DESC","maxReviewsPerBusiness": 100}
Compare businesses. One run reads all the businesses. The dataset keeps the order of your list:
{"businesses": ["gary-danko-san-francisco","house-of-prime-rib-san-francisco","https://www.yelp.com/biz/zuni-cafe-san-francisco"],"maxReviewsPerBusiness": 200}
The best-rated reviews first:
{"businesses": ["gary-danko-san-francisco"],"sortBy": "RATING_DESC","maxReviewsPerBusiness": 100}
The worst reviews first:
{"businesses": ["gary-danko-san-francisco"],"sortBy": "RATING_ASC","maxReviewsPerBusiness": 100}
The oldest reviews first:
{"businesses": ["gary-danko-san-francisco"],"sortBy": "DATE_ASC","maxReviewsPerBusiness": 100}
Reviews in another language. Set languageCode to a code such as de or
zh. Yelp returns only the reviews that reviewers wrote in that language. The
reviewCountsByLanguage field in the business record shows which languages a
business has:
{"businesses": ["gary-danko-san-francisco"],"languageCode": "de","maxReviewsPerBusiness": 20}
Owner replies. There is no filter for replies. Collect the reviews, then keep
the rows where ownerReply is not null. Many businesses never reply. This
example reads all 1- and 2-star reviews of one bakery:
{"businesses": ["tartine-bakery-san-francisco"],"ratings": ["1", "2"],"maxReviewsPerBusiness": 0}
Photos and videos. There is no filter for media. Collect the reviews, then
keep the rows where photos or videos is not empty.
Business details only. Set maxReviewsPerBusiness to 1. The business
record is complete, and you pay for one review:
{"businesses": ["gary-danko-san-francisco"],"maxReviewsPerBusiness": 1}
Limit your spend. Set a maximum cost per run in the run options. The Actor stops when the limit is reached and keeps the reviews that it saved.
Choose the businesses
Put one or more entries in businesses. Each entry is a Yelp business URL, an
alias, or a business ID. You can mix all three in one run.
- URL. A business link on any Yelp domain, such as
yelp.com/biz/...,yelp.co.uk/biz/..., oryelp.ca/biz/.... A query string, a trailing slash, and a/reviewsending are fine. - Alias. This is the text after
/biz/in the URL. Inhttps://www.yelp.com/biz/gary-danko-san-francisco, the alias isgary-danko-san-francisco. An alias can have letters with accents, such aszuni-café-san-francisco-3. Yelp can send an old alias to the current one. The output holds the current alias. - Business ID. The 22-character ID that Yelp uses inside, such as
WavvLdfdP6g8aZTtbBQHTw. Each record in thebusinessesdataset has it inid. A value of 22 letters, numbers,_, or-is always read as an ID. Use the full URL if an alias has that exact shape. - Not found. A business that does not exist. The log shows and your entry, and the other businesses still run.Could not resolve business ID for
{"businesses": ["https://www.yelp.com/biz/gary-danko-san-francisco?osq=restaurants","house-of-prime-rib-san-francisco","WavvLdfdP6g8aZTtbBQHTw"],"maxReviewsPerBusiness": 5}
The Actor reads the businesses in your order, so the reviews of each business
come as one block in that order. A repeated business is read again. A business
that fails does not stop the others, and the run still ends with the status
Succeeded. An empty businesses list also succeeds, with no records.
Filter the reviews
Filters are combined, except where noted.
ratings. Any combination of"1"to"5". An empty list means all ratings.query. Text that the review must match. Search results come in Yelp's relevance order. Search ignoressortByandratings. The log shows a warning when you set one of them with a query.languageCode. A language code such asen,de, orzh. Yelp returns only the reviews that reviewers wrote in that language. The default isen. A search in a language other than English can find no match.
This example keeps the 4- and 5-star reviews in English, newest first:
{"businesses": ["gary-danko-san-francisco"],"maxReviewsPerBusiness": 10,"languageCode": "en","ratings": ["4", "5"],"sortBy": "DATE_DESC"}
A null query or an empty ratings list counts as not set. Do not send an
empty languageCode. Leave the field out to get English.
Choose the review order
sortBy sets the order. The default is DATE_DESC.
| Value | Order |
|---|---|
DATE_DESC | Newest first. |
DATE_ASC | Oldest first. |
RATING_DESC | Highest rated first. |
RATING_ASC | Lowest rated first. Newest first within each star level. |
ELITES_DESC | Reviews from Elite members first. |
The Actor does not sort the reviews again. It saves them in the order that Yelp
returns them. With a query, the order is Yelp's relevance order, whatever
sortBy says.
Input reference
All fields are optional. A run without businesses succeeds and returns no
records.
| Field | Type | Default | Description |
|---|---|---|---|
businesses | string[] | [] | Yelp business URLs, aliases, or 22-character business IDs. The Actor reads them in your order, including repeated entries. |
sortBy | string | DATE_DESC | DATE_DESC, DATE_ASC, RATING_DESC, RATING_ASC, or ELITES_DESC. |
ratings | string[] | all ratings | Any combination of "1", "2", "3", "4", and "5". An empty list means all ratings. Repeated values are accepted. |
maxReviewsPerBusiness | integer | 20 | Maximum reviews for each business. 0 collects all available reviews. |
query | string or null | "" | Text that the reviews must match. null or an empty string means no search. |
languageCode | string | en | A Yelp language code such as en, de, or zh. Do not send an empty string. |
proxyConfiguration | object | Apify Proxy enabled | Optional connection settings managed by Apify. |
Unknown input fields are ignored. Apify rejects a value of the wrong type before
the run starts. Examples are a negative or fractional maxReviewsPerBusiness, a
rating outside "1" to "5", and a sortBy that is not in the list above.
Output
Each item in the default dataset is one review. The Overview table shows the
review ID, business, rating, text, author, created time, and language. Every
field below is in every item. A field without data is null or [].
Each item in the businesses dataset is one business. The Overview table
shows the ID, name, alias, rating, review count, price range, and phone number.
The dataset has one item for each business that the Actor found, also when the
business has no matching reviews.
Fields by topic
- Review. ID, rating, text, translated text, language, the owner's reply, and the time of experience that the reviewer gave.
- Dates. The created time in UTC (
createdAt) and in the business's local time (localDateTime). - Reviewer. ID, name, location, review, friend, and photo counts, profile photo, Elite year, the Elite All-Star flag, and the expert badge.
- Votes and reactions. Useful, funny, and cool counts. Each reaction with its count.
- Media. Each photo with caption, size, upload date, uploader, keywords, and likes. Each video with caption.
- History and tags. The IDs of earlier reviews in the same history. Check-in count and the first reviewer, payment, deal, reservation, and review of the day flags.
- Business. Alias, name, and ID of the business.
- Run. The UTC time at which the Actor saved the review.
Review example
This example is a 1-star review with an Elite reviewer, reactions, an expert badge, and an owner reply. Square brackets mark values removed from the documentation.
Field groups
| Group | Root fields |
|---|---|
| Review | id, text, translatedText, rating, language, ownerReply, userSpecifiedTimeOfExperience |
| Dates | createdAt, localDateTime |
| Reviewer | author, expertRecognition |
| Votes and reactions | feedback, reactions |
| Media | photos, videos |
| History and tags | previousReviewIds, tags |
| Business | businessAlias, businessName, businessEncId |
| Run | scrapedAt |
Field notes
idis the Yelp review ID. Use it to remove reviews that you already have, for example when you run a monitor on a schedule.createdAtis a UTC time in ISO 8601 format.localDateTimeis the time in the business's time zone, with the offset.businessAliasis the alias that Yelp uses now. It can differ from the alias that you entered.texthas the full review. In a search, the words that match are inside[[HIGHLIGHT]]and[[ENDHIGHLIGHT]]markers.translatedTextisnullwhenlanguageCodeisen. With another language, it holds Yelp's text in that language.author.displayNameis the short name that Yelp shows, such as "Alex K.".author.eliteYearis the latest year of the reviewer's Elite status as Yelp shows it, such as26. It isnullfor a reviewer without Elite status.feedbackholds the useful, funny, and cool votes.reactionsholds the reaction buttons, each with its count.ownerReplyis the public reply text of the business. It isnullwhen the business did not reply.previousReviewIdslists the IDs of earlier reviews in the same history. It is empty for a review that has no earlier version.- Yelp can return the same review twice, mostly in a search. The Actor saves it once for each business you list.
- Some reviews do not use the standard shape. The Actor saves each such review as it comes from Yelp, so no fixed field list applies to it.
Business example
These selected, unchanged fields came from one saved business record. This is a partial sample. The tables above cover the omitted fields.
{"id": "WavvLdfdP6g8aZTtbBQHTw","alias": "gary-danko-san-francisco","name": "Gary Danko","rating": 4.5,"reviewCount": 6150,"reviewCountsByRating": [125, 217, 485, 1100, 4228],"reviewCountsByLanguage": [{ "language": "en", "count": 6151 },{ "language": "zh", "count": 3 },{ "language": "de", "count": 1 }],"primaryPhotoUrl": "https://s3-media0.fl.yelpcdn.com/bphoto/5dbjkeTld05HumeToIAhRQ/60s.jpg","categories": [{ "alias": "newamerican", "title": "New American" },{ "alias": "french", "title": "French" },{ "alias": "cocktailbars", "title": "Cocktail Bars" }],"isClosed": false,"priceRange": "$$$$","notRecommendedReviewCount": 1033,"coordinates": { "latitude": 37.8058724, "longitude": -122.4205943 },"countryCode": "US","formattedAddress": {"addressLine1": "800 N Point St","city": "San Francisco","regionCode": "CA","postalCode": "94109"},"isCurrentlyOpen": false,"scrapedAt": "2026-10-14T11:23:05.626Z"}
FAQ
How many reviews can I get?
There is no fixed limit. Set maxReviewsPerBusiness to 0 to get all the reviews
that Yelp recommends for a business. The Actor does not return the reviews that
Yelp does not recommend. Your count can differ by a few from the count on the
Yelp page, because Yelp adds and removes reviews all the time.
Why did I get fewer reviews than maxReviewsPerBusiness?
maxReviewsPerBusiness is an upper limit. The business can have fewer reviews,
and your filters can remove some. A search finds only the reviews that match the
text.
How do I find the alias or the business ID?
Open the business on Yelp. The alias is the text after /biz/ in the URL. You
can also give the whole URL. After a run, the business ID is in the id field of
the businesses dataset.
How do I get only the new reviews?
The Actor has no date filter. Run it on a schedule with sortBy set to
DATE_DESC and a limit that is larger than the number of new reviews between
two runs. Remove the reviews that you already have with the id field, or keep
the reviews with a createdAt after your last run.
Can I find businesses by location or category?
This Actor needs the business URL, alias, or ID. To find businesses by location, category, and keyword, use Yelp Business Scraper.
A feature or field that I need is missing. What can I do?
Tell us in the Issues tab. Describe what you need and give an example business.
Where can I report a problem?
Open an issue in the Issues tab. Include the run ID and the input, so that we can reproduce it.
Similar Actors
- Yelp Business Scraper. Yelp business data, and business search by location, category, and keyword.
- TripAdvisor Reviews. TripAdvisor reviews of restaurants, hotels, attractions, and cruises, from URLs or location IDs.
- Google Maps Reviews Scraper. Google Maps reviews with place context, from place URLs or Place IDs.
- Glassdoor Reviews Scraper. Glassdoor company reviews with ratings, pros and cons, employment details, and employer responses.
- G2 Scraper. G2 software reviews, products, analytics, comparisons, and discussions.