Discover/HKJC API
live

HKJC APIracing.hkjc.com

Access Hong Kong Jockey Club race results, horse profiles, jockey/trainer rankings, fixtures, and horse search via a single structured API.

Endpoint health
verified 1d ago
get_trainer_ranking
get_race_results
get_horse_profile
get_jockey_ranking
get_race_meeting_fixtures
6/6 passing latest checkself-healing
Endpoints
6
Updated
22d ago

What is the HKJC API?

The HKJC Racing API provides structured access to Hong Kong Jockey Club horse racing data across 6 endpoints. You can retrieve full race results for any meeting date via get_race_results — including finisher placings, running positions, odds, and dividend pools — alongside horse pedigree profiles, current-season jockey and trainer standings, upcoming fixture schedules, and name-based horse search.

Try it
Race date in YYYYMMDD format (e.g., 20250608).
Race number within the meeting (1-11 typical).
api.parse.bot/scraper/df13f774-1140-45fb-af1f-1861fa428708/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/df13f774-1140-45fb-af1f-1861fa428708/get_race_results?date=20250608&race_no=1' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace racing-hkjc-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

from parse_apis.hkjc_racing_api import HKJC

hkjc = HKJC()

# Search for horses by name
for horse_summary in hkjc.horses.search(query="GOLDEN"):
    print(horse_summary.name, horse_summary.horse_id)
    break

# Get full horse profile by ID
horse = hkjc.horses.get(horse_id="HK_2024_K566")
print(horse.name, horse.trainer, horse.sire, horse.dam)

# Navigate from search result to full detail
for summary in hkjc.horses.search(query="RUBY"):
    full = summary.details()
    print(full.name, full.owner, full.current_rating)
    break

# Get race results for a specific date and race number
race = hkjc.raceresults.get(date="20250608", race_no=1)
print(race.date, race.race_no, race.venue)
for finisher in race.finishers:
    print(finisher.placing, finisher.horse_name, finisher.jockey, finisher.finish_time)

# List jockey rankings
for jockey in hkjc.jockeys.list():
    print(jockey.name, jockey.wins, jockey.stakes_won)

# List trainer rankings
for trainer in hkjc.trainers.list():
    print(trainer.name, trainer.wins, trainer.stakes_won)

# List upcoming fixtures
for fixture in hkjc.fixtures.list():
    print(fixture.event_title, fixture.event_venue, fixture.start_date)
All endpoints · 6 totalmissing one? ·

Retrieve full race results for a specific race meeting date and race number. Returns finishers with placings, times, odds, and dividends. Metadata fields (venue, class, distance, going, course) are extracted when available from the page structure.

Input
ParamTypeDescription
daterequiredstringRace date in YYYYMMDD format (e.g., 20250608).
race_nointegerRace number within the meeting (1-11 typical).
Response
{
  "type": "object",
  "fields": {
    "date": "string, the requested date in YYYYMMDD format",
    "class": "string, race class (may be empty)",
    "going": "string, track condition (may be empty)",
    "venue": "string, race venue (may be empty)",
    "course": "string, course type (may be empty)",
    "race_no": "integer, the race number",
    "distance": "string, race distance in meters (may be empty)",
    "dividends": "array of dividend objects with pool, winning_combination, dividend",
    "finishers": "array of finisher objects with placing, horse_no, horse_name, horse_id, jockey, trainer, actual_wt, declar_wt, draw, lbw, running_pos, finish_time, win_odds"
  },
  "sample": {
    "data": {
      "date": "20250608",
      "class": "",
      "going": "",
      "venue": "",
      "course": "",
      "race_no": 1,
      "distance": "",
      "dividends": [],
      "finishers": [
        {
          "lbw": "---",
          "draw": "8",
          "jockey": "P N Wong",
          "placing": "1",
          "trainer": "K L Man",
          "horse_id": "HK_2022_H347",
          "horse_no": "8",
          "win_odds": "5.2",
          "actual_wt": "119",
          "declar_wt": "1164",
          "horse_name": "RUBY SAILING",
          "finish_time": "1:09.19",
          "running_pos": "1 1 1"
        }
      ],
      "race_name": ""
    },
    "status": "success"
  }
}

About the HKJC API

Race Results and Dividends

The get_race_results endpoint accepts a date parameter in YYYYMMDD format and an optional race_no integer. It returns a finishers array where each entry includes placing, horse_no, horse_name, horse_id, jockey, trainer, actual_wt, declar_wt, draw, and lbw (lengths behind winner). A dividends array covers all pari-mutuel pools with pool, winning_combination, and dividend fields. Note that metadata fields — venue, class, distance, going, and course — may be empty depending on the specific race page structure.

Horse Profiles and Search

The get_horse_profile endpoint takes a horse_id in the format HK_2020_E436 and returns pedigree data (sire, dam, dam_sire), colour, sex, age, owner, and trainer. Horse IDs are obtainable from search_horses, which accepts a partial or full horse name and returns matching horses — both active and retired — with each horse's horse_id, name, and url. This makes search_horses the natural entry point for building a profile lookup workflow.

Rankings and Fixtures

get_jockey_ranking and get_trainer_ranking return current-season standings with no input parameters required. Each entry in the rankings array includes Name, Id, First (total wins), and StakesWon. The get_race_meeting_fixtures endpoint returns an eventList of upcoming local and overseas race days, with each event carrying eventTitle, eventVenue, startDate as a Unix millisecond timestamp, and category.

Reliability & maintenanceVerified

The HKJC API is a managed, monitored endpoint for racing.hkjc.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when racing.hkjc.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official racing.hkjc.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
1d ago
Latest check
6/6 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Track dividend payouts for specific pools by date and race number using the dividends array from get_race_results.
  • Build a horse pedigree database by combining search_horses queries with get_horse_profile lookups.
  • Monitor jockey season performance trends using First (wins) and StakesWon from get_jockey_ranking.
  • Display an upcoming race calendar by parsing startDate Unix timestamps from get_race_meeting_fixtures.
  • Compare trainer standings over the course of a season using data from get_trainer_ranking.
  • Identify retiring or historical horses by searching partial names via search_horses and checking profile fields.
  • Correlate draw positions and finishing places for handicapping analysis using draw and placing fields in get_race_results.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does the Hong Kong Jockey Club offer an official developer API?+
HKJC does not publish a public developer API. Their racing data is accessible via the racing.hkjc.com website but there is no documented API with developer keys or official documentation available to the public.
What does get_race_results return when metadata fields like venue or class are empty?+
The venue, class, distance, going, and course fields are returned as empty strings when the underlying race page does not expose that information in a parseable structure. The finishers and dividends arrays are the consistently populated fields. If you need metadata for a specific race, cross-referencing the date and race_no inputs with fixture data from get_race_meeting_fixtures can help fill context gaps.
Does the API return individual race-by-race form history or past performance records for a horse?+
Not currently. get_horse_profile returns pedigree and ownership data but does not include a historical form record or race-by-race performance table. The API covers profile fields, season-level rankings, and meeting-level results. You can fork this API on Parse and revise it to add an endpoint targeting individual horse form history pages.
Are overseas or simulcast races covered by get_race_results?+
The get_race_results endpoint is scoped to HKJC-run race meetings identified by date and race number. get_race_meeting_fixtures does include overseas events in its eventList via the category field, but result retrieval for non-HKJC-hosted overseas races is not currently supported. You can fork this API on Parse and revise it to target overseas result pages if that coverage is needed.
Can I retrieve standings for a prior season rather than the current season?+
The get_jockey_ranking and get_trainer_ranking endpoints return current-season standings only and do not accept season or date parameters. Historical season rankings are not currently covered. You can fork this API on Parse and revise it to add season-scoped ranking endpoints.
Page content last updated . Spec covers 6 endpoints from racing.hkjc.com.
Related APIs in SportsSee all →
racingpost.com API
Access comprehensive horse racing data from Racing Post, including daily racecards, meeting schedules, race results, and detailed horse profiles with form history, stats, and pedigree.
equibase.com API
Access comprehensive horse racing data from Equibase, including horse profiles, historical race results, track entries, post times, speed figures, and leader statistics for horses, jockeys, trainers, and owners.
bloodhorse.com API
Get comprehensive horse racing information including race results, stakes entries, horse profiles, and the latest news from BloodHorse.com. Search racing data, view detailed race information, and discover current racing leaders all in one place.
atg.se API
Access comprehensive horse racing data from ATG.se, including race calendars, detailed race information, horse profiles, starting lineups, and results. Retrieve up-to-date information on races, horses, drivers, betting pools, and outcomes.
tab.com.au API
Access live horse racing meetings, race cards, fixed odds, and results from TAB Australia. Retrieve real-time sports betting information and racing data, including upcoming races, current odds, and historical race outcomes.
neds.com.au API
Get up-to-date horse racing information from Neds, including upcoming races, event details, and past results. View which races are next to jump and access comprehensive race data all in one place.
cyclocross24.com API
Track cyclocross races and riders with access to current race calendars, detailed results, athlete profiles, and UCI rankings all in one place. Search for specific riders, monitor live standings, and stay updated on competitive rankings throughout the season.
brisnet.com API
Access horse racing news, track information, race results, and expert daily picks from Brisnet, plus search detailed information about specific horses. Stay informed on racing events and make data-driven betting decisions with current news articles, results indices, and curated pick recommendations.