hkjc_horses
Hong Kong racehorse profiles, pedigree and career statistics
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 setupDetailed profiles of every active and retired Hong Kong racehorse. Look up any horse's breeding (sire, dam, origin country), current HKJC rating, career win record, total prize money earned, and trainer/owner details. Track rating changes throughout the season and identify horses on the rise or decline. Updated after every race meeting with the latest statistics.
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 (33 columns)
Scroll table sideways to see more columns →
| Column | Type | Description | Populated | Distinct |
|---|---|---|---|---|
| horse_id | String | Unique horse identifier | 100.0% | 18,009 |
| horse_name | String | Horse's name in English | — | — |
| registration_status | String | Horse's registration status with the HKJC: Active, Retired, or Deregistered. | 100.0% | 3 |
| colour | Nullable(String) | Coat colour (Bay, Chestnut, Grey, etc.) | — | — |
| sex | Nullable(String) | Sex (G=Gelding, C=Colt, F=Filly, M=Mare, H=Horse) | 100.0% | 8 |
| age | Nullable(Int32) | Current age in years | — | — |
| origin_country | Nullable(String) | Country of origin (AUS, NZ, IRE, GB, etc.) | — | — |
| import_date | Nullable(DateTime) | Date imported to Hong Kong | — | — |
| import_type | String | Import classification (PP, PPG, etc.) | — | — |
| years_in_hk | Nullable(Int64) | Years racing in Hong Kong, measured to the pipeline build date | — | — |
| sire | Nullable(String) | Sire (father) | — | — |
| dam | Nullable(String) | Dam (mother) | — | — |
| dam_sire | Nullable(String) | Dam's sire (maternal grandfather) | — | — |
| owner | Nullable(String) | Current owner | — | — |
| trainer | Nullable(String) | Current trainer | — | — |
| current_rating | Nullable(Int32) | Current HKJC rating | — | — |
| last_rating | Nullable(Int32) | Previous rating | — | — |
| start_of_season_rating | Nullable(Int32) | Rating at start of current season | — | — |
| season_rating_change | Nullable(Int64) | Rating change during season | — | — |
| wins | Nullable(Int32) | Career wins in Hong Kong | — | — |
| seconds | Nullable(Int32) | Career second places | — | — |
| thirds | Nullable(Int32) | Career third places | — | — |
| total_starts | Nullable(Int32) | Total career starts | — | — |
| win_rate | Nullable(Float64) | Win percentage (0-1). NULL for unraced horses (no career starts). | — | — |
| place_rate | Nullable(Float64) | Top-3 place percentage (0-1). NULL for unraced horses (no career starts). | — | — |
| career_stage | String | Career stage (Unraced/Novice/Developing/Experienced/Veteran) | — | — |
| total_prize_money | Nullable(Float64) | Total career prize money (HKD) | — | — |
| season_prize_money | Nullable(Float64) | Current season prize money (HKD) | — | — |
| last_race_date | Nullable(DateTime) | Date of most recent race | — | — |
| days_since_last_race | Nullable(Int64) | Days since last race | — | — |
| stable_location | Nullable(String) | Current stable location | — | — |
| updated_at | DateTime('UTC') | 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. | — | — |
500 horses stratified across activity status and career stage, full schema. Regenerated quarterly.
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
- All horses, all-time, in full
- Updates
- None. Frozen at purchase
- Delivery
- Gzipped CSV, opens in Excel; link valid 7 days
- API access
- Not included
- Access window
- All currently active records
- Updates
- Continuous, within hours of the source
- Delivery
- API, SQL and downloads
- Exports
- 120,000 rows/month included
Included Datasets
- Access window
- All currently active records
- Updates
- Continuous, within hours of the source
- Delivery
- API, SQL and downloads
- Exports
- 1,000,000 rows/month included
Included Datasets
- Access window
- All currently active records
- 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