Darts API#
The Darts API covers professional darts: players with ELO ratings, tournaments, matches with set and leg scores, official rankings and ELO-based win predictions.
Base URL: https://sports.bzzoiro.com/darts/api/v2/
Access#
Requires the Sports Addon ($5/month) — it unlocks the tennis, CS2, darts, hockey, basketball and horse racing APIs plus their MCP servers. Get it at /addons/. You also need a free account token from /register/.
Authorization: Token YOUR_API_KEY
Without a token you get 401:
{"error": "authentication required", "code": "authentication_required",
"detail": "Send Authorization: Token <YOUR_TOKEN> on every request.",
"register": "https://sports.bzzoiro.com/register/"}
With a token but no addon you get 402:
{"error": "Sports Addon required", "code": "addon_required",
"detail": "Tennis, CS:GO, darts, hockey, basketball and horse racing APIs require the Sports Addon ($5/mo).",
"pricing_url": "https://sports.bzzoiro.com/pricing/"}
List endpoints paginate with limit (default 50, max 200) and offset, and
return {count, next, previous, results}.
Endpoints#
| Endpoint | Description |
|---|---|
GET /darts/api/v2/players/ |
List/search players with ELO |
GET /darts/api/v2/players/{id}/ |
Player detail |
GET /darts/api/v2/tournaments/ |
List tournaments |
GET /darts/api/v2/tournaments/{id}/ |
Tournament detail |
GET /darts/api/v2/matches/ |
List matches |
GET /darts/api/v2/matches/live/ |
Matches in play right now |
GET /darts/api/v2/matches/{id}/ |
Match detail with legs and current set |
GET /darts/api/v2/predictions/ |
ELO-based win probabilities |
GET /darts/api/v2/predictions/{id}/ |
One prediction |
GET /darts/api/v2/rankings/ |
Official rankings (PDC by default) |
The machine-readable schema is public at /darts/api/schema/, with an
interactive UI at /darts/api/docs/ and a themed explorer
at /docs/explorer/darts/.
Players#
Query parameters
| Param | Type | Description |
|---|---|---|
search |
string | Name search |
country |
string | ISO country code |
limit / offset |
int | Pagination (default 50, max 200) |
Responses are cached ~5 minutes.
curl -H "Authorization: Token YOUR_API_KEY" \
"https://sports.bzzoiro.com/darts/api/v2/players/?search=littler"
{"count": 1, "results": [
{"id": 507, "name": "Luke Littler", "country_code": "GB", "elo": 1892}
]}
Tournaments#
Query parameters
| Param | Type | Description |
|---|---|---|
category |
string | Tournament category (e.g. Premier League, World Championship) |
include_inactive |
bool | Include past/inactive tournaments |
limit / offset |
int | Pagination |
{"count": 8, "results": [
{"id": 44, "name": "World Matchplay 2026", "category": "PDC Major"}
]}
Matches#
Query parameters
| Param | Type | Description |
|---|---|---|
tournament |
int | Filter by tournament id |
player |
int | Matches involving this player id |
status |
string | upcoming, live, finished |
date_from / date_to |
date | YYYY-MM-DD |
limit / offset |
int | Pagination |
curl -H "Authorization: Token YOUR_API_KEY" \
"https://sports.bzzoiro.com/darts/api/v2/matches/?player=507&status=finished"
{"count": 11, "results": [
{"id": 20841, "tournament": {"id": 44, "name": "World Matchplay 2026"},
"player1": {"id": 507, "name": "Luke Littler", "country_code": "GB"},
"player2": {"id": 312, "name": "Luke Humphries", "country_code": "GB"},
"match_date": "2026-07-27T20:00:00+00:00", "status": "finished",
"round_name": "Final", "player1_sets": 6, "player2_sets": 4,
"sets_detail": "3-1, 1-3, 3-2, 3-0, 1-3, 2-3, 3-1, 3-2, 2-3, 3-1",
"winner_id": 507, "best_of_legs": 5, "best_of_sets": 11,
"first_to_throw_id": 507}
]}
best_of_legs / best_of_sets and first_to_throw_id are null when the
match format wasn't reported upstream.
GET /matches/live/ returns in-play matches only. GET /matches/{id}/ adds
player1_legs, player2_legs and current_set for live scoreboards:
{"id": 20855, "status": "live", "player1_sets": 2, "player2_sets": 1,
"player1_legs": 2, "player2_legs": 1, "current_set": 4}
Predictions#
Win probabilities derived from player ELO ratings.
Query parameters
| Param | Type | Description |
|---|---|---|
upcoming |
bool | Only matches not yet started |
limit / offset |
int | Pagination |
{"count": 5, "results": [
{"id": 3308, "match_id": 20860,
"player1_win_prob": 0.67, "player2_win_prob": 0.33,
"predicted_winner_id": 507}
]}
Rankings#
Query parameters
| Param | Type | Description |
|---|---|---|
type |
string | Ranking list, default PDC (also ProTour) |
date |
date | Snapshot date (YYYY-MM-DD); default latest |
limit / offset |
int | Pagination |
Cached 5 minutes.
{"count": 128, "results": [
{"id": 71002, "position": 1, "type": "PDC", "prize_money": 1710000,
"player": {"id": 312, "name": "Luke Humphries", "country_code": "GB"}}
]}