About SportsCal
A small open-source utility for clean sports calendars: team, venue, time — and nothing you didn't ask for.
Data source
Schedules, teams, venues and broadcast networks come from ESPN's public, undocumented API endpoints. SportsCal is not affiliated with or endorsed by ESPN or any league or team. If ESPN changes or removes data, calendars reflect that on the next refresh.
Downloads vs. subscriptions
A download is a snapshot of the schedule right now. A subscription URL is regenerated from current ESPN data (cached for about 15 minutes), so new start times, venue changes and postseason games appear automatically. How often your calendar app checks the URL is up to the app.
Seasons
Feeds pick the season automatically: the current season while it's underway, the upcoming one once ESPN publishes it, and otherwise the most recent season. When a new season begins the same URL switches to it, so the feed always represents one season. Your calendar app may keep events it already imported from the previous season. Calendars pinned to a specific season never move.
TBD start times
Games with a date but no start time appear as all-day events. When ESPN publishes the time, the same event (same UID) becomes a timed event — no duplicates. Games without a date aren't added until ESPN schedules them. Canceled games stay on the calendar marked as canceled.
Privacy
No accounts, no email addresses, no ad trackers. Custom calendars store only their settings and a hash of a private edit token. The token lives in your browser and in the private edit link — keep that link if you want to change the calendar later.
Open source
The code is on GitHub. Issues and pull requests are welcome. Build a calendar →