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

A TypeScript odds API client whose types cannot drift.

Australian and New Zealand racing and Australian sports odds, with every response type generated from the live OpenAPI document rather than hand-written.

Free tier available. REST/JSON odds data for informational and analytical use. Built around Australian bookmaker, sports and racing workflows.

14Racing bookmakers
Sports + racingCoverage
REST/JSONDeveloper ready
FreeTest key

Why developers choose PuntersEdge.

A focused API layer for Australian bookmaker prices, racing data, sport-specific use cases and practical developer workflows.

Full IDE autocomplete

Every endpoint, parameter and response field is typed, so the editor knows what a next-to-go race contains without you reading the reference first.

Errors you can branch on

AuthError, CreditsExhaustedError, RateLimitError, ValidationError, ServerError and NetworkError, each carrying what you need to act — including the retry delay the server asked for.

No hidden retries

Odds are time-sensitive. The client never retries silently, because a transparent retry can hand back a price recorded before a move you would have acted on.

Types the compiler can actually trust

Most odds API wrappers hand-type their response interfaces. That guarantees drift the first time the API ships a field, and a TypeScript type that lies is worse than no type at all — it type-checks the wrong thing, confidently, and the mismatch surfaces at runtime in production rather than in your editor.

The official PuntersEdge client generates its types from the API's own OpenAPI document. A race carries twenty-odd fields plus nested runners, per-bookmaker quotes and scratchings, and every one of them is described by the schema the server publishes. A field marked optional in the types is a field the API declares optional — because some bookmakers genuinely do not report a barrier, not because the typing was rushed.

Errors are typed too, one class per status, because they need different answers. A 402 means the month's credits are spent and backing off will never clear it. A 429 means wait the stated seconds and repeat the identical call. A 422 means the request is wrong and will fail the same way forever. Collapsing those into one Error pushes the branch into a regex over the message.

  • Types generated from the live OpenAPI schema
  • A typed error class per status code
  • Credit balance read off every response
  • Zero dependencies, ESM and CommonJS
  • Free tier, no credit card

Example API calls

npm install puntersedge

import { PuntersEdge, RateLimitError } from "puntersedge";

const pe = new PuntersEdge({ apiKey: process.env.PUNTERSEDGE_API_KEY });

// Racing is its own endpoint family — there is NO sport_key of "horse-racing".
const races = await pe.racing.nextToGo({ numRaces: 5, categories: "horse" });

for (const race of races) {
  const best = race.runners
    .flatMap(r => r.bookmakers.map(b => ({ runner: r.name, book: b.key, price: b.win_price })))
    .filter(q => q.price)
    .sort((a, b) => b.price - a.price)[0];

  console.log(`${race.venue} R${race.race_number}: ${best.runner} @ ${best.price} (${best.book})`);
}

// The balance came back on the response above — checking it costs nothing.
console.log(pe.credits?.remaining, "credits left");

curl "https://api.puntersedge.online/v1/racing/next-to-go?num_races=5" \
  -H "X-API-Key: YOUR_API_KEY"

What you can build with it.

Start with a practical use case, then test the matching endpoint with a free API key.

Odds comparison app

Compare prices across supported Australian bookmakers and surface best available odds.

Sports dashboard

Track AFL, NRL, NBA, tennis, cricket and football prices from one data layer.

Racing widget

Show next-to-go racing markets for horse, greyhound and harness workflows.

Model pipeline

Feed price data into EV calculators, CLV tracking and betting model research.

Australian odds API fit checklist.

The buying decision is simple: does the API cover the local bookmakers, sports and racing workflows your product actually needs?

NeedPuntersEdge focusWhy it matters
AU bookmakers14 on racing; 6 on sportsBetter fit for Australian odds comparison products — and the two panels differ, so it is worth checking which one your product needs.
Local sportsAFL, NRL, NBA, tennis, football, cricketTargets the sports Australian users search for.
RacingHorse, greyhound and harness next-to-go workflowsCritical for Australian betting apps and dashboards.
Developer onboardingExamples, pricing, coverage and a free keyGet from landing page to first call fast.

Common API questions.

Is there a free API key?

Yes. Use the API platform signup form to request a free key and test the sports, racing and best-odds endpoints.

How is PuntersEdge different from broad global odds APIs?

The positioning is Australian-first: local bookmaker intent, AFL/NRL pages, racing workflows and a funnel designed for Australian odds data buyers.

Can I use the data in a commercial dashboard?

Yes, subject to plan terms and data-use limits. Start free, confirm fit, then upgrade for higher credit limits.

Does the API place bets?

No. It provides odds data for informational and analytical products. It is not a gambling execution API.

Start building with Australian odds data.

Get a free API key, test the endpoints and upgrade when your product needs more credits.

18+ context. Data is for informational and analytical use only. Do not use for unlawful betting operations.
This site contains wagering-related analysis and is intended for Australian users aged 18+. Gambling involves risk. Please gamble responsibly.