Results
Settled matches.
Free key7 days behind
Livelast 30 days
Archive and upwhole archive
Cursor or page
Parameters
All optional, all in the query stringfromdateEarliest date to include, YYYY-MM-DD.
todateLatest date to include, YYYY-MM-DD.
competition_ididOnly matches in this competition.
player_ididOnly matches this player played.
limitintHow many to return. Default 50, at most 200.
cursorcursorCarry on from here: pass back meta.next_cursor exactly as it came.
Try it
Your key, sent from your browser straight to the APIPaste your keyGet a free one in a minute
Run it to see your limits
What comes back
Each item in data, read from a real response| Field | Type | Example |
|---|---|---|
match_id | id | "mt_0CWS66BSK1H725020W3E" |
played_on | date | "2026-09-20" |
round | string | "quarter_final" |
winner | object | { player_id, name, score } |
loser | object | { player_id, name, score } |
event | object | { event_id, competition_id, name, date, … } |
meta.next_cursor | string | Pass back as cursor for the next page; null on the last |
When it refuses
Every error code| Status | Code | When |
|---|---|---|
| 401 | no_key | No key, a malformed key, or one that is not ours. |
| 422 | bad_parameter | A parameter is malformed or out of range, named in the message. |
| 429 | rate_limited | Over your rate or allowance. Retry-After says when. |
Related
FixturesFree
GET /v1/fixturesUpcoming matches, with the best price only where one was held: no live prices are held since 20 March 2026.YesterdayFreeGET /v1/results/yesterdayEvery match settled yesterday, UTC, on every plan including the free key.LivePaidGET /v1/liveMatches in play, with freshness reported explicitly.