Wire it up. See the schema.
- 50 free requests on signup
- Every endpoint included
- No credit card required
- Same schema as paid
A quick demo might save your team weeks of engineering work.
Resources
Free Tools
Resolve restaurant IDs, then pull profile details, search results, paginated guest reviews, exact availability, nearby bookable slots, and private dining venues as clean JSON.
curl "https://api.stayapi.com/v1/opentable/restaurant/url-to-id" \ -G \ -H "x-api-key: $STAYAPI_KEY" \ -d "url=https://www.opentable.com/r/the-ivy-victoria-brasserie-london-2"
curl "https://api.stayapi.com/v1/opentable/restaurants/404046" \ -G \ -H "x-api-key: $STAYAPI_KEY"
curl "https://api.stayapi.com/v1/opentable/search" \ -G \ -H "x-api-key: $STAYAPI_KEY" \ -d "latitude=34.0634" \ -d "longitude=-118.2806" \ -d "date=2026-07-30" \ -d "time=19:00" \ -d "party_size=2" \ -d "prices=[2, 3]"
curl "https://api.stayapi.com/v1/opentable/private-dining" \ -G \ -H "x-api-key: $STAYAPI_KEY" \ -d "latitude=32.8959" \ -d "longitude=-97.0671" \ -d "min_capacity=100" \ -d "with_facets=true"
curl "https://api.stayapi.com/v1/opentable/restaurant/reviews" \ -G \ -H "x-api-key: $STAYAPI_KEY" \ -d "restaurant_id=404046" \ -d "sort=newest" \ -d "page=1" \ -d "page_size=25"
curl "https://api.stayapi.com/v1/opentable/restaurants/404046/availability" \ -G \ -H "x-api-key: $STAYAPI_KEY" \ -d "date=2026-07-30" \ -d "time=19:00" \ -d "party_size=2"
curl "https://api.stayapi.com/v1/opentable/restaurants/404046/availability/slots" \ -G \ -H "x-api-key: $STAYAPI_KEY" \ -d "date=2026-07-30" \ -d "preferred_time=19:00" \ -d "party_size=2"
{
"success": true,
"restaurant_id": 180654,
"name": "The Ivy Victoria Brasserie",
"country": "United Kingdom",
"macro": "South West London",
"neighborhood": "Victoria"
}
{
"success": true,
"restaurant": {
"id": 404046,
"name": "Le Petit Saint Honoré",
"url": "https://www.opentable.com/r/le-petit-saint-honore-paris",
"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": {
"food": 4.4,
"service": 4.4,
"ambience": 4.5,
"value": 4.3
},
"review_count": 201,
"address": {
"line1": "158 Rue Saint-Honoré",
"city": "Paris",
"postal_code": "75001",
"country": "France"
},
"contact": {
"phone": "01 42 60 08 06"
},
"hours": "Daily 9:00 am–12:00 am",
"photo_count": 47,
"neighborhood": {
"id": 16454,
"name": "Châtelet"
}
}
}
{
"success": true,
"total": 250,
"restaurants": [
{
"id": 67720,
"name": "Perch LA",
"url": "https://www.opentable.com/perch",
"primary_cuisine": "French American",
"dining_style": "Casual Elegant",
"price_band": {
"id": 3,
"name": "$31 to $50",
"currency_symbol": "$"
},
"rating": 4.5,
"review_count": 12360,
"neighborhood": "Downtown",
"phone": "(213) 802-1770",
"has_private_dining": true
}
]
}
{
"success": true,
"total": 117,
"server_total": 178,
"restaurants": [
{
"id": 1331095,
"name": "Soy Cowboy",
"primary_cuisine": "Pan-Asian",
"price_band": {
"id": 3,
"name": "$31 to $50",
"currency_symbol": "$"
},
"rating": 4.6,
"neighborhood": "Arlington",
"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
}
}
]
}
{
"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",
"location": "Calgary",
"review_count": 11
},
"dined_at": "2026-07-02T18:30:00+02:00",
"verified": true
}
]
}
{
"success": true,
"available": true
}
{
"success": true,
"slots": [
"18:30",
"18:45",
"19:00",
"19:15",
"19:30"
]
}
Trusted by hospitality teams at
OpenTable has no public data API for the restaurant profiles, listings, guest reviews, reservation availability, and private dining venues that product and research teams actually need. Building it yourself means source-specific HTTP and GraphQL transport, proxy routing, and parsers that must keep pace with upstream changes.
StayAPI is that layer, run for you. Start with a full OpenTable restaurant URL and resolve its numeric ID, fetch its complete profile, search by coordinates, get reviews, check one exact date and time, request nearby bookable slots, or ask for private dining contacts. Availability responses stay deliberately small: a boolean for an exact check or an array of HH:MM slots. No browser session or OpenTable availability token is exposed to callers.
x-api-key in, JSON out. URL-to-ID, restaurant details, search, reviews, availability, nearby slots, and private dining behind one base URL. No SDK to install.
Fetching, parsing, proxy rotation, and source uptime are ours. You consume normalized dining JSON and never handle OpenTable availability tokens.
Every call hits OpenTable live, so cuisine, ratings, and private dining contacts are current to the request, not a stale nightly snapshot.
Each returns normalized JSON in the same shape. Click any endpoint for parameters, an example response, and a live playground.
The same endpoints, pointed at different jobs. These are the ones we see most.
Accept an OpenTable profile URL or power a dining search by location and date, then carry the stable restaurant ID into profile, review, and availability calls.
Surface venues that host private events near a place, ranked by largest space capacity, with the event contact name, phone, and email ready to reach out.
Benchmark restaurants on cuisine, pricing, amenities, rating, and review volume, then analyze newest, highest-rated, or lowest-rated guest feedback in a consistent schema.
Feed structured OpenTable restaurant data and small availability responses into an LLM tool call so your agent can verify a time before recommending it.
Flat monthly plans, every endpoint included on every plan. 1 request = 1 credit. No per-endpoint multipliers, no surprise overages.
Wire it up. See the schema.
Kick the tires in production.
Small prod workloads and growing apps.
Daily pulls in production.
Above 100k / month, annual terms, white-glove onboarding.
Every plan ships every endpoint. Same uptime, same schema, same response time.
Don't see your question? Email us at info@stayapi.com.
OpenTable runs partner and affiliate programs for restaurants and connectivity, but there is no open public API for pulling restaurant listings, cuisine, ratings, or private dining venues. StayAPI gives you that data over plain REST with a key you get in 30 seconds.
Call /v1/opentable/search with a latitude, longitude, date, and time. You get matching restaurants with cuisine, price band, rating, address, phone, photos, and feature flags as JSON. See the restaurant search endpoint docs.
Call /v1/opentable/restaurant/url-to-id with the full OpenTable /r/{slug} profile URL. StayAPI returns the numeric restaurant_id, name, country, macro area, and neighborhood without browser emulation. See the URL-to-ID endpoint docs.
Call /v1/opentable/restaurants/{restaurant_id} with the numeric ID from search or URL-to-ID. The normalized response includes cuisine, pricing, ratings, address, coordinates, contact details, hours, photos, policies, dining areas, and feature flags. See the restaurant details endpoint docs.
Yes. /v1/opentable/private-dining returns venues that host private events near your coordinates, each with the event contact name, phone, email, largest space capacity, and an instant book flag. Filter by min_capacity to match your party. See the private dining endpoint docs.
Yes. Call /v1/opentable/restaurant/reviews with a restaurant_id. Results default to newest first; use sort=highest or sort=lowest to order by rating. Each page contains up to 25 reviews. See the restaurant reviews endpoint docs.
Call /v1/opentable/restaurants/{restaurant_id}/availability with a reservation date, exact time, and party_size. The response is {"success":true,"available":true} or the same object with available set to false. To offer alternatives, use the nearby availability slots endpoint.
You get 50 free requests on signup, every endpoint included, no credit card. After that it is flat monthly plans starting at $49. One request equals one credit, with no per-endpoint multipliers.
Both end with live OpenTable data in your stack. The fast path is on the left.
50 free requests after sign up. Fastest way to see if the schema fits.
Start free15 minutes. Volume + endpoint mix. Walk out with a quote.
Book a demo