SnookerAPI
Documentation / Events
GET /events/{event_id}Free key, archive on paidMCP: get_event

Snooker API: One event: its dates, venue, champion, final, prize fund and its own figures (frames played, deciding frames, whitewashes, centuries)

One event: its dates, venue, champion, final, prize fund and its own figures (frames played, deciding frames, whitewashes, centuries).

GEThttps://api.snookerapi.net/v1/events/{event_id}

Try it

Get a key

Parameters

NameTypeWhat it is
event_idid, required, in the pathThe event, as an ev_ id from GET /v1/events.

Returns

FieldTypeWhat it holds
idstringThe record's own id: stable, and the same in every call.
namestringThe name, as we hold it.
seasonstring or nullThe season, as 2025-26.
tourstringprofessional, women, seniors or q_school.
kindstring or nullranking or invitational, where it is known.
competitionobjectThe competition it is an edition of: id and name.
start_datedate or nullThe first day.
end_datedate or nullThe last day.
held_instring or nullThe month or year, for an event whose days are not known.
venuestring or nullThe venue.
townstring or nullThe town or city.
countrystring or nullThe country.
locationobject or nullWhere the event was played: lat and lon, and basis (venue for the venue's own coordinates, town where only the town's are known). Null where neither is known.
time_zonestring or nullThe venue's time zone, as Europe/London. Every time the API gives is UTC; this is for showing it locally.
utc_offsetstring or nullThe venue's offset from UTC on the first day, summer time included, as +01:00.
winnerobject or nullThe champion: id and name.
runner_upobject or nullThe runner-up: id and name.
final_scorestring or nullThe final's score, as 18-14.
highest_breakinteger or nullThe event's highest break: the article's figure, or else the highest main-stage century in its century list.
highest_break_basisstring or nullWhere highest_break comes from: article (the event's own figure), german_article (the German article's figure, where the English one gives none) or century_list (the highest century it lists).
prize_fundstring or nullThe total prize fund, as published.
matchesintegerHow many matches are held.
prizeslistPrize money by finish: for, amount and currency.
statsobjectThe event's own figures: matches_played, frames_played, deciding_frames (won by one frame at full length), whitewashes (won without losing a frame) and century_breaks. Frames count only where the score is in frames.
seedslistThe seeded players, as the event's main draw writes them: seed and player. Empty where the draw gives no seeds.

Example answer

A real answer, read from the data within the last hour: GET /v1/events/ev_80r2d1px

{
    "data": {
        "id": "ev_80r2d1px",
        "name": "2026 World Snooker Championship",
        "season": "2025-26",
        "tour": "professional",
        "kind": "ranking",
        "competition": {
            "id": "cp_19bahdvy",
            "name": "World Snooker Championship"
        },
        "start_date": "2026-04-18",
        "end_date": "2026-05-04",
        "held_in": null,
        "venue": "Crucible Theatre",
        "town": "Sheffield",
        "country": "England",
        "location": {
            "lat": 53.38111,
            "lon": -1.46667,
            "basis": "venue"
        },
        "time_zone": "Europe/London",
        "utc_offset": "+01:00",
        "winner": {
            "id": "pl_ra6m6b4g",
            "name": "Wu Yize"
        },
        "runner_up": {
            "id": "pl_w2c64qam",
            "name": "Shaun Murphy"
        },
        "final_score": "18-17",
        "highest_break": 147,
        "highest_break_basis": "article",
        "prize_fund": "£2,395,000",
        "matches": 143,
        "prizes": [
            {
                "for": "total",
                "amount": 2395000,
                "currency": "GBP"
            },
            {
                "for": "winner",
                "amount": 500000,
                "currency": "GBP"
            },
            {
                "for": "runner_up",
                "amount": 200000,
                "currency": "GBP"
            },
            {
                "for": "semi_final",
                "amount": 100000,
                "currency": "GBP"
            },
            {
                "for": "quarter_final",
                "amount": 50000,
                "currency": "GBP"
            },
            {
                "for": "last_16",
                "amount": 30000,
                "currency": "GBP"
            },
            {
                "for": "last_32",
                "amount": 20000,
                "currency": "GBP"
            },
            {
                "for": "last_48",
                "amount": 15000,
                "currency": "GBP"
            },
            {
                "for": "last_80",
                "amount": 10000,
                "currency": "GBP"
            },
            {
                "for": "last_112",
                "amount": 5000,
                "currency": "GBP"
            }
        ],
        "stats": {
            "matches_played": 141,
            "frames_played": 2321,
            "deciding_frames": 18,
            "whitewashes": 0,
            "century_breaks": 254
        },
        "seeds": []
    },
    "meta": {
        "plan": "House key"
    }
}

Errors

StatusCodeWhen
401unauthorizedNo key, or a key that is not valid. Errors
400bad_requestA parameter has the wrong shape. Errors
422unknown_parameterA parameter this call does not take. Errors
429rate_limitedToo many calls this minute; wait for Retry-After. Errors
404not_foundNo record has that id. Errors
403upgrade_requiredThe record is older than yesterday and the key is the free one. Errors