PuntersEdge is built by one person, and the roadmap is mostly decided by what people ask for. If there's a bookmaker we don't carry, a market you can't get, or an endpoint that would save you a week — put it here. I read every one.
Every one of these started as a message from someone using the API. The date is the day the work landed, and each is checkable against the public API reference. Requests are described without naming who sent them.
An acceptance-card endpoint: every race and runner for a day with the official fields and no prices attached.
/v1/racing/acceptances, served from the acceptances already held for every Australian thoroughbred meeting.
A per-book refresh tier on every quote. A slower book's price was being marked stale against the race's faster refresh rule, which misrepresented it.
Every racing quote now carries the refresh tier of the book that produced it.
Separate win and place bookmaker counts, because place coverage genuinely differs from win and one combined number hid it.
books_quoting_win and books_quoting_place, with the original combined count left unchanged so nothing broke.
Whether a documented link exists, per bookmaker, that opens a betslip with the runner and market already selected.
A per-book audit, verified in a real browser, naming exactly which books support it and which are app-only. No guessed links were published.
One shared key across the archive endpoints, so an archive-to-results join does not have to match on names.
runner_ref added to the price-path and closing-line rows.
A server-side bulk backfill for horse form, so backfilling thousands of horses would not degrade the on-demand endpoint for everyone else.
A paced backfill job with status, results and cancel endpoints, available on Plus and above.
A source link on best place quotes. Best win carried one and best place did not, so every place quote was being rejected for lacking a link.
Place quotes now carry the same source link as win quotes.
Full-field thoroughbred results — a finishing position for every starter, plus explicit scratched, pending, final and dead-heat states.
Australian thoroughbred results are now collected first-hand across the national card, jumps included, carrying scratched, pending and dead-heat states.
Stable runner identifiers, so a price archived today can still be joined to a result months from now.
A registry runner reference on the archive rows, and the full price path per runner and bookmaker kept permanently instead of ageing out.
A push when a race's prices open, so a client could stop polling on a schedule, and documented lead times for when prices actually appear.
A race.odds_open webhook event, published lead times, and next-to-go raised to 200 races so a whole card can be pulled in one call.
A report that one bookmaker's racing coverage had fallen away sharply over a week.
Root cause found upstream — the source was intermittently returning an empty list during racing hours — and the connector reworked around it.
Historical timestamped racing odds: the price movements for each runner leading into a race, for a modelling project.
/v1/racing/price-history, serving the change-only price path per runner and bookmaker, permanent from 4 August 2026.
A deeper closing-line archive and full-field results, for closing-line-value backtesting.
The closing-line archive is now permanent — nothing ages out — with full-field thoroughbred finishing positions flowing into it.
Runner form over recent starts, with class, going, barrier, weight, margin, sectionals and starting price, plus richer race metadata.
/v1/racing/horses/form, serving recent form with class, going, margin, time, sectional and the price path through to starting price.
A first-party MCP server, so an AI assistant could query the API directly instead of each developer wrapping it themselves.
An official MCP server, published the same day the request arrived.
Full history on the API changelog.