Changelog

Every change to the API and the site, newest first. New endpoints and fields arrive without notice; anything that would break working code is posted here 30 days before it happens.

Endpoints serving
52 of 52
every path answers
API version
v1
since 18 Sep
Changes in Sep
23
15 of them new
Last change
30 Sep
endpoints
New

Yesterday's results on every key

Endpoints

GET /v1/results/yesterday lists every match settled yesterday (UTC), newest first, on every plan, the free key included. Filter by player_id or competition_id and page with the cursor. Every list cursor is now sealed: pass meta.next_cursor back exactly as it came.

Read the docs
Changed

Our own codes for tiers, rounds, organisers and countries

Endpoints

Competitions, editions, the calendar and matches carry tier (majors, players_championship, wdf_gold and so on) in place of category, and organiser (pdc, pdc_development, pdc_affiliate, bdo) in place of organisation. round is our own code: last_64, quarter_final, final. Players carry country_code, an ISO code such as nl or gb-eng, in place of country, and /v1/players filters by country_code. Fixtures, live scores and webhooks carry starts_at in UTC in place of the local time, and fixture_key is now fixture_id. Price readings name each bookmaker by our own slug, every timestamp ends in Z, and list cursors are opaque.

tierroundcountry_codestarts_atfixture_id
Read the docs
New

Webhooks: four events sent to your server

Webhooks

Add up to five addresses in your dashboard and we POST each event within a minute of our five-minute check. Every request is signed with X-DartsAPI-Signature, and a failed one is retried at 1, 5, 15, 30, 60 and 90 minutes. On Live, Complete and Analyst.

match.finishedLive and upfixture.addedmatch.startedscore.changed
How webhooks work
New

Head to head pages for every pair that has met

Site

Pick any two players to see the record, legs, averages when they meet, finals, and every meeting oldest to newest. The most played rivalries and this week's meetings are on the index.

Open head to head
New

Matches, Probability and Live pages

Site

Matches lists every result by day with the averages, 180s and checkouts. Probability shows the model at work: a match-up you can set yourself, how well its prices have held up, and the biggest upsets. Live explains scores in play and webhooks.

Open Matches
New

An MCP server with 14 tools

MCP

Point Claude or any MCP client at dartsapi.com/mcp with your key. Tools include find_player, head_to_head, player_form, live_scores, ratings_table and win_probability. Each tool answers with what your plan can see.

/mcp
Set it up
New

The OpenAPI file

Endpoints

An OpenAPI 3.1 description of all 40 endpoints, with parameters, plans and response shapes. No key needed, so you can generate a client straight from it.

/openapi.json
Download it
New

Player pages and a free key in one step

Site

Every player now has a page with rating, form, averages and top rivals. A free key is one click from any of them.

Browse players
Improved

Leaders built ahead of time

Endpoints

Ranking every player by a statistic used to read the whole archive on your call. The table is now built once an hour for every statistic and season, so /v1/leaders answers at once. Live keeps its last thirty days, read directly.

New

Documentation, Status, Lab and Coverage pages

Site

Guides and a reference for every endpoint, a status page fed by the same checks we use, the Lab for the model's working, and a coverage page measured from the archive itself.

Read the docs
New

Fixtures and live scores

Endpoints

Two endpoints fed from the live source, checked every five minutes. Fixtures lists what is to play; live gives the score of every match in progress.

Improved

Fixtures carry their date and the whole draw

Data

Fixtures are dated from each tournament's own page, and an event's full draw is listed rather than only the next few matches.

Changed

Ids are scrambled and stable for good

Endpoints

Ids keep their type prefix (pl_, mt_, ev_, cp_) but no longer reveal the order or size of the archive. Ids issued from 18 to 21 September were replaced once; the new ones will not change again.

Improved

Paging on the calendar, and clearer refusals

Endpoints

The calendar pages like every other list. A call your plan does not cover now names the plan that does, and a short outage in the archive answers 503 with Retry-After rather than an empty list.

Improved

Rate limits on every response

Endpoints

Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset, and your own usage by day is one call away.

Improved

Coverage measured, with close seasons told apart

Data

Coverage is counted from the archive by season and tour, and a quiet month in the calendar is no longer reported as a gap.