A high-performance reservation bot for Resy that outperforms standard scrapers through parallel processing and connection optimization. Built for speed-critical scenarios where milliseconds matter.
Instead of checking reservation slots sequentially, this bot processes all available slots simultaneously using Promise.all():
const slotPromises = slots.map((slot) => slotChooser(slot));
const results = await Promise.all(slotPromises);
This parallel processing can be up to 10x faster than traditional sequential checking when multiple slots are available.
- Persistent connections with keep-alive
- HTTP/2 support for multiplexing
- Gzip/Deflate compression
- Optimized headers for faster handshakes
headers: {
'Connection': 'keep-alive',
'Accept-Encoding': 'gzip, deflate, br'
}
- Cached time conversions to avoid repeated calculations
- Minimal string parsing
- Optimized datetime comparisons
- No unnecessary object creation
- Efficient slot filtering
- Minimal string concatenation
- Clone and install:
git clone https://github.com/robertjdominguez/ez-resy.git
npm install
- Configure your
.env
:
VENUE_ID= # Restaurant's Resy ID
DATE= # YYYY-MM-DD format
EARLIEST= # 24hr format (e.g., 18:00)
LATEST= # 24hr format (e.g., 21:00)
PARTY_SIZE= # Number of guests
PAYMENT_ID= # Your Resy payment method ID
AUTH_TOKEN= # Your Resy JWT token
npm run start:today
npm run start
Network tab > Filter "venue" > Look in the request URL
Network tab > Filter "user" > Look for payment_method.id in response
Application > Cookies > authToken
- Run the script on a machine with minimal latency to Resy's servers
- Use a wired internet connection when possible
- Consider running multiple instances with different auth tokens
- Monitor your token expiration to avoid auth failures
While this bot is optimized for speed, be aware that aggressive usage may trigger Resy's rate limits. Consider implementing:
- Random delays between retries
- Multiple auth tokens
- Proxy rotation
##A Note on Cron Tabs
Cron tabs are a way to run a script at a specific time. You can set it up by running the following command in your terminal:
crontab -e
This will open the crontab editor. You can then add the following line to run the script at a specific time (in this case, 9:00 AM every day):
PATH=/path_to_your_node_version:/usr/local/bin:/usr/bin:/bin
0 9 * * * cd /path_to_your_code && npm run start:today > log.txt 2>&1
This tool is for educational purposes. Be aware that automated booking may violate Resy's terms of service.