Overview
The PandaScore Low Latency Feed delivers live esports match data faster than public live streams, purpose-built for prediction bots, quant models, and professional betting applications.
Available for: League of Legends · CS2 · Dota 2
Traditional broadcast streams (Twitch, YouTube) carry a 3–4 minute delay.
This product is not intended for public-facing redistribution or third-party data sharing. Internal usage only.
Checking Match Availability
Each match has a low-latency-feed Boolean data point. This indicates whether the match should have low-latency data available.
You can filter match endpoints with
?filter[low_latency_feed]=trueto receive all matches that should have this data feed. E.g., https://api.pandascore.co/matches/upcoming?filter[low_latency_feed]=true
Poll the discovery endpoint to retrieve every match currently available for low-latency streaming.
Endpoint
GET https://api.pandascore.co/low_latency_feeds?token=YOUR_API_TOKENWhat the response includes
- Matches currently in progress with an active low-latency WebSocket. The WebSocket endpoint is displayed as
endpoint.url. - Matches scheduled to start within the next 15 minutes. Users can connect to a match at this time - 15 minutes before the match's scheduled time.
[
{
"match": {
"videogame": {
"id": 3,
"name": "Counter-Strike",
"slug": "cs-go"
},
"results": [
{
"team_id": 133719,
"score": 1
},
{
"team_id": 3210,
"score": 2
}
],
"winner_id": 3210,
"live": {
"supported": false,
"url": null,
"opens_at": null
},
"detailed_stats": true,
"game_advantage": null,
"games": [
{
"complete": true,
"id": 216595,
"position": 1,
"status": "finished",
"length": 2423,
"finished": true,
"match_id": 1474571,
"begin_at": "2026-05-12T11:23:26Z",
"detailed_stats": true,
"end_at": "2026-05-12T12:03:49Z",
"forfeit": false,
"winner_type": "Team",
"winner": {
"id": 3210,
"type": "Team"
}
},
{
"complete": true,
"id": 216596,
"position": 2,
"status": "finished",
"length": 3584,
"finished": true,
"match_id": 1474571,
"begin_at": "2026-05-12T12:20:20Z",
"detailed_stats": true,
"end_at": "2026-05-12T13:20:05Z",
"forfeit": false,
"winner_type": "Team",
"winner": {
"id": 133719,
"type": "Team"
}
},
{
"complete": true,
"id": 216597,
"position": 3,
"status": "finished",
"length": 3638,
"finished": true,
"match_id": 1474571,
"begin_at": "2026-05-12T13:38:17Z",
"detailed_stats": true,
"end_at": "2026-05-12T14:38:55Z",
"forfeit": false,
"winner_type": "Team",
"winner": {
"id": 3210,
"type": "Team"
}
}
],
"original_scheduled_at": "2026-05-12T11:00:00Z",
"tournament": {
"id": 20902,
"name": "Group Stage",
"type": "offline",
"country": "KZ",
"begin_at": "2026-05-09T05:00:00Z",
"detailed_stats": true,
"end_at": null,
"winner_id": null,
"winner_type": "Team",
"slug": "cs-go-pgl-astana-2026-group-stage",
"serie_id": 10574,
"modified_at": "2026-05-08T22:23:46Z",
"league_id": 5365,
"has_bracket": false,
"prizepool": null,
"region": "ASIA",
"tier": "a",
"live_supported": false
},
"league_id": 5365,
"league": {
"id": 5365,
"name": "PGL",
"url": null,
"slug": "cs-go-pgl",
"modified_at": "2025-02-05T15:08:30Z",
"image_url": "https://cdn-api.pandascore.co/images/league/image/5365/800px-pgl_allmode-png-png"
},
"serie_id": 10574,
"end_at": "2026-05-12T14:38:55Z",
"forfeit": false,
"slug": "2026-05-12-01e0d77a-e058-4b58-a3a1-79fe86dd64e1",
"opponents": [
{
"type": "Team",
"opponent": {
"id": 133719,
"name": "PARIVISION",
"location": "RU",
"slug": "parivision",
"modified_at": "2026-05-07T09:06:22Z",
"acronym": "PRV",
"dark_mode_image_url": null,
"image_url": "https://cdn-api.pandascore.co/images/team/image/133719/250px_parivision_allmode.png"
}
},
{
"type": "Team",
"opponent": {
"id": 3210,
"name": "G2 Esports",
"location": "DE",
"slug": "g2",
"modified_at": "2026-05-13T07:59:34Z",
"acronym": "G2",
"dark_mode_image_url": null,
"image_url": "https://cdn-api.pandascore.co/images/team/image/3210/5995.png"
}
}
],
"number_of_games": 3,
"status": "finished",
"tournament_id": 20902,
"winner": {
"id": 3210,
"name": "G2 Esports",
"location": "DE",
"slug": "g2",
"modified_at": "2026-05-13T07:59:34Z",
"acronym": "G2",
"dark_mode_image_url": null,
"image_url": "https://cdn-api.pandascore.co/images/team/image/3210/5995.png"
},
"videogame_title": {
"id": 13,
"name": "Counter-Strike 2",
"slug": "cs-2",
"videogame_id": 3
},
"draw": false,
"winner_type": "Team",
"videogame_version": null,
"scheduled_at": "2026-05-12T11:20:00Z",
"begin_at": "2026-05-12T11:23:25Z",
"serie": {
"id": 10574,
"name": "Astana",
"year": 2026,
"begin_at": "2026-05-09T05:00:00Z",
"end_at": "2026-05-17T17:00:00Z",
"winner_id": null,
"winner_type": "Team",
"slug": "cs-go-pgl-astana-2026",
"modified_at": "2026-05-03T06:52:04Z",
"league_id": 5365,
"season": null,
"full_name": "Astana 2026"
},
"id": 1474571,
"name": "Round 4: PRV vs G2",
"match_type": "best_of",
"modified_at": "2026-05-12T17:00:06Z",
"streams_list": [
{
"main": false,
"language": "fr",
"embed_url": "https://player.twitch.tv/?channel=krl_stream2",
"official": false,
"raw_url": "https://www.twitch.tv/krl_stream2"
},
{
"main": false,
"language": "de",
"embed_url": "https://player.twitch.tv/?channel=zonixxcs",
"official": false,
"raw_url": "https://www.twitch.tv/zonixxcs"
},
{
"main": false,
"language": "sv",
"embed_url": "https://player.twitch.tv/?channel=olofmeister",
"official": false,
"raw_url": "https://www.twitch.tv/olofmeister"
},
{
"main": true,
"language": "en",
"embed_url": "https://player.twitch.tv/?channel=pgl_cs2",
"official": true,
"raw_url": "https://www.twitch.tv/pgl_cs2"
},
{
"main": false,
"language": "ru",
"embed_url": "https://www.youtube.com/embed/OSUfRyGif2k",
"official": false,
"raw_url": "https://www.youtube.com/watch?v=OSUfRyGif2k"
}
],
"rescheduled": true
},
"endpoint": {
"url": "wss://live.pandascore.co/matches/1474571/low_latency_feed",
"opens_at": "2026-05-12T11:05:00.000000Z"
}
}
]Connecting via WebSocket
The Low Latency Feed is delivered via a persistent WebSocket connection. Once connected, match state updates are pushed to your client as changes occur - no polling required. Pass your API token as a query parameter on the connection URL. You can find your token in the PandaScore dashboard.
const ws = new WebSocket(
'wss://live.pandascore.co/matches/1400939/low_latency_feed?token=YOUR_API_TOKEN'
);
ws.onopen = () => {
console.log('Connected to Low Latency Feed');
};
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log('Match update:', data);
};
ws.onerror = (err) => {
console.error('WebSocket error:', err);
};
ws.onclose = () => {
console.log('Connection closed — implement reconnect logic here');
};Connection Confirmation
Upon successfully connecting, you will receive a hello message confirming the match connection:
{
"type": "hello",
"payload": {
"status": "running",
"match_id": "1394934",
"videogame": "csgo"
}
}Users are allowed a maximum of 3 simultaneous connections per match per endpoint.
Disconnections
Please follow this guide to understand WebSocket disconnection error types and how to handle them.
Updated 14 days ago

