Catalog / Resy

Resy API

resy.com

Read-only live access to Resy restaurant discovery, venue details, and reservation availability. Search is coordinate-scoped and matches restaurant identity and location fields; no reservation is created or modified.

  • Other
  • resy
  • restaurants
  • reservations
  • availability
  • discovery
4 endpointsDocs updated

Endpoint health

Loading verification…

Connect your agent

Connect through MCP so your agent can find this API, read its docs, and call its endpoints.

Setup guide

Add the server from your terminal.

Claude Code · terminal
claude mcp add --transport http agent-data https://agent-data.motie.dev/mcp

In Claude Code, run /mcp, select agent-data, then Authenticate. Sign in to your agent-data account in the browser.

Then ask your agent to use the Resy API for your task.

Call it over HTTP

Get an API key

Sign up free, generate an API key, and set it as AGENT_DATA_API_KEY in your environment. Your first 100 calls each month are free.

Search Resy's live text index, enrich venue identity, and retain only venues within the requested coordinate radius.

Restaurant name or text to match against nearby Resy venues.

Latitude of the search location in decimal degrees.

Longitude of the search location in decimal degrees.

Maximum distance from the coordinate location in kilometers.

Optional parameters 2

Offset in Resy's native text-matched result order, before coordinate/radius filtering.

Maximum number of source text hits to inspect for this offset window; radius filtering can return fewer items.

View call pricing
cURL · Restaurants search
curl --request GET --get 'https://api.agent-data.dev/resy-com/v1/restaurants/search' \
  --header "Authorization: Bearer $AGENT_DATA_API_KEY" \
  --data-urlencode 'query=lysee' \
  --data-urlencode 'latitude=40.739' \
  --data-urlencode 'longitude=-73.988' \
  --data-urlencode 'radius=5'

Endpoints

Inputs and response fields for every endpoint in this API.

GETRestaurants by url/v1/restaurants/by-url

Retrieve live venue details by a canonical Resy URL.

Input

urlRequiredQuery · string

Canonical Resy venue URL.

Example: https://resy.com/cities/new-york-ny/venues/lysee

Response

dataobject
data.city?string | null
data.namestring
data.addressobject
data.address.region?string | null
data.address.country?string | null
data.address.latitude?number | null
data.address.locality?string | null
data.address.address_1?string | null
data.address.address_2?string | null
data.address.longitude?number | null
data.address.postal_code?string | null
data.address.neighborhood?string | null
data.cuisine?string | null
data.timezone?string | null
data.venue_idinteger
data.neighborhood?string | null
data.canonical_urlstring (uri)
request_idstring

Fields marked ? are optional.

GETRestaurants by venue id availability/v1/restaurants/{venue_id}/availability

Return live availability slots only; this read never books or modifies a reservation.

Input

venue_idRequiredPath · integer, min: 1

Stable Resy venue ID.

Example: 64549

dateRequiredQuery · string

Reservation date in the venue's local calendar, YYYY-MM-DD.

Example: 2026-09-25

party_sizeRequiredQuery · integer, min: 1, max: 20

Number of guests.

Example: 2

timeOptionalQuery · string | null

Optional local-time lower filter in HH:MM format.

Example: 19:00

Response

dataobject
data.datestring
data.slotsobject[]
data.slots[].slot_idstring
data.slots[].end_time?string | null
data.slots[].timezone?string | null
data.slots[].start_timestring
data.slots[].booking_linkstring (uri)
data.slots[].seating_typestring
data.slots[].source_tokenstring
data.party_sizeinteger
data.restaurantobject
data.restaurant.city?string | null
data.restaurant.namestring
data.restaurant.addressobject
data.restaurant.address.region?string | null
data.restaurant.address.country?string | null
data.restaurant.address.latitude?number | null
data.restaurant.address.locality?string | null
data.restaurant.address.address_1?string | null
data.restaurant.address.address_2?string | null
data.restaurant.address.longitude?number | null
data.restaurant.address.postal_code?string | null
data.restaurant.address.neighborhood?string | null
data.restaurant.cuisine?string | null
data.restaurant.timezone?string | null
data.restaurant.venue_idinteger
data.restaurant.neighborhood?string | null
data.restaurant.canonical_urlstring (uri)
data.time_filter?string | null
request_idstring

Fields marked ? are optional.

GETRestaurants by venue id/v1/restaurants/{venue_id}

Retrieve live venue details by stable Resy venue ID.

Input

venue_idRequiredPath · integer, min: 1

Stable Resy venue ID.

Example: 64549

Response

dataobject
data.city?string | null
data.namestring
data.addressobject
data.address.region?string | null
data.address.country?string | null
data.address.latitude?number | null
data.address.locality?string | null
data.address.address_1?string | null
data.address.address_2?string | null
data.address.longitude?number | null
data.address.postal_code?string | null
data.address.neighborhood?string | null
data.cuisine?string | null
data.timezone?string | null
data.venue_idinteger
data.neighborhood?string | null
data.canonical_urlstring (uri)
request_idstring

Fields marked ? are optional.

Don’t see the endpoint you need?

Ask agent-data to add an endpoint or return more fields. Extensions are free and keep existing endpoints working.