Coverage · 7 September 2026 · updated 14 October 2026

Every NRL Betting Market in the SockOdds API

Head to head, the three-way result, line, totals, tries and try scorer markets for the NRL, with the keys to request each one.

The NRL is in SockOdds API v1 under the league key nrl, with the NRL Women's under nrlw. Both are rugby league (sport key rugby_league), alongside the Rugby League World Cup (rlwc) and the Women's World Cup (rlwcw), and all four share one set of 16 market types: head to head, the three-way result, line and totals, total tries, team totals, and player markets for try scorers, tackles and run metres.

Every NRL market type

The table comes from the API's own catalogue. A bookmaker quotes the markets it offers for each game, so a type being listed means you can ask for it, not that every bookmaker prices it every week.

Game markets

MarketKeySidesLinePeriods
Winnerwinnerhome, away, competitor_1, competitor_2Nofull, half_1, half_2
Result (with the draw)resulthome, draw, awayNofull, regulation, half_1, half_2
Handicaphandicaphome, away, competitor_1, competitor_2Yesfull, half_1, half_2
Total pointstotal_pointsover, underYesfull, half_1, half_2
Total triestotal_triesover, underYesfull

Team markets

MarketKeySidesLinePeriods
Team points over/underteam_points_over_underover, underYesfull, half_1, half_2
Team tries over/underteam_tries_over_underover, underYesfull
Team first try scorerteam_tries_firstEach competitorNofull
Team last try scorerteam_tries_lastEach competitorNofull
Team wins by 1 to 12team_win_by_1_to_12_yes_noyes, noNofull

Player markets

MarketKeySidesLinePeriods
Anytime try scorerplayer_tries_anytimeyesNofull
First try scorerplayer_tries_firstEach competitorNofull
Last try scorerplayer_tries_lastEach competitorNofull
Player tries over/underplayer_tries_over_underover, underYesfull
Player tackles over/underplayer_tackles_over_underover, underYesfull
Player run metres over/underplayer_run_metres_over_underover, underYesfull

Reading rugby league markets

  • winner is the head to head: sides home and away.
  • result is the three-way market with a draw, priced on regulation: the 80 minutes, where a draw is a result of its own.
  • handicap is the line. Each outcome carries its own figure: home at -6.5 with away at 6.5, for example.
  • total_points and total_tries are over/under markets on the game; team_points_over_under and team_tries_over_under are the same for one team, which is the market's subject.

Periods are full, regulation, half_1 and half_2. full includes golden point extra time where it is played; regulation is the 80 minutes only. A full head to head and a regulation result are different bets, so check period on every market before you compare two prices.

Try scorer and player markets

  • player_tries_anytime is one market per player, side yes.
  • player_tries_first and player_tries_last are runner markets: one outcome per player, and the outcome's side is the player's id.
  • player_tries_over_under carries a line: two or more tries is the over at 1.5.
  • player_tackles_over_under and player_run_metres_over_under are over/under markets on one player.

Every player has a pl_ id that stays the same across bookmakers and games, so one player's anytime try market comes back once, with every bookmaker's price on it, best first.

Ask for the markets in code

The catalogue is one request away. This reads the rugby league market types the API defines (the same for the NRL and the World Cups):

curl -sS "https://api.sockodds.com/v1/markets?league=nrl&limit=3" \
  -H "Authorization: Bearer $SOCKODDS_API_KEY"
const response = await fetch("https://api.sockodds.com/v1/markets?league=nrl&limit=3", {
  headers: { Authorization: `Bearer ${process.env.SOCKODDS_API_KEY}` },
});
console.log(JSON.stringify(await response.json(), null, 2));
import json, os, urllib.request

request = urllib.request.Request(
    "https://api.sockodds.com/v1/markets?league=nrl&limit=3",
    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": [
    {
      "key": "winner",
      "name": "Winner",
      "subject": "event",
      "bet": "winner",
      "stat": null,
      "has_line": false,
      "sides": [
        "home",
        "away"
      ],
      "sports": [
        "australian_football",
        "rugby_league",
        "rugby_union",
        "basketball",
        "american_football",
        "baseball",
        "ice_hockey",
        "tennis",
        "mma",
        "cricket",
        "esports"
      ],
      "periods": [
        "full",
        "half_1",
        "half_2",
        "quarter_1",
        "quarter_2",
        "quarter_3",
        "quarter_4",
        "innings_1_to_5",
        "half_2_ot",
        "period_1",
        "period_2",
        "period_3",
        "set_1",
        "set_2",
        "set_3",
        "set_4",
        "set_5",
        "map_1",
        "map_2",
        "map_3",
        "map_4",
        "map_5"
      ]
    },
    {
      "key": "result",
      "name": "Result (with the draw)",
      "subject": "event",
      "bet": "result",
      "stat": null,
      "has_line": false,
      "sides": [
        "home",
        "draw",
        "away"
      ],
      "sports": [
        "american_football",
        "soccer",
        "rugby_league",
        "rugby_union",
        "ice_hockey",
        "cricket",
        "baseball"
      ],
      "periods": [
        "full",
        "regulation",
        "half_1",
        "half_2",
        "period_1",
        "period_2",
        "period_3",
        "quarter_1",
        "quarter_2",
        "quarter_3",
        "quarter_4",
        "inning_1",
        "innings_1_to_5"
      ]
    },
    {
      "key": "handicap",
      "name": "Handicap",
      "subject": "event",
      "bet": "handicap",
      "stat": null,
      "has_line": true,
      "sides": [
        "home",
        "away"
      ],
      "sports": [
        "australian_football",
        "rugby_league",
        "rugby_union",
        "soccer",
        "basketball",
        "american_football",
        "baseball",
        "ice_hockey",
        "tennis",
        "esports"
      ],
      "periods": [
        "full",
        "half_1",
        "half_2",
        "quarter_1",
        "quarter_2",
        "quarter_3",
        "quarter_4",
        "innings_1_to_5",
        "half_2_ot",
        "quarter_4_ot",
        "period_1",
        "period_2",
        "period_3"
      ]
    }
  ],
  "meta": {
    "count": 3,
    "cursor": "eyJuIjozLCJmIjoiZTAzNDBiNDM2ZTQ2MmE2OSJ9"
  },
  "links": {
    "next": "https://api.sockodds.com/v1/markets?league=nrl&limit=3&cursor=eyJuIjozLCJmIjoiZTAzNDBiNDM2ZTQ2MmE2OSJ9"
  }
}

Follow links.next for the rest of the list. Read it once and cache it: catalogue rows count towards your monthly objects like any other row.

When prices appear

NRL prices are delivered in season. Out of season the league and its markets stay in the catalogue, so you can build against the keys now, and prices arrive in the same responses once bookmakers are pricing games. The NRL league page lists the bookmakers delivering it today. The Rugby League World Cup uses the same markets: see the Rugby League World Cup post.

The NRL is on the free Developer plan, which reads Sportsbet, TAB and Ladbrokes. The NRLW is on Rookie and Pro. See pricing.

Next

SockOdds provides data only. It does not offer tips or predictions on any game.

Search across the SockOdds documentation and catalogue.