18+ Only  |  Gambling can be addictive — please gamble responsibly  |  Gambling Help: 1800 858 858  |  GambleAware

Harness racing · Australia and New Zealand

Harness racing odds API

Australian and New Zealand harness racing on the same endpoints as the thoroughbreds and greyhounds, filtered with categories=harness. Every served bookmaker's win and place price per runner, results with dividends, a delta feed for live boards and a closing-line archive behind it.

Measured coverage, harness

294AU harness races served, last 7 days
51NZ harness races served, same window
14Australian bookmakers on racing
14Median bookmakers per AU race

Measured 18 September 2026 on the public coverage-report.json, recomputed from the production store every half hour. Customer-served figures; the withheld reference books are excluded.

Live harness odds

/v1/racing/next-to-go?categories=harness returns the next harness races with every served bookmaker's win and place price per runner, scratchings and the age of each quote. Pass num_races=200 for every priced harness race in one call, or country=AU / country=NZ to split the two nations.

The panel is TAB, TABtouch, BetDeluxe, Betr, PointsBet, BetRight, Palmerbet, NextBet (formerly PlayUp), Unibet, Ladbrokes, Neds, Sportsbet, BetGold and BoostBet, measured on the public coverage report over the trailing 7 days to 18 September 2026. The same categories=harness filter works on /v1/racing/best-odds, /v1/racing/changes, /v1/racing/movers and /v1/racing/events.

Betfair Exchange prices are ingested for reference and are not included in customer responses.

Results: settled fixed prices, no official SP

/v1/racing/results?categories=harness returns finishing order, each placegetter's settled win and place price from the source bookmaker, dividends, scratchings and deductions. status moves from interim to final once placings have held for 30 minutes.

Harness racing has no official starting price in this API. The settled price on a result is the bookmaker's own fixed price, and the response says which book it came from. Model against that, or against the closing line from the archive.

Price movement and the archive

Every price move in the final 60 minutes before the jump is readable per race on /v1/racing/price-history for 45 days. The closing line and complete price path of every harness race are archived permanently from 4 August 2026 on /v1/racing/closing-lines and /v1/racing/price-paths with category=harness, on the Standard plan and above.

Form endpoints are thoroughbred (Racing Australia) and greyhound (Topaz) only; there is no harness form endpoint.

Building a harness board

Trotting and pacing races are both category=harness; there is no gait field. A live board is three calls: /v1/racing/events for the card, /v1/racing/changes polled with the previous server_time for the prices that moved, and /v1/racing/best-odds when you need market_percentage and the per-runner spread. Read books_quoting_win and books_quoting_place separately: a book can quote the win and skip the place on the same runner.

Endpoints on this page

EndpointPurposeCredits
/v1/racing/next-to-goNext harness races, every book's price per runner2 credits
/v1/racing/best-oddsBest price per runner across books3 credits
/v1/racing/changesDelta feed since a timestamp2 credits
/v1/racing/resultsSettled results with dividends2 credits
/v1/racing/closing-linesPermanent closing-line archive, harness rows5 credits or 20 credits

Credit costs are read from the API's own source at render time. The full table, with plan gates, is on API pricing; parameters, status codes and response schemas are in the API reference.

Example request — 2 credits

curl

curl 'https://api.puntersedge.online/v1/racing/results?categories=harness&status=final&hours_back=24' \
  -H 'X-API-Key: YOUR_API_KEY'

Python

import requests

r = requests.get(
    "https://api.puntersedge.online/v1/racing/results",
    params={"categories": "harness", "status": "final", "hours_back": 24},
    headers={"X-API-Key": "YOUR_API_KEY"}, timeout=15)
r.raise_for_status()
for race in r.json():
    if race["status"] != "final":        # interim placings can still change on protest
        continue
    print(race["venue"], "R%s" % race["race_number"], race["placings"])

Results cost 2 credits per call; live odds on /v1/racing/next-to-go cost 2 credits.

Full parameter table, status codes and response schema: API reference →. Keys go in the X-API-Key header — see Authentication.

FAQ

Which countries' harness racing is covered?

Australia and New Zealand, on the same endpoints, split with country=AU or country=NZ. Over the trailing 7 days the coverage report counted 294 AU and 51 NZ harness races served.

Is there an official starting price for harness races?

No. Results carry the source bookmaker's settled fixed price per placegetter and the dividends; the API does not publish or synthesise an official SP.

Is there harness form data?

No. Form endpoints exist for thoroughbreds (Racing Australia) and greyhounds (Topaz). Harness form is a feature request, not a shipped endpoint.

How do I get every harness race for the day?

/v1/racing/events?categories=harness&hours_ahead=24 lists the card before any book prices it, for 1 credit a call. /v1/racing/next-to-go?categories=harness&num_races=200 returns every race currently carrying odds.

Start with a free API key

1,500 credits a month, no card. The same data as every paid plan. Move to Standard when a polling product needs the volume. Past that the tiers are about rights, not size: personal use on free, hobby and standard; display with attribution on plus; commercial use on business and unlimited; redistribution on platform.

This site contains wagering-related analysis and is intended for Australian users aged 18+. Gambling involves risk. Please gamble responsibly.