Harness-only discovery
Use race_type=harness-racing to keep the schedule clear of thoroughbred and greyhound cards.
Track harness starters, driver and trainer metadata, withdrawals and bookmaker prices through one racecard, snapshot and stream model.
| Runner | ||
|---|---|---|
3Pacer ThreeDriver ThreeTrainer Three |
2.90Win1.50Place | 3.05Win1.55Place |
8Trotter EightDriver EightTrainer Eight |
6.00Win2.25Place | 5.75Win2.20Place |
items[].runners[]Same runner. Two bookmakers.GET /v1/racing/events/{event_id}/odds
Example compact response
{
"event_id": "HARNESS_RACE_ID",
"as_of_ts_ms": 1788411600000,
"items": [
{
"bookmaker_name": "sportsbet",
"runners": [
{ "runner_number": "3", "runner_name": "Pacer Three", "jockey_name": "Driver Three", "trainer_name": "Trainer Three", "win_odds": 2.90, "place_odds": 1.50 },
{ "runner_number": "8", "runner_name": "Trotter Eight", "jockey_name": "Driver Eight", "trainer_name": "Trainer Eight", "win_odds": 6.00, "place_odds": 2.25 }
]
},
{
"bookmaker_name": "ladbrokes",
"runners": [
{ "runner_number": "3", "runner_name": "Pacer Three", "jockey_name": "Driver Three", "trainer_name": "Trainer Three", "win_odds": 3.05, "place_odds": 1.55 },
{ "runner_number": "8", "runner_name": "Trotter Eight", "jockey_name": "Driver Eight", "trainer_name": "Trainer Eight", "win_odds": 5.75, "place_odds": 2.20 }
]
}
],
"resume": "1788411600000-0"
}
Use race_type=harness-racing to keep the schedule clear of thoroughbred and greyhound cards.
Read each starter by number with driver and trainer metadata when those fields are supplied.
Start with a bookmaker snapshot, then continue supported win and place price changes from resume.
Build one price board from the bookmaker items returned for that harness race and one stable starter map.
Filter the catalogue by jurisdiction and start window. Use the returned event list as the source of truth for scheduled harness meetings.
| Catalogue | Code | Request filter |
|---|---|---|
| Australia | AU | race_country=AU |
| New Zealand | NZ | race_country=NZ |
| Great Britain | GB | race_country=GB |
| Ireland | IE | race_country=IE |
Connect meeting details, starter identities, withdrawals and bookmaker prices without flattening separate racecards together.
| Data group | API fields | What it covers |
|---|---|---|
| Meeting and race | event_idrace_venuerace_number |
The stable harness race reference, meeting venue and numbered race on the card. |
| Schedule and distance | race_start_timerace_distancerace_countrystatus |
Unix start time, advertised trip, jurisdiction and current schedule status. |
| Starter | runner_numberrunner_namerunner_status |
The numbered harness starter, its display name and supplied participation status. |
| Driver and trainer | jockey_nametrainer_name |
Connection metadata when supplied. Harness driver names are normalized into jockey_name in the shared racing model. |
| Withdrawals and prices | is_scratchedremoval_datebookmaker_namewin_oddsplace_odds |
Explicit withdrawal details and each bookmaker's current decimal win and place prices. |
| Update position | as_of_ts_msupdated_at_tsresume |
Snapshot time, optional source timestamp and the continuation point for supported SSE or WebSocket changes. |
Use the canonical race_type=harness-racing value. The legacy harness alias remains normalized for backward compatibility.
A late withdrawal or price move should update the existing starter, not create another version of the race.
Query one jurisdiction and start window. Keep the event_id, venue and race number returned by the schedule.
event_id
Index starters by runner_number inside the event. Add the supplied runner, driver and trainer names as display metadata.
runner_number
Change starter state only from runner_status, is_scratched or removal_date. One absent bookmaker quote is not a withdrawal.
runner_status
Apply supported stream changes to the same bookmaker and starter. Reload the snapshot after resync to restore a complete board.
resume
Load one harness card, map its numbered starters, then attach bookmaker prices and supported changes to those same keys.
Request scheduled harness events and retain the event ID, jurisdiction, meeting and advertised start time.
GET /v1/racing/events?race_type=harness-racing&status=fetching&limit=25
Read the current field, race distance and supplied driver or trainer metadata before building the odds board.
GET /v1/racing/events/{event_id}
Group prices by bookmaker_name and match each returned runner to the racecard through runner_number.
GET /v1/racing/events/{event_id}/odds
Continue from resume for supported pre-jump changes, and reload the REST snapshot whenever resync is sent.
SSE or WebSocket
Choose a monthly plan based on request volume, rate limits, and support.
Answers about harness filters, starter matching, driver fields, withdrawals, countries and streaming updates.
Use race_type=harness-racing on GET /v1/racing/events. The shorter harness alias is normalized for compatibility, but harness-racing is the canonical value for new code.
Keep all starters inside the same event_id and join bookmaker prices on runner_number. Names help validate the join but should not replace the numbered race key.
When the source supplies a rider or driver, the shared compact racing model currently exposes that value through jockey_name. Treat it as optional connection metadata.
Use runner_status, is_scratched and removal_date when supplied. Do not remove a starter merely because one bookmaker temporarily has no price.
Yes. Load the odds snapshot first, then use its SSE or WebSocket route and latest resume token for supported updates. Reload after a resync event.
The racing catalogue accepts AU, NZ, GB and IE country filters. Query the required time window to see which harness meetings are currently scheduled.
Choose a plan, find a covered harness race and request its current starter prices.