NYC Observatory Price Monitor

Daily price and availability across the four NYC observation decks, read from each vendor's own booking pages.

Who is selling out

Reading the board…

Sold-out share by venue and time of day

Share of timed slots already sold out in the selected window, across every ticket type a venue sells; whole-day passes are excluded. Each cell shows the slot count behind its rate.

0% 25% 60% 90%+

How each venue signals it is sold out

Each vendor publishes sold-out state through a different page mechanism, so the four rates above are read in different ways. Hover a signal for the detail.

Unpriced when gone is how much price information a venue loses by selling out. A sold-out slot's price is recovered from the last time we saw it on sale; where no such observation exists the slot stays blank.

What dusk costs

Dusk is computed astronomically per date: 60 minutes before that day's true sunset to 30 minutes after, with the Window column showing the actual clock range counted. Premium compares each dusk slot to the day's cheapest general-admission slot for the same product, per person, tax and processing fees excluded. Column definitions are on hover.

How often prices move

General-admission timed slots whose per-person price changed on the most recent run, per 100 slots tracked. A venue at 0 changed no prices that run; the data is complete.

Trend

Show the sold-out sunset slots behind this

Where the cheapest slot is · the date and time behind each venue's floor

The lowest price each venue currently lists, and when it can actually be booked. Whole market, unaffected by the filters below. Column definitions are on hover. Click a venue to open its floor day in the Price Matrix.

Price position · stable reference, not today's news

General-admission timed slots on sale in the next 7 days, per person, tax and processing fees excluded; sold-out slots do not compete. Whole market, unaffected by the filters below. Column definitions are on hover.

Sold out

Inventory that is sold out or vendor-marked limited, across all venues and every product category in the selected window, soonest travel date first; the Status column says which. The Scarcity tab counts timed slots of every ticket type but leaves out whole-day passes, so a venue can appear here on a whole-day product and still read 0% there. Prices are per person: ESB's Family Bundle (a party of 4) is shown at its total divided by 4. Click a row to see that day in the Price Matrix, beside what every other venue charges.
Precision says whether we watched the sell-out happen. exact — the slot was on sale when we last looked and gone the next time, so the date and lead time are measured. on or before — it was already sold out the first time we ever saw it; still a real sell-out, but it went at or before that day, so the date is an upper bound (≤) and the lead time a lower one (≥).

Coverage

How much of the tracked calendar the current filter selection covers. Hover a figure for its exact definition.

Price points

One row per venue, price, category and ticket type on the filtered live board, with how much of the calendar each covers. Column definitions are on hover. Click a row to open exactly those dates and that ticket in the Price Matrix.

The two sunset columns answer different questions.
  • Labeled sunset: the venue tagged this slot "Sunset" in its own booking system. A marketing claim, taken as-is; it does not imply a higher price.
  • Confirmed premium: the slot falls inside real astronomical dusk for that date in NYC and is priced at least 10% above the same product's cheapest slot that day. Both must be true.
A slot can be either, both, or neither: a venue may label a three-hour block "Sunset" while only the hour around true dusk is actually priced up. The per-slot breakdown is in Source evidence at the bottom of this tab.

Products captured

Source evidence

The most recently updated slots, exactly as stored. Each derived value sits next to the input it came from: Price (net) has vendor-bundled sales tax and any processing fee removed, with the scraped Raw, Tax and Fee beside it, and is per person: for a party ticket (ESB's Family Bundle, 4 people) it is Raw minus Tax minus Fee, divided by 4. The only registered fee is Edge's $2 processing fee, which Edge's price picker folds into the price.

Sunset here means:
  • Non-Sunset is every other timed slot for the same ticket, including a band the venue names beside sunset: Edge's Dusk, ESB's Pre-Sunset/Post-Sunset. Those are separately-priced products, and until 2026-08-18 they were counted as sunset: Edge's sunset floor read $52.00 instead of $60.00 and ESB's read $46.00 instead of $56.00. The Band basis table below shows exactly which of each vendor's bands landed in which column.
  • Range is High minus Low within the same pair, showing how far that venue moves this ticket across the day.
  • Var is the benchmark minus this venue, on each of the four numbers. Positive means the benchmark charges more; a negative number in brackets means this venue does. Change the benchmark in the filter bar to re-base every Var row.
  • Whole-day products (flex and bundle passes) are excluded, because they have no time of day so they can be neither in nor out of a sunset band.

Base product, exclusive of transaction fee

Prices on every tab are the ticket price, before sales tax and before the fees below. Fees as published by each venue, checked October 19, 2026.

VenueTransaction feeHow it is chargedIn the prices shown
Edge$2Per ticketNo, excluded
Empire State BuildingNonen/an/a
Top of the RockNonen/an/a
SUMMIT$3Per orderNo, excluded

"Sunset" means three things here, and they are not interchangeable.
  • Day part = "Sunset" (this tab's filter): the slot's clock time falls in the dusk window for that date. Purely chronological and comparable across all four venues.
  • Sunset band: the venue's own sunset product, which can sit at any time of day and does not imply a higher price. The cell badge carries the vendor's actual word for it.
  • Confirmed premium: inside the real dusk window and priced at least 10% above that day's cheapest slot. The strictest of the three.
A fourth thing is deliberately none of them. Edge's Dusk and ESB's Pre-Sunset/Post-Sunset are bands the venue names beside sunset and prices separately: Edge's Dusk floor is $52 against its Sunset floor of $61. They carry a muted badge with the vendor's own word and count as non-sunset. Until 2026-08-18 a substring test pooled them into "labeled sunset", which over-counted Edge by 35% and ESB by 60%; see the Pricing Grid tab's Band basis table for the current split.
The middle two are the Market Overview columns of the same name; each Matrix cell carries a small badge where one applies. The Sunset pricing button sets Day part = Sunset with category = GA.

Daily price matrix

One row per date, day part and category; one column per venue. Each cell shows that venue's real time, with the vendor's own product name on hover.

The playbook

Each venue's operating strategy, measured from the whole collection record and re-derived on every read. Unaffected by the filters below. The bottom line of each card reads this week's general-admission moves against the stated posture: a fixed-schedule venue moving any price is significant; a dynamic venue moving hundreds is routine.

What moved

The largest coordinated price moves in the selected window, grouped by venue, time of day and direction. A venue absent here moved no prices. Corrections to our own collection defects are excluded. With Product category at "all", a row's Avg price pools every ticket type in it (the Ticket types column says how many); pick a category to compare like with like. Column definitions are on hover. Click a row to drill the change events below to exactly those moves.

Change strategy by observatory

A change is one slot on the live board whose next observation differed in net price or availability. Only real movement is counted: pairs straddling the 2026-07-31 collection cutover are excluded, as are pairs where nothing actually differed. Defaults to the last 7 days; widen Detected from to reach further back.

Change events

Data checks

One row per venue. Last confirmed is when its live board was last read, Last run the verdict of the run that read it, and Last clean run the most recent run to pass every gate. A failed run still writes rows, so the last two can differ by a day. Bookable from and Bookable through are the first and last travel dates with a bookable price for the venue's general-admission ticket, so calendar days that cannot be booked do not count; Past-dated is the share of live rows whose travel date has already passed, held separately so it never inflates coverage. All times UTC.

Recent scrape runs

Downloads

For seeding a copy of this project elsewhere. Enter the download code, then pick a file. Code: the repository with its status notes and docs, no data. Apify actor: the upload tree, rebuilt from the current code (takes a few seconds). Database: a consistent snapshot of every observation collected, gzipped (large, about a minute). Five wrong codes lock downloads for 15 minutes.