Automatically sync esports matches to your calendar with customizable filters for competitions and teams. Works with Google Calendar, Apple Calendar, Outlook, and any calendar application that supports iCal/ICS feeds.
Consider giving it a βοΈ if you like it to show your support!
- Features
- Quick Start
- What you get
- API Documentation
- Supported Games
- Troubleshooting
- Contributing
- Testing
- 50+ Supported Games: Rocket League, League of Legends, CS2, Valorant, Dota 2, Overwatch, and many more
- Universal Compatibility: Works with Google Calendar, Apple Calendar, Outlook, iOS, Android
- Custom Filters: Filter by competition names, team names, or both
- Real-time Updates: Calendar automatically updates when new matches are scheduled
- Preset Configurations: Pre-built filters for popular tournaments (RLCS, Worlds, Majors)
- Advanced Options: Regex support, team name matching, past match inclusion
- Web Interface: User-friendly URL builder with live preview
- MCP Server: Plug our MCP to your AI Chatbot and get realtime information!
- Visit ics.snwfdhmp.com
- Select your game and customize filters
- Click "π Add to Calendar" or copy the generated URL
- Import into your calendar application
Generate calendar URLs using this format:
https://ics.snwfdhmp.com/matches.ics?url=LIQUIPEDIA_URL&[OPTIONS]
Example: Rocket League RLCS matches from the RLCS series
https://ics.snwfdhmp.com/matches.ics?url=https%3A%2F%2Fliquipedia.net%2Frocketleague%2FLiquipedia%3AMatches&competition_regex=RLCS
Access pre-configured tournament feeds:
https://ics.snwfdhmp.com/preset/PRESET_NAME
Available presets:
rlcs- All RLCS matchesrlcs-worlds- RLCS World Championshipsrlcs-major- RLCS Major tournamentsrocket-league- All Rocket League matches
If you want to add your preset, feel free to update the preset file
Import this server into ChatGPT or any other MCP client: https://esports-calendar-mcp.snwfdhmp.com/
- Event summary contains:
- teams short names (eg: VIT vs KC)
- competition name
- type of match (eg: Bo3) if available
- score if the match already started
- Event details contains:
- team full names (eg: Vitality vs Karmine Corp)
- competition name
- type of match (eg: Bo3) if available
- score if the match already started
The event ICS also contains some useful custom iCal tags for scripting or custom integrations.
| name | example |
|---|---|
| X-LIQUIPEDIATOICAL-COMPETITION | RLCS Worlds 2025 |
| X-LIQUIPEDIATOICAL-TEAMLEFT | KC |
| X-LIQUIPEDIATOICAL-TEAMLEFTFULLNAME | Karmine Corp |
| X-LIQUIPEDIATOICAL-TEAMLEFTURL | https://liquipedia.net/rocketleague/Karmine_Corp |
| X-LIQUIPEDIATOICAL-TEAMLEFTLOGO | https://liquipedia.net/commons/images/thumb/1/1e/Karmine_Corp_2020_lightmode.png/600px-Karmine_Corp_2020_lightmode.png |
| X-LIQUIPEDIATOICAL-TEAMRIGHT | G2 |
| X-LIQUIPEDIATOICAL-TEAMRIGHTFULLNAME | G2 Esports |
| X-LIQUIPEDIATOICAL-TEAMRIGHTURL | https://liquipedia.net/rocketleague/G2_Esports |
| X-LIQUIPEDIATOICAL-TEAMRIGHTLOGO | https://liquipedia.net/commons/images/thumb/d/da/G2_Esports_2020_lightmode.png/600px-G2_Esports_2020_lightmode.png |
| X-LIQUIPEDIATOICAL-WINNERSIDE | left |
| X-LIQUIPEDIATOICAL-DESCRIPTOR | Grand Final |
| X-LIQUIPEDIATOICAL-DESCRIPTORMOREINFO | ... |
GET /matches.ics[?opts]
| Parameter | Type | Description | Example |
|---|---|---|---|
url |
string | Required. Liquipedia matches page URL | https://liquipedia.net/rocketleague/Liquipedia:Matches |
competition_regex |
string | Filter competitions by regex pattern | RLCS.*World |
teams_regex |
string | Filter teams by regex pattern | KC|G2|VIT |
teams_regex_use_fullnames |
boolean | Use full team names instead of abbreviations | true |
match_both_teams |
boolean | Require both teams to match the filter | true |
condition_is_or |
boolean | Use OR logic between competition and team filters | true |
ignore_tbd |
boolean | Skip matches with undefined teams | true |
past_match_allow_seconds |
number | Include past matches within X seconds | 86400 |
Combine multiple Liquipedia pages in one calendar:
/matches.ics
?1_url=URL1
&2_url=URL2
&2_competition_regex=PATTERN_FOR_2
&3_url=URL3
&3_teams_regex=PATTERN_FOR_3
It will merge events from the 3 configurations
GET /preset/:name
The service supports 50+ esports titles including:
Popular Games:
- Rocket League
- League of Legends
- Counter-Strike 2
- Valorant
- Dota 2
- Overwatch
- Starcraft II
- Trackmania
- And many more...
View complete list of supported games
No matches found?
- Verify the Liquipedia URL is correct
- Check if the game has upcoming matches
- Try broader filter criteria
- For Battle Royale and games whose events do not advertise as "Team A vs Team B", use
allow_missing_teams=true - Open an issue if a supported game isn't working
Calendar not updating?
- Check if your calendar app supports automatic refresh
- Try removing and re-adding the calendar subscription
- π Open an issue on GitHub
- π¬ Contact on Discord:
mjo___ - π Test your URL at ics.snwfdhmp.com
- Node.js
- pnpm
# Clone the repository
git clone https://github.com/snwfdhmp/liquipedia-to-ical.git
cd liquipedia-cal
# Install dependencies
pnpm install
# Start development server
pnpm run dev
# Run tests
pnpm run testThe project includes comprehensive testing for all supported games:
# Run all tests
pnpm run test
# Run tests and only show failing tests
pnpm run test -o
# Run tests for Rocket League
pnpm run test "Rocket League"
# Run tests for Rocket League and verbose output
pnpm run test -v "Rocket League"Add new presets in src/presets.ts:
export const presets: Record<string, string[]> = {
"my-preset": [
"https://ics.snwfdhmp.com/matches.ics?url=...",
],
}Made with β€οΈ for the esports community
Star β this repository if you find it useful!
β€οΈ Sponsoring helps me spending time on this and paying for the servers!