hkjc_odds_final
Hong Kong horse racing closing odds and market data
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 setupFinal pre-race closing odds for every Hong Kong horse race. These are the last odds captured just before each race started - essential for betting analysis, backtesting strategies, and studying market efficiency. Compare closing odds to race results to identify value or track favourite performance. Covers Win, Place, Quinella, Forecast, Tierce, Quartet, and all other HKJC pool types.
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 (21 columns)
Scroll table sideways to see more columns →
| Column | Type | Description | Populated | Distinct |
|---|---|---|---|---|
| odds_final_key | String | Unique identifier for this final odds record. | — | — |
| race_date | DateTime | Date of the race meeting (YYYY-MM-DD). | — | — |
| venue_code | String | Venue code: 'ST' (Sha Tin) or 'HV' (Happy Valley) for Hong Kong races, or a simulcast venue code (S1-S5). May be empty on some legacy rows where the source did not carry a venue. | — | — |
| race_number | Int64 | Race number within the meeting (1-11). | — | — |
| race_id | Nullable(String) | Unique race identifier for joining with hkjc_races (format: ST_20250928_R01) | — | — |
| racename | Nullable(String) | Official race name. | — | — |
| venue | Nullable(String) | Full venue name (Sha Tin / Happy Valley). | — | — |
| distance_category | String | Distance grouping: Sprint, Mile, Middle, Long. | — | — |
| track_condition_category | Nullable(String) | Simplified track condition grouping. | — | — |
| field_size | Int64 | Number of horses in the race. | — | — |
| odds_type | String | Bet/pool type code (e.g. WIN, PLA, QIN, QPL, FCT, TRI, TCE, FF, QTT, DBL). | — | — |
| odds_category | String | Bet category grouping the odds_type: Win/Place, Quinella, Forecast, Tierce, Trio, First Four, Quartet, Double, Treble, Double Trio, Triple Trio, Six Up, Composite Win, Index Win, Other. | — | — |
| combination | String | Horse number (WIN/PLA) or combination string (e.g. '1-2' for Quinella, '1-2-3' for Tierce). | — | — |
| odds_value | Nullable(Float64) | Decimal odds value (e.g. 5.5 means a $5.50 return per $1 staked). | — | — |
| is_hot_favourite | Nullable(Bool) | True if this horse/combination was marked as the hot favourite. | — | — |
| final_odds_timestamp | DateTime64(3) | Exact timestamp when these final (closing) odds were captured. | — | — |
| race_start_time | Nullable(DateTime) | Scheduled race post time. | — | — |
| minutes_before_start | Nullable(Int64) | How many minutes before post time these odds were captured (lower = more final). | — | — |
| odds_format | String | Data format indicator (modern_json, legacy). | — | — |
| updated_at | DateTime64(3) | Timestamp when the 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. | — | — |
One full race meeting day of final odds, full granularity. Live odds in the subscription stream this same shape continuously through the meeting day.
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 2021 – 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
- 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