Bowmark AIdocs

Restaurant table reservations

Finds a restaurant by name and reads its real-time open reservation slots for a date and party size, plus a direct link to book one.

Finds a restaurant by name and reads its real-time open reservation slots for a date and party size, plus a direct link to book one. Resy today; no login, no booking (that needs a signed-in platform account).

Also known as: restaurant reservation, restaurant reservations, book a restaurant, restaurant, book a table, table reservation, table availability, reserve a table, dinner reservation, resy, opentable

Call it

bowmark.restaurant_booking.findAvailability(name: string | { name: string; location?: string; day?: string; partySize?: number }, options?: CallOptions): Promise<RestaurantAvailabilityResult>

Functions

FunctionWhat it does
findAvailabilityFinds a restaurant by name — bowmark.restaurant_booking.findAvailability("Paco Meralgo") — on whichever booking platform it runs on, and reads its real open reservation slots for day

Types

type RestaurantSlot = {
  startsAt: string            // local start time, "YYYY-MM-DD HH:mm:ss"
  seatingType: string | null  // section/seating label the platform reports, e.g. "Dining Room"
}
type RestaurantVenue = {
  platform: string            // which booking platform this venue runs on, e.g. "resy"
  name: string
  locality: string
  region: string
  country: string
  cuisine: string[]
  bookingUrl: string          // the platform's own page, pre-filled with date/party size
}
type RestaurantAvailabilityResult = {
  venue: RestaurantVenue | null   // null when no platform has a matching venue
  day: string                      // the date actually queried, "YYYY-MM-DD"
  partySize: number
  slots: RestaurantSlot[]         // [] when the venue is fully booked — a real answer
  warnings: string[]              // always present; empty when nothing was dropped
}

type CallOptions = {
  timeoutMs?: number   // per-provider budget in ms, default 30000, clamped to 1000-55000.
                       // A provider slower than this is DROPPED from the results and
                       // NAMED in warnings — never silently absent
}

Examples

// is there a table for two at Paco Meralgo tomorrow?
const { venue, slots, warnings } = await bowmark.restaurant_booking.findAvailability("Paco Meralgo");
for (const w of warnings) log(w);
if (!venue) {
  log("no restaurant matched that name");
} else if (slots.length === 0) {
  log(`${venue.name} has nothing open — try ${venue.bookingUrl}`);
} else {
  log(`${venue.name}: ${slots.length} open slots, e.g. ${slots[0].startsAt}`);
}
return { venue, slots };
// a specific date and a party of 4
const result = await bowmark.restaurant_booking.findAvailability({
  name: "Paco Meralgo",
  day: "2026-09-15",
  partySize: 4,
});
return result;

Providers behind it

Provider
resyResy