Get Yelp Business Reviews
View all Yelp Business, Reviews & Restaurant Data endpoints →Retrieve a page of reviews for one Yelp business using its alias, 22-character business ID or Yelp business URL. Combine optional keyword, star-rating and original-language filters; choose from six documented sort orders, or request an additional translation using a two-letter language code. Pagination defaults to page 1 with 20 reviews per page; documented ranges are pages 1–1000 and page sizes 1–49. Saved successful responses contain count, per_page, current_page, total_pages, next, previous, business and reviews. The business object includes id, alias, name, link, rating, review_count, rating_distribution and languages, whose entries contain language and count. Observed review rows include id, link, rating, text, language, translated_text, created_at, date, author, reactions and photos. Author fields include identity, profile link, location, photo link, contribution counts and elite-status fields. Reactions include helpful, thanks, love_this and oh_no. Photo entries include identity, image links, dimensions, upload time, like_count and uploaded_by; caption and tags can be null. Rows also carry is_updated, is_first_review, check_in_count, made_reservation, paid_through_yelp and was_appreciated_by_business. Fields such as videos, owner_reply, previous_reviews, review_of_the_day and expert_badge were null in the observed rows, so their populated structures are not established. A saved newest-sort observation returned three reviews with text, ratings, authors and dates. A separate saved request containing a synthetic keyword returned reviews=[] and count=null, with null navigation values. This observation does not establish why the response was empty; a null count is unknown, not a confirmed zero. translated_text was null in the observed rows. The other sort orders, rating and language filters, and translation behavior are documented capabilities rather than independently verified results. Do not assume complete historical coverage or treat newest ordering as a guaranteed incremental feed.
API Features
Live API Demo
🔒 Sign in to try it live
Log in to call this API with your own API key. New accounts get 100 free credits — no card required.
Log in / Sign upNo active API key found. Create one in your Dashboard, then reload this page. Dashboard →
/api/project/yelp/business-reviews API Response (JSON)
{} curl -X GET 'https://api.opendata-api.com/api/project/yelp/business-reviews?key=<API_KEY>&business=gary-danko-san-francisco&page=1&page_size=20&sort_by=relevance'
Query Result
Use Cases
- Build a permission-appropriate branch-review export with page checkpoints and deduplication by returned review id, recording gaps rather than claiming a complete historical archive.
- Prepare a restaurant service-complaint queue using a service keyword and selected star ratings, retaining the original review language and any separately returned translation.
- Record business identity, requested filters, page number, returned row count and nullable count in a diagnostic log that distinguishes an empty response from a known zero total.
- Compare review dates across a deliberately selected branch set while storing fetch timestamps and avoiding assumptions that newest ordering provides a guaranteed incremental feed.
Frequently asked questions
What can I pass as the business identifier?
Pass a Yelp business alias such as gary-danko-san-francisco, a 22-character business ID, or a Yelp business URL. The request targets one business, not a location-wide search.
How do review pagination and page-size limits work?
page defaults to 1 and accepts documented values from 1 to 1000. page_size defaults to 20 and accepts 1 to 49. Responses observed per_page, current_page, total_pages, next and previous, but those limits do not guarantee that every historical review is accessible.
Can I combine keyword and star-rating filters?
The documented contract provides query for a review keyword, rating for comma-separated star ratings such as 1,2, and language for the original review language. These optional inputs can be supplied together. A saved request containing a synthetic keyword returned an empty response, without establishing its cause; combined filters and rating filtering were not independently tested.
How is language different from translate_to?
language filters reviews by their original two-letter language code. translate_to requests an additional translation into a two-letter target code. Keep text and language separate from translated_text, which was null in the saved rows without a translation request; translated output was not verified.
Does reviews=[] with count=null mean the business has no reviews?
No. A saved request containing a synthetic keyword returned an empty reviews array and an unknown count for a business that also returned genuine reviews in another observation. These observations do not establish the cause of the empty response. Preserve null as unknown and inspect the requested filters and page; do not interpret it as the business having zero reviews.
Which review sort orders are available?
The documented values are relevance, newest, oldest, highest_rated, lowest_rated and elites, with relevance as the default. A saved request using newest returned three dated reviews. Other sort orders were not independently verified, and ordering does not establish a guaranteed change feed.
Are replies, videos and translations always populated?
No. translated_text, videos, owner_reply, previous_reviews and several optional badge fields were null in the observed review rows. Treat them as optional; the saved responses do not establish their populated formats or availability for other businesses.