Harness racing data

Harness Racing API for fields and runner odds

Track harness starters, driver and trainer metadata, withdrawals and bookmaker prices through one racecard, snapshot and stream model.

Paid plans from $30/month. No surprise charges.

Harness racing dataWin & place
Example prices
Example decimal win and place odds for the same runners at two bookmakers
RunnerSportsbetLadbrokes
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.
REST snapshotSSE / WebSocket
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"
}

Harness-only discovery

Use race_type=harness-racing to keep the schedule clear of thoroughbred and greyhound cards.

Starter and driver context

Read each starter by number with driver and trainer metadata when those fields are supplied.

Price-board continuity

Start with a bookmaker snapshot, then continue supported win and place price changes from resume.

Harness racing bookmakers

Build one price board from the bookmaker items returned for that harness race and one stable starter map.

Inspect harness racing responses
  • Sportsbet
  • Ladbrokes
  • PlayUp
  • PointsBet
  • Dabble
  • BetRight
  • Betr
  • Unibet

Harness country filters

Filter the catalogue by jurisdiction and start window. Use the returned event list as the source of truth for scheduled harness meetings.

CatalogueCodeRequest filter
AustraliaAUrace_country=AU
New ZealandNZrace_country=NZ
Great BritainGBrace_country=GB
IrelandIErace_country=IE

Harness racecard and odds fields

Connect meeting details, starter identities, withdrawals and bookmaker prices without flattening separate racecards together.

Data groupAPI fieldsWhat 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.

Keep the harness board aligned

A late withdrawal or price move should update the existing starter, not create another version of the race.

Read the harness update contract
  1. Find the harness card

    Query one jurisdiction and start window. Keep the event_id, venue and race number returned by the schedule.

    event_id
  2. Create the starter map

    Index starters by runner_number inside the event. Add the supplied runner, driver and trainer names as display metadata.

    runner_number
  3. Apply a withdrawal

    Change starter state only from runner_status, is_scratched or removal_date. One absent bookmaker quote is not a withdrawal.

    runner_status
  4. Update existing prices

    Apply supported stream changes to the same bookmaker and starter. Reload the snapshot after resync to restore a complete board.

    resume

How to use the harness racing API

Load one harness card, map its numbered starters, then attach bookmaker prices and supported changes to those same keys.

  1. Discover upcoming harness races

    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
  2. Load the starter list

    Read the current field, race distance and supplied driver or trainer metadata before building the odds board.

    GET /v1/racing/events/{event_id}
  3. Attach bookmaker prices

    Group prices by bookmaker_name and match each returned runner to the racecard through runner_number.

    GET /v1/racing/events/{event_id}/odds
  4. Maintain the live board

    Continue from resume for supported pre-jump changes, and reload the REST snapshot whenever resync is sent.

    SSE or WebSocket

Odds API Pricing

Choose a monthly plan based on request volume, rate limits, and support.

Best for first builds

Starter

50K
$30 USD / month

Odds

Requests
50K / month
Streams
150 stream-hours / month
Stream connections
1 concurrent
  • All Bookmakers
  • All Markets
  • 60 requests/min
  • Self-serve

Bets

  • Positive EV and arbitrage bets
  • Up to 2 bookmakers
Best value

Builder

2M
$90 USD / month

Odds

Requests
2M / month
Streams
1,500 stream-hours / month
Stream connections
8 concurrent
  • All Bookmakers
  • All Markets
  • 300 requests/min
  • Email support

Bets

  • Positive EV and arbitrage bets
  • Up to 6 bookmakers

Live

20M
$250 USD / month

Odds

Requests
20M / month
Streams
6,000 stream-hours / month
Stream connections
25 concurrent
  • All Bookmakers
  • All Markets
  • 600 requests/min
  • Priority email

Bets

  • Positive EV and arbitrage bets
  • Up to 15 bookmakers

Pro

75M
$500 USD / month

Odds

Requests
75M / month
Streams
20,000 stream-hours / month
Stream connections
75 concurrent
  • All Bookmakers
  • All Markets
  • 1,200 requests/min
  • Priority email plus onboarding

Bets

  • Positive EV and arbitrage bets
  • Up to 50 bookmakers

Scale

Custom
Custom

Odds

Requests
100M+ typical
Streams
Custom
Stream connections
Custom
  • All Bookmakers
  • All Markets
  • Custom
  • Dedicated support

Bets

  • Positive EV and arbitrage bets
  • Custom bookmaker access

Harness Racing API FAQs

Answers about harness filters, starter matching, driver fields, withdrawals, countries and streaming updates.

How do I request only harness races?

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.

How do I match a harness starter across bookmakers?

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.

Which field contains the harness driver?

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.

How should I process a late harness withdrawal?

Use runner_status, is_scratched and removal_date when supplied. Do not remove a starter merely because one bookmaker temporarily has no price.

Can I stream harness racing odds?

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.

Which countries can I filter for harness racing?

The racing catalogue accepts AU, NZ, GB and IE country filters. Query the required time window to see which harness meetings are currently scheduled.

Start using the harness racing API

Choose a plan, find a covered harness race and request its current starter prices.

Paid plans from $30/month. No surprise charges.