Greyhound Racing API for racecards, runners and odds

Compare greyhound runners and bookmaker win and place prices, then keep the same race current through REST, SSE or WebSocket updates.

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

GET /v1/racing/events/{event_id}/odds
{
  "event_id": "GREYHOUND_RACE_ID",
  "as_of_ts_ms": 1788411600000,
  "items": [
    {
      "bookmaker_name": "sportsbet",
      "payload": { "runners": [
        { "runner_number": "1", "runner_name": "Runner One", "win_odds": 3.40, "place_odds": 1.65 },
        { "runner_number": "2", "runner_name": "Runner Two", "win_odds": 4.20, "place_odds": 1.90 }
      ]}
    },
    {
      "bookmaker_name": "ladbrokes",
      "payload": { "runners": [
        { "runner_number": "1", "runner_name": "Runner One", "win_odds": 3.55, "place_odds": 1.70 },
        { "runner_number": "2", "runner_name": "Runner Two", "win_odds": 4.00, "place_odds": 1.85 }
      ]}
    }
  ],
  "resume": "1788411600000-0"
}
Canonical greyhound filter Use race_type=greyhound-racing to keep the event list scoped to greyhound meetings.
Runner-level prices Read runner numbers and names beside bookmaker win_odds and place_odds fields.
Snapshot and streams Load a timestamped snapshot, then continue with SSE or WebSocket price updates.

Greyhound racing bookmakers

Eight active racing integrations use the same runner-level odds model. The odds snapshot tells you which bookmakers are present on that race.

View racing responses
  • Sportsbet
  • Ladbrokes
  • PlayUp
  • PointsBet
  • Dabble
  • BetRight
  • Betr
  • Unibet

Country filters

Filter the event catalogue first. Confirm bookmaker coverage from items[].bookmaker_name on the returned race.

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

Greyhound racecard and odds fields

Build meeting lists, racecards and bookmaker comparisons from stable event and runner identifiers.

Data groupAPI fieldsWhat it covers
Race identity event_idrace_venuerace_number A stable race reference with the track and numbered race on the meeting card.
Schedule and state race_start_timerace_countryrace_statestatus Unix start time, country, state and current event status for sorting and display.
Runner runner_numberrunner_namerunner_status Declared greyhounds with stable race numbers, names and a supplied runner status.
Scratchings and removals is_scratchedremoval_dateadjustment_factor Explicit removal fields when the source supplies a scratching or price adjustment.
Bookmaker price bookmaker_namewin_oddsplace_odds Decimal win and place prices grouped by the bookmaker that supplied them.
Freshness and continuity as_of_ts_msresume Snapshot time and a continuation token for reconnecting to supported live updates.

Use the canonical race_type=greyhound-racing value. Legacy aliases such as greyhound remain normalized for backward compatibility.

What changes before the jump

A race is not one static response. Keep the event, runners, prices and stream position tied together as the start approaches.

Read the racing stream contract
  1. Discover the race

    Read race_start_time, race_venue and status from the event list. Keep event_id as the join key for every later request.

    event_id
  2. Load the first prices

    Request one odds snapshot and group items by bookmaker_name. Match runners on runner_number inside the same event.

    as_of_ts_ms
  3. Handle a scratching

    When supplied, use runner_status, is_scratched and removal_date. Do not infer a scratching from one missing price.

    is_scratched
  4. Resume or resync

    Store the latest resume token. If the stream sends resync, reload the REST snapshot before applying more deltas.

    resume

How to use the greyhound racing API

Start with the greyhound event list, keep each runner tied to its event ID, and add streams only after the initial odds snapshot is loaded.

  1. Discover upcoming greyhound races

    Filter the racing catalog to upcoming greyhound events and retain the event_id you want to follow. GET /v1/racing/events?race_type=greyhound-racing&status=fetching&limit=25

  2. Load the racecard

    Read the venue, race number, distance, scheduled start and active runner list before displaying a market. GET /v1/racing/events/{event_id}

  3. Request current bookmaker odds

    Receive the available bookmaker payloads, runner-level win and place prices, snapshot time and resume token. GET /v1/racing/events/{event_id}/odds

  4. Continue from the snapshot

    Use the resume token for supported updates, and reload the REST snapshot whenever the stream requests a resync. 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

Greyhound Racing API FAQs

Practical answers about race filters, returned fields, bookmakers, regions and live price updates.

How do I match the same greyhound across bookmakers?

Keep every runner inside its event_id and match bookmaker rows on runner_number. Use runner_name for display and validation, not as the primary join key.

How do I request only greyhound races?

Call GET /v1/racing/events with the canonical race_type=greyhound-racing value. Legacy aliases such as greyhound are normalized for backward compatibility. You can narrow the result further with race_country, race_state, status, start_from, start_to, cursor and limit.

How should I handle a scratched greyhound?

Use runner_status, is_scratched and removal_date when those fields are supplied. Do not mark a runner as scratched only because one bookmaker omitted a price.

Which bookmakers can appear on greyhound races?

The active racing integrations are Sportsbet, Ladbrokes, PlayUp, PointsBet, Dabble, BetRight, Betr and Unibet. Each odds response identifies the bookmakers available for that specific race.

Can I stream greyhound racing odds?

Yes. Load the event odds snapshot first, then use the matching SSE or WebSocket route and continue from the latest resume token. Reload the snapshot after a resync event.

Can this API place greyhound bets?

No. odds-api provides racing event and price data only. It does not open bookmaker accounts, place wagers or provide betting advice.

Start using the greyhound racing API

Choose a plan, find a covered greyhound event and request its current runner odds.

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