Skip to content

StatsCore Sports API

One data structure for every sport. Start with a token, or with no token at all.

Three catalogue endpoints answer without a token. Use them to check connectivity and see the response envelope before sales issues your credentials:

Terminal window
curl "https://api.statscore.com/v2/sports?limit=5"

Everything else needs a token. Start here.

I want toGo to
get a token and make my first callGet a token
show a league tableDisplay a league table
read a score correctly, including penaltiesMatch with score and stats
build a match timelineShow a match timeline
build a livescore boardLivescore board
receive live push updatesWebhooks
draw a knockout bracket with two-legged tiesKnockout bracket
stop re-downloading data that did not changeIncremental sync
show top scorers, cards or assistsTop scorers
compare two teams head to headHead to head
list a team squadSquad
show a season calendar or fixture listSeason calendar
see what changed in the APIChangelog
look up a single endpointAPI Reference
connect an AI agent (MCP)MCP server

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.