Skip to content

REST polling

No WebSocket, no SDK, no login. If you can make an HTTP request, you can show live scores. Every endpoint here is public — try them right now:

GET https://api.myscore.live/api/v1/live/matches

Add ?tournamentId=… to filter:

GET https://api.myscore.live/api/v1/live/matches?tournamentId=trn_123

(That tournament id is a placeholder — swap in a real one and the list narrows.)

GET https://api.myscore.live/api/v1/matches/mtch_006

See the complete field list in the API Reference → Live.

Be a good citizen — poll only as fast as you need, and stop when nobody’s looking:

| Situation | Poll every | |---|---| | Tab visible, match live | 10 s | | WebSocket dropped (fallback) | 15 s | | Tab hidden / backgrounded | don’t poll |

setInterval(() => {
if (document.hidden) return; // nobody's watching — save everyone's bandwidth
fetch('https://api.myscore.live/api/v1/live/matches')
.then((r) => r.json())
.then(render);
}, 10_000);

List endpoints all share one envelope:

{ "data": [ /* … */ ], "meta": { "page": 1, "perPage": 20, "total": 47, "hasNextPage": true } }

Use ?page= and ?perPage= to page through; most lists also take ?search=.