hkjc_comments_on_running

PREMIUM 251,295 rows

Stewards' running comments for every Hong Kong runner

Also on hkjc.guru →

Browse on hkjc.guru: HK_2024_K263, HK_2024_K217, HK_2024_K209, HK_2022_H283, HK_2023_J482, HK_2024_K109, HK_2024_K456, HK_2024_K399

Stewards' "comments on running" — a plain-language note on how each horse ran (start, position, trouble, finish), alongside placing, jockey, gear and the race's class/distance/going.

Premium dataset

Evaluate it in full below: the evidence and a working sample are open to everyone. Buy or subscribe to unlock the complete dataset — your account is created automatically at checkout.

See access options

The evidence

Data coverage
Sep 2000 – present
Pass access: Most recent 24 months, rolling · Full Archive: Sep 2000 – present
Volume
251,295 rows
Last refreshed
17 October, 2026 (7 hours ago)
Data through
11 October, 2026 (6 days ago)

Rows over time

year
2000-01-01 2026-01-01
Schema & column quality (21 columns)

Scroll table sideways to see more columns →

Column Type Description Populated Distinct
race_date Nullable(Date) Date of the race (YYYY-MM-DD) 100.0% 2,172
race_no Nullable(Int64) Race number within the meeting — —
race_id Nullable(String) Canonical race identifier (venue_YYYYMMDD_RNN, e.g. ST_20250928_R01) — joins to hkjc_races.race_id, many rows here (one per horse) to one race there — —
hkjc_internal_race_id Nullable(String) HKJC's own per-season numeric race id, as shown in parentheses on the page (resets each season — not a cross-dataset join key; use race_id for joins) — —
race_name Nullable(String) Race name (e.g. SUNBIRD PLATE) — —
rating Nullable(String) Race rating band, blank when not applicable — —
distance_m Nullable(Int64) Race distance in metres — —
venue Nullable(String) Racecourse — Sha Tin or Happy Valley 100.0% 2
going Nullable(String) Going (track condition), e.g. Good To Yielding — —
placing Nullable(Int64) Finishing placing as a number (NULL when non-numeric, e.g. WV/DH) 99.8% 14
placing_raw Nullable(String) Finishing placing exactly as the source shows it, including the non-numeric outcome codes a finishing position cannot express: PU (pulled up), UR (unseated rider), FE (fell), DNF (did not finish), TNP (took no part), DISQ (disqualified). Numeric where the horse completed the race; `placing` carries the same value typed as an integer, and is null for every coded outcome. — —
horse_no Nullable(String) Horse's saddle number in the race — —
horse Nullable(String) Horse's name in English, with the trailing brand parenthetical removed (that value is in brand_code) — —
brand_code Nullable(String) Horse's HKJC brand number exactly as the page shows it (e.g. L441; historical horses carry a cycle prefix and render two letters, e.g. BT163 — horse_id embeds only the trailing form, HK_1998_T163) — —
horse_id Nullable(String) Canonical horse identifier (HK_YYYY_XXXX format) — —
jockey Nullable(String) Jockey who rode the horse — —
gear Nullable(String) Equipment carried (HKJC gear codes, e.g. TT = Tongue Tie, B = Blinkers). See gear_label for the decoded form. — —
gear_label Nullable(String) Equipment decoded to words, e.g. 'Visor (removed) / Blinkers (2nd time) / Tongue Tie'. 'No gear' where the raw code is '--'. Codes are HKJC's own (Equipment Register, racing.hkjc.com/en-us/local/page/reg-approved-gear); a trailing 1/2 means first/second time worn and a trailing '-' means removed this start. Unrecognised codes pass through unchanged. — —
comment Nullable(String) Stewards' comment describing how the horse ran in the race — —
updated_at Nullable(DateTime64(3)) Timestamp this row was last (re)parsed into the warehouse — —
id String Stable unique identifier for this row — the last column of every export. Use it to deduplicate, to key an incremental load, or to reference one specific row. It is additive: the entity and join keys you already use (race_id, horse_id, and the like) are unchanged. — —

Sample data

Last 12 months of stewards' comments on running, every runner in every meeting, full schema and no row cap.

SELECT * FROM renavon_exports.hkjc_comments_on_running LIMIT 50 0.02s
Loading data… | Click a header to sort; drag headers to reorder.

Choose your access

A Pass gives you freshness within a rolling window. The Full Archive gives you the full history we hold for the dataset, frozen at purchase. They solve different problems, and they work together.

Full refund within 14 days on subscriptions. One-time archives: full refund until you download; once downloaded, the sale is final. Details →

One-off purchase

Full Archive

The full history we hold, frozen at purchase. Yours to keep.

Full details →
What you get
The full history we hold, to your purchase date
History depth
Sep 2000 – present, in full
Updates
None. Frozen at purchase
Delivery
Gzipped CSV, opens in Excel; link valid 7 days
API access
Not included
US$199
one-time purchase

Pass subscription

Racing Pass Enterprise

Continuously updated, with API access.

View full package →
Access window
Most recent 24 months, rolling
Updates
Continuous, within hours of the source
Delivery
API, SQL and downloads
Exports
Uncapped
2 MONTHS FREE
US$4990
billed once a year
(US$415.83/month)
US$499
per month

Get notified when this dataset is updated.

Questions about this data?

Our data experts are ready to help clarify any aspects of this dataset.

Contact Our Team