# Resy Booker - MCP Server for AI Restaurant Reservations (`clearpath/resy-booker`) Actor

MCP server for AI assistants to search, book, and manage Resy restaurant reservations. 6 tools: search restaurants, check availability, book slots, view and cancel reservations. Stateful auth, pay-per-action billing, Standby mode.

- **URL**: https://apify.com/clearpath/resy-booker.md
- **Developed by:** [ClearPath](https://apify.com/clearpath) (community)
- **Categories:** Automation, Agents, MCP servers
- **Stats:** 51 total users, 10 monthly users, 99.2% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / reservation booking

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

**Book Resy restaurants through AI assistants like Claude, ChatGPT, and OpenClaw.**

No scraping. No data extraction. Just tell your AI agent where and when you want to eat.

Search 1,900+ cities, check real-time availability, book slots, view and cancel reservations. All as conversational tool calls within a single session.

<table>
<tr>
<td style="color:#1C1917;padding:14px 20px;border-left:3px solid #006D77;background:#EDF6F9;border-top:none;border-right:none;border-bottom:none">
Stateful MCP server running in Apify Standby mode. Authenticate once, session persists across tool calls with no cold starts.
</td>
</tr>
</table>

[![Demo](https://asciinema.org/a/6PoEQhlIzLtVGZV4.svg)](https://asciinema.org/a/6PoEQhlIzLtVGZV4)

**MCP endpoint:**

```
https://clearpath--resy-booker.apify.actor/mcp
```

 

<table><tr>
<th style="border-bottom:2px solid #333;padding:12px 16px;text-align:left;font-weight:600">Resy Suite ➤</th>
<td style="border-bottom:1px solid #ddd;padding:12px 16px"><a href="https://apify.com/clearpath/resy-api" style="text-decoration:none;font-weight:600">Restaurant Scraper</a></td>
<td style="border-bottom:1px solid #ddd;padding:12px 16px"><a href="https://apify.com/clearpath/resy-availability-api" style="text-decoration:none;font-weight:600">Availability Checker</a></td>
<td style="border-bottom:1px solid #ddd;padding:12px 16px"><b>Booker (MCP)</b></td>
</tr></table>

<table><tr>
<th style="border-bottom:2px solid #333;padding:12px 16px;text-align:left;font-weight:600">Restaurant Bookers ➤</th>
<td style="border-bottom:1px solid #ddd;padding:12px 16px"><b>Resy (MCP)</b></td>
<td style="border-bottom:1px solid #ddd;padding:12px 16px"><a href="https://apify.com/clearpath/opentable-booker" style="text-decoration:none;font-weight:600">OpenTable (MCP)</a></td>
</tr></table>

#### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
clearpath/resy-booker on Apify (Standby actor). Base URL: https://clearpath--resy-booker.apify.actor. Auth: Authorization: Bearer TOKEN. Endpoints: /mcp (MCP server with 6 tools: search_restaurants, check_availability, book_reservation, my_reservations, cancel_reservation, login). Full API spec: GET https://api.apify.com/v2/acts/clearpath~resy-booker/builds/default (Bearer TOKEN) → readme, actorDefinition. Pricing: pay-per-event, search $0.03/call, check availability $0.05/call, book $3.99/booking, login/view/cancel free. Get token: https://console.apify.com/account/integrations
```

### Tools

6 tools available to connected AI agents:

- `search_restaurants`
  - Find restaurants with available time slots in any city
  - Inputs:
    - `city` (string): City name (e.g. "New York", "London", "Athens")
    - `cuisine` (string, optional): Filter by cuisine type
    - `query` (string, optional): Restaurant name or keyword
    - `date` (string, optional): YYYY-MM-DD format (defaults to today)
    - `party_size` (number, optional): Number of guests (default 2)
    - `limit` (number, optional): Max restaurants (default 10, max 25)
    - `sort` (string, optional): "relevance", "rating", "slots", or "name"
  - Returns restaurants with slots. Each slot includes a `config_token` for booking.
  - **~$0.03 per call**

- `check_availability`
  - Check available time slots for a specific restaurant
  - Inputs:
    - `restaurant_url` (string): Full Resy URL (e.g. https://resy.com/cities/new-york-ny/carbone)
    - `date` (string, optional): YYYY-MM-DD format (defaults to today)
    - `party_size` (number, optional): Number of guests (default 2)
  - **~$0.05 per call**

- `book_reservation`
  - Book a time slot using a `config_token` from search or availability results
  - Creates a real reservation on your Resy account
  - Inputs:
    - `config_token` (string): Token from a slot in search/availability results
  - **$3.99 per booking**

- `my_reservations`
  - List your current Resy reservations
  - No inputs required
  - **Free**

- `cancel_reservation`
  - Cancel a reservation by its `resy_token`
  - Inputs:
    - `resy_token` (string): Token from `my_reservations` or `book_reservation` results
  - **Free**

- `login`
  - Authenticate with Resy credentials (auto-called with pre-configured credentials)
  - Inputs:
    - `email` (string): Resy account email
    - `password` (string): Resy account password
  - **Free**

### Quick Start

#### Search for restaurants

```json
{
    "city": "New York",
    "cuisine": "Italian",
    "date": "2026-03-15",
    "party_size": 4
}
```

#### Check a specific restaurant

```json
{
    "restaurant_url": "https://resy.com/cities/new-york-ny/carbone",
    "date": "2026-03-15",
    "party_size": 2
}
```

#### Book a slot

```json
{
    "config_token": "rgs://resy/12345/67890/1/2026-03-15/2026-03-15/19:30/2/Dining+Room"
}
```

### How It Works

1. **Agent connects** to the MCP server endpoint
2. **Auto-login** with pre-configured Resy credentials (or call `login` manually)
3. **Search** for restaurants: `search_restaurants(city="New York", cuisine="Italian")`
4. **Pick a slot** from the results (each slot includes a `config_token`)
5. **Book** with `book_reservation(config_token="rgs://resy/...")`
6. **Verify** with `my_reservations()`

The agent handles the entire flow conversationally. Ask it "find me an Italian restaurant in NYC for 4 people next Friday" and it chains the right tool calls.

***

### Pricing — Pay Per Event (PPE)

You only pay for searches and bookings. Login, viewing, and cancelling are free.

| Action | Cost |
|--------|------|
| Search restaurants | $0.03 |
| Check availability | $0.05 |
| Book a reservation | $3.99 |
| Login, view, cancel | Free |

***

### Configuration

#### Input Parameters

Credentials are configured in the Apify actor input. Your password is stored encrypted using Apify's secret input handling and never logged or exposed in run output. The server auto-logs in on the first tool call.

| Parameter | Type | Description |
|-----------|------|-------------|
| `email` | string | Your Resy account email |
| `password` | string (secret) | Your Resy account password |

The `login` tool is also available for switching accounts or re-authenticating mid-session.

Replace `YOUR_APIFY_TOKEN` in all examples below with your [Apify API token](https://console.apify.com/account/integrations).

#### Usage with ChatGPT

ChatGPT supports MCP servers natively (Plus, Pro, Team, Enterprise plans).

1. Open **Settings > Connectors > Add connector**
2. Set **Name** to `Reddit`
3. Set **MCP Server URL** to:

```
   https://clearpath--resy-booker.apify.actor/mcp
```

4. Set **Authentication** to **API Key** and set the header:
   - Header name: `Authorization`
   - Value: `Bearer YOUR_APIFY_TOKEN`
5. Click **Save**
6. Start a new chat, click **+** near the composer, select **More**, choose **Reddit**

#### Usage with Claude Desktop

Add to your `claude_desktop_config.json`:

- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
    "mcpServers": {
        "resy-booker": {
            "type": "http",
            "url": "https://clearpath--resy-booker.apify.actor/mcp",
            "headers": {
                "Authorization": "Bearer YOUR_APIFY_TOKEN"
            }
        }
    }
}
```

Restart Claude Desktop after saving.

#### Usage with Claude Code

```bash
claude mcp add --transport http --scope user resy-booker \
  --header "Authorization: Bearer YOUR_APIFY_TOKEN" \
  https://clearpath--resy-booker.apify.actor/mcp
```

Or add to your project's `.mcp.json`:

```json
{
    "mcpServers": {
        "resy-booker": {
            "type": "http",
            "url": "https://clearpath--resy-booker.apify.actor/mcp",
            "headers": {
                "Authorization": "Bearer ${APIFY_TOKEN}"
            }
        }
    }
}
```

#### Usage with OpenClaw

Add to `~/.openclaw/openclaw.json`:

```json5
{
  "provider": {
    "mcpServers": {
      "resy-booker": {
        "url": "https://clearpath--resy-booker.apify.actor/mcp",
        "headers": {
          "Authorization": "Bearer YOUR_APIFY_TOKEN"
        }
      }
    }
  }
}
```

Then message your OpenClaw bot on Telegram, WhatsApp, or Discord:

> "Find me a table for 2 in Athens this Saturday"

> "What's available at Carbone in New York next Friday?"

> "Book the 7:30 PM slot at that restaurant"

The assistant calls the Resy Booker, searches availability, and books the reservation for you.

#### Other MCP Clients

Any client supporting the Streamable HTTP transport works. Use the MCP endpoint URL with your Apify API token as a Bearer auth header.

***

### Try It Out

Once connected, ask your AI assistant:

> "Find me a table for 2 in Athens this Saturday"

> "What's available at Carbone in New York next Friday?"

> "Book the 7:30 PM slot at that restaurant"

***

### FAQ

**Do I need a Resy account?**
Yes. You need valid Resy credentials (email + password) configured in the actor input.

**Can I use this without an AI assistant?**
Yes. Any MCP client works. You can also call tools programmatically via any MCP SDK.

**What cities are supported?**
All 1,900+ cities on Resy, including New York, Los Angeles, London, Paris, Athens, Tokyo, and more.

**Will it actually book a real reservation?**
Yes. `book_reservation` creates a real reservation on your Resy account. Cancel with `cancel_reservation`.

**What happens if a slot is no longer available?**
The tool returns an error. Search again or try a different time.

**How is this different from the Resy Scraper?**
The scraper extracts restaurant data in bulk. This MCP server is for interactive booking through an AI agent.

***

### Support

- **Email**: max@mapa.slmail.me
- **Bugs**: Issues tab

### Legal

This actor interacts with Resy on behalf of authenticated users. It performs the same actions a user would in the Resy app or website. Users are responsible for complying with Resy's terms of service.

***

*Search, book, and manage Resy reservations through AI agents.*

# Actor input Schema

## `email` (type: `string`):

Your Resy account email for automatic login.

## `password` (type: `string`):

Your Resy account password.

## Actor input object example

```json
{}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("clearpath/resy-booker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("clearpath/resy-booker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call clearpath/resy-booker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,clearpath/resy-booker"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/BAhrLmbO6bIpWbLnu/builds/mQWxOtCT0gxiE480Y/openapi.json
