Infrastructure 2 min read

Unwrapping Chicago's Christmas Music Using Technology to Explore Trends

Using data scraping, Python, and visualization tools to map Chicago's Christmas music landscape — what's playing, where, and why it matters.

Every year around December, I find myself wondering: what's actually playing in Chicago's holiday music scene? Not the Mariah Carey radio loop — the real stuff. The jazz clubs, the classical concerts, the independent venues doing something interesting.

So I built a scraper to find out.

The Problem with Holiday Music Discovery

Chicago has thousands of live music events in December. Finding the ones worth attending requires either knowing the right people, following dozens of venues on social media, or spending hours manually checking event calendars.

None of those scale. So I automated it.

The Stack

  • Python + Playwright for scraping venue event pages
  • pandas for data cleaning and deduplication
  • SQLite for storage (simple wins)
  • Matplotlib + Seaborn for visualization
  • GitHub Actions for nightly runs throughout December

What the Data Showed

After scraping 47 Chicago venues over four weeks:

  • Jazz and blues dominated at independent venues (62% of holiday programming)
  • Classical concerts clustered on weekends — predictably, but the Friday pattern was surprising
  • Three venues accounted for 40% of all holiday music events — Double Door, Constellation, and Millennium Park
  • Tuesday was the deadest night — good intel if you want smaller crowds

The Interesting Anomaly

One thing I didn't expect: a cluster of experimental/avant-garde performances specifically marketed as "anti-holiday" events. Seven venues ran explicitly anti-Christmas programming, drawing (presumably) the crowd that's tired of Rudolph.

The most popular? A John Cage tribute evening at the Hideout. "4'33'' but make it festive" was genuinely not what I expected to find.

Lessons for Future Projects

  1. Event websites are terrible for scraping — inconsistent formatting, JavaScript-heavy rendering, and wildly different URL structures. Playwright was necessary but slow.
  2. Human curation still beats algorithms for music discovery — the data helped me find the signal, but I still needed to make judgment calls about what was "interesting."
  3. Seasonal projects are great for learning — the finite timeline (four weeks of December) made it easy to ship something complete.

The full code is on GitHub if you want to adapt it for your city's music scene.

python data visualization chicago music
// related

More from the blog.

Infrastructure

2024 Chicago Christmas Music Trends

Midseason report from the 2024 Chicago Christmas music data project — patterns emerging halfway through December.

2 min read
// weekly intelligence

The Operator's Brief

Every week: one automation win, one tool worth knowing, and the actual numbers from running FTS. No fluff. Unsubscribe anytime.

Join operators who build systems that run themselves.