Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/sportstatsapi:sportstatsapi-snooker-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
contact:
name: SportStatsAPI
url: https://sportstatsapi.com
description: 'Every public endpoint of SportStatsAPI. Endpoints marked with x-x402 can also be paid per call by an AI agent; the curated list of those is https://api.sportstatsapi.com/api/openapi.agents.json.
Authentication: an API key (header X-API-Key, or Authorization: Bearer ), or without a key an x402 payment (header PAYMENT-SIGNATURE, USDC on Base). Prices and payment offers: https://api.sportstatsapi.com/.well-known/x402. Docs for AI models: https://api.sportstatsapi.com/llms.txt. MCP server: https://mcp.sportstatsapi.com/mcp.'
summary: Sports data API and x402 pay-per-call endpoints
title: SportStats Snooker API
version: '1.0'
servers:
- url: https://api.sportstatsapi.com/api/v1
tags:
- name: snooker
paths:
/snooker/players:
get:
description: Players whose name contains q, ranked players first
operationId: getSnookerPlayers
parameters:
- description: Part of the name (2+ characters)
in: query
name: q
required: true
schema:
type: string
- description: Maximum results (1-100)
in: query
name: limit
schema:
default: 50
type: integer
responses:
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
data:
items:
$ref: '#/components/schemas/dto.WikiPlayerHit'
type: array
type: object
description: OK
'400':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Bad Request
'401':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Unauthorized
'500':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Internal Server Error
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Find snooker or darts players
tags:
- snooker
/snooker/players/{id}:
get:
description: Country, ranking, Wikidata profile (birth date, country), titles and finals in the stored seasons and the latest 20 matches
operationId: getSnookerPlayersById
parameters:
- description: Player ID
in: path
name: id
required: true
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
data:
$ref: '#/components/schemas/dto.WikiPlayerResponse'
type: object
description: OK
'400':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Bad Request
'401':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Unauthorized
'402':
$ref: '#/components/responses/PaymentRequired'
'404':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Not Found
security:
- ApiKeyAuth: []
- BearerAuth: []
- x402: []
summary: Get a snooker or darts player
tags:
- snooker
x-x402:
asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
currency: USDC
discovery: https://api.sportstatsapi.com/.well-known/x402
minSinglePayment: '0.01'
network: eip155:8453
price: '0.005'
/snooker/rankings:
get:
description: 'Snooker: the WPBSA world ranking at the latest revision Wikipedia lists (points for the players of the end-of-season list); darts: the PDC Order of Merit with two-year prize money (GBP).'
operationId: getSnookerRankings
parameters:
- description: Maximum results (1-100)
in: query
name: limit
schema:
default: 50
type: integer
- description: Results to skip
in: query
name: offset
schema:
default: 0
type: integer
responses:
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
data:
$ref: '#/components/schemas/dto.WikiRankingResponse'
meta:
$ref: '#/components/schemas/middleware.MetaInfo'
type: object
description: OK
'401':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Unauthorized
'402':
$ref: '#/components/responses/PaymentRequired'
'500':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Internal Server Error
security:
- ApiKeyAuth: []
- BearerAuth: []
- x402: []
summary: Get the snooker or darts world ranking
tags:
- snooker
x-x402:
asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
currency: USDC
discovery: https://api.sportstatsapi.com/.well-known/x402
minSinglePayment: '0.01'
network: eip155:8453
price: '0.002'
/snooker/tournaments:
get:
description: 'Tournaments of the current and the last season from Wikipedia (CC BY-SA 4.0): snooker the World Snooker Tour''s ranking and invitational events, darts the PDC''s majors, World Series, Players Championships and European Tour. Latest start first, with venue, prize fund, winner and final score.'
operationId: getSnookerTournaments
parameters:
- description: 'Season: snooker 2026-27, darts 2026'
in: query
name: season
schema:
type: string
- description: scheduled, live, finished or no_results
in: query
name: status
schema:
type: string
- description: 'snooker: ranking, non_ranking; darts: ranked, non_ranked, world_series, players_championship, european_tour'
in: query
name: kind
schema:
type: string
- description: Tournaments ending on or after this date (YYYY-MM-DD)
in: query
name: date_from
schema:
type: string
- description: Tournaments starting on or before this date (YYYY-MM-DD)
in: query
name: date_to
schema:
type: string
- description: Maximum results (1-100)
in: query
name: limit
schema:
default: 50
type: integer
- description: Results to skip
in: query
name: offset
schema:
default: 0
type: integer
responses:
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
data:
items:
$ref: '#/components/schemas/dto.WikiTournamentResponse'
type: array
meta:
$ref: '#/components/schemas/middleware.MetaInfo'
type: object
description: OK
'401':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Unauthorized
'500':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Internal Server Error
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: List snooker or darts tournaments
tags:
- snooker
/snooker/tournaments/{id}:
get:
description: 'A tournament with every match of its draw brackets (qualifying first, the final last: round, players, seeds, frames/legs/sets won, best of, three-dart averages where listed) and, for snooker, the century breaks per player and stage.'
operationId: getSnookerTournamentsById
parameters:
- description: Tournament ID
in: path
name: id
required: true
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
data:
$ref: '#/components/schemas/dto.WikiTournamentResponse'
type: object
description: OK
'400':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Bad Request
'401':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Unauthorized
'404':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Not Found
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Get a snooker or darts tournament with its draw
tags:
- snooker
/snooker/tournaments/{id}/bracket:
get:
description: 'The tournament''s draw as a bracket (Wikipedia, CC BY-SA 4.0): rounds in page order (qualifying first), each match a tie with one leg (frames, legs or sets won), seeds, the winner and from, the match a player won to get there. When every finished round that feeds a round of half its size does so pair by pair (matches 1 and 2 into match 1, ...), the round after the last stored one is added with status placeholder: its sides are the known winners or "winner of A v B". Otherwise no placeholder is made.'
operationId: getSnookerTournamentsByIdBracket
parameters:
- description: Tournament ID
in: path
name: id
required: true
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
data:
$ref: '#/components/schemas/dto.BracketResponse'
type: object
description: OK
'400':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Bad Request
'401':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Unauthorized
'404':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Not Found
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Get a snooker or darts tournament's bracket
tags:
- snooker
components:
schemas:
dto.WikiPlayerRef:
properties:
id:
type: integer
name:
type: string
type: object
dto.BracketLeg:
properties:
date:
type: string
extra_time:
type: boolean
home:
type: string
match_id:
type: integer
penalties:
$ref: '#/components/schemas/dto.BracketScore'
score:
$ref: '#/components/schemas/dto.BracketScore'
sets:
description: 'tennis: each set from side A''s view, "7-6(4)", "[10-8]"'
items:
type: string
type: array
state:
type: string
static_id:
type: integer
status:
type: string
type: object
dto.WikiPlayerData:
properties:
birth_date:
type: string
country:
type: string
wikidata_id:
type: string
type: object
dto.BracketResponse:
properties:
attribution:
type: string
rounds:
items:
$ref: '#/components/schemas/dto.BracketRound'
type: array
season:
type: string
source:
description: 'provider: our data provider''s matches (soccer); wikipedia (snooker, darts)'
type: string
unlabeled_matches:
type: integer
type: object
dto.WikiRankingResponse:
properties:
as_of:
type: string
attribution:
type: string
rankings:
items:
$ref: '#/components/schemas/dto.WikiRankingLine'
type: array
type: object
dto.WikiRankingLine:
properties:
country:
description: flag code (ENG, CHN)
type: string
player:
$ref: '#/components/schemas/dto.WikiPlayerRef'
points:
type: integer
position:
type: integer
type: object
dto.BracketTie:
properties:
advanced:
type: string
aggregate:
$ref: '#/components/schemas/dto.BracketScore'
decided_by:
type: string
legs:
items:
$ref: '#/components/schemas/dto.BracketLeg'
type: array
position:
description: 'tennis: the tie''s place in its round by the official draw (Wikipedia), counting byes'
type: integer
ref:
type: string
side_a:
$ref: '#/components/schemas/dto.BracketSide'
side_b:
$ref: '#/components/schemas/dto.BracketSide'
status:
description: scheduled, live, finished, incomplete, placeholder
type: string
type: object
dto.WikiTournamentRef:
properties:
id:
type: integer
name:
type: string
season:
type: string
type: object
dto.WikiMatchPlayer:
properties:
average:
type: number
id:
type: integer
name:
type: string
score:
type: integer
seed:
type: string
type: object
middleware.SourceInfo:
properties:
attribution:
description: show it with the data
example: 'Data: nflverse (CC-BY 4.0)'
type: string
licence:
description: the licence or terms the data is served under
example: CC-BY-4.0
type: string
name:
description: provider = our main licensed feed
example: nflverse
type: string
type: object
middleware.ErrorInfo:
properties:
code:
type: string
message:
type: string
type: object
dto.WikiTournamentResponse:
properties:
attribution:
type: string
centuries:
description: 'snooker: [{player_id, name, stage, breaks}]'
items:
type: integer
type: array
currency:
type: string
end_date:
type: string
final_score:
type: string
id:
type: integer
kind:
type: string
matches:
items:
$ref: '#/components/schemas/dto.WikiMatchResponse'
type: array
name:
type: string
prize_fund:
type: integer
runner_up:
$ref: '#/components/schemas/dto.WikiPlayerRef'
season:
description: snooker 2026-27, darts 2026
type: string
start_date:
type: string
status:
type: string
updated_at:
type: string
venue:
type: string
wikipedia_article:
type: string
winner:
$ref: '#/components/schemas/dto.WikiPlayerRef'
type: object
middleware.Response:
properties:
data: {}
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
meta:
$ref: '#/components/schemas/middleware.MetaInfo'
success:
type: boolean
type: object
dto.WikiPlayerHit:
properties:
country:
type: string
id:
type: integer
matches:
type: integer
name:
type: string
rank:
type: integer
type: object
dto.BracketRound:
properties:
name:
type: string
reason:
type: string
stage:
description: 'snooker, darts: main, qualifying'
type: string
status:
type: string
ties:
items:
$ref: '#/components/schemas/dto.BracketTie'
type: array
type: object
dto.BracketScore:
properties:
a:
type: integer
b:
type: integer
type: object
dto.WikiPlayerResponse:
properties:
attribution:
type: string
country:
type: string
finals:
type: integer
id:
type: integer
matches_recorded:
type: integer
name:
type: string
rank:
type: integer
rank_points:
type: integer
recent_matches:
items:
$ref: '#/components/schemas/dto.WikiMatchResponse'
type: array
titles:
type: integer
wikidata:
$ref: '#/components/schemas/dto.WikiPlayerData'
wikipedia_article:
type: string
type: object
dto.BracketSide:
properties:
from:
type: string
id:
type: integer
name:
type: string
placeholder:
type: string
seed:
type: string
type: object
dto.WikiMatchResponse:
properties:
best_of:
type: integer
date:
type: string
id:
type: integer
player1:
$ref: '#/components/schemas/dto.WikiMatchPlayer'
player2:
$ref: '#/components/schemas/dto.WikiMatchPlayer'
round:
type: string
stage:
description: main, qualifying
type: string
tournament:
$ref: '#/components/schemas/dto.WikiTournamentRef'
unit:
type: string
walkover:
type: boolean
winner:
type: integer
type: object
middleware.MetaInfo:
properties:
attribution:
description: Attribution a data source's licence asks for (Cricsheet's history).
type: string
has_more:
description: 'HasMore: the cursor-paged list has more rows now (ask again at once).'
type: boolean
limit:
type: integer
live:
description: 'Live: the answer is the live feed''s, kept while the match is played
(cricket ball by ball before Cricsheet''s file replaces it).'
type: boolean
next_cursor:
description: NextCursor continues a cursor-paged list (GET /changes).
type: string
offset:
type: integer
sources:
description: 'Sources: where the answer''s data came from, with each source''s licence
and the attribution it asks for (docs/source-licences.md).'
items:
$ref: '#/components/schemas/middleware.SourceInfo'
type: array
total:
type: integer
warnings:
description: 'Warnings: query parameters ignored or changed (a limit above the
maximum is clamped to it; a from/to that is not a date is ignored).'
items:
type: string
type: array
type: object
responses:
PaymentRequired:
content:
application/json:
schema:
properties:
accepts:
items:
additionalProperties: true
type: object
type: array
error:
type: string
resource:
properties:
mimeType:
type: string
url:
type: string
type: object
x402Version:
example: 2
type: integer
required:
- x402Version
- accepts
type: object
description: 'Payment Required: no API key and no valid payment. The body and the PAYMENT-REQUIRED header (base64 JSON) carry the x402 offers; pay one and repeat the request with PAYMENT-SIGNATURE. Only a 200 answer is charged.'
headers:
PAYMENT-REQUIRED:
description: Base64 JSON of the x402 offers
schema:
type: string
securitySchemes:
ApiKeyAuth:
description: API key
in: header
name: X-API-Key
type: apiKey
BearerAuth:
description: The same API key as a bearer token
scheme: bearer
type: http
x402:
description: x402 v2 payment (USDC on Base, eip155:8453) built from the offers of a 402 answer; see https://api.sportstatsapi.com/.well-known/x402
in: header
name: PAYMENT-SIGNATURE
type: apiKey
externalDocs:
description: x402 payment offers and prices
url: https://api.sportstatsapi.com/.well-known/x402