GET

OpenTable Private Dining API

Find venues that offer private dining near a location, with contact and capacity details.

Overview

Directory search — no date or party size

This targets OpenTable's private-dining sub-site, so it is a directory search, not an availability search: there is no date, time, or party size. There is also no city-name search — resolve a place to coordinates first, e.g. with the Meta Coordinates Lookup endpoint (GET /v1/meta/coordinates-lookup).

The OpenTable Private Dining endpoint finds restaurants that offer private dining around a latitude/longitude. Each result carries the private-dining event contact (name, phone, email), the largest-space capacity, the number of spaces, and an instant-bookable flag — alongside cuisine, price band, rating, neighborhood, coordinates, and photos.

Endpoint URL

GET https://api.stayapi.com/v1/opentable/private-dining

Parameters

Parameter Type Required Description
latitude float Required Search-center latitude (-90 to 90).
longitude float Required Search-center longitude (-180 to 180).
cuisine_ids string[] (UUID) Optional OpenTable cuisine UUIDs. Discover them by calling once with with_facets=true. Repeatable for multiple cuisines.
instant_book boolean Optional If true, return only instantly-bookable venues.
radius integer Optional Search radius in miles (1-100). Default: 50
min_capacity integer Optional Only venues whose largest space seats at least this many (≥ 1). Applied by StayAPI — see the capacity note below.
metro_id integer Optional OpenTable metro id; narrows the search to a metro area.
with_facets boolean Optional If true, include facets.cuisines (name → cuisine_id → count). Default: false
limit integer Optional Maximum restaurants to return (1-50). Default: 50
offset integer Optional Pagination offset (≥ 0). Default: 0

Discover cuisine IDs with facets

cuisine_ids are opaque OpenTable cuisine UUIDs (not the 1-4 price values). Call once with with_facets=true to get facets.cuisines — each entry maps a cuisine name to its cuisine_id and a count — then pass the UUIDs you want back as cuisine_ids.

Response Format

The response returns matching private-dining venues, plus counters describing the capacity filter and optional cuisine facets.

Response Structure

  • success: Boolean indicating request success
  • total: Match count — metro-wide when min_capacity is omitted, or the count after the capacity filter when it is set
  • server_total: Metro-wide pre-filter total (non-null only when min_capacity is set)
  • searched_count: Number of venues scanned for the capacity filter (≤ 250)
  • capacity_filter_truncated: true if the metro exceeded the 250-venue scan cap
  • restaurants: Array of venue objects
  • facets: Cuisine facets — null unless with_facets=true

Venue Object Fields

Field Type Description
id integer OpenTable restaurant id. Stable.
name string Restaurant name
url string OpenTable private-dining profile URL
primary_cuisine string Primary cuisine, e.g. "Pan-Asian"
price_band object Price band: id (1-4), name (e.g. "$31 to $50"), currency_symbol
rating float Guest-review score (0-5). May be null.
review_count integer All-time text-review count. May be null.
neighborhood string Neighborhood name
coordinates object Restaurant latitude / longitude
photos array Ready-to-use CDN photo URLs
is_instant_bookable boolean Whether the venue is instantly bookable
space_count integer Number of private-dining spaces
private_dining object Private-dining details: contact, phone, email, largest_capacity (seats in the biggest space), description

How the capacity filter works

OpenTable has no native capacity filter, so StayAPI applies min_capacity itself. It scans up to 250 venues, filters them, and reports server_total (metro-wide pre-filter total), searched_count (how many it scanned), and capacity_filter_truncated (true when the metro had more than 250 venues, so matches beyond the scanned window may exist). facets are metro-wide and are NOT recomputed against min_capacity — when both are set, facet counts will exceed total.

Error Responses

The API returns standard HTTP error codes with detailed messages following the RFC 7807 Problem Details format. Failures carry provider: "opentable" and product: "private-dining".

400 Bad Request

A cuisine_ids value is not a valid UUID (INVALID_CUISINE_ID).

{
  "type": "https://api.stayapi.com/errors/invalid-cuisine-id",
  "title": "Invalid Cuisine ID",
  "status": 400,
  "detail": "cuisine_ids must be valid UUIDs",
  "provider": "opentable",
  "product": "private-dining",
  "error_code": "INVALID_CUISINE_ID"
}

422 Unprocessable Entity

A parameter is missing or out of range (e.g. bad coordinates, radius > 100, min_capacity < 1, limit > 50).

502 Bad Gateway

Upstream service error from OpenTable after retries (UPSTREAM_ERROR).

Usage Tips

Best Practices

  • Geocode a place name to coordinates first — pair this with the Meta Coordinates Lookup endpoint
  • Do a first call with with_facets=true to discover the cuisine_id UUIDs, then filter with cuisine_ids
  • When using min_capacity, check capacity_filter_truncated — if true, widen the search or lower the threshold to catch matches beyond the 250-venue scan
  • Use private_dining.largest_capacity and space_count to match the venue to your event size

Rate Limiting

This endpoint is subject to your plan's rate limits. Each search counts as one API call regardless of the number of results returned.

Related Endpoints

OpenTable Restaurant Search

Find restaurants by location for a date, time, and party size

View Documentation →

Meta Coordinates Lookup

Resolve a place name into latitude/longitude for the search

View Documentation →
Request
curl -X GET "https://api.stayapi.com/v1/opentable/private-dining?latitude=32.8959&longitude=-97.0671&with_facets=true&min_capacity=100" \
  -H "X-API-Key: YOUR_API_KEY"
Response
{
  "success": true,
  "total": 117,
  "server_total": 178,
  "searched_count": 178,
  "capacity_filter_truncated": false,
  "restaurants": [
    {
      "id": 1331095,
      "name": "Soy Cowboy",
      "url": "https://www.opentable.com/private-dining/profile/soy-cowboy",
      "primary_cuisine": "Pan-Asian",
      "price_band": { "id": 3, "name": "$31 to $50", "currency_symbol": "$" },
      "rating": 4.6,
      "review_count": 212,
      "neighborhood": "Arlington",
      "coordinates": { "latitude": 32.7503, "longitude": -97.0847 },
      "photos": [
        "https://resizer.otstatic.com/v4/photos/65907279-1?width=480&height=270"
      ],
      "is_instant_bookable": true,
      "space_count": 4,
      "private_dining": {
        "contact": "The Sales Event Manager",
        "phone": "(713) 804-3317",
        "email": "events@example.com",
        "largest_capacity": 200,
        "description": "Soy Cowboy offers a vibrant yet intimate setting for private events."
      }
    }
  ],
  "facets": {
    "cuisines": [
      { "cuisine_id": "8afc7adc-de3b-439d-91f2-ce568c1a653b", "name": "American", "count": 75 }
    ]
  }
}