18+ Only  |  Gambling can be addictive — please gamble responsibly  |  Gambling Help: 1800 858 858  |  GambleAware

PuntersEdge › South African racing › South African Horse Racing Closing Odds

18+. Gambling support in South Africa: the National Responsible Gambling Programme's toll-free counselling line 0800 006 008, WhatsApp 076 675 0710, responsiblegambling.org.za.

South African racing · Closing prices

The closing price of every runner, at every bookmaker that quoted it.

471 South African races carry a runner-by-runner closing price, from 5 August 2026 to 15 October 2026, across 5 bookmakers: each bookmaker's last price before the off, the price it opened at, how many seconds to the jump each was read, and a consensus across the books that closed the race. JSON or CSV, by date, venue or race.

This is the fixed-odds close at each bookmaker, not a tote dividend or an official starting price. Rows are written when a race goes off; nothing here is typed.

One archived row · 15 October 2026

Turffontein Race 1

  • The Buffalo · No 4
  • at PointsBet
  • 10:35 UTC off

Opened

5.00

3598 s before the off · baseline window

Closed

2.35

55 s before the off

Place at close

1.37

the bookmaker's own place price

Points observed

29

distinct prices between open and close

Consensus close

2.45

across 4 bookmakers

The row as the API returns it
{
  "bookmaker_key": "pointsbetau",
  "books_in_consensus_close": 4,
  "close_place_price": 1.37,
  "close_secs_to_jump": 55,
  "close_win_price": 2.35,
  "consensus_close_price": 2.452,
  "consensus_close_prob": 0.407857,
  "country": "ZA",
  "horse_ref": "pe:thebuffalo",
  "is_closing_line": true,
  "open_is_baseline": true,
  "open_secs_to_jump": 3598,
  "open_win_price": 5.0,
  "points_observed": 29,
  "race_id": "33221b02-a60a-4044-8f6b-f21aa9399f66",
  "race_number": 1,
  "runner_name": "The Buffalo",
  "runner_number": 4,
  "start_time": "2026-10-15T10:35:00Z",
  "venue": "Turffontein"
}
GET /v1/racing/closing-lines?country=ZA&date=2026-10-15&closing_only=true262 rows for the day · 5 bookmakers

Every field

One row per runner per bookmaker. The names are the API's; closing_only=true keeps the rows whose close was read inside the closing window.

race_idThe race, shared with next-to-go and price-history.
venue, race_number, start_time, countryWhere and when (UTC), and ZA.
runner_name, runner_number, horse_refThe runner, its saddlecloth, and a stable horse reference.
bookmaker_keyWhose price this row is. One row per runner per bookmaker.
open_win_price, open_secs_to_jump, open_is_baselineThe first price read and how far out; open_is_baseline is true when it was read at the standard opening window.
close_win_price, close_secs_to_jumpThe last price before the off and how close to it.
open_place_price, close_place_priceThe place price at open and close, where the bookmaker quotes one: Easybet and Topbet do, Betway's South African races do not.
points_observedHow many distinct prices were captured between open and close.
consensus_close_price, consensus_close_prob, books_in_consensus_closeThe field-normalised consensus at the close and how many bookmakers made it; null under two.
is_closing_lineTrue when the close was read inside the closing window; closing_only=true keeps these.
finish_position, result_statusFilled from the race's result on the archive's hourly run, from 15 October 2026.

Pull it

A day of South African closing prices

GET /v1/racing/closing-lines

curl 'https://api.puntersedge.online/v1/racing/closing-lines?country=ZA&category=horse&date=2026-10-15&closing_only=true&limit=500&offset=0' \
  -H 'X-API-Key: YOUR_KEY'

Page with offset; total_rows in the response says how many there are.

The same day as CSV

GET /v1/racing/closing-lines?format=csv

curl 'https://api.puntersedge.online/v1/racing/closing-lines?country=ZA&date=2026-10-15&closing_only=true&format=csv&limit=5000' \
  -H 'X-API-Key: YOUR_KEY' -o closing-2026-10-15.csv

A flat file of the same rows, for a notebook or a database load.

One race, every bookmaker

GET /v1/racing/closing-lines?race_id=

curl 'https://api.puntersedge.online/v1/racing/closing-lines?race_id=33221b02-a60a-4044-8f6b-f21aa9399f66&closing_only=true' \
  -H 'X-API-Key: YOUR_KEY'

race_id is shared with next-to-go and price-history, so a race you priced live can be looked up after the off.

How deep the archive is, right now

GET /v1/racing/closing-lines/coverage

curl 'https://api.puntersedge.online/v1/racing/closing-lines/coverage?country=ZA' \
  -H 'X-API-Key: YOUR_KEY'

Rows, races and bookmakers in the archive for the filter, with the first and last dates, measured when you call it.

How deep, by bookmaker

South African races with a closing price from each bookmaker, and the first date it appears. The South African books date from the day their feed went live, 14 October 2026; the Australian books that price South African racing go back to the archive's start.

BookmakerLicensedSouth African races closedSince
PointsBetAU4715 August 2026
BetwayZA1614 October 2026
EasybetZA1614 October 2026
TopbetZA1614 October 2026
HollywoodbetsZA815 October 2026
SliceRaces closedFrom
South African horse racing4715 August 2026

Since 14 October 2026: 16 South African races closed, a median of 4.5 bookmakers quoting at the jump, 16 with three or more.

The Australian and New Zealand archive, with results against it, is on the historical racing odds page and in the free monthly dataset; the British and Irish archive has its own page.

Questions

What is a closing price here?

Each bookmaker's last price for each runner before the race went off, with the seconds to the jump at which it was read. It is the fixed-odds close at that book, not a tote dividend or an official starting price.

How far back does the archive go?

The archive dates on this page are read from the archive itself when the page renders. The South African bookmakers appear from the day their feed went live; the Australian books that price South African racing go back further.

Can I download it as a file?

Add format=csv to the closing-lines call for a flat file of the same rows, up to the call's row limit, and page with offset. The free monthly dataset on /datasets is Australian racing.

Does every row have a result against it?

Yes, from 15 October 2026: /v1/racing/results?country=ZA returns each race's finishing order. Which countries carry a finishing order is published by /v1/racing/results/coverage, measured when you call it.

What does consensus_close_price mean?

The field-normalised average implied probability across the bookmakers that closed the race, turned back into a price, with books_in_consensus_close saying how many went into it. It is null when fewer than two bookmakers closed the race.

Keep the close.

The archive and the price paths open on a paid plan; what you may do with the rows follows the plan's licence, section 8.1 of the terms.

Plans and pricing
This site contains wagering-related analysis and is intended for Australian users aged 18+. Gambling involves risk. Please gamble responsibly.