Integration 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.
Server Location
📍Our servers are located in Belgium
Checking Match Availability
Upcoming matches
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]=true to receive all matches that should have this data feed. E.g.,
GET https://api.pandascore.co/matches?filter[low_latency_feed]=trueRunning matches
Poll the discovery endpoint to retrieve every match currently available for low-latency streaming. The response displays matches scheduled to start within the next 15 minutes or already live.
GET https://api.pandascore.co/low_latency_feeds?token=YOUR_API_TOKENConnecting 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, with no polling required. Pass your API token as a query parameter on the connection URL. You can find your token in the PandaScore dashboard
GET wss://live.pandascore.co/matches/{MATCH_ID}/low_latency_feed?token={YOUR_API_TOKEN}⚠️To get access to the Low Latency Feed, you must use the correct WebSocket URL:
- ✅
wss://live.pandascore.co/matches/{MATCH_ID}/low_latency_feed - ❌
wss://live.pandascore.co/matches/{MATCH_ID}- This endpoint returns stream-synced data
Example connection:
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",
"match_id": "1753729",
"match_status": "running",
"videogame": "dota2"
}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.
Rare exceptionIn rare cases, a match may appear in
/low_latency_feedswith an open WebSocket that delivers no data. This happens when data integrity issues prevent us from streaming reliable information for that specific match. The socket stays open but stays silent.
Status updates
Throughout the match lifecycle, you will receive match and game status updates.
Match Start
{
"match_id": 1700484,
"game_id": 232127,
"game_status": "not_started",
"match_status": "running",
"updated_at": "2026-10-01T09:29:46.842223Z"
}Game Start
{
"match_id": 1700484,
"game_id": 232127,
"game_status": "running",
"match_status": "running",
"updated_at": "2026-10-01T09:29:46.842223Z"
}Game End
{
"match_id": 1700484,
"game_id": 232127,
"game_status": "finished",
"match_status": "running",
"updated_at": "2026-10-01T09:29:46.842223Z"
}Match End
{
"match_id": 1700484,
"game_id": 232127,
"game_status": "finished",
"match_status": "finished",
"updated_at": "2026-10-01T09:29:46.842223Z"
}Updated 12 days ago

