# OpenTable API

> OpenTable returns restaurant availability, reservation times and public profiles, available as a workflow and API.

OpenTable helps find bookable restaurants by city or neighborhood, date and optional time, cuisine and party size. Check restaurant availability returns nearby reservation times for a restaurant, using its name or link, city, date and optional time and party size. Get restaurant returns public profile details, ratings, menu and photo links for a restaurant, using its name or link and city.

- Page: https://fous.com/tools/opentable
- Handle: `@opentable`
- Category: [Food](https://fous.com/tools/category/food)
- Source website: https://opentable.com
- Last verified: Sep 30, 2026

## Methods

### Check restaurant availability

Operation `check_restaurant_availability`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Check reservation times at an OpenTable restaurant by name and city or restaurant link. Shows times near the requested time; availability can change, and some restaurants limit online bookings for large parties.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `city` | string | yes | `"Chicago"` | City where the restaurant is located, for example Chicago. |
| `date` | string | yes | `"2026-10-15"` | Reservation date, today or later, for example 2026-10-15. |
| `time` | string | no | `"19:00"` | Preferred local time in HH:MM, for example 19:00. |
| `party_size` | integer | no | `20` | Number of guests, for example 2. |
| `restaurant` | string | yes | `"https://www.opentable.com/r/girl-and-the-goat-chicago"` | Restaurant name or OpenTable restaurant link, for example Girl & the Goat. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "restaurant",
    "city",
    "date"
  ],
  "properties": {
    "city": {
      "type": "string",
      "description": "City where the restaurant is located, for example Chicago.",
      "examples": [
        "Chicago"
      ]
    },
    "date": {
      "type": "string",
      "format": "date",
      "description": "Reservation date, today or later, for example 2026-10-15.",
      "examples": [
        "2026-10-15"
      ]
    },
    "time": {
      "type": "string",
      "default": "19:00",
      "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$",
      "description": "Preferred local time in HH:MM, for example 19:00.",
      "examples": [
        "19:00"
      ]
    },
    "party_size": {
      "type": "integer",
      "default": 2,
      "maximum": 20,
      "minimum": 1,
      "description": "Number of guests, for example 2.",
      "examples": [
        20,
        2
      ]
    },
    "restaurant": {
      "type": "string",
      "description": "Restaurant name or OpenTable restaurant link, for example Girl & the Goat.",
      "examples": [
        "https://www.opentable.com/r/girl-and-the-goat-chicago",
        "Girl & the Goat",
        "Alinea"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "city": "Chicago",
      "date": "2026-10-15",
      "time": "19:00",
      "party_size": 20,
      "restaurant": "https://www.opentable.com/r/girl-and-the-goat-chicago"
    },
    {
      "city": "Chicago",
      "date": "2026-10-15",
      "time": "19:00",
      "party_size": 2,
      "restaurant": "Girl & the Goat"
    },
    {
      "city": "Chicago",
      "date": "2026-10-15",
      "time": "19:00",
      "party_size": 2,
      "restaurant": "Alinea"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `date` | string | `"2026-10-15"` | Requested reservation date. |
| `address` | string or null | `"809 W Randolph, Chicago, IL, 60607"` | Street address of the restaurant. |
| `message` | string or null | `"For parties larger than 7, contact Girl & the Goat directly or explore private dining."` | Restaurant notice or unavailability message when no table is free; null when tables are free or no notice is displayed. |
| `party_size` | integer | `20` | Requested number of guests. |
| `booking_link` | string | `"https://www.opentable.com/r/girl-and-the-goat-chicago?dateTime=2026-10-15T19%3A00%3A00&covers=20"` | OpenTable page for the restaurant with the chosen reservation details. |
| `any_table_free` | boolean | `false` | Whether any requested-date reservation time is available near the preferred time. |
| `available_times` | array |  | Available local times near the preferred time, in HH:MM and chronological order. |
| `restaurant_name` | string | `"Girl & the Goat"` | Name listed by OpenTable. |

**Example input**

```json
{
  "city": "Chicago",
  "date": "2026-10-15",
  "time": "19:00",
  "party_size": 20,
  "restaurant": "https://www.opentable.com/r/girl-and-the-goat-chicago"
}
```

**Example output**

```json
{
  "date": "2026-10-15",
  "address": "809 W Randolph, Chicago, IL, 60607",
  "message": "For parties larger than 7, contact Girl & the Goat directly or explore private dining.",
  "party_size": 20,
  "booking_link": "https://www.opentable.com/r/girl-and-the-goat-chicago?dateTime=2026-10-15T19%3A00%3A00&covers=20",
  "any_table_free": false,
  "available_times": [],
  "restaurant_name": "Girl & the Goat"
}
```

### Get restaurant

Operation `get_restaurant`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get a restaurant’s public OpenTable profile by name or OpenTable link and city, including ratings, details, menu and photo links. Ratings and other fields can be missing when the restaurant does not publish them.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `city` | string | yes | `"Chicago"` | City where the restaurant is located, for example Chicago. |
| `restaurant` | string | yes | `"https://www.opentable.com/r/girl-and-the-goat-chicago"` | Restaurant name or OpenTable restaurant link, for example Girl & the Goat or https://www.opentable.com/r/girl-and-the-goat-chicago. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "restaurant",
    "city"
  ],
  "properties": {
    "city": {
      "type": "string",
      "description": "City where the restaurant is located, for example Chicago.",
      "examples": [
        "Chicago",
        "Los Angeles"
      ]
    },
    "restaurant": {
      "type": "string",
      "description": "Restaurant name or OpenTable restaurant link, for example Girl & the Goat or https://www.opentable.com/r/girl-and-the-goat-chicago.",
      "examples": [
        "https://www.opentable.com/r/girl-and-the-goat-chicago",
        "Girl & the Goat",
        "Girl & the Goat L.A."
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "city": "Chicago",
      "restaurant": "https://www.opentable.com/r/girl-and-the-goat-chicago"
    },
    {
      "city": "Chicago",
      "restaurant": "Girl & the Goat"
    },
    {
      "city": "Los Angeles",
      "restaurant": "Girl & the Goat L.A."
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `name` | string or null | `"Girl & the Goat"` |  |
| `website` | string or null | `"http://girlandthegoat.com/"` |  |
| `cuisines` | array |  |  |
| `menu_link` | string or null | `"https://www.opentable.com/r/girl-and-the-goat-chicago#menu"` |  |
| `dress_code` | string or null | `"Casual Dress"` |  |
| `photo_link` | string or null | `"https://resizer.otstatic.com/v4/photos/66291000-3?width=640&height=640"` |  |
| `description` | string or null |  |  |
| `food_rating` | number or null | `4.7` |  |
| `price_range` | string or null | `"$30 and under"` |  |
| `dining_style` | string or null | `"Casual Dining"` |  |
| `full_address` | string or null | `"809 W Randolph, Chicago, IL, 60607, United States"` |  |
| `phone_number` | string or null | `"(312) 492-6262"` |  |
| `value_rating` | number or null | `4.4` |  |
| `neighbourhood` | string or null | `"West Loop"` |  |
| `opening_hours` | string or null | `"Dinner\nMon–Thu, Sun 4:30 pm–10:00 pm\nFri, Sat 4:30 pm–11:00 pm"` |  |
| `opentable_link` | string | `"https://www.opentable.com/r/girl-and-the-goat-chicago"` |  |
| `service_rating` | number or null | `4.7` |  |
| `ambience_rating` | number or null | `4.6` |  |
| `parking_details` | string or null | `"Street parking available. Valet parking is available at 809 W. Randolph"` |  |
| `number_of_reviews` | integer or null | `1570` |  |
| `overall_star_rating` | number or null | `4.7` |  |
| `opentable_restaurant_id` | integer or null | `44629` |  |

**Example input**

```json
{
  "city": "Chicago",
  "restaurant": "https://www.opentable.com/r/girl-and-the-goat-chicago"
}
```

**Example output**

```json
{
  "name": "Girl & the Goat",
  "website": "http://girlandthegoat.com/",
  "cuisines": [
    "Contemporary American",
    "Tapas / Small Plates",
    "Comfort Food"
  ],
  "menu_link": "https://www.opentable.com/r/girl-and-the-goat-chicago#menu",
  "dress_code": "Casual Dress",
  "photo_link": "https://resizer.otstatic.com/v4/photos/66291000-3?width=640&height=640",
  "description": "Girl & the Goat opened in 2010 with the goal of offering a menu of bold, flavorful dishes designed to share in a fun and lively atmosphere. To complement the experience, we offer a curated selection o…",
  "food_rating": 4.7,
  "price_range": "$30 and under",
  "dining_style": "Casual Dining",
  "full_address": "809 W Randolph, Chicago, IL, 60607, United States",
  "phone_number": "(312) 492-6262",
  "value_rating": 4.4,
  "neighbourhood": "West Loop",
  "opening_hours": "Dinner\nMon–Thu, Sun 4:30 pm–10:00 pm\nFri, Sat 4:30 pm–11:00 pm",
  "opentable_link": "https://www.opentable.com/r/girl-and-the-goat-chicago",
  "service_rating": 4.7,
  "ambience_rating": 4.6,
  "parking_details": "Street parking available. Valet parking is available at 809 W. Randolph",
  "number_of_reviews": 1570,
  "overall_star_rating": 4.7,
  "opentable_restaurant_id": 44629
}
```

### Search available tables

Operation `search_available_tables`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Find OpenTable restaurants with bookable slots within two hours of the selected time in a city or neighborhood, in OpenTable search order. Examines up to 300 listings; availability may change.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `date` | string | yes | `"2026-10-10"` | Reservation date, today or later, such as 2026-10-10. |
| `time` | string | no | `"19:00"` | Local reservation time in 24-hour HH:MM format, such as 19:00. |
| `cuisine` | string | no | `"Italian"` | Cuisine to filter by, such as Italian; any for all cuisines. |
| `location` | string | yes | `"River North, Chicago"` | City or neighborhood to search, such as River North, Chicago. |
| `party_size` | integer | no | `2` | Number of diners, for example 2. |
| `max_results` | integer | no | `20` | Maximum restaurants to return, such as 20. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "location",
    "date"
  ],
  "properties": {
    "date": {
      "type": "string",
      "format": "date",
      "examples": [
        "2026-10-10"
      ],
      "description": "Reservation date, today or later, such as 2026-10-10."
    },
    "time": {
      "type": "string",
      "default": "19:00",
      "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$",
      "examples": [
        "19:00"
      ],
      "description": "Local reservation time in 24-hour HH:MM format, such as 19:00."
    },
    "cuisine": {
      "type": "string",
      "default": "any",
      "examples": [
        "Italian"
      ],
      "description": "Cuisine to filter by, such as Italian; any for all cuisines."
    },
    "location": {
      "type": "string",
      "examples": [
        "River North, Chicago"
      ],
      "description": "City or neighborhood to search, such as River North, Chicago."
    },
    "party_size": {
      "type": "integer",
      "default": 2,
      "maximum": 20,
      "minimum": 1,
      "examples": [
        2
      ],
      "description": "Number of diners, for example 2."
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 50,
      "minimum": 1,
      "examples": [
        20
      ],
      "description": "Maximum restaurants to return, such as 20.",
      "x-fous-developer": true
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "date": "2026-10-10",
      "time": "19:00",
      "location": "Chicago",
      "party_size": 2
    },
    {
      "date": "2026-10-10",
      "time": "19:00",
      "cuisine": "Italian",
      "location": "River North, Chicago",
      "party_size": 2,
      "max_results": 10
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `restaurants` | array |  |  |
| `restaurants[].name` | string | `"Sushi by Bou - Fulton Market Chicago @ Emily Hotel"` |  |
| `restaurants[].cuisine` | string or null | `"Sushi"` |  |
| `restaurants[].photo_link` | string or null | `"https://resizer.otstatic.com/v3/photos/49980171-3?width=320&height=320&webp=true"` |  |
| `restaurants[].price_range` | string or null | `"$50 and over"` |  |
| `restaurants[].star_rating` | number or null | `4.9` |  |
| `restaurants[].booking_link` | string | `"https://www.opentable.com/r/sushi-by-bou-fulton-market-chicago-at-emily-hotel-chicago?dateTime=2026-10-10T19%3A00&cover` |  |
| `restaurants[].review_count` | integer or null | `470` |  |
| `restaurants[].neighbourhood` | string or null | `"West Loop"` |  |
| `restaurants[].restaurant_id` | integer | `1264603` |  |
| `restaurants[].available_time_slots` | array |  |  |

**Example input**

```json
{
  "date": "2026-10-10",
  "time": "19:00",
  "location": "Chicago",
  "party_size": 2
}
```

**Example output**

```json
{
  "restaurants": [
    {
      "name": "Sushi by Bou - Fulton Market Chicago @ Emily Hotel",
      "cuisine": "Sushi",
      "photo_link": "https://resizer.otstatic.com/v3/photos/49980171-3?width=320&height=320&webp=true",
      "price_range": "$50 and over",
      "star_rating": 4.9,
      "booking_link": "https://www.opentable.com/r/sushi-by-bou-fulton-market-chicago-at-emily-hotel-chicago?dateTime=2026-10-10T19%3A00&covers=2",
      "review_count": 470,
      "neighbourhood": "West Loop",
      "restaurant_id": 1264603,
      "available_time_slots": [
        "17:00",
        "18:00",
        "19:00"
      ]
    },
    {
      "name": "Maya Del Sol",
      "cuisine": "Latin American",
      "photo_link": "https://resizer.otstatic.com/v3/photos/71224753-3?width=320&height=320&webp=true",
      "price_range": "$30 and under",
      "star_rating": 4.8,
      "booking_link": "https://www.opentable.com/r/maya-del-sol-oak-park?dateTime=2026-10-10T19%3A00&covers=2",
      "review_count": 4049,
      "neighbourhood": "Oak Park",
      "restaurant_id": 16201,
      "available_time_slots": [
        "18:15",
        "18:30",
        "19:00"
      ]
    },
    {
      "name": "Sushi by Bou - Gold Coast Chicago at Claridge House",
      "cuisine": "Sushi",
      "photo_link": "https://resizer.otstatic.com/v3/photos/48153204-3?width=320&height=320&webp=true",
      "price_range": "$50 and over",
      "star_rating": 4.7,
      "booking_link": "https://www.opentable.com/r/sushi-by-bou-gold-coast-chicago-at-claridge-house-chicago?dateTime=2026-10-10T19%3A00&covers=2",
      "review_count": 324,
      "neighbourhood": "River North (Chicago)",
      "restaurant_id": 1238302,
      "available_time_slots": [
        "17:00",
        "18:00",
        "19:00"
      ]
    }
  ]
}
```

## Quick start

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@opentable",
  "visibility": "public",
  "operation": "check_restaurant_availability",
  "version": 1,
  "input": {
    "city": "Chicago",
    "date": "2026-10-15",
    "time": "19:00",
    "party_size": 20,
    "restaurant": "https://www.opentable.com/r/girl-and-the-goat-chicago"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

body = json.loads("{\n  \"api\": \"@opentable\",\n  \"visibility\": \"public\",\n  \"operation\": \"check_restaurant_availability\",\n  \"version\": 1,\n  \"input\": {\n    \"city\": \"Chicago\",\n    \"date\": \"2026-10-15\",\n    \"time\": \"19:00\",\n    \"party_size\": 20,\n    \"restaurant\": \"https://www.opentable.com/r/girl-and-the-goat-chicago\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=180) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_000),
  body: JSON.stringify({
  "api": "@opentable",
  "visibility": "public",
  "operation": "check_restaurant_availability",
  "version": 1,
  "input": {
    "city": "Chicago",
    "date": "2026-10-15",
    "time": "19:00",
    "party_size": 20,
    "restaurant": "https://www.opentable.com/r/girl-and-the-goat-chicago"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/opentable`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `check_restaurant_availability`: Check restaurant availability. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `get_restaurant`: Get restaurant. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `search_available_tables`: Search available tables. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-opentable https://api.fous.com/mcp/tools/opentable --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## Use cases

- Find restaurants with bookable tables in a city or neighborhood
- Compare cuisine, price ranges and ratings for available restaurants
- Check reservation times near a preferred time
- Review restaurant details, hours and menu links
- Compare restaurant ratings and review counts

## FAQ

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this OpenTable tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. With pay as you go, a credit costs 1¢. Monthly plans cost less per credit.

### Do I need a OpenTable account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from opentable.com when you run it. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified on Sep 30, 2026.

### Which restaurants have tables available in a city?

Search available tables returns restaurants with bookable slots based on the city or neighborhood and date, with optional filters such as time, cuisine and party size.

### What reservation times are available at a restaurant?

Check restaurant availability returns available times near the preferred time for a restaurant, city, date and party size.

### What are a restaurant’s ratings and details?

Get restaurant returns public profile details, ratings, menu and photo links for a restaurant identified by name or link and city.

## Related

- [DoorDash API](https://fous.com/tools/doordash.md): DoorDash lists nearby restaurants and menus, prices, ratings, delivery fees, and estimated times; offers, availability, fees, and times can change.
- [Michelin Guide API](https://fous.com/tools/michelin-guide.md): Restaurant selections, distinctions and reviews from the Michelin Guide.
- [Uber Eats API](https://fous.com/tools/uber-eats.md): Uber Eats shows restaurants and delivery options, with menus, prices, ratings, and delivery details; fees may reflect guest promotions and rating counts may be rounded.
- [Tripadvisor API](https://fous.com/tools/tripadvisor.md): Tripadvisor provides traveler-ranked first-page city listings of attractions, restaurants and hotels, plus latest reviews; hotel prices and booking sites depend on supplied stay dates and availability.
- [Yelp API](https://fous.com/tools/yelp.md): Yelp returns local business matches, public profiles, ratings and up to 60 publicly shown reviews; matches are unsponsored and Yelp-ordered, but later results may lack contact or location details.
- [Google Maps API](https://fous.com/tools/google-maps.md): Google Maps returns nearby places, public place details, up to 100 public reviews, and up to three routes; transit options vary by departure time.
- [Booking.com API](https://fous.com/tools/booking-com.md): Booking.com helps find stays, property details and public guest reviews; prices and cancellation terms depend on selected dates, and displayed prices may exclude taxes and fees.
- [McDonald's API](https://fous.com/tools/mcdonalds.md): McDonald’s provides menu-item food information for US, UK and Canadian items, plus nearby US restaurants and listed hours today, which may miss unexpected closures.
- [All Food tools](https://fous.com/tools/category/food)
