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:
Every match in progress
Section titled “Every match in progress” GET
https://api.myscore.live/api/v1/live/matches Just one tournament
Section titled “Just one tournament”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.)
A single match, with full detail
Section titled “A single match, with full detail” GET
https://api.myscore.live/api/v1/matches/mtch_006 See the complete field list in the API Reference → Live.
How often should I poll?
Section titled “How often should I poll?”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);Reading lists
Section titled “Reading lists”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=.