My Box Score Scraper App for NBA & WNBA Matchups

If you’ve ever tried checking box scores on Basketball Reference while building a parlay, you know how tedious it can get. You click into one game, scroll through chunky tables, back out, load another, and do it over and over again. By the time you’ve looked through five games for each team, the window to bet may have closed and the lines could've moved. All that effort just to see who’s rebounding, who’s been slacking on defense, or how many minutes a bench player’s been getting. To solve that issue for myself, I build a custom Python desktop app that scrapes the last five games of any NBA or WNBA team and lays out the full basic box scores side by side. You first select the league, pick two teams, type in a season year, hit a button, and see real-time data pulled from Basketball Reference, lined up and ready to read. No tabs, no browser clutter, and no copying and pasting rows from ten different pages.

The frontend is built with customtkinter, which is like Tkinter but with a better coat of paint. I went with a dark theme, smooth button highlights, and a scrollable layout that feels modern. Rounded edges, hover states, and an image of LeBron front and center good luck feels minimal, but personal at the same time. I didn’t want a boring script window and wanted to make a UI you’d actually enjoy using.

The backend is where the real work happens. Selenium opens Chrome in headless mode to load the team’s game log page, then BeautifulSoup grabs the links and scrapes each individual box score. Everything’s wrapped in smart logic with retries, error handling, and randomized user agents ensuring it doesn’t break if a page loads slow or Basketball Reference changes something small. It uses multithreading to keep the app from freezing while it pulls data, so even when it's scraping in the background the GUI stays responsive. I also added webdriver-manager so it handles ChromeDriver updates automatically. You never have to install anything manually and the app knows what it needs and sets it up for you silently. This is especially useful for sending apps to friends, you don’t want to have to walk them through command prompts or pip installs.

Once the whole thing was working the way I wanted, I used PyInstaller to package it into a single .exe file. That includes the icon, the embedded image, all the scraping logic, and every library. The end user never sees a console or a setup screen, and you just download the app and double-click it like any other program. Everything is baked in and self-contained.

boxscore-scraper

This project started as something I built for myself, something to streamline my own stat-checking process during NBA and WNBA betting. But the more I used it, the more I realized how much time it was saving. It’s removes all the friction that gets in the way of a good decision and helps you lock in a bet as soon as possible. Whether you’re trying to check trends before locking in props, compare team performance across different matchups, or just get a better feel for how a squad’s been playing recently, this tool gives you that info without wasting your attention.

Posted in

Ivan Aleksandrov

I write about mobile tech, WordPress platforms, and digital UX. I’m currently working with AppPresser to help organizations improve how they deliver content through apps and websites.

Leave a Comment