League of Legends API
Player earnings, org history, transfers, live full board, and esports data
https://api.citoapi.com/api/v1LoL live board is live on REST — websockets coming soon for paid upgrades
Poll /lol/live/{gameId}/stats (or /board) every ~2s for the full SPA-locked scoreboard. Webhooks already push live state / gold / objectives / kills / player_down on One Game Starter+. A higher-tier websocket stream is launching soon for teams that want push instead of polling.
GET /api/v1/lol/live/{gameId}/statsUpgrade for webhooksLive coverage pre-check
Before treating a LoL match as decision-grade live state, check coverage. Use/lol/coveragefor the league matrix and/lol/matches/{matchId}/coveragefor a specific match. For LCK CL / Academy, treat live-state coverage as opportunistic untilnumeric_live_stateis true.
curl "https://api.citoapi.com/api/v1/lol/matches/lol-match-116520394663535912/coverage" \
-H "x-api-key: YOUR_CITO_API_KEY"{
"match_id": "lol-match-116520394663535912",
"coverage": {
"schedule_metadata": true,
"live_row": false,
"numeric_live_state": false,
"webhook_event": false,
"coverage_level": "metadata_only",
"expected_live_state": false,
"expected_webhooks": false
},
"league": {
"slug": "lck_challengers",
"live_state_policy": "opportunistic_live_state"
}
}Live full board
While a game is in progress, poll/lol/live/{gameId}/stats(alias/board) about every 2 seconds. The payload matches the lolesports.com board cadence and includes team gold/kills/towers/inhibitors/barons/dragons plus per-player KDA, CS, gold, level, items, alive flags, kill participation, damage share, and wards. Use/mapfor the alive/death list.
# 1) Discover live matches
curl "https://api.citoapi.com/api/v1/lol/live" \
-H "x-api-key: YOUR_CITO_API_KEY"
# 2) Pull the full live board for an in-progress game
curl "https://api.citoapi.com/api/v1/lol/live/{gameId}/stats" \
-H "x-api-key: YOUR_CITO_API_KEY"
# Aliases
curl "https://api.citoapi.com/api/v1/lol/live/{gameId}/board" \
-H "x-api-key: YOUR_CITO_API_KEY"
curl "https://api.citoapi.com/api/v1/lol/live/{gameId}/map" \
-H "x-api-key: YOUR_CITO_API_KEY"{
"success": true,
"source": "riot_live_window+details",
"frameTimestamp": "2026-07-14T19:23:50.000Z",
"lagSeconds": 193.0,
"recommendedPollSeconds": 2,
"transport": {
"current": "rest_poll",
"websocket": "coming_soon",
"note": "REST board matches lolesports.com SPA cadence. Websocket push is a higher-tier upgrade launching soon."
},
"data": {
"gameId": "116833506932128109",
"state": "in_game",
"patchVersion": "16.13.790.6961",
"blueTeam": {
"totalGold": 66500,
"totalKills": 16,
"towers": 4,
"inhibitors": 0,
"barons": 1,
"dragons": ["chemtech", "infernal"]
},
"redTeam": {
"totalGold": 66000,
"totalKills": 14,
"towers": 5,
"inhibitors": 0,
"barons": 1,
"dragons": ["cloud", "cloud", "cloud"]
},
"players": [
{
"participantId": 1,
"summonerName": "HRTS Papiteero",
"championId": "Rumble",
"role": "top",
"side": "blue",
"kills": 3,
"deaths": 4,
"assists": 8,
"creepScore": 253,
"totalGold": 12400,
"level": 18,
"alive": true,
"items": [3047, 6653, 3363, 8010, 3157, 3916],
"killParticipation": 0.6875,
"championDamageShare": 0.2158,
"wardsPlaced": 14
}
]
}
}// GET /api/v1/lol/live/{gameId}/map
{
"success": true,
"source": "riot_live_window",
"data": {
"gameId": "116833506932128109",
"state": "in_game",
"players": [
{
"participantId": 1,
"summonerName": "HRTS Papiteero",
"championId": "Rumble",
"side": "blue",
"role": "top",
"alive": true,
"currentHealth": 3190,
"maxHealth": 3190,
"position": null
}
],
"note": "Alive flags from official livestats health. Public Riot feed does not include map {x,y}."
}
}LoL Webhook Events
Push events available for live match and score automation.
lol.match.startedlol.live.game_startedlol.live.statelol.live.gold_swinglol.live.objectivelol.live.kill_updatelol.live.tower_destroyedlol.live.player_downlol.live.map_deltalol.live.pick_lockedlol.live.ban_lockedlol.score.updatedlol.match.completedPlayers
Player stats, form, champion pools, earnings, and team history.
GET/api/v1/lol/players/{playerId}/earningsPlayer earningsPlayer prize pool earnings with tournament rows
/api/v1/lol/players/{playerId}/earningscurl "https://api.citoapi.com/api/v1/lol/players/{playerId}/earnings" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/players/{playerId}/earnings/summaryPlayer Earnings SummaryPlayer earnings totals, placement counts, and sync metadata
/api/v1/lol/players/{playerId}/earnings/summarycurl "https://api.citoapi.com/api/v1/lol/players/{playerId}/earnings/summary" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/players/{playerId}/teamsPlayer teamsPlayer org history and team timeline
/api/v1/lol/players/{playerId}/teamscurl "https://api.citoapi.com/api/v1/lol/players/{playerId}/teams" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/players/{playerId}/statsPlayer statsPlayer statistics and recent performance rows
/api/v1/lol/players/{playerId}/statscurl "https://api.citoapi.com/api/v1/lol/players/{playerId}/stats" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/players/{playerId}/formPlayer formSliding-window player form for last 10, 20, and 50 matches with optional league and role filters
/api/v1/lol/players/{playerId}/formcurl "https://api.citoapi.com/api/v1/lol/players/{playerId}/form" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/players/{playerId}/champion-poolPlayer Champion PoolRecent champion picks, pick rates, and decided-game win rates over the player's last N matches
/api/v1/lol/players/{playerId}/champion-poolcurl "https://api.citoapi.com/api/v1/lol/players/{playerId}/champion-pool" \
-H "x-api-key: YOUR_CITO_API_KEY"Teams & Rosters
Professional teams, objectives, roster history, and team timelines.
GET/api/v1/lol/players/{playerId}/teamsPlayer teamsPlayer org history and team timeline
/api/v1/lol/players/{playerId}/teamscurl "https://api.citoapi.com/api/v1/lol/players/{playerId}/teams" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/teams/{slug}/roster/historyTeam Roster HistoryHistorical team rosters and date ranges
/api/v1/lol/teams/{slug}/roster/historycurl "https://api.citoapi.com/api/v1/lol/teams/{slug}/roster/history" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/teamsList TeamsProfessional LoL teams
/api/v1/lol/teamscurl "https://api.citoapi.com/api/v1/lol/teams" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/teams/{slug}/objectivesTeam ObjectivesTeam objective control rates over recent matches with optional league filter
/api/v1/lol/teams/{slug}/objectivescurl "https://api.citoapi.com/api/v1/lol/teams/{slug}/objectives" \
-H "x-api-key: YOUR_CITO_API_KEY"Transfers
Recent movement and player/team transfer history.
GET/api/v1/lol/transfersRecent TransfersRecent player transfers with filters
/api/v1/lol/transferscurl "https://api.citoapi.com/api/v1/lol/transfers" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/transfers/player/{playerId}Player TransfersTransfer history for one player
/api/v1/lol/transfers/player/{playerId}curl "https://api.citoapi.com/api/v1/lol/transfers/player/{playerId}" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/transfers/team/{slug}Team TransfersTransfer activity for one team
/api/v1/lol/transfers/team/{slug}curl "https://api.citoapi.com/api/v1/lol/transfers/team/{slug}" \
-H "x-api-key: YOUR_CITO_API_KEY"Live Matches
Active matches, SPA-locked full live board (gold, KDA, CS, items, objectives), alive flags, coverage pre-checks, and visual-state fallback.
GET/api/v1/lol/coverageCoverage MatrixLeague-level live coverage matrix and live-state pre-check rules
/api/v1/lol/coveragecurl "https://api.citoapi.com/api/v1/lol/coverage" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/liveLive MatchesCurrently active in-progress LoL esports matches only. Use schedule endpoints for upcoming games.
/api/v1/lol/livecurl "https://api.citoapi.com/api/v1/lol/live" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/matches/liveLive MatchesAlias for currently active pro matches
/api/v1/lol/matches/livecurl "https://api.citoapi.com/api/v1/lol/matches/live" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/matches/{matchId}/coverageMatch Coverage Pre-checkPre-check whether a match has schedule metadata, a live row, numeric live state, and live-state webhook eligibility
/api/v1/lol/matches/{matchId}/coveragecurl "https://api.citoapi.com/api/v1/lol/matches/{matchId}/coverage" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/live/{matchId}/seriesLive SeriesLive series state with completed games, score, and current game context
/api/v1/lol/live/{matchId}/seriescurl "https://api.citoapi.com/api/v1/lol/live/{matchId}/series" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/live/{matchId}/watchLive Watch LinksWatch links for a live match (LoL Esports + stream providers when published)
/api/v1/lol/live/{matchId}/watchcurl "https://api.citoapi.com/api/v1/lol/live/{matchId}/watch" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/live/{gameId}/statsLive Game BoardFull live board locked to lolesports.com cadence: team gold/kills/towers/inhibs/barons/dragons + per-player KDA, CS, gold, level, items, alive, KP, damage share, wards
/api/v1/lol/live/{gameId}/statscurl "https://api.citoapi.com/api/v1/lol/live/{gameId}/stats" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/live/{gameId}/boardLive Game BoardAlias for /stats — denser name for the full live scoreboard payload
/api/v1/lol/live/{gameId}/boardcurl "https://api.citoapi.com/api/v1/lol/live/{gameId}/board" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/live/{gameId}/mapLive Alive BoardAlive/death board from health (positions null on public feed; websocket tier later)
/api/v1/lol/live/{gameId}/mapcurl "https://api.citoapi.com/api/v1/lol/live/{gameId}/map" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/live/{gameId}/visual-stateLive Visual StateAccepted near-live visual reads for game time, gold, kills, towers, dragons, and barons (stream OCR fallback)
/api/v1/lol/live/{gameId}/visual-statecurl "https://api.citoapi.com/api/v1/lol/live/{gameId}/visual-state" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/live/{gameId}/windowgameId windowRaw live window frames (team + participant scoreboard)
/api/v1/lol/live/{gameId}/windowcurl "https://api.citoapi.com/api/v1/lol/live/{gameId}/window" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/live/{gameId}/detailsgameId detailsRaw live details frames (items, KP, damage share, wards)
/api/v1/lol/live/{gameId}/detailscurl "https://api.citoapi.com/api/v1/lol/live/{gameId}/details" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/live/{gameId}/eventsgameId eventsLive game event timeline when published
/api/v1/lol/live/{gameId}/eventscurl "https://api.citoapi.com/api/v1/lol/live/{gameId}/events" \
-H "x-api-key: YOUR_CITO_API_KEY"Matches & Games
Match detail, games, player stats, postgame data, vision, plates, and jungle share.
GET/api/v1/lol/matches/liveLive MatchesAlias for currently active pro matches
/api/v1/lol/matches/livecurl "https://api.citoapi.com/api/v1/lol/matches/live" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/matches/{matchId}/coverageMatch Coverage Pre-checkPre-check whether a match has schedule metadata, a live row, numeric live state, and live-state webhook eligibility
/api/v1/lol/matches/{matchId}/coveragecurl "https://api.citoapi.com/api/v1/lol/matches/{matchId}/coverage" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/matches/{id}Match DetailMatch detail by stored match ID or raw LoL esports match ID
/api/v1/lol/matches/{id}curl "https://api.citoapi.com/api/v1/lol/matches/{id}" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/matches/{id}/gamesMatch GamesGames inside a match, including raw game IDs where available
/api/v1/lol/matches/{id}/gamescurl "https://api.citoapi.com/api/v1/lol/matches/{id}/games" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/games/{gameId}games gameIdGame details by stored ID or raw LoL esports game ID
/api/v1/lol/games/{gameId}curl "https://api.citoapi.com/api/v1/lol/games/{gameId}" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/games/{gameId}/statsGame statsStored per-player stats for a specific game
/api/v1/lol/games/{gameId}/statscurl "https://api.citoapi.com/api/v1/lol/games/{gameId}/stats" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/games/{gameId}/player-statsGame Player StatsAlias for game-level player stat rows
/api/v1/lol/games/{gameId}/player-statscurl "https://api.citoapi.com/api/v1/lol/games/{gameId}/player-stats" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/games/{gameId}/postgameGame postgameCompleted-game gold graph, timeline, plates, role distributions, vision, and jungle share
/api/v1/lol/games/{gameId}/postgamecurl "https://api.citoapi.com/api/v1/lol/games/{gameId}/postgame" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/games/{gameId}/platesGame platesVoidgrubs, tower plates, and lane plate counts for one game
/api/v1/lol/games/{gameId}/platescurl "https://api.citoapi.com/api/v1/lol/games/{gameId}/plates" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/games/{gameId}/distributionsGame distributionsGold and damage distribution by role for one game
/api/v1/lol/games/{gameId}/distributionscurl "https://api.citoapi.com/api/v1/lol/games/{gameId}/distributions" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/games/{gameId}/visionGame visionTeam vision totals for one game
/api/v1/lol/games/{gameId}/visioncurl "https://api.citoapi.com/api/v1/lol/games/{gameId}/vision" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/games/{gameId}/jungle-shareGame jungle shareJungle CS share data by role for one game
/api/v1/lol/games/{gameId}/jungle-sharecurl "https://api.citoapi.com/api/v1/lol/games/{gameId}/jungle-share" \
-H "x-api-key: YOUR_CITO_API_KEY"Schedule & Standings
Today, upcoming schedule, and published league standings.
GET/api/v1/lol/schedule/todayToday ScheduleToday’s match schedule for LoL esports apps
/api/v1/lol/schedule/todaycurl "https://api.citoapi.com/api/v1/lol/schedule/today" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/schedule/upcomingUpcoming ScheduleUpcoming LoL esports schedule
/api/v1/lol/schedule/upcomingcurl "https://api.citoapi.com/api/v1/lol/schedule/upcoming" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/leagues/lol-lck/schedulelol lck scheduleLCK match schedule. The slug lck also works.
/api/v1/lol/leagues/lol-lck/schedulecurl "https://api.citoapi.com/api/v1/lol/leagues/lol-lck/schedule" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/leagues/lol-lpl/schedulelol lpl scheduleLPL match schedule. The slug lpl also works.
/api/v1/lol/leagues/lol-lpl/schedulecurl "https://api.citoapi.com/api/v1/lol/leagues/lol-lpl/schedule" \
-H "x-api-key: YOUR_CITO_API_KEY"GET/api/v1/lol/leagues/{leagueId}/standingsLeague StandingsLeague standings, returning an empty rankings array when standings are not published yet
/api/v1/lol/leagues/{leagueId}/standingscurl "https://api.citoapi.com/api/v1/lol/leagues/{leagueId}/standings" \
-H "x-api-key: YOUR_CITO_API_KEY"Webhooks
Supported webhook event names for production push workflows.
GET/api/v1/lol/webhooks/eventsWebhook EventsSupported LoL webhook events for paid plans
/api/v1/lol/webhooks/eventscurl "https://api.citoapi.com/api/v1/lol/webhooks/events" \
-H "x-api-key: YOUR_CITO_API_KEY"Other LoL Endpoints
Additional schedule, standings, and compatibility paths.
GET/api/v1/lol/leagueslol leaguesLeague list with aliases and direct schedule endpoints. LCK is lol-lck/lck; LPL is lol-lpl/lpl.
/api/v1/lol/leaguescurl "https://api.citoapi.com/api/v1/lol/leagues" \
-H "x-api-key: YOUR_CITO_API_KEY"Player Earnings
[
{
"tournamentName": "LCK 2026 Season Opening",
"tournamentDate": "2026-01-09T00:00:00.000Z",
"placement": 1,
"earnings": 0,
"league": "LCK",
"orgSlugAtTime": "east-3"
},
{
"tournamentName": "2025 World Championship",
"tournamentDate": "2025-11-09T00:00:00.000Z",
"placement": 1,
"earnings": 200000,
"prizePool": 1000000,
"tier": "S-Tier",
"league": "Worlds",
"orgSlugAtTime": "east-3"
}
]Org and Roster History
{
"success": true,
"data": {
"playerId": "c76dc4df-1a6f-4c83-b7ba-44cf213e0291",
"playerName": "Faker",
"teams": [
{
"teamSlug": "t1",
"teamName": "T1",
"role": "MID",
"startedAt": "2026-02-01T00:00:00.000Z",
"endedAt": null
},
{
"teamSlug": "lck-allstars",
"teamName": "LCK All-Stars",
"role": "MID",
"startedAt": "2026-02-01T00:00:00.000Z",
"endedAt": null
}
],
"transfersEndpoint": "/api/v1/lol/transfers/player/{playerId}"
}
}