Browse documentation
GET

OpenTable Restaurant Details API

Get a live, normalized OpenTable restaurant profile from one numeric restaurant ID.

Overview

Direct profile fetch — no browser required

StayAPI fetches and parses the restaurant profile over HTTP. Callers do not need Chrome, Browserless, cookies, or an OpenTable session.

Supply the stable restaurant_id returned by Restaurant Search or URL to Restaurant ID. The response combines identity, editorial content, ratings, location, contact information, operating details, photos, policies, and OpenTable feature flags in one JSON object.

Endpoint URL

GET https://api.stayapi.com/v1/opentable/restaurants/{restaurant_id}

Path Parameter

Parameter Type Required Description
restaurant_id integer Required Positive numeric OpenTable restaurant ID, such as 404046.

Response Fields

Field Description
id, name, urlRestaurant identity and canonical OpenTable profile URL.
description, review_summaryRestaurant description and OpenTable's editorial review summary.
primary_cuisine, cuisines, dining_style, price_bandCuisine taxonomy, dining style, and localized price information.
rating, ratingsOverall rating plus food, service, ambience, and value ratings.
review_count, text_review_count, recent_reservation_countReview volume and recent reservation activity.
address, coordinates, neighborhood, metro, macroStreet address, latitude/longitude, and OpenTable location hierarchy.
contact, website, hoursPhone, email, website, and opening-hours text.
dress_code, parking, public_transit, cross_streetArrival and venue guidance when supplied by the restaurant.
payment_options, additional_detailsAccepted payments and restaurant amenities.
photos, photo_countOpenTable-hosted photo URLs and the profile's photo count.
max_advance_days, max_party_sizeReservation-window and party-size limits.
has_takeout, order_online_link, private_diningTakeout, online ordering, and private-dining details.
dining_areas, time_zone, featuresBookable areas, timezone metadata, and seating or availability flags.

Stable null and list handling

Fields OpenTable does not supply remain null, while collection fields such as cuisines, photos, payment_options, and dining_areas remain empty arrays.

Error Responses

Errors follow RFC 7807 Problem Details with provider: "opentable" and product: "details".

404 Restaurant not found

RESTAURANT_NOT_FOUND when OpenTable has no profile for the supplied ID.

502 Upstream error

UPSTREAM_ERROR when OpenTable cannot be fetched or parsed after retries.

Related Endpoints

URL to Restaurant ID

Resolve a profile URL before requesting details.

View Documentation →

Restaurant Reviews

Fetch paginated guest reviews for the same restaurant ID.

View Documentation →
Request
curl "https://api.stayapi.com/v1/opentable/restaurants/404046" \
  -H "X-API-Key: YOUR_API_KEY"
Response
{
  "success": true,
  "restaurant": {
    "id": 404046,
    "name": "Le Petit Saint Honoré",
    "url": "https://www.opentable.com/r/le-petit-saint-honore-paris",
    "description": "Le Petit Saint-Honoré welcomes you …",
    "review_summary": "Le Petit Saint Honoré offers a charming dining experience …",
    "website": "http://www.lepetitsainthonore.fr/",
    "primary_cuisine": "French",
    "cuisines": ["French", "Traditional French"],
    "dining_style": "Casual Dining",
    "price_band": {"id": 2, "name": "€30 and under", "currency_symbol": "€"},
    "rating": 4.4,
    "ratings": {"overall": 4.4, "food": 4.4, "service": 4.4, "ambience": 4.5, "value": 4.3},
    "review_count": 201,
    "text_review_count": 80,
    "recent_reservation_count": 12,
    "address": {
      "line1": "158 Rue Saint-Honoré",
      "line2": "",
      "city": "Paris",
      "state": "Ile-de-France",
      "postal_code": "75001",
      "country": "France"
    },
    "coordinates": {"latitude": 48.8623994, "longitude": 2.3450701},
    "contact": {"phone": "01 42 60 08 06", "email": null},
    "hours": "Daily 9:00 am–12:00 am",
    "photos": ["https://resizer.otstatic.com/v3/photos/86428591-3"],
    "photo_count": 47,
    "max_advance_days": 90,
    "max_party_size": 9,
    "private_dining": {"available": false, "largest_capacity": 0},
    "neighborhood": {"id": 16454, "name": "Châtelet"},
    "metro": {"id": 3408, "name": "Paris"},
    "macro": {"id": 9080},
    "features": {"outdoor": true, "waitlist": false}
  }
}