npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

dine-at-disney

v3.2.0

Published

A CLI tool that checks for dining availability at Disneyland and California Adventure park restaurants.

Readme

dine-at-disney

npm version npm downloads

A CLI tool for finding and monitoring dining reservations at Disney parks.

Supports Disneyland Resort (Disneyland + California Adventure) and Walt Disney World (Magic Kingdom, EPCOT, Hollywood Studios, Animal Kingdom, and the Disney Springs/resort restaurants).

Features

  • List all restaurants that accept reservations, with their IDs
  • Search for availability across every restaurant at once
  • Filter results by party size, date, and time window
  • Monitor specific restaurants and poll automatically every 60 seconds
  • Send email, macOS system, ntfy, or Pushover push notifications the moment a table opens up
  • Supports both Disneyland Resort (--resort dlr) and Walt Disney World (--resort wdw)

Installation

Requires Node.js >= 20.12.

npm install -g dine-at-disney

This also downloads the Chromium binary that Playwright needs. If that step was skipped (e.g. you ran with --ignore-scripts), install it manually:

npx playwright install chromium

Example Usage

You need a MyDisney account. On first run, a browser window will open for you to log in. Your session is saved locally and reused on subsequent runs.

Sessions are stored per resort — ~/.dine-at-disney-auth-dlr.json for Disneyland Resort, and ~/.dine-at-disney-auth-wdw.json for Walt Disney World.


List all reservable restaurants and their IDs

dine-at-disney list
| Name                                    | ID       | Location              |
| --------------------------------------- | -------- | --------------------- |
| Blue Bayou Restaurant                   | 354099   | Disneyland Park       |
| Cafe Orleans                            | 354117   | Disneyland Park       |
| Carnation Cafe                          | 354129   | Disneyland Park       |
| Carthay Circle Restaurant               | 16515009 | Disney California Adv |
| Catal Restaurant                        | 354132   | Downtown Disney Dist  |
...

Search all restaurants for openings on a specific date

dine-at-disney search --date 2026-03-15 --party 2
Found some offers on 2026-03-15:
| Name                | ID       | Available Times                     |
| ------------------- | -------- | ----------------------------------- |
| Catal Restaurant    | 354132   | 5:00 PM (Dinner)                    |
| GCH Craftsman Bar   | 19343532 | 6:45 PM (Dinner), 8:00 PM (Dinner)  |
| Goofy's Kitchen     | 354261   | 7:35 PM (Dinner)                    |
| River Belle Terrace | 354450   | 5:30 PM (Dinner), 2:30 PM (Lunch)   |

--date defaults to today. --party defaults to 2.


Narrow results to a specific time window

dine-at-disney search --date 2026-03-15 --party 2 --startTime "5:00 PM" --endTime "8:00 PM"

You can also provide just one bound — --startTime "5:00 PM" to search from that time onwards, or --endTime "12:00 PM" to search up until then.


Monitor a specific restaurant — polls every 60 seconds until a table appears

dine-at-disney search --date 2026-03-15 --party 2 --ids 19013078 --startTime "5:00 PM"
Checking for tables for 2 people on 2026-03-15 from 5:00 PM onwards for IDs: 19013078...
No offers found for restaurant ID 19013078.
Checking again in 60s. 1 total attempts.
🎉 Found offers at 5:30 PM, 7:00 PM for Lamplight Lounge!
   👉 Book now: https://disneyland.disney.go.com/dine-res/restaurant/19013078
Checking again in 60s. 2 total attempts.

Monitor multiple restaurants at once

dine-at-disney search --date 2026-03-15 --party 2 --ids "354261,354450"

Search by resort — Disneyland Resort or Walt Disney World

# Disneyland Resort (default)
dine-at-disney list --resort dlr
dine-at-disney search --resort dlr --date 2026-03-15 --party 2

# Walt Disney World
dine-at-disney list --resort wdw
dine-at-disney search --resort wdw --date 2026-03-15 --party 2

--resort defaults to dlr.


Clear a saved session and re-authenticate

dine-at-disney search --resort dlr --reauth

Use --reauth if your session has expired and you want to force a fresh login without manually deleting the auth file.


Watch the browser interact with Disney's site (useful for debugging)

dine-at-disney search --date 2026-03-15 --party 2 --show-browser

Notifications

Notifications fire when monitoring with --ids and availability is found. To enable them, supply the --alert flag with a comma-separated list of alert types: email, ntfy, pushover, and/or macosNotify (e.g. --alert email,macosNotify).

For email, ntfy, and pushover notifications, configure them by copying .env.example to .env and filling in the relevant fields.

macOS System Notifications

Native macOS notifications can be enabled by passing macosNotify to the --alert flag. This only works when running the CLI on macOS.

Email

Set the SMTP fields described in .env.example.

ntfy

ntfy is a free, open-source push notification service — no account required. Pick a topic name, subscribe to it on your phone, and you're done.

  1. Install the ntfy app (Android / iOS)
  2. Subscribe to a topic of your choosing. Pick something hard to guess, since anyone who knows the name can subscribe (e.g. my-disney-alerts-a1b2c3)
  3. Set NTFY_TOPIC in your .env file to the same topic name

Optionally set NTFY_SERVER if you're self-hosting ntfy (defaults to https://ntfy.sh).

Pushover

Pushover is a one-time $5 purchase that delivers instant push notifications to your phone. Once set up, you'll get an alert with a direct booking link the moment a table opens.

Push notification example

Set PUSHOVER_USER_KEY and PUSHOVER_API_TOKEN in your .env file as described in .env.example.

How it works

Disney's reservation site uses Akamai bot detection, which blocks direct API calls. This tool uses Playwright to drive a real Chromium browser (minimized in your dock), filling out Disney's search form and intercepting the underlying API responses. When monitoring a specific restaurant, it uses a hybrid approach — fast in-page API calls when possible, with automatic fallback to a full UI-driven search when Akamai intervenes.