Browse documentation
GET

OpenTable Restaurant Menu API

Get a restaurant's structured menus, sections, items, descriptions, price strings, and item variations.

Overview

The menu endpoint reads the structured menu published on an OpenTable restaurant profile. A single response can contain multiple menus, such as dinner, drinks, or happy hour, each with its own currency and nested sections.

Endpoint URL

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

Prices are strings by design

Menu prices can be numeric, ranges, text such as MKT, or unavailable. Keep price and variation price values as strings, and use each menu's currency_code when it is present.

Parameters

Parameter Type Required Description
restaurant_id integer Required Positive OpenTable restaurant ID from search or the URL-to-ID endpoint.

Response schema

Top-level fields

  • restaurant_id and restaurant_name: Restaurant identity
  • source_url: Profile URL fetched for the restaurant ID
  • external_menu_url: Restaurant-hosted menu link, when OpenTable supplies one
  • shows_third_party_menu: Whether OpenTable points to an external menu
  • menu_count, section_count, item_count, variation_count: Convenient aggregate counts
  • menus: Array of normalized menu objects
Object Fields
menu name, description, currency_code, sections
section name, description, items
item name, description, price, variations
variation name, price

An empty menu is a successful result

A valid restaurant that has no structured OpenTable menu returns HTTP 200 with menus: [] and zero counts. Use 404 only to identify an unknown restaurant ID.

Errors

404 Restaurant not found

No OpenTable profile exists for the requested restaurant ID.

422 Validation error

restaurant_id is missing, is not an integer, or is not positive.

502 Upstream error

The restaurant profile could not be fetched or parsed after retries. In-request errors use RFC 7807 Problem Details.

Try it

Free URL-first explorer

Paste an OpenTable URL. The explorer resolves the restaurant ID and renders the menu for you.

Open the free menu tool →

Authenticated playground

Run the menu endpoint with your API key and inspect the complete JSON response.

Open in playground →
Request
curl -G "https://api.stayapi.com/v1/opentable/restaurant/menu" \
  -H "X-API-Key: YOUR_API_KEY" \
  --data-urlencode "restaurant_id=12526"
Response
{
  "success": true,
  "restaurant_id": 12526,
  "restaurant_name": "Takami Sushi & Robata Restaurant",
  "source_url": "https://www.opentable.com/restaurant/profile/12526",
  "external_menu_url": null,
  "shows_third_party_menu": false,
  "menu_count": 2,
  "section_count": 35,
  "item_count": 222,
  "variation_count": 123,
  "menus": [
    {
      "name": "Dinner Menu",
      "description": null,
      "currency_code": "USD",
      "sections": [
        {
          "name": "Starters",
          "description": null,
          "items": [
            {
              "name": "Chef Selection",
              "description": "Seasonal preparation",
              "price": "MKT",
              "variations": [
                { "name": "Large", "price": "32" }
              ]
            }
          ]
        }
      ]
    }
  ]
}