OpenTable Restaurant Reviews API
Get normalized guest reviews for an OpenTable restaurant, ordered by date or rating and paginated up to 25 reviews per call.
Overview
Newest by default
Reviews are returned newest-first unless you select highest or lowest. Pages are 1-indexed and page_size defaults to the maximum of 25.
Use the stable restaurant_id returned by OpenTable Restaurant Search. Each review includes overall, food, service, ambience, and value ratings; reviewer details; dining and submission times; verification; helpfulness; and reviewer-uploaded photos when available.
Endpoint URL
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| restaurant_id | integer | Required | Positive OpenTable restaurant ID, available from Restaurant Search. |
| sort | string | Optional | newest (default), highest, or lowest. |
| page | integer | Optional | 1-indexed page number. Default: 1. |
| page_size | integer | Optional | Reviews per page, from 1 to 25. Default and maximum: 25. |
Sorting
newest
Most recently submitted reviews first. This is the default.
highest
Highest overall rating first.
lowest
Lowest overall rating first.
Response Format
Pagination
total_countis the restaurant's total review count.total_pagesreflects the selected page size.has_moreis true when another page is available.sortechoes the normalized sort value used for the request.
| Review field | Description |
|---|---|
| id, text | Stable review ID and the guest's review text. |
| ratings | Overall, food, service, ambience, value, and normalized noise level. |
| reviewer | Name, initials, location, approved review count, and VIP status when available. |
| dined_at, submitted_at | ISO 8601 dining and submission timestamps. |
| verified | True when OpenTable marks the review as verified. |
| helpfulness | Up votes, down votes, and score. |
| photos | Reviewer photos with caption and nullable CDN URLs for five sizes. |
Sparse fields stay predictable
Optional upstream values are returned as null, while photos is always an array. Your client can keep one response shape across restaurants.
Error Responses
Errors follow RFC 7807 Problem Details. OpenTable review failures include provider: "opentable" and product: "reviews".
400 Invalid sort
INVALID_SORT when sort is not newest, highest, or lowest.
422 Validation error
Missing or invalid restaurant_id, page, or page_size, including page sizes above 25.
502 Upstream error
UPSTREAM_ERROR when OpenTable does not return a usable response after retries.
Best Practices
- Use
newestfor incremental collection and stop when you reach a review already stored. - Follow
has_moreinstead of guessing how many pages remain. - Keep the same sort value while paging to preserve a consistent ordering.
- Use
highestandlowestfor targeted sentiment samples.
Related Endpoints
Restaurant Search
Find restaurants and obtain the ID required by this endpoint.
View Documentation →