Last active
March 2, 2025 04:44
-
-
Save erikgregorywebb/da4f956563ea597d3b28f210223b4a96 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# import packages | |
library(tidyverse) | |
library(httr) | |
library(jsonlite) | |
library(lubridate) | |
library(scales) | |
# get list of shows | |
headers = c( | |
`sec-ch-ua-platform` = '"macOS"', | |
Referer = "https://tickets.broadwaydirect.com/tickets/series/546654/the-lion-king-new-york-ny-1032631?startDate=03-01-2025", | |
`Accept-Language` = "en-US", | |
`sec-ch-ua` = '"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"', | |
`sec-ch-ua-mobile` = "?0", | |
`User-Agent` = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36", | |
Accept = "application/json, text/plain, */*", | |
DNT = "1" | |
) | |
months = c("2025/03/01", "2025/04/01", "2025/05/01") | |
datalist = list() | |
for (i in 1:length(months)) { | |
print(i) | |
Sys.sleep(10) | |
params = list( | |
requestedTime = months[i], | |
salesChannel = "Web", | |
seriesCode = "546654" | |
) | |
res <- httr::GET(url = "https://tickets.broadwaydirect.com/api/events/getbymonth", httr::add_headers(.headers=headers), query = params) | |
raw = fromJSON(rawToChar(res$content)) | |
datalist[[i]] = raw %>% tibble() %>% select(ID, EndDate, AvailabilityCount, AvailabilityColor) | |
} | |
raw = do.call(rbind, datalist) | |
shows = raw %>% | |
select(id = ID, timestamp = EndDate, availability_count = AvailabilityCount, availability_color = AvailabilityColor) %>% | |
mutate(timestamp = ymd_hms(timestamp)) | |
# get price array for every show | |
cookies = c( | |
.AspNetCore.Culture = "c=en-US|uic=en-US", | |
series = "546654", | |
mcuid = "N1739756221112", | |
`_evga_1a0f` = '{"uuid":"45903a9e7026fe47"}', | |
lantern = "8ef5c960-5796-4ddd-a5c0-42210201f91d", | |
`_pin_unauth` = "dWlkPVpqazVNakF5Wm1VdFl6STNZUzAwTlRCaUxXSXdaVEV0TWpaa1lqRTRaVEZrWkdReQ", | |
CookieInformationConsent = '{"website_uuid":"c3c64d1a-0563-4694-9bcf-8c2259cc76cd","timestamp":"2025-02-17T01:37:22.615Z","consent_url":"https://tickets.broadwaydirect.com/tickets/series/546654/the-lion-king-new-york-ny-1212243/bestAvailable?startDate=04-26-2025","consent_website":"broadwaydirect.com","consent_domain":"tickets.broadwaydirect.com","user_uid":"5f7ef6f3-f712-47a6-96a1-15db198aefd4","consents_approved":["cookie_cat_necessary","cookie_cat_functional","cookie_cat_statistic","cookie_cat_marketing","cookie_cat_unclassified"],"consents_denied":[],"user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"}', | |
`_tt_enable_cookie` = "1", | |
`_ttp` = "CJMkMZeO5khkYhLmYIUj-RXcu9R.tt.1", | |
`_sfid_c26b` = '{"anonymousId":"45903a9e7026fe47","consents":[]}', | |
`__attentive_id` = "1a2cb11664e24e83af3840732cf499b7", | |
`__attentive_cco` = "1739756221825", | |
`__zlcmid` = "1QGnOwBCBZfUS23", | |
`_gcl_au` = "1.1.273712821.1739756243", | |
broadwaydirect_ga = "GA1.1.1086508586.1739756221", | |
`__cf_bm` = "P8TI01C.PsouUeDk2WUCBOXVDt7WpKCHxlar.qUuRtM-1740877339-1.0.1.1-G6UeYdznF.5xYkdKmsNIXg5OJlzpoPU8SlSm3N.0Qt9C8R8FHwwKj9aABfrpSq3hzYMsXnpbLXfrNoEFw.K8EE_kczNHnqYi7r8csGZjNzQ", | |
cf_clearance = "GJYAoEiOPWcpq2V_1S1IhJ.HD8etJIovzr5vu1BP9x4-1740877340-1.2.1.1-tDYDl6fyMUEeWc_YVCDVrNf.g50FcTcoTeMVmaHXytMhJPh5dSB8xABPz24WilYoUw7kjNbfmrBaTMfS4of51mOXr3gp7Ydsyj8iLLS3i4TIoAeTu_Z.XmNy.a1IX0gc.GVInaVWiihozlzDGplx675bVC4c2YeZ2ltTfppa59K9SUhiS4ygVdspm4jUZcjNiWxsSA4qHi7XOvxsBkw.WYAg_YWxgS2kDdRGfhsH1vt6.DmzlYlC5cRPXyZLpK2vNbDAJHf9Iglw82k8E8x57JgT.hP57.usv7hDFkvWHO2ZtLD19Fcz19OKVvPcyZNM6mlF1sRRvKIddAXpVAF.J5nNKcjjDkEUlXNHZGCCmMkopcURm3ksfXIENXLJmAut03DqR_AxzuptLv4pHoJ__9YqwlaRDxaGwPQ9ZTZgIPk", | |
`_gid` = "GA1.2.1790488932.1740877340", | |
mcsid = "TAKjvYHr", | |
`__attentive_domain` = "broadwaydirect", | |
`__attentive_ceid` = "2kG", | |
`__attentive_session_id` = "28c347251f954a0097773cba2a3edea1", | |
`__attentive_ss_referrer` = "https://www.google.com/", | |
`_pin_unauth` = "dWlkPVpqazVNakF5Wm1VdFl6STNZUzAwTlRCaUxXSXdaVEV0TWpaa1lqRTRaVEZrWkdReQ", | |
`__attentive_dv` = "1", | |
`_cfuvid` = "iglmWmE7RP832t93QvQZ9.GsZLkFaEy4Smtac.PG2nU-1740877342949-0.0.1.1-604800000", | |
`QueueITAccepted-SDFrts345E-V3_broadwaydirect` = "EventId=broadwaydirect&RedirectType=safetynet&IssueTime=1740877343&Hash=465a122a768c56e816e53f64e0b7fde3f9a30ebb305d817e79d2fac85d5a19c7", | |
accountAllowsLogin = "true", | |
cf_clearance = "0iW7KI_724w1mX3rbT839TgEGlZLC1xpIH9mcbvt.L8-1740877344-1.2.1.1-ldaFLI9go71F9xPkH7trYe02drjSQ8fEP4bmt6TXBPn7bed6RjUxqTbIu.kDQ6BRZ_qHhuBJ00C4ZImoaO1ooVsT_XMARRaHJlZHkYzy4s3.kasEoSd7.CrqG9xnQe_dioh3pZDblgpVhyQZIf1yiYtxE2pB8nF4qAu9Mf2vPgLvujxG05ht6cCHVXARtcEfnr.2EADPTMBrz0z9FARviWyXOi4A5bQpvLL7gVjoejzj3dCrgv_00_Qr4KxId7BBFnShMRw.UdlHqPO97bOupakiAO1EtT6COsS8KzYjG_AjUKBMxB9s79yGJ6NYIT4LE35DvQW5619ASlX6uXb7TK5ymQR1fZk73T6hyfg1.gNQIStfeSze5sF.Rw3X.8DnHU_Ie1fzVi31.vPQBhJstZbH57gsPSqiy8H3UObtPpI", | |
consumerFeatures = '{"showNewBasketPage":false}', | |
`__attn_exit_intent_triggered` = "true", | |
gtmProductList = "", | |
returnPage = "/tickets/series/546654/the-lion-king-new-york-ny-1212270", | |
sellMoreSameEventPage = "/tickets/series/546654/the-lion-king-new-york-ny-1212270?startDate=03-16-2025", | |
actualReferrer = "https://tickets.broadwaydirect.com/tickets/series/546654/the-lion-king-new-york-ny-1212270?startDate=03-16-2025", | |
selectSeatsUrl = "/Tickets/series/546654/the-lion-king-new-york-ny-1212270", | |
`_gat` = "1", | |
nLivenClientNavLoginRedirect = "https://tickets.broadwaydirect.com/tickets/series/546654/the-lion-king-new-york-ny-1212242?startDate=04-19-2025", | |
`_uetsid` = "fe290b00f70111ef900a93a7cb8c010b", | |
`_uetvid` = "65a380204c7411efa66fed5678b32b4f", | |
`_ga_CE4BESHVHE` = "GS1.2.1740877344.2.1.1740877863.60.0.0", | |
`_attn_` = "eyJ1Ijoie1wiY29cIjoxNzM5NzU2MjIxODI0LFwidW9cIjoxNzM5NzU2MjIxODI0LFwibWFcIjoyMTkwMCxcImluXCI6ZmFsc2UsXCJ2YWxcIjpcIjFhMmNiMTE2NjRlMjRlODNhZjM4NDA3MzJjZjQ5OWI3XCJ9Iiwic2VzIjoie1widmFsXCI6XCIyOGMzNDcyNTFmOTU0YTAwOTc3NzNjYmEyYTNlZGVhMVwiLFwidW9cIjoxNzQwODc3ODYzODEwLFwiY29cIjoxNzQwODc3ODYzODEwLFwibWFcIjowLjAyMDgzMzMzMzMzMzMzMzMzMn0ifQ==", | |
`__attentive_pv` = "9", | |
`_ga_F9SL9L2PG0` = "GS1.1.1740877344.2.1.1740877864.0.0.0", | |
`_gat_UA-26194249-1` = "1", | |
`_gat_UA-43841211-3` = "1", | |
`_ga_2BCYEF8XG6` = "GS1.1.1740877340.2.1.1740877864.58.0.0", | |
`_ga` = "GA1.2.948673810.1739756220", | |
broadwaydirect_ga_Y4Z8911974 = "GS1.1.1740877340.2.1.1740877864.58.0.240948745", | |
.ASPXANONYMOUS = "0KgJzfiL2wEkAAAAMGI2MTMwNDktZGQzYi00ZTc5LWExNTUtNjAzNDAxYTY0ZGRj", | |
`__cf_bm` = "tJFi0p1eGbkwtZ.hjR6L.wUqGMN_ZSqQSS4gPQM2lUw-1740877864-1.0.1.1-nkpLYZkRV7pGUj9qk855pc3LpvbTE7CnkJnqhT9MAziYHv7f3p8EkOEaV.AGHA16s9r.0Zm70oFgcMjidT4H01J9tL9DlgZAfvYNej013ug" | |
) | |
headers = c( | |
accept = "application/json, text/plain, */*", | |
`accept-language` = "en-US", | |
dnt = "1", | |
priority = "u=1, i", | |
referer = "https://tickets.broadwaydirect.com/tickets/series/546654/the-lion-king-new-york-ny-1212242?startDate=04-19-2025", | |
`sec-ch-ua` = '"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"', | |
`sec-ch-ua-mobile` = "?0", | |
`sec-ch-ua-platform` = '"macOS"', | |
`sec-fetch-dest` = "empty", | |
`sec-fetch-mode` = "cors", | |
`sec-fetch-site` = "same-origin", | |
`user-agent` = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36" | |
) | |
params = list( | |
includeOpens = "true", | |
salesChannel = "Web" | |
) | |
ids = shows %>% select(id) %>% pull(id) | |
datalist = list() | |
for (i in 1:length(ids)) {n | |
print(ids[i]) | |
Sys.sleep(10) | |
res <- httr::GET(url = paste("https://tickets.broadwaydirect.com/api/eventinventory/", ids[i], sep = ''), | |
httr::add_headers(.headers=headers), query = params, httr::set_cookies(.cookies = cookies)) | |
raw = fromJSON(rawToChar(res$content)) | |
prices = tibble(raw$PriceMaps) | |
datalist[[i]] = prices %>% select(DisplayPrice, Class, PriceLevelID) %>% mutate(id = ids[i]) | |
} | |
raw = do.call(rbind, datalist) | |
prices = raw %>% | |
select(id, class = Class, price_level_id = PriceLevelID, price = DisplayPrice) | |
# join together | |
all = left_join(x = prices, y = shows, by = c('id')) %>% | |
select(id, timestamp, price, class, price_level_id, availability_count, availability_color) | |
# roll-up | |
summary = all %>% | |
group_by(id, timestamp, availability_count, availability_color) %>% | |
summarise(Min = min(price), Max = max(price), Median = median(price)) %>% ungroup() %>% | |
arrange(timestamp) | |
# plot | |
chart = summary %>% | |
pivot_longer(cols = c(Min, Max, Median)) %>% | |
ggplot(., aes(x = timestamp, y = value, col = name)) + | |
#geom_point() + | |
geom_line(size = .9) + | |
scale_colour_manual(values=c(Min="#f8069a", Max="#ecb516", Median="#6d1301")) + | |
labs(x = '', y = '', title = "'The Lion King' Broadway Ticket Prices: Min, Max, & Median", | |
subtitle = 'March 1 to May 31, 2025 | Prices scraped from broadwaydirect.com') + | |
scale_y_continuous( labels = label_dollar()) + | |
theme_minimal() + | |
theme(legend.position = "top") + | |
theme(legend.title=element_blank()) + | |
theme(plot.title=element_text(face="bold")) | |
setwd("~/Downloads") | |
png(filename="lion-king-broadway-price-chart.png", width = 12, height = 6, units = "in", res = 1000) | |
chart | |
dev.off() | |
# stats | |
median(summary$Min) | |
median(summary$Median) | |
median(summary$Max) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment