StatsCore Sports API
Three lines to your first result
Section titled “Three lines to your first result”Three catalogue endpoints answer without a token. Use them to check connectivity and see the response envelope before sales issues your credentials:
curl "https://api.statscore.com/v2/sports?limit=5"Everything else needs a token. Start here.
Where to go
Section titled “Where to go”| I want to | Go to |
|---|---|
| get a token and make my first call | Get a token |
| show a league table | Display a league table |
| read a score correctly, including penalties | Match with score and stats |
| build a match timeline | Show a match timeline |
| build a livescore board | Livescore board |
| receive live push updates | Webhooks |
| draw a knockout bracket with two-legged ties | Knockout bracket |
| stop re-downloading data that did not change | Incremental sync |
| show top scorers, cards or assists | Top scorers |
| compare two teams head to head | Head to head |
| list a team squad | Squad |
| show a season calendar or fixture list | Season calendar |
| see what changed in the API | Changelog |
| look up a single endpoint | API Reference |
| connect an AI agent (MCP) | MCP server |
What makes this API different
Section titled “What makes this API different”The payload lives in api.data, not at the top level. Every response is wrapped in an
envelope carrying the API version, a server timestamp and pagination.
Reading a score means selecting a result by id. There is no score field. Result id 2
is regular time plus extra time and excludes the penalty shootout - a scoreline built from it
alone renders 1-1 for a match that had a winner. The
score recipe has the verified arithmetic.
One structure covers every sport. The same envelope, the same event model and the same result ids serve soccer, basketball, volleyball and the rest. What changes per sport is which statuses, incidents and results actually appear.
limit is an enum, and it differs per endpoint. Catalogue endpoints accept up to 500;
the list endpoints stop at 150. Anything outside the endpoint's own enum returns 400 with
no explanation in the body.