What API customers asked for and what shipped, once a week. Read it here or have it emailed.
One email a week, only when an issue is published. Nothing else goes to this list, and every email carries a one-click unsubscribe.
Issue #9
Eight days, and the headlines are at the top. British and Irish racing now has results, starting prices and form, not only prices. bet365 prices sports as well as racing, and British and Irish racing as well as Australian. South Africa is the third racing country on the panel. Form builds tomorrow's Australian card the evening before, your own affiliate links can be built into every racing response, and race results can be pushed to you by webhook. Below those: a daily report on which bookmaker had the best racing odds, versioned bulk datasets, error messages that say what would work, new client releases that save credits by default, and smaller changes to accounts and the site.
/v1/racing/results carries British and Irish horse racing from 6 October and British and Irish greyhounds from 12 October. Horse races carry every starter's finishing position and starting price, as a decimal (sp) and as the fraction the UK quotes (sp_fraction); a runner that did not complete the race is labelled abnormal: did not finish once the result is final. Greyhound races carry the finishing order with each dog's trap and trainer. More than 570 British and Irish races had resulted by Tuesday night. Filter with country=GB,IE./v1/racing/form answers British and Irish thoroughbred races: the field from the UK racecards with draw, rider, trainer, weight and form figures, now with age and rating where the card prints them, and each runner's recent runs from the British and Irish results above. The new /v1/racing/greyhounds/field (3 credits) does the same for a greyhound race, Australian or British and Irish: every dog in the race with its recent runs, in one call.bet365 key, on /v1/sports/{sport_key}/odds and the sports closing lines: NBA, NFL, college football, NHL, MLB, soccer, ATP and WTA tennis, rugby league, rugby union, cricket and AFL Women, pre-match, with head-to-head, line and total where bet365 shows them. In the 24 hours to Wednesday morning it priced 15 sport keys. bet365 also prices British and Irish racing from 13 October, alongside the Australian and New Zealand racing it has priced since 6 October, which is now read right up to the jump: on Tuesday 13 October bet365 held a price within two minutes of the jump on 201 of 205 Australian and New Zealand races.country=ZA is priced by three South African bookmakers from 13 October, easybet_za, topbet_za and betway_za, alongside PointsBet, on next-to-go and best-odds. A race quoted by several books is one race with every book's price on it./v1/racing/form builds an Australian thoroughbred field from Racing Australia's acceptances before any bookmaker has framed the race: every accepted runner with its recent runs, last10 and last_start_date, and any runner Racing Australia has already withdrawn marked as scratched. Name the race by venue, meeting_date and race_number; card_source: acceptances says where the field came from. /v1/racing/acceptances now carries horse_ref on every runner, the same identity form and horse history use, so the two join directly.PUT /v1/link-templates, for every bookmaker or per bookmaker, and every racing response that carries a bookmaker link then carries your version beside it: source_link on next-to-go, best-odds and markets, and betslip_win_link, betslip_place_link and betslip_link where a betslip link exists. On Plus and above; storing and reading templates costs no credits, and an account without templates gets the same responses as before.race.result webhook event is live: every five minutes a sweep posts each race's result to your endpoint as it goes final, signed and delivered like race.odds_open, at most once per result. market.suspend is withdrawn, and subscribing to it answers 422 with the list of live events.Asked by a tip-settlement marketplace and an analytics platform that need racing outside Australia
IE whichever bookmaker quotes them, so country=IE returns Irish dogs from every book./v1/racing/closing-lines and /v1/racing/price-paths take country=GB,IE as a list, as next-to-go does, and every closing line carries meeting_date_local, the race's date in the venue's own time zone. Key British and Irish day files on it rather than on the Sydney date.Asked by a racing analysis platform that builds its card the night before
runs_total now counts starts only on /v1/racing/form, /v1/racing/horses/runs, /v1/racing/greyhounds/field and /v1/racing/greyhounds/form. Before 13 October it also counted the scratchings we hold for the runner, so a horse with nine starts and two scratchings read 11. The scratchings are still there as held_rows_total, and nothing else in those responses moved. A backtest that used runs_total as a count of starts should be re-run./v1/racing/horses/runs and in form./v1/racing/horses/form makes up to 30 fresh reads of Racing Australia's pages a minute for each key. Past that it answers 503 with Retry-After straight away rather than holding the request./v1/arb/sports, never a mix of the two.Asked by a subscriber backtesting results against closing prices
/v1/racing/results?date= returns the races that start on that Sydney calendar date, each race once, by the same rule as the closing-line archive's meeting_date_aet, so results and closing lines join on date for every country.schema_version, dataset_version and source_notes, and any change to a file already published is listed with its reason and row counts at the new /v1/bulk/restatements. A file whose contents have not changed keeps the same ETag from one build to the next.ClosingLineRow and gain three columns, appended last: duplicate_suspect and duplicate_of_race_id mark two race ids that look like the same race but could not be merged safely, and meeting_date_local is described above. A single bookmaker's copy of a race listed at a different start time is folded into the race that was run./v1/racing/closing-lines/coverage and /v1/racing/results/coverage./v1/racing/price-history it names the venue's races that do have history on nearby days, or the venues with history that day, or the date the archive starts. On /v1/racing/markets it says whether the race id is unknown or the race has no stored market.from to date, event_id to race_id). Dates are accepted as YYYYMMDD and YYYY/MM/DD as well as ISO, and categories such as thoroughbred, dogs and trots resolve to horse, greyhound and harness.period_start, next_reset_at and reset_at on /v1/usage are UTC, and /v1/health/stats says when it was measured, over what window, and what each figure counts.Asked by a paying customer polling next-to-go
pip install -U puntersedge or npm install puntersedge@latest.Reply with anything you want on the list. Requests from people building on the API are the ones that get built first. Write to hamish@punters-edge.com or use the feature request form.
All issues