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
- Event websites are terrible for scraping — inconsistent formatting, JavaScript-heavy rendering, and wildly different URL structures. Playwright was necessary but slow.
- 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."
- 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.