Racing

Racing price history / closing line

Cost: 5 credits. Every price move for a race, per runner per bookmaker, with the opening and closing line.

Identify the race either by race_id, or by venue + race_number + date — use the latter for past races, because race ids are only resolvable from the live feed, which holds the next ~6 hours.

The series is change-only. Each point is a price MOVE, not a sample: a gap means the price held steady. move_pct is open→close, positive meaning the price drifted out.

open_price and close_price are the first and last CAPTURED prices for that book, not guaranteed market open and close. Capture starts when a race enters the 60-minute window, and a book that does not quote that early gets its first price whenever it starts quoting: measured over 30,448 series on 2026-08-15, 44% of series began at the 60-minute baseline and 56% began later. At the other end 63% of series have a final point inside 120s of the jump and 81% inside 300s, so the rest are not closing lines either. Read open_secs_to_jump, close_secs_to_jump and open_is_baseline on each bookmaker before using a series for closing-line value, and drop the ones that do not reach the jump.

History is permanent. Races inside the ~45-day live window are served from the live store; older races come from the permanent archive, which is never purged. history_from on the response is the true floor — capture began 2026-08-04, and the archive only deepens from there. (Identify past races by venue + race_number + date; both stores resolve that key.)

Past races are Standard and above. Every plan reads every upcoming race and any race that started in the last 24 hours. A race that started earlier needs Standard or above; on Free and Hobby it is a 403 that charges nothing and carries a sample of what the call returns, from one recent race.

get/v1/racing/price-history

Request

  • Base URL: https://api.puntersedge.online
  • URL: https://api.puntersedge.online/v1/racing/price-history
  • Auth: API key in header X-API-Key

Query parameters

race_idstring

Race id. If omitted, give venue + race_number + date.

venuestring

Venue name, case-insensitive (with race_number + date)

race_numberinteger
datestring

Race date, YYYY-MM-DD (YYYYMMDD accepted): the UTC day of the race's start, or, when that finds nothing, the Australian Eastern meeting date, so the date /v1/racing/results and /v1/racing/closing-lines give a race resolves it here too. A date that resolves nothing is a free 404 naming the venue's races with history around it.

bookmakersstring

Comma-separated bookmaker keys, case-insensitive. An unrecognised key is a free 422 naming the valid keys, so a typo costs nothing.

include_pointsboolean

False returns open/close/high/low only

max_pointsinteger

Cap on returned points; response flags truncation

Headers

X-API-Keystring
X-RapidAPI-Proxy-Secretstring

Response

Successful Response

race_idstring required
venuestring nullable required
venue_idstring nullable
venue_canonicalstring nullable
venue_sitestring nullable
race_numberinteger nullable required
categorystring nullable required
countrystring nullable required
start_timestring required
points_returnedinteger required
truncatedboolean required
history_fromstring nullable

Start time of the earliest race this endpoint can answer for. Since 2026-09-01 races older than the ~45-day live window are served from the permanent archive, so this floor is fixed at capture start (2026-08-04) and history only deepens.

runnersobject[] required

Example response

{
  "category": "horse",
  "country": "AU",
  "history_from": "2026-08-04T09:22:00Z",
  "points_returned": 2481,
  "race_id": "race_123",
  "race_number": 2,
  "runners": [
    {
      "bookmakers": [
        {
          "close_price": 7,
          "close_secs_to_jump": 41,
          "high": 7,
          "key": "sportsbet",
          "low": 6,
          "move_pct": 7.69,
          "open_is_baseline": true,
          "open_price": 6.5,
          "open_secs_to_jump": 3595,
          "points": [
            {
              "captured_at": "2026-08-15T02:00:04Z",
              "secs_to_jump": 3595,
              "win_price": 6.5
            }
          ],
          "points_count": 10
        }
      ],
      "name": "Aeolian",
      "number": 4
    }
  ],
  "start_time": "2026-08-15T03:00:00Z",
  "truncated": false,
  "venue": "Caulfield"
}

Changes

No recorded changes to this operation across all 1 revision of this API.