Browse documentation
GET

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

GET https://api.stayapi.com/v1/opentable/restaurant/reviews

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_count is the restaurant's total review count.
  • total_pages reflects the selected page size.
  • has_more is true when another page is available.
  • sort echoes the normalized sort value used for the request.
Review field Description
id, textStable review ID and the guest's review text.
ratingsOverall, food, service, ambience, value, and normalized noise level.
reviewerName, initials, location, approved review count, and VIP status when available.
dined_at, submitted_atISO 8601 dining and submission timestamps.
verifiedTrue when OpenTable marks the review as verified.
helpfulnessUp votes, down votes, and score.
photosReviewer 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 newest for incremental collection and stop when you reach a review already stored.
  • Follow has_more instead of guessing how many pages remain.
  • Keep the same sort value while paging to preserve a consistent ordering.
  • Use highest and lowest for targeted sentiment samples.

Related Endpoints

Restaurant Search

Find restaurants and obtain the ID required by this endpoint.

View Documentation →

Private Dining

Find venues with event contacts and capacity details.

View Documentation →
Request
curl -X GET "https://api.stayapi.com/v1/opentable/restaurant/reviews?restaurant_id=404046&sort=newest&page=1&page_size=25" \
  -H "X-API-Key: YOUR_API_KEY"
Response
{
  "success": true,
  "restaurant_id": 404046,
  "total_count": 80,
  "page": 1,
  "page_size": 25,
  "total_pages": 4,
  "has_more": true,
  "sort": "newest",
  "reviews": [
    {
      "id": "OT-404046-3819-180028644728",
      "text": "Enjoyed our meal very much.",
      "ratings": {
        "overall": 5,
        "food": 5,
        "service": 5,
        "ambience": 5,
        "value": 4,
        "noise": "moderate"
      },
      "reviewer": {
        "name": "Nancy",
        "initials": "N",
        "location": "Calgary",
        "review_count": 11,
        "is_vip": null
      },
      "dined_at": "2026-07-02T18:30:00+02:00",
      "submitted_at": "2026-07-05T10:39:45Z",
      "verified": true,
      "from_previous_concept": false,
      "helpfulness": { "up": 0, "down": 0, "score": 0 },
      "photos": []
    }
  ]
}