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

API reference / Racing Archive

GET /v1/racing/closing-lines/coverage

What the closing-line archive actually holds

The archive's own measurements of itself — depth, date floor, how much of it is a genuine closing line, how much has a result, and how many rows carry a contamination flag. Results are collected for Australian and New Zealand racing from `results_from` onward, and for British and Irish thoroughbreds from 2026-10-06 (Betway's settlement feed: every finisher Betway ranks; on Irish races it ranks the first four first and the rest within about 25 minutes of the off). British and Irish races are closed by the UK-licensed books (`ladbrokes_uk`, `williamhill`, `betway_uk`) and the Australian books that quote them; races in every other country carry closing prices but never a finish position. So `resulted_races_pct` is the share of the WHOLE archive with a result, while `settleable_races` / `settleable_resulted_pct` count only AU and NZ races that started after results collection began — the figure to read if you intend to settle against the archive. `by_category` carries `resulted_races` per code for the same reason. `finish_position_pct` is the finish-position fill rate: of the rows whose race has a result (runners marked scratched left out), the share that carry a position. AU thoroughbred and greyhound results publish every finisher's position, and AU harness and NZ results carry the full field from 2026-10-04, so all of them run near 100% on races from then on; before 2026-10-04 harness and NZ results named the placegetters only, which holds their whole-archive figure near the placed share of the field. `by_category` carries it per code. `consensus_close_pct` (from 2026-10-05) is the share of genuine closing lines that carry `consensus_close_prob`, the market's margin-free probability stored at the close. Rows without one belong to races where fewer than two complete-field books closed. `backtest_ready_rows` / `backtest_ready_pct` count the rows that pass the recommended modelling filter (genuine closing line, not scratched, no venue-split, name-fragment or duplicate flag). `closing_by_period` splits `is_closing_line` at 2026-09-29: from that card a row is also a closing line when the book was still quoting the same price inside 300 seconds of the jump, so the two periods are measured on different evidence and should be read separately. **Per book and per join, over a recent window (`days`, default 30).** `by_bookmaker` gives each book's `closing_pct` and `baseline_pct`: the closing-line rate varies widely between books, so the archive-wide `is_closing_line_pct` hides the books whose series often stop early. `races_without_result` counts AU and NZ archive races in the window with no result at all, and `results_without_race` counts AU and NZ results with no archive race; their denominators are `settleable_races_in_window` and `results_in_window`, and `definitions` states each count in one line. Races younger than three hours are left out of both gaps. This exists so nobody has to take a marketing number on trust before paying for a bulk pull. Every figure is computed from the table, refreshed at most every ten minutes. Open to every key, Free included, so you can check the archive before paying for it; the numbers describe the whole archive. Reading the rows themselves (/v1/racing/closing-lines) is a paid endpoint.

Requires X-API-Key 1 credit

Request

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

Parameters

NameIn TypeRequired Description
days query integer no Days the per-bookmaker rates and the two result-join gaps are measured over, ending now. Every other figure covers the whole archive.

Responses

Status codes: 200, 401, 402, 422, 429, 500. Response bodies are JSON; the full schema is in /openapi.json.

Example response

200 application/json — this call costs 1 credit. Field names and types are as the API returns them; values are a real sample, trimmed to a few items.

{
  "archive_from": "2026-08-04T09:22:00Z",
  "archive_to": "2026-09-29T04:10:00Z",
  "rows": 1474236,
  "races": 40953,
  "bookmakers": 14,
  "is_closing_line_pct": 84.34,
  "open_is_baseline_pct": 62.13,
  "resulted_races_pct": 23.82,
  "results_from": "2026-08-15T05:53:00Z",
  "settleable_races": 10296,
  "settleable_resulted_pct": 94.69,
  "results_scope": "Results are collected for Australian and New Zealand racing from results_from onward, for British and Irish thoroughbreds from 2026-10-06 and greyhounds from 2026-10-12, for South African thoroughbreds from 2026-10-15, and for US and Canadian thoroughbred, quarter horse and harness racing from 2026-08-01 (TVG's official results with the tote dividends). Races in other countries carry closing prices but no finish position. settleable_races counts AU and NZ races that started after results_from.",
  "venue_split_suspect_rows": 13323,
  "name_fragment_suspect_rows": 387,
  "scratched_rows": 9058,
  "finish_position_pct": 61.29,
  "by_category": [
    {
      "category": "greyhound",
      "rows": 654868,
      "races": 15309,
      "resulted_races": 5570,
      "finish_position_pct": 71.51
    },
    {
      "category": "horse",
      "rows": 514720,
      "races": 19466,
      "resulted_races": 2214,
      "finish_position_pct": 57.53
    },
    {
      "category": "harness",
      "rows": 304648,
      "races": 6178,
      "resulted_races": 1965,
      "finish_position_pct": 43.14
    }
  ],
  "window_days": 30,
  "window_from": "2026-09-13T09:30:00Z",
  "by_bookmaker": [
    {
      "bookmaker_key": "pointsbetau",
      "rows": 167700,
      "closing_pct": 91.4,
      "baseline_pct": 54.9
    },
    {
      "bookmaker_key": "sportsbet",
      "rows": 54544,
      "closing_pct": 69.0,
      "baseline_pct": 98.5
    },
    {
      "bookmaker_key": "palmerbet",
      "rows": 57538,
      "closing_pct": 54.4,
      "baseline_pct": 92.1
    }
  ],
  "settleable_races_in_window": 6695,
  "races_without_result": 189,
  "results_in_window": 6607,
  "results_without_race": 101,
  "definitions": {
    "races_without_result": "AU and NZ archive races that started in the window, at least 3 hours ago, with no result row for their race_id.",
    "results_without_race": "AU and NZ results that started in the window, at least 3 hours ago, whose race_id has no archive row at any served book (or no race_id).",
    "closing_pct": "Per bookmaker: share of that book's archive rows in the window with is_closing_line (last observation within 300 seconds of the jump).",
    "baseline_pct": "Per bookmaker: share of that book's archive rows in the window with open_is_baseline (series began at the 60-minute window entry)."
  }
}

Guides that use this endpoint

Related endpoints

Try it against live data

The free tier needs no credit card, and the sandbox endpoints need no key at all.

Get a free API key Quickstart
This site contains wagering-related analysis and is intended for Australian users aged 18+. Gambling involves risk. Please gamble responsibly.