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

Thoroughbred and harness · New Zealand

New Zealand racing odds API

NZ thoroughbred and harness racing, priced by the same Australian bookmaker panel as the domestic card and served on the same endpoints with country=NZ. The feed carries no New Zealand greyhound racing, and this page says so up front rather than in a footnote.

Measured coverage, New Zealand

92NZ races served, last 7 days
12Bookmakers quoting NZ racing
12Median bookmakers per NZ race
41 / 51Thoroughbred / harness races in the window

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.

What is covered, measured

The public coverage report measures New Zealand exactly as it measures Australia: same window, same query, same excluded bookmakers, country = 'NZ'. Over the trailing 7 days to 18 September 2026 it counted 41 thoroughbred and 51 harness races served to customers.

The books quoting NZ are BetDeluxe, Betr, BetRight, Ladbrokes, Neds, Palmerbet, NextBet (formerly PlayUp), PointsBet, Sportsbet, TAB, TABtouch and Unibet. Every book quoting NZ also quotes Australia, so a product built on the AU panel gets NZ from the same keys.

NZ does not race every day. A day with no NZ row on the report is a day with no NZ meeting, not a gap in capture.

No NZ greyhounds

The racing codes on the report are measured rather than asserted, and no New Zealand greyhound race has appeared in the store. If your product needs NZ greyhounds, this API does not serve them. Australian greyhounds are covered on the greyhound racing API.

Using the endpoints for NZ

Add country=NZ to /v1/racing/next-to-go, /v1/racing/events, /v1/racing/best-odds, /v1/racing/changes, /v1/racing/movers and /v1/racing/results. Pass AU,NZ for both. Most of a card is unresolved to a country until the meeting is confirmed, so pair the filter with include_unresolved=true on the schedule endpoints if you must see a race before its country is stamped.

Results carry the source bookmaker's own settled fixed price per placegetter and the dividends. There is no official starting price in the response for NZ or harness racing, and the API does not synthesise one.

The archive endpoints take the same filter: /v1/racing/closing-lines?country=NZ and /v1/racing/price-paths?country=NZ return the permanent closing-line and price-path archive from 4 August 2026, on the Standard plan and above.

Every start_time is UTC, on NZ and AU races alike; the API never localises, so convert to Pacific/Auckland for display. On a thinner NZ board set min_books on /v1/racing/movers to what the measured NZ panel supports, and read books_quoting_win per runner on /v1/racing/best-odds before sizing off a best price.

Endpoints on this page

EndpointPurposeCredits
/v1/racing/next-to-goNext NZ races with every book's price (country=NZ)2 credits
/v1/racing/eventsThe NZ card, up to 24 hours ahead1 credit
/v1/racing/best-oddsBest price per runner across books3 credits
/v1/racing/resultsSettled NZ results with dividends2 credits
/v1/racing/closing-linesPermanent closing-line archive, NZ 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/next-to-go?country=NZ&num_races=5' \
  -H 'X-API-Key: YOUR_API_KEY'

Python

import requests

r = requests.get(
    "https://api.puntersedge.online/v1/racing/next-to-go",
    params={"country": "NZ", "num_races": 5},
    headers={"X-API-Key": "YOUR_API_KEY"}, timeout=15)
r.raise_for_status()
for race in r.json():
    print(race["venue"], "R%s" % race["race_number"], race["start_time"])
    for runner in race["runners"]:
        priced = [b for b in runner["bookmakers"] if b.get("win_price")]
        if priced:
            best = max(priced, key=lambda b: b["win_price"])
            print("  ", runner["number"], runner["name"], best["key"], best["win_price"])

2 credits per call, the same as an Australian request. An empty list outside NZ racing hours is the correct answer, and it is still billed.

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

FAQ

Which NZ racing codes does the API cover?

Thoroughbred and harness. No New Zealand greyhound race has appeared in the feed; the coverage report measures the codes rather than listing them.

Are NZ prices from NZ bookmakers?

No. The panel is BetDeluxe, Betr, BetRight, Ladbrokes, Neds, Palmerbet, NextBet (formerly PlayUp), PointsBet, Sportsbet, TAB, TABtouch and Unibet — Australian-licensed books that price NZ racing. NZ TAB is not in the feed.

Is there an official SP for NZ races?

No. Results carry each bookmaker's settled fixed price and the dividends. The same is true of harness racing in both countries.

Do NZ races have price history?

Yes. The final 60 minutes before the jump are captured per book for every NZ race, and the closing line and price path are archived permanently from 4 August 2026, readable with country=NZ on the archive endpoints.

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.