← Use cases

Use case

Every Resy restaurant in New York with open tables tonight

Resy restaurants in New York with their open tables today for 2, 6pm to 9pm, with cuisine, price tier, rating, phone and address.

Say you run the concierge desk at a downtown New York hotel, and by 5pm a dozen guests have asked for dinner for two somewhere good tonight. You want one sheet, made fresh each evening, of every Resy restaurant with a table between 6pm and 9pm, with cuisine, price tier, rating, neighbourhood, phone and address, so you can match a guest to a table without searching from scratch each time.

The manual way, and what it costs

The public search form on Resy
Resy's own search for New York, Fri 20 Nov, party of 2: one city, one date and one party size at a time.

Resy’s search, above, is good at this for one guest: set the date and party size and the open times show under each restaurant, with a map. It stops scaling when you want the answer as a list. It lists 2700+ venues for New York, the times sit behind each card, and nothing on the page exports to a spreadsheet. Comparing price tiers, ratings and neighbourhoods across a few hundred restaurants means scrolling and copying by hand every evening.

The faster way

Resy Availability Scraper & Table Alert Monitor does the same search once and hands back every row at once.

{
  "mode": "search",
  "locations": [
    "New York"
  ],
  "partySize": 2,
  "timeFrom": "18:00",
  "timeTo": "21:00",
  "onlyAvailable": true,
  "maxResults": 500,
  "includeDetails": true
}

No date means today, in New York’s own time zone, so the same saved task works every evening. timeFrom 18:00 and timeTo 21:00 keep only dinner times, and onlyAvailable drops restaurants with nothing in that window. Resy lists restaurants nearest the city centre first, and maxResults: 500 takes the first 500 of the 2,595 it listed within New York’s 10-mile area on 2026-11-04. Narrow to your neighbourhood with "latitude,longitude" and radiusKm instead. includeDetails adds the street address, website and Instagram from each restaurant’s Resy page at no extra charge.

What comes back

{
  "venue_id": 60029,
  "name": "Le Gratin",
  "resy_url": "https://resy.com/cities/new-york-ny/venues/le-gratin?date=2026-11-10&seats=4",
  "date": "2026-11-10",
  "party_size": 4,
  "available": true,
  "slot_count": 11,
  "first_slot": "19:00",
  "last_slot": "21:30",
  "slots": [
    {
      "time": "19:00",
      "end_time": "21:15",
      "seating": "Dining Room",
      "min_party": 3,
      "max_party": 4,
      "table_minutes": 135,
      "deposit_required": false,
      "deposit_fee": null,
      "cancellation_fee": null,
      "cancel_cutoff_hours": null
    }
  ],
  "new_slots": [
    {
      "time": "19:00",
      "end_time": "21:15",
      "seating": "Dining Room",
      "min_party": 3,
      "max_party": 4,
      "table_minutes": 135,
      "deposit_required": false,
      "deposit_fee": null,
      "cancellation_fee": null,
      "cancel_cutoff_hours": null
    }
  ],
  "has_new_slots": true,
  "calendar_status": "available",
  "cuisine": "French",
  "price_range": 2,
  "rating": 4.65,
  "rating_count": 7721,
  "neighborhood": "Lower Manhattan",
  "city": "New York",
  "region": "NY",
  "country": "United States",
  "latitude": 40.711596,
  "longitude": -74.00685,
  "phone": "+12125979020",
  "address": "5 Beekman St",
  "postal_code": "10038",
  "website": "https://www.legratinnyc.com/",
  "instagram": "https://www.instagram.com/legratinnyc/",
  "google_place_id": "ChIJj4fN7HBbwokRCB5xca3KF1E",
  "query": "https://resy.com/cities/new-york-ny/venues/le-gratin",
  "source_url": "https://resy.com/cities/new-york-ny/venues/le-gratin?date=2026-11-10&seats=4"
}
FieldExample valueMeaning
nameLe GratinThe restaurant’s name on Resy
date2026-11-10The day checked
party_size4Guests the tables are for
availableTrueTrue when at least one table is open in your time window
slot_count11Number of open times in your window
first_slot19:00Earliest open time, HH:MM

That sample row comes from a Watch run (party of 4, which is why it has party ranges and table length). A Search row has the same restaurant columns, with each slot’s time, end time and seating area. For the concierge desk, first_slot and last_slot say at a glance whether a restaurant fits a 7:30 guest, price_range and rating sort the sheet, and resy_url opens that restaurant on Resy for tonight and the party size. On a 20-restaurant New York search on 2026-11-04, every row had an address and a rating, 18 had a phone and 19 a website.

What you’d do with it

Schedule the task for 5pm each day and export the dataset to Google Sheets or CSV. Sort by neighborhood, then rating, and filter price_range to what the guest asked for. The full 500 rows cost $1.50 at $0.003 a restaurant. If you only ever send guests within walking distance, use your hotel’s latitude,longitude with radiusKm: 2, which cuts both the list and the cost.

Worth knowing

Times are what Resy shows at the moment of the run and change by the minute, so a 5pm sheet will have gaps by 8pm. Re-run it, or switch the few restaurants you recommend most to Watch mode. Only restaurants on Resy are covered, not OpenTable, Tock or walk-ins. The actor lists tables and never books them; the guest, or you on their behalf, books on Resy through resy_url.


Run it yourself: How to run Resy Availability Scraper & Table Alert Monitor walks the whole thing step by step.

Waiting on one hard-to-book restaurant instead? Watch Resy restaurants and flag new tables alerts you when a table opens. For restaurants that aren’t on Resy, Restaurant, Cafe & Bar Scraper lists them from Google Maps with phone and email.

Last updated 2026-11-04