Living on the Upper West Side, the bright lights of Times Square and Broadway feel close to home, a 15-minute B/C subway ride away. My kids are big fans of The Lion Guard on Disney+, so I knew The Lion King on Broadway would be a must-see for the family. Tickets aren’t cheap, so after striking out repeatedly on the lottery, I started looking for a programmatic way to find the best deal.

Digging through the fetch network logs, I found two useful endpoints powering the Broadway Direct interface:
api/events/getbymonthapi/eventinventory/{event_id}
The first endpoint returns a list of all shows within a supplied month. Beyond basic information like the show date, time, and location, the endpoint also returns how many tickets are still available for purchase (AvailabilityCount).
{
"ID": 1032655,
"InventoryLastUpdated": null,
"SecondaryMarketEventId": null,
"EventTemplateID": 13510,
"EventTemplateName": "The Lion King",
"EventTemplateStatementDescriptor": "The Lion King Tickets",
"EventTemplateCode": "546654",
"EventTemplateAlertMessage": "",
"EventTemplateRequireAlertAcknowledgement": false,
"LocalEndDate": "2025-03-02T16:00:00",
"EndDate": "2025-03-02T21:00:00",
"HasProducts": false,
"Name": "The Lion King (New York, NY)",
"AlternateName": "",
"AwayTeam": null,
"UseHeavyOnSale": false,
"RedirectURL": null,
"ShouldRedirect": false,
"RequireRecaptcha": false,
"UrlSafeName": "the-lion-king-new-york-ny-1032655",
"Date": "2025-03-02T18:00:00",
"LocalDate": "2025-03-02T13:00:00",
"LocalOnSaleDate": "2024-06-05T10:00:00",
"LocalOnSaleEndDate": "2025-03-02T12:30:00",
"LocalAPIOnSaleDate": "2024-06-05T10:00:00",
"HoursToEvent": 13,
"TimeTBD": false,
"DateTBD": false,
"DateTBDDescription": null,
"IsPresale": false,
"IsBeforeSaleDate": false,
"AvailabilityCount": 178,
"AvailabilityColor": "Medium",
"HideFeesUntilCheckout": false,
"linkedEvent": null,
"ShouldShowCheckInventoryLaterText": false,
"eventTemplateType": "Standard",
"UpfrontFeeDisclosure": true
}
Supplied with an event id, the second endpoint returns an array of price classes for a particular show. For example, a show on March 2 offered tickets across seven price classes: $287.50, $242.50, $169.50, $150.50, $135.50, $116.75, and $113.75.
{
"Price": 105,
"DisplayPrice": 116.75,
"Class": "p5",
"PriceLevelID": 53271,
"DiscountedPrice": 105,
"DiscountedDisplayPrice": 116.75,
"DisplayRetailPrice": 116.75,
"CommissionAmount": 0,
"CompositePriceID": "105.00-105.00-False",
"GASortOrder": 13,
"DisplayName": "12",
"FeeTotal": 11.75,
"PriceKey": "53271--",
"Commissionable": false,
"Zone": "Mezz G-H",
"RequirePackagePurchase": false,
"HasPackages": false,
"PackagePriceMaps": [],
"SaleTypeName": "Standard",
"ShowSaleTypeSeatIcon": false,
"ExternalSystemData": null
}
Using these two endpoints (getbymonth + eventinventory), I pieced together a dataset representing all price classes for all shows in March, April, and May of 2025.
| id | date | price_class | price |
| 1032655 | 2025-03-02 | p0 | $288 |
| 1032655 | 2025-03-02 | p1 | $242 |
| 1032655 | 2025-03-02 | p2 | $170 |
| … | … | … | … |
| 1212262 | 2025-05-31 | p0 | $266 |
Then, to visualize the data, I collapsed the price classes to find the minimum, median, and maximum price point per show:

Based on this data, the cheapest ticket is usually $143, the median ticket is usually $181, and the most expensive ticket is usually $260. That means for a family of four, you should expect to shell out at least $500 to $700 for a single Lion King show during the spring season.
This whole exercise paints me as a cheap dad, concerned about price first and fun and childhood memories second, which is not really the case. That said, it’s satisfying to know I’m getting a good deal. 😉
Here’s the R code used to scrape the endpoints, build the dataset, and make the chart:
























