hkjc_races

PREMIUM 31,164 rows

Hong Kong horse race specifications and historical archive

Also on hkjc.guru →

Browse on hkjc.guru: 2026-10-21 HV, 2026-10-19 ST, 2026-10-14 HV, 2026-10-11 ST, 2026-10-07 HV, 2026-10-04 ST, 2026-10-01 ST, 2026-09-27 ST

Complete catalog of every Hong Kong horse race from 1977 to present. Search and filter races by venue, distance, class, track conditions, and more. Each race includes specifications, video replay links, and pace analysis data. Perfect for historical research, race analysis, and identifying patterns by track conditions or distance.

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
May 1977 – present
Pass access: Most recent 24 months, rolling · Full Archive: May 1977 – present
Volume
31,164 rows
Last refreshed
20 October, 2026 (2 hours ago)
Data through
21 October, 2026 (in 3 hours)
Schema & column quality (28 columns)

Scroll table sideways to see more columns →

Column Type Description Populated Distinct
race_id String Unique race identifier (format: ST_20250928_R01) — —
race_date DateTime Date of the race (YYYY-MM-DD) — —
venue_code String Venue code (ST=Sha Tin, HV=Happy Valley) — —
venue Nullable(String) Full venue name (Sha Tin / Happy Valley) — —
race_number Int64 Race number within the meeting (1-11) — —
racename Nullable(String) Official race name (e.g., 'FAT CHOI HANDICAP') — —
distance Nullable(Int64) Race distance in meters (1000-2400m typical) — —
race_class Nullable(String) Race class (Class 1-5, Group One/Two/Three, Griffin, etc.) — —
track_going Nullable(String) Official track condition (Good to Firm, Good, Yielding, etc.) — —
post_time Nullable(DateTime) Scheduled race start time — —
field_size Int64 Number of horses in the race (1-14 typical) — —
field_size_effective Int64 Effective (starting) field size — distinct horses that actually started, i.e. field_size minus scratchings, withdrawals and non-runners — —
rating_type String Rating band for the race (H=Handicap, I=International) — —
race_status Nullable(String) Race status (completed, cancelled, etc.) — —
distance_category String Distance grouping for easy filtering: Sprint (1000-1200m), Mile (1400-1650m), Middle (1800-2000m), Long (2200m+) — —
track_condition_category Nullable(String) Simplified track condition grouping (Firm, Good, Soft, etc.) — —
race_year UInt16 Year of the race for grouping — —
race_month UInt8 Month of the race (1-12) — —
days_since_race Int64 Days since this race was run (for recency filtering) — —
penetrometer_reading Nullable(Float64) Penetrometer reading measuring turf softness (higher = softer ground). Available for races from late 2024. — —
hammer_reading Nullable(Float64) Hammer reading measuring turf firmness. Available for races from late 2024. — —
video_replay_url String Direct URL to watch the race video replay — —
pass_through_url String URL for pass-through camera angle (if available) — —
aerial_replay_url String URL for aerial camera angle (if available) — —
source_url Nullable(String) Original source URL for the race data — —
race_url Nullable(String) HKJC race page URL — —
updated_at Nullable(DateTime) Timestamp when record was last updated — —
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 race meetings, full schema, no row cap. Use this to evaluate column coverage and update cadence before subscribing or buying the snapshot.

SELECT * FROM renavon_exports.hkjc_races 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
May 1977 – 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 Pro

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
1,000,000 rows/month included
2 MONTHS FREE
US$1490
billed once a year
(US$124.17/month)
US$149
per month

Pass subscription

Racing Pass Enterprise

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