# Rugby League World Cup Odds in the SockOdds API

League keys, official match ids, periods and settlement rules for both World Cups.

The Rugby League World Cup is in SockOdds API v1 as two leagues: `rlwc` for the men's tournament and `rlwcw` for the women's. Both use the rugby league markets, both take their fixtures from the NRL's official draw, and both settle from official match data.

## The league keys

Use `league=rlwc` or `league=rlwcw` on any route that takes a league: `GET /v1/events`, `GET /v1/odds`, `GET /v1/markets`, `GET /v1/teams`, `GET /v1/players` and `GET /v1/results`. Each league has its own page, [Rugby League World Cup](https://sockodds.com/leagues/rlwc-odds-api/) and [Rugby League World Cup Women's](https://sockodds.com/leagues/rlwcw-odds-api/), listing the bookmakers that deliver it and its markets. Both leagues are on the free Developer plan as well as the paid plans; see [pricing](https://sockodds.com/pricing/).

## Find a game by its NRL match id

The NRL publishes a match id for every World Cup game. If your own data already uses those ids, `GET /v1/events/lookup` with `source=nrl` returns the SockOdds event for one:

```bash
curl -sS "https://api.sockodds.com/v1/events/lookup?source=nrl&ref=20261310110" \
  -H "Authorization: Bearer $SOCKODDS_API_KEY"
```

```javascript
const response = await fetch("https://api.sockodds.com/v1/events/lookup?source=nrl&ref=20261310110", {
  headers: { Authorization: `Bearer ${process.env.SOCKODDS_API_KEY}` },
});
console.log(JSON.stringify(await response.json(), null, 2));
```

```python
import json, os, urllib.request

request = urllib.request.Request(
    "https://api.sockodds.com/v1/events/lookup?source=nrl&ref=20261310110",
    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):

```json
{
  "data": {
    "id": "ev_000ckk0nc1tg",
    "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"
        }
      }
    ]
  },
  "meta": {
    "count": 1,
    "cursor": null
  },
  "links": {
    "next": null
  }
}
```

An id that matches no event returns 404. Send `refs` instead of `ref` to look up to 100 ids at once. Only official ids work here, never a bookmaker's own listing id. From the event id, the odds and results routes take over.

## From match id to prices

This program looks up the same game by its NRL match id, then reads TAB's head-to-head, line and total on it:

```javascript
const headers = { Authorization: `Bearer ${process.env.SOCKODDS_API_KEY}` };
const lookup = await fetch("https://api.sockodds.com/v1/events/lookup?source=nrl&ref=20261310110", { headers });
const event = (await lookup.json()).data;
const response = await fetch(`https://api.sockodds.com/v1/events/${event.id}/odds?bookmakers=tab&markets=winner,handicap,total_points`, { headers });
const odds = (await response.json()).data;
console.log(`${odds.name} (${odds.league.name}), ${odds.scheduled_start}`);
for (const market of odds.markets) {
  for (const o of market.outcomes) {
    const line = o.line === null ? "" : ` ${o.line}`;
    for (const price of o.prices) {
      console.log(`${price.bookmaker} ${market.name}: ${o.name}${line} ${price.decimal_odds.toFixed(2)}`);
    }
  }
}
```

```python
import json, os, urllib.request

def get(url):
    request = urllib.request.Request(url, headers={"Authorization": "Bearer " + os.environ["SOCKODDS_API_KEY"]})
    with urllib.request.urlopen(request) as response:
        return json.load(response)["data"]

event = get("https://api.sockodds.com/v1/events/lookup?source=nrl&ref=20261310110")
odds = get(f"https://api.sockodds.com/v1/events/{event['id']}/odds?bookmakers=tab&markets=winner,handicap,total_points")
print(f"{odds['name']} ({odds['league']['name']}), {odds['scheduled_start']}")
for market in odds["markets"]:
    for o in market["outcomes"]:
        line = "" if o["line"] is None else f" {o['line']}"
        for price in o["prices"]:
            print(f"{price['bookmaker']} {market['name']}: {o['name']}{line} {price['decimal_odds']:.2f}")
```

Output (from a local copy of the API with invented test prices):

```text
Australia v New Zealand (Rugby League World Cup), 2026-10-15T09:05:00.000Z
tab Winner: Australia 1.77
tab Winner: New Zealand 2.18
tab Handicap: Australia -6.5 1.96
tab Handicap: New Zealand 6.5 1.96
tab Total points: Over 40.5 1.93
tab Total points: Under 40.5 1.99
```

The prices come from a local copy of the API with invented numbers.

## Periods: full time, golden point and the 80 minutes

Rugby league markets settle on one of four periods: `full`, `regulation`, `half_1` and `half_2`. `full` includes golden point extra time where it is played. `regulation` is the 80 minutes only, which is the period a three-way result with the draw settles on. Check `period` on each market before you compare two prices: a `full` head-to-head and a `regulation` result are different bets.

## A draw after golden point is a dead heat

Golden point can still end level. The contract's results rule is that a Rugby League World Cup head-to-head still level after golden point is a dead heat with a `dead_heat_factor` of 0.5: half the stake is paid at the quoted price and the other half is lost. The API's settlement notes apply the same rule to the women's tournament.

Results come only from official match data. An outcome that official evidence cannot settle is left out rather than guessed; a tied half winner, for example, stays pending. See [results](https://sockodds.com/docs/results/) for the full settlement model.

## Next

- [Every rugby league market](https://sockodds.com/docs/markets/)
- [Settle bets from results](https://sockodds.com/docs/examples/settle-bets/)
- [Identifiers and official ids](https://sockodds.com/docs/identifiers/)

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