How to Query NRL Odds and Try Scorer Props
League keys, the requests that return NRL prices, and how try scorer markets are shaped.
Rugby league is four leagues in SockOdds API v1, all on the sport key rugby_league: the NRL (nrl), the NRL Women's (nrlw), the Rugby League World Cup (rlwc) and the Rugby League World Cup Women's (rlwcw). Keys are lower case and readable. Read them from GET /v1/leagues?sport=rugby_league rather than building them yourself.
All four share one market catalogue, so every request below works for any of them by changing league=. The examples use the Rugby League World Cup, which has games while the NRL is out of season; in season, swap in league=nrl.
Send your key in the Authorization: Bearer header, from your server, read from an environment variable (authentication).
Head to head and line for the next game
GET /v1/odds with a league returns its games with the prices of every bookmaker your plan includes, grouped by market. markets= keeps the response to the markets you show and starts_after set to now starts at the next game:
curl -sS "https://api.sockodds.com/v1/odds?league=rlwc&markets=winner,handicap&bookmakers=tab&limit=1&starts_after=$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
-H "Authorization: Bearer $SOCKODDS_API_KEY"const response = await fetch(`https://api.sockodds.com/v1/odds?league=rlwc&markets=winner,handicap&bookmakers=tab&limit=1&starts_after=${new Date().toISOString().slice(0, 19)}Z`, {
headers: { Authorization: `Bearer ${process.env.SOCKODDS_API_KEY}` },
});
console.log(JSON.stringify(await response.json(), null, 2));import json, os, urllib.request
from datetime import datetime, timezone
request = urllib.request.Request(
f"https://api.sockodds.com/v1/odds?league=rlwc&markets=winner,handicap&bookmakers=tab&limit=1&starts_after={datetime.now(timezone.utc):%Y-%m-%dT%H:%M:%SZ}",
headers={"Authorization": "Bearer " + os.environ["SOCKODDS_API_KEY"]},
)
with urllib.request.urlopen(request) as response:
print(json.dumps(json.load(response), indent=2))Response from a local copy of the API with invented test prices
{
"data": [
{
"id": "ev_000ckk0zrx33",
"name": "Australia v New Zealand",
"league": {
"key": "rlwc",
"name": "Rugby League World Cup"
},
"scheduled_start": "2026-10-15T09:05:00.000Z",
"status": "scheduled",
"participants": [
{
"role": "away",
"identity": {
"key": "new_zealand_rugby_league",
"name": "New Zealand"
}
},
{
"role": "home",
"identity": {
"key": "australia_rugby_league",
"name": "Australia"
}
}
],
"markets": [
{
"id": "mk_pz0msgze2rqwwktb",
"key": "winner",
"name": "Winner",
"period": "full",
"subject": null,
"alternate": false,
"outcomes": [
{
"id": "oc_nncgcssmzjhyt5pe",
"name": "Australia",
"side": "home",
"line": null,
"prices": [
{
"bookmaker": "tab",
"decimal_odds": 1.77,
"implied_probability": 0.564972,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
}
]
},
{
"id": "oc_cwsr1gda0qcgf03j",
"name": "New Zealand",
"side": "away",
"line": null,
"prices": [
{
"bookmaker": "tab",
"decimal_odds": 2.18,
"implied_probability": 0.458716,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
}
]
}
]
},
{
"id": "mk_5j02m4w6004weeze",
"key": "handicap",
"name": "Handicap",
"period": "full",
"subject": null,
"alternate": false,
"outcomes": [
{
"id": "oc_j6paqe6cbz2fy0f8",
"name": "Australia",
"side": "home",
"line": -6.5,
"prices": [
{
"bookmaker": "tab",
"decimal_odds": 1.96,
"implied_probability": 0.510204,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
}
]
},
{
"id": "oc_74ypb0kmrb0cbefw",
"name": "New Zealand",
"side": "away",
"line": 6.5,
"prices": [
{
"bookmaker": "tab",
"decimal_odds": 1.96,
"implied_probability": 0.510204,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
}
]
}
]
}
]
}
],
"meta": {
"count": 1,
"cursor": null
},
"links": {
"next": null
}
}The prices come from a local copy of the API with invented numbers. On the line, each outcome carries its own figure, so the home side's -6.5 and the away side's 6.5 sit on their own outcomes.
Try scorer markets
Try scorer markets come in two shapes:
| You want | Market key | Shape |
|---|---|---|
| Anytime try scorer | player_tries_anytime | One market per player, side yes |
| First try scorer | player_tries_first | One market, one outcome per player |
| Last try scorer | player_tries_last | One market, one outcome per player |
| Two or more tries | player_tries_over_under | Over/under, the over at 1.5 |
On a per-player market the player is the market's subject, with a pl_ id and name. On first and last try scorer, each outcome is a player and its side is the player's id. Either way the id is the same at every bookmaker and in every game, so each of that player's outcomes lists every bookmaker's price, best first, and you can follow a player across a season by the player id.
GET /v1/odds?league=nrl&markets=player_tries_anytime,player_tries_first
Halves, regulation and golden point
Markets carry a period: full, regulation, half_1 or half_2. full includes golden point where it is played; regulation is the 80 minutes only, and it is the period the three-way result market with the draw is priced on. Ask for halves by reading the period on each market: markets=handicap returns the full-game line and any half lines a bookmaker quotes, each with its own period.
Winning margins and totals
total_points and total_tries are over/under markets on the game, and team_points_over_under and team_tries_over_under on one team. The catalogue has no winning margin band market for rugby league, so a margin band you see at a bookmaker is not in the API.
A few habits
- Cache
GET /v1/markets?league=nrl: it changes rarely and every row counts as an object. - Store the event id with anything you save and the outcome id with a bet, then settle from results, which use the same outcome ids.
- A missing price means no current price, never zero. Out of season the NRL has no prices at all.
The NRL is on the free Developer plan, which reads Sportsbet, TAB and Ladbrokes at 10 requests a minute, as are both Rugby League World Cups. The NRLW is on Rookie and Pro. See pricing.
Next
SockOdds provides data only. It does not offer tips or predictions on any game.