Building a Dynamic Calendar Feed for League of Legends Worlds 2025
As a developer and League of Legends enthusiast, I found myself constantly checking multiple websites to stay updated with the Worlds 2025 tournament schedule. Rather than bookmarking yet another esports site, I decided to build a solution that would integrate directly into my existing workflow: a dynamic calendar feed.
This article explains how I implemented an automated calendar system that fetches match data from the Pandascore API and serves it as a standard .ics calendar feed.
The Calendar Feed
https://one-esport-api.vercel.app/calendar/297
Technical Implementation
API Integration
The calendar uses Pandascore’s REST API to fetch tournament data. The endpoint targets league ID 297, which specifically corresponds to the League of Legends World Championship. This ensures we only retrieve relevant matches without filtering through other tournaments.
Caching Strategy
To balance real-time updates with API rate limits, I implemented a 5-minute cache layer. This approach provides:
- Performance optimization: Reduces API calls and response times
- Cost efficiency: Stays within reasonable API usage limits
- Near real-time updates: 5-minute intervals are sufficient for tournament scheduling
Data Processing
The system processes two types of information:
- Scheduled matches: Upcoming games with team information and timing
- Match results: Final scores and outcomes for completed games
When a match transitions from “scheduled” to “finished” status in the API, the calendar automatically reflects the result in the event title and description.
Calendar Format Compatibility
The feed outputs standard iCalendar format (RFC 5545), making it compatible with:
- Apple Calendar (iOS/macOS)
- Google Calendar
- Microsoft Outlook
- Thunderbird
- Any RFC 5545 compliant calendar application
Why This Approach Works
Building a calendar feed instead of a traditional web scraper or notification system offers several advantages:
- Native integration: Works with existing calendar workflows
- Cross-platform support: No need for platform-specific apps
- Automatic synchronization: Calendar apps handle the refresh logic
- Offline access: Most calendar apps cache events locally
The 5-minute cache ensures that results appear quickly after matches conclude while maintaining system stability and API compliance.
Source Code
The complete implementation is available on GitHub:
Feel free to explore the code, contribute improvements, or adapt it for other tournaments and esports leagues.