puntersedge_racing_closing_lines
Access archived racing closing lines with opening prices and finishing positions to calculate CLV or backtest betting models.
Instructions
The permanent closing-line archive: one row per race/runner/bookmaker with the last price before the jump, the first price after the market opened, and the finishing position. The CLV and backtesting surface. Costs 5 credits (JSON). Needs Standard or higher — Free and Hobby get a 403. Standard reads a rolling 90 days, Plus and above the whole archive; window_days on the response says which.
Returns: {archive_from, limit, offset, total_rows, rows_returned, resulted_rows, rows:[{race_id, venue, venue_id, venue_site, race_number, category, country, start_time, meeting_date_aet, bookmaker_key, runner_name, runner_number, runner_key, runner_ref, open_win_price, close_win_price, open_secs_to_jump, close_secs_to_jump, points_observed, is_closing_line, open_is_baseline, finish_position, result_status, venue_split_suspect, name_fragment_suspect}]} — an ENVELOPE with rows, not a bare array. Read the flags before modelling: only 85.5% of series have their final observation within 300s of the jump.
NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name.
Example: Yesterday's AU thoroughbred closing lines with results attached {"date": "", "category": "horse", "country": "AU", "resulted_only": true, "limit": 500}
Auth: needs your own key in PUNTERSEDGE_API_KEY.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Single-day alias, YYYY-MM-DD — exactly from=<date>&to=<date>. Mutually exclusive with from/to. | |
| limit | No | Rows to return. | |
| venue | No | Venue name, case-insensitive, exact match. | |
| format | No | csv streams a flat table with a stable column order, and costs 20 credits instead of 5. | json |
| offset | No | Rows to skip, for paging. | |
| country | No | Two-letter country code, e.g. AU or NZ. | |
| date_to | No | ISO date or datetime. Defaults to now. Mutually exclusive with `date`. Sent upstream as `to`. | |
| race_id | No | A single race, joinable to the live price-history store while that race is still inside its 45-day snapshot window. | |
| category | No | One racing code. Singular and single-valued here, unlike `categories` on the other racing tools. One of: horse, harness, greyhound. | |
| date_from | No | ISO date or datetime on the race start. Defaults to the archive floor. Mutually exclusive with `date`. Sent upstream as `from`. | |
| bookmakers | No | Comma-separated bookmaker keys, case-insensitive. An unrecognised key returns a free 422 naming the valid keys. | |
| closing_only | No | Keep only rows whose last observation was within 300s of the jump. TRUE by default because 14.5% of archived series are not closing lines, and silently mixing them in is how a CLV study goes wrong. | |
| resulted_only | No | Keep only rows from races that have a result — set true when you need finish_position on every row. | |
| include_flagged | No | Include rows flagged venue_split_suspect or name_fragment_suspect. False by default; set true only if you intend to handle the contaminated rows. |