opentable.ca APIopentable.ca ↗
Search OpenTable.ca restaurants, get real-time table availability, fetch menus, reviews, and curated top picks across Canadian metro areas. 5 endpoints.
curl -X GET 'https://api.parse.bot/scraper/f956bcfe-cab2-4cec-a73e-37b56c6835cf/search_restaurants?term=New+York&covers=2&date_time=2026-02-24T19%3A00%3A00' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for restaurants by location, keyword, date, and party size. Returns paginated restaurant listings with details including name, cuisine, rating, price band, and location.
| Param | Type | Description |
|---|---|---|
| termrequired | string | Search term (city, neighborhood, or restaurant name). |
| covers | integer | Number of people in the party. |
| date_time | string | Preferred date and time in ISO format (e.g., 2026-05-20T19:00:00). Omitting returns results for the current time. |
{
"type": "object",
"fields": {
"meta": "object with page metadata",
"term": "string echoing the search term",
"total": "integer total count of matching restaurants",
"restaurants": "array of restaurant objects with restaurantId, name, primaryCuisine, neighborhood, statistics, priceBand, coordinates, address, photos"
},
"sample": {
"data": {
"meta": {},
"term": "Toronto",
"total": null,
"restaurants": [
{
"name": "Taline",
"address": {
"city": "Toronto",
"line1": "1276 Yonge St",
"state": "ON"
},
"priceBand": {
"name": "CAN$51 and over"
},
"statistics": {
"reviews": {
"ratings": {
"overall": {
"rating": 4.7
}
},
"allTimeTextReviewCount": 380
}
},
"neighborhood": {
"name": "Rosedale / Summerhill"
},
"restaurantId": 1295419,
"primaryCuisine": {
"name": "Armenian"
}
}
]
},
"status": "success"
}
}About the opentable.ca API
The OpenTable Canada API provides 5 endpoints for querying restaurant listings, profiles, and live booking availability across Canadian metro areas. The search_restaurants endpoint returns paginated results with fields like primaryCuisine, priceBand, statistics, and coordinates, while get_restaurant_availability delivers real-time time slots per restaurant ID — down to offset-level availability tokens ready for booking flows.
Search and Discovery
The search_restaurants endpoint accepts a term (city, neighborhood, or restaurant name) alongside optional covers and date_time parameters. It returns a total count and a paginated restaurants array, each entry containing restaurantId, name, primaryCuisine, neighborhood, priceBand, coordinates, and an address object. The restaurantId values returned here feed directly into get_restaurant_availability for slot lookups.
The get_top_restaurants endpoint takes a city string and returns module_lists organized into named categories such as top booked, premium marketplace, and mealtime features — plus metro_info and optional best_restaurants_by_category groupings. This is useful for surfacing editorially curated lists rather than keyword-matched results.
Detailed Profiles and Availability
get_restaurant_details accepts a restaurant slug (e.g., the-capital-grille-chicago) and returns the full restaurantProfile — including gallery photos, reviews, menus, hours of operation, and availability settings — alongside restaurant-specific faqs and a current availability object with an attribution token. This is the most field-dense endpoint and covers data not surfaced in search results.
get_restaurant_availability queries live time slots for one or more restaurants (passed as a comma-separated restaurant_ids string) on a specific date and time, with an optional party_size. The response includes an availabilityDays structure per restaurant containing individual slot offsets and restaurantAvailabilityToken values. get_metro_areas requires no inputs and returns the full list of supported Canadian metros with metroId, restaurantCount, and macros (sub-regions), which is the right starting point for building location pickers or coverage maps.
- Build a restaurant discovery app filtered by
priceBandandprimaryCuisinefor specific Canadian neighborhoods. - Aggregate real-time table availability across multiple
restaurant_idsfor a given date and party size. - Display curated 'top booked' and 'premium' restaurant lists by city using
get_top_restaurantsmodule categories. - Generate a restaurant detail page with photos, menus, and reviews from the
restaurantProfileresponse. - Populate a metro-area selector or coverage map using
featuredMetrosListForDomainwithrestaurantCountandmacros. - Monitor availability patterns for specific restaurants over time using repeated
get_restaurant_availabilitycalls. - Surface neighborhood-level restaurant density by combining
get_metro_areassub-regions withsearch_restaurantsresults.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does OpenTable have an official developer API?+
What does `get_restaurant_availability` return and how specific is it?+
availability array where each entry covers one restaurantId and contains availabilityDays — a structure of booking slots with time offsets and individual restaurantAvailabilityToken values. Tokens are per-slot and represent a point-in-time snapshot of open tables for the requested date, time, and optional party_size.Does the API cover restaurants outside Canada?+
get_metro_areas. US, UK, or other regional OpenTable listings are not included. You can fork this API on Parse and revise it to target a different regional OpenTable domain if you need broader geographic coverage.Can I retrieve a restaurant's full booking history or past reservation counts?+
Are search results paginated, and how do I navigate pages?+
search_restaurants returns a meta object containing page metadata alongside the total count of matching restaurants. Use the meta fields to determine available pages and pass the appropriate parameters to retrieve subsequent result sets.