Starter
50KOdds
- 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
Compare greyhound runners and bookmaker win and place prices, then keep the same race current through REST, SSE or WebSocket updates.
{
"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"
}
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 responsesFilter the event catalogue first. Confirm bookmaker coverage from items[].bookmaker_name on the returned race.
| Catalogue | Code | Request filter |
|---|---|---|
| Australia | AU | race_country=AU |
| New Zealand | NZ | race_country=NZ |
| Great Britain | GB | race_country=GB |
| Ireland | IE | race_country=IE |
Build meeting lists, racecards and bookmaker comparisons from stable event and runner identifiers.
| Data group | API fields | What 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.
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 contractRead race_start_time, race_venue and status from the event list. Keep event_id as the join key for every later request.
event_id
Request one odds snapshot and group items by bookmaker_name. Match runners on runner_number inside the same event.
as_of_ts_ms
When supplied, use runner_status, is_scratched and removal_date. Do not infer a scratching from one missing price.
is_scratched
Store the latest resume token. If the stream sends resync, reload the REST snapshot before applying more deltas.
resume
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.
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
Read the venue, race number, distance, scheduled start and active runner list before displaying a market. GET /v1/racing/events/{event_id}
Receive the available bookmaker payloads, runner-level win and place prices, snapshot time and resume token. GET /v1/racing/events/{event_id}/odds
Use the resume token for supported updates, and reload the REST snapshot whenever the stream requests a resync. SSE or WebSocket
Choose a monthly plan based on request volume, rate limits, and support.
Practical answers about race filters, returned fields, bookmakers, regions and live price updates.
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.
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.
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.
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.
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.
No. odds-api provides racing event and price data only. It does not open bookmaker accounts, place wagers or provide betting advice.
Choose a plan, find a covered greyhound event and request its current runner odds.