Resy Availability & Scarcity Monitor avatar

Resy Availability & Scarcity Monitor

Pricing

from $5.00 / 1,000 venue-date availability rows

Go to Apify Store
Resy Availability & Scarcity Monitor

Resy Availability & Scarcity Monitor

Forward-dated restaurant reservation availability from Resy: slot counts, prime-time counts, first and last seating, seating types, sold-out flags. Delta mode returns only what moved. Read-only: books nothing, no account, no personal data.

Pricing

from $5.00 / 1,000 venue-date availability rows

Rating

0.0

(0)

Developer

Sami

Sami

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 hours ago

Last modified

Share

Resy Availability & Scarcity Monitor — Restaurant Reservation Data by Date (2026)

Turn restaurant reservation availability into a dataset. For every venue, date and party size you ask for, you get the number of bookable slots, how many of them fall in the prime dinner window, the first and last seating, the seating types on offer, and whether it is sold out. Turn on delta mode and a daily schedule returns only what moved — sold out, reopened, prime window emptied.

No login. No API key to obtain. No browser. Clean JSON / CSV / Excel, billed per row you actually receive.

Read-only by design. This Actor books nothing, creates no account, holds no table, resells no reservation and collects no personal data. It reads the same public availability any diner sees on the site.

How to build a comp set in 3 steps

  1. Scan a metro once. Mode metro_scan with metros: ["new-york"] returns venues with their venueId and urlSlug.
  2. Watch your comp set. Mode venue_watch with those ids, your date window and the party sizes you care about. Each venue-date is one small request (~34 KB, ~0.2 s).
  3. Schedule it with deltaMode: true and you have a scarcity feed instead of a nightly re-read.

What makes a row useful

Every other actor on this surface returns a venue list. This one returns the availability shape of a night, which is what a revenue manager or an analyst actually reads:

FieldWhy it matters
totalSlotsHow much inventory is genuinely bookable for that date and party size
primeSlots + primeWindowSlots between 18:30 and 20:59. A 16:00 seating and a 19:30 seating are not the same product, and averaging them hides the signal
fullyBooked / primeFullyBookedSold out overall, or prime-time gone while off-peak tables remain — the earliest sign of real demand
earliestSeating / latestSeatingService window, and how it stretches or contracts by season
seatingTypesDining Room / Bar / High Top / Lounge — which inventory the venue is actually releasing
maxTableQuantityLargest table on offer, i.e. group capacity
rating, totalRatings, cuisine, priceRange, neighborhoodSegment any of the above by quality, cuisine, price band or district

Example row

{
"venueId": 87134,
"venueName": "Mudville",
"urlSlug": "mudville",
"cuisine": "American",
"priceRange": 2,
"neighborhood": "Tribeca",
"city": "New York",
"date": "2026-08-04",
"partySize": 2,
"totalSlots": 144,
"primeSlots": 30,
"primeWindow": "18:30-20:59",
"earliestSeating": "11:30",
"latestSeating": "23:15",
"seatingTypes": ["Dining Room", "High Top", "Lounge"],
"maxTableQuantity": 45,
"fullyBooked": false,
"primeFullyBooked": false,
"rating": 4.6158,
"totalRatings": 2841,
"scrapedAt": "2026-07-25T20:10:00Z"
}

Delta mode — a cron that bills for movement

With deltaMode: true, the first run sets a baseline and later runs return only cells that changed:

changeTypeMeaning
newVenue-date cell seen for the first time
sold_outHad slots, now has none
reopenedWas full, now has slots — a cancellation wave
prime_sold_outPrime window emptied while off-peak tables remain
availability_up / availability_downSlot count moved beyond the noise floor (2 slots), with slotChange and primeSlotChange
disappearedCell was tracked and the venue is absent from a scope this run swept

Each change carries previousTotalSlots and previousPrimeSlots, so the row explains itself without a join. Unchanged cells are not returned and not charged.

And this is the part that cannot be bought later: nobody can retro-fetch how full a restaurant was last Tuesday — not this Actor, not a competitor who starts next month. A scarcity history exists only from the day your schedule starts.

{
"mode": "venue_watch",
"venueIds": ["6194", "87134"],
"startDaysAhead": 1,
"horizonDays": 30,
"partySizes": ["2", "4"],
"deltaMode": true,
"deltaStateKey": "nyc-compset"
}

Who this is for

BuyerUse
Restaurant groups and revenue managersWatch the comp set's forward calendar; see the night your rival's prime window empties, and whether yours follows
Hospitality consultanciesDemand curves by neighbourhood, cuisine and price band, built from bookable inventory rather than surveys
Consumer and real-estate analystsDining scarcity as a neighbourhood-level demand proxy — restaurant availability leads foot traffic
Event, travel and concierge operationsWhich venues still have prime tables across a date range, at a glance
Data teams building city panelsA normalised venue-date-party grid ready to join with weather, events or transaction data

Sizing your run (and your bill)

Rows = venues × dates × party sizes, one request each.

SetupRequestsRowsAt $0.005/row
Comp set: 20 venues × 14 dates × 1 party size280280$1.40
Comp set: 40 venues × 30 dates × 2 party sizes2,4002,400$12
Metro discovery: 1 metro × 3 dates, 200 venues deep~6~600$3
Daily cron with delta on 40 venues × 30 dates1,200/dayonly what movedtypically a small fraction

A single run is capped at 3,000 requests so a typo cannot launch a runaway sweep. dateStepDays: 7 keeps the weekday fixed, which is both cheaper and more readable as a trend.

Pricing

EventPriceWhat it is
venue-date-row$0.005One venue priced for one date and party size, full field set
availability-change$0.015One cell that moved in delta mode, with its previous counts

Cells that fail to fetch are pushed as error records with the reason — and are never charged.

Limitations, stated plainly

  • Resy is US-centric. New York, Miami, Chicago, San Francisco, Boston and Washington DC carry real depth. London and Toronto returned almost nothing when tested, and non-US coordinates generally return an empty venue list. If you need European dining data, this is not the right tool.
  • Availability is not the same as demand. A venue with no slots may be sold out, may have closed for a private event, or may simply not have released inventory yet. totalSlots is what is bookable, and that is what the row claims — nothing more.
  • No history before your first run. Reservation availability cannot be backfilled by anyone.
  • This reads an internal client API, not a documented product. It is stable in practice and the Actor re-reads the client key at runtime so a rotation self-heals, but an undocumented endpoint can change without notice. If it does, open an issue and it gets fixed.
  • Prime window is fixed at 18:30-20:59 local. If your market's prime hours differ, use earliestSeating / latestSeating and the raw counts.

FAQ

Do I need a proxy? No. Verified with 12 rapid consecutive requests from a plain datacenter IP: 12 successes, no throttling, no challenge.

Does this book tables or hold reservations? No. It performs read-only availability lookups. It cannot book, cancel, hold or transfer a reservation, and it never signs in.

Why is my first delta run large? It is the baseline. From the second run on you only get movement.

How do I find venue ids? Run metro_scan once — every row carries venueId and urlSlug.

Can I track large-party availability? Yes, that is what partySizes is for. A table for 6 is far scarcer than a table for 2, and each size is its own row.

Other scrapers by Zhorex

This Actor reads publicly visible commercial availability: venue names, bookable time slots, seating types, ratings and neighbourhoods. It collects no personal data, creates no accounts, makes no bookings and does not facilitate reservation resale. Respect the platform's terms and applicable law in your jurisdiction, and use the data for analysis rather than redistribution.