rugbyAPI
Competitions / Standings

Standings

Free

The table for a season: played, won, drawn, lost, points for and against, difference, bonus points and total.

GEThttps://api.rugbyapi.com/v1/seasons/{id}/standings

Parameters

NameWhat it doesExample
idpath, requiredThe ID in the path.ss_1VSX6S8

Any other parameter is refused with a 422 naming the ones this endpoint takes, so a typo never silently returns everything.

What each plan returns

Free key

The current season of each competition.

Archive

Every season we hold.

Live

Every season we hold.

Response fields

FieldMeaning
season, competitionID and name of each
updated_utcWhen the table was last refreshed
data[].posPosition
data[].teamTeam ID and name
data[].p, w, d, lPlayed, won, drawn, lost
data[].pf, pa, pdPoints for, against and the difference
data[].bp, ptsBonus points and table points

Errors you can get

StatusCodeWhen
400key_in_addressThe key was put in the address. Send it in a header (see Authentication).
401missing_keyNo Authorization: Bearer header, or the key was rotated (invalid_key, revoked_key).
403plan_requiredThe season is not the current one, on a free key.
404not_foundNo season with that ID (bad_id if it is not in our format).
429daily_limitToday's lookups are used. Resets at 00:00 UTC.

Every error has the same shape. All error codes

Try it live

Runs this call from your browser with your own key and shows what comes back.

Your key Get a free key
curl https://api.rugbyapi.com/v1/seasons/ss_1VSX6S8/standings \
  -H "Authorization: Bearer YOUR_KEY"
$ch = curl_init('https://api.rugbyapi.com/v1/seasons/ss_1VSX6S8/standings');
curl_setopt_array($ch, [
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer YOUR_KEY'],
    CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);
import requests

r = requests.get(
    "https://api.rugbyapi.com/v1/seasons/ss_1VSX6S8/standings",
    headers={"Authorization": "Bearer YOUR_KEY"},
)
data = r.json()
const r = await fetch('https://api.rugbyapi.com/v1/seasons/ss_1VSX6S8/standings', {
  headers: { Authorization: 'Bearer YOUR_KEY' }
});
const data = await r.json();
200ResponseExample from the live archive, lists cut to 3
{
  "season": {
    "id": "ss_1VSX6S8",
    "name": "2026-27"
  },
  "competition": {
    "id": "cp_2EW9542",
    "name": "United Rugby Championship"
  },
  "updated_utc": "2026-11-09T04:46:12Z",
  "count": 16,
  "data": [
    {
      "pos": 1,
      "team": {
        "id": "tm_0QPNGJQ",
        "name": "Glasgow Warriors"
      },
      "p": 5,
      "w": 4,
      "d": 1,
      "l": 0,
      "pf": 148,
      "pa": 112,
      "pd": 36,
      "bp": 5,
      "pts": 23
    },
    {
      "pos": 2,
      "team": {
        "id": "tm_0FWX7QJ",
        "name": "Bulls"
      },
      "p": 5,
      "w": 4,
      "d": 0,
      "l": 1,
      "pf": 214,
      "pa": 106,
      "pd": 108,
      "bp": 5,
      "pts": 21
    },
    {
      "pos": 3,
      "team": {
        "id": "tm_3KFPVP6",
        "name": "Stormers"
      },
      "p": 5,
      "w": 4,
      "d": 0,
      "l": 1,
      "pf": 166,
      "pa": 101,
      "pd": 65,
      "bp": 5,
      "pts": 21
    }
  ]
}