rugbyAPI
Competitions / Seasons

Seasons

Archive

Every season of one competition that has matches or a table, newest first.

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

Parameters

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

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

Not included. Returns 403 with the upgrade link.

Archive

Included.

Live

Included.

Response fields

FieldMeaning
competitionID and name
data[].id, namePermanent season ID and name, for example 2026-27
data[].currenttrue for the season in progress
data[].starts, endsMonth and year, as the competition publishes them
data[].matchesMatches on record

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_requiredYour plan is below Archive.
404not_foundNo competition 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/competitions/cp_2EW9542/seasons \
  -H "Authorization: Bearer YOUR_KEY"
$ch = curl_init('https://api.rugbyapi.com/v1/competitions/cp_2EW9542/seasons');
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/competitions/cp_2EW9542/seasons",
    headers={"Authorization": "Bearer YOUR_KEY"},
)
data = r.json()
const r = await fetch('https://api.rugbyapi.com/v1/competitions/cp_2EW9542/seasons', {
  headers: { Authorization: 'Bearer YOUR_KEY' }
});
const data = await r.json();
200ResponseExample from the live archive, lists cut to 3
{
  "competition": {
    "id": "cp_2EW9542",
    "name": "United Rugby Championship"
  },
  "coverage": {
    "tier": "partial_detail",
    "results": 3010,
    "full_timeline_pct": 41.2,
    "team_scoring_pct": 61.1
  },
  "count": 26,
  "data": [
    {
      "id": "ss_1VSX6S8",
      "name": "2026-27",
      "current": true,
      "starts": "Aug 2026",
      "ends": "Jul 2027",
      "matches": 144
    },
    {
      "id": "ss_2H1294N",
      "name": "2025-26",
      "current": false,
      "starts": null,
      "ends": null,
      "matches": 152
    },
    {
      "id": "ss_2ZMMA21",
      "name": "2024-25",
      "current": false,
      "starts": null,
      "ends": null,
      "matches": 151
    }
  ]
}