hkjc_comments_on_running

PREMIUM 250,074 rows

Stewards' running comments for every Hong Kong runner

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 – Jul 2026
Pass access: Most recent 24 months, rolling · Full Archive: Sep 2000 – present
Volume
250,074 rows
Last updated
15 July, 2026 (1 month ago)

Rows over time

month
2000-09-01 2026-07-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)
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
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)
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.

Satisfaction guarantee: 14-day money-back. 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$149
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
US$499
per month
SAVE 17%
US$4990
per year
(US$415.83/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