hkjc_racing_changes
Hong Kong race card scratches and jockey changes
Download a file
CSV · Excel · Parquet · JSON. Filtered exports.
See pricingQuery with SQL
DBeaver, DuckDB, MotherDuck, or HTTPS. Sub-second latency.
Open connection detailsConnect to AI
MCP for Claude Desktop, Cursor, ChatGPT, Goose. 1-line install.
See setupRace card changes including scratches, jockey changes, gear changes, and barrier changes. Track late changes before race time for form analysis. Each change is timestamped showing when it was announced. One row per change event.
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.
The evidence
Schema & column quality (19 columns)
Scroll table sideways to see more columns →
| Column | Type | Description | Populated | Distinct |
|---|---|---|---|---|
| race_date | DateTime | Date of the race | — | — |
| venue_code | String | Venue code (ST=Sha Tin, HV=Happy Valley) | — | — |
| race_number | Int64 | Race number (1-11 typically) | — | — |
| race_id | Nullable(String) | Generated race identifier for joins (venue_YYYYMMDD_RNN) | — | — |
| race_year | UInt16 | Year of the race | — | — |
| race_month | UInt8 | Month of the race (1-12) | — | — |
| venue | Nullable(String) | Full venue name | — | — |
| race_class | Nullable(String) | Race class (denormalized from races) | — | — |
| distance | Nullable(Int64) | Race distance in meters (denormalized from races) | — | — |
| runner_number | Nullable(String) | Horse's saddle cloth number | — | — |
| horse_name_en | Nullable(String) | Horse name in English | — | — |
| horse_name_ch | Nullable(String) | Horse name in Chinese | — | — |
| change_type_code | Nullable(String) | Change type code (S=Scratched, J=Jockey, etc.) | — | — |
| change_type | Nullable(String) | Human-readable change type (Scratched, Jockey Change, etc.) | — | — |
| scratch_reserve_indicator | String | Indicates if the horse was a reserve runner. 'R' means the horse was a reserve that may fill a vacancy if another horse is scratched. Empty for non-reserve horses. | — | — |
| change_time | DateTime | Timestamp when change was announced | — | — |
| is_scratch | Nullable(UInt8) | Whether this is a scratch (true/false) | — | — |
| updated_at | Nullable(DateTime) | Timestamp when record was last scraped | — | — |
| 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. | — | — |
Last 12 months of jockey/horse changes, scratchings, and weight adjustments, full schema. The pre-race state delta the form guide doesn't show.
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.
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
- Dec 2025 – present, in full
- Updates
- None. Frozen at purchase
- Delivery
- Gzipped CSV, opens in Excel; link valid 7 days
- API access
- Not included
- 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
Included Datasets
- Access window
- Most recent 24 months, rolling
- Updates
- Continuous, within hours of the source
- Delivery
- API, SQL and downloads
- Exports
- Uncapped
Included Datasets
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