Seasons
ArchiveAppearances, starts, tries, kicks, cards and points for each competition and season.
Parameters
| Name | What it does | Example |
|---|---|---|
idpath, required | The ID in the path. | pl_2TS991Z |
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
| Field | Meaning |
|---|---|
data[].competition, season | ID and name of each |
data[].apps, starts, replacement_apps | Appearances, and how many started or came off the bench |
data[].tries, conversions, penalties, drop_goals | Scoring |
data[].yellow_cards, red_cards | Cards |
data[].points | Points scored |
Errors you can get
| Status | Code | When |
|---|---|---|
400 | key_in_address | The key was put in the address. Send it in a header (see Authentication). |
401 | missing_key | No Authorization: Bearer header, or the key was rotated (invalid_key, revoked_key). |
403 | plan_required | Your plan is below Archive. |
404 | not_found | No player with that ID (bad_id if it is not in our format). |
429 | daily_limit | Today'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.
curl https://api.rugbyapi.com/v1/players/pl_2TS991Z/seasons \
-H "Authorization: Bearer YOUR_KEY"$ch = curl_init('https://api.rugbyapi.com/v1/players/pl_2TS991Z/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/players/pl_2TS991Z/seasons", headers={"Authorization": "Bearer YOUR_KEY"}, ) data = r.json()
const r = await fetch('https://api.rugbyapi.com/v1/players/pl_2TS991Z/seasons', { headers: { Authorization: 'Bearer YOUR_KEY' } }); const data = await r.json();
200ResponseExample from the live archive, lists cut to 3
{
"player": {
"id": "pl_2TS991Z",
"name": "Tom Bowen"
},
"count": 7,
"data": [
{
"competition": {
"id": "cp_0Z553MH",
"name": "European Rugby Champions Cup"
},
"season": {
"id": "ss_10H7V4D",
"name": "2026-27"
},
"apps": 1,
"starts": 1,
"replacement_apps": 0,
"tries": 0,
"conversions": 0,
"penalties": 0,
"drop_goals": 0,
"yellow_cards": 0,
"red_cards": 0,
"points": 0,
"starts_counted_from": "matchday lineups"
},
{
"competition": {
"id": "cp_2EW9542",
"name": "United Rugby Championship"
},
"season": {
"id": "ss_1VSX6S8",
"name": "2026-27"
},
"apps": 1,
"starts": 2,
"replacement_apps": 1,
"tries": 0,
"conversions": 0,
"penalties": 0,
"drop_goals": 0,
"yellow_cards": 0,
"red_cards": 0,
"points": 0,
"starts_counted_from": "matchday lineups"
},
{
"competition": {
"id": "cp_383QJ5X",
"name": "Challenge Cup"
},
"season": {
"id": "ss_1VC9AG2",
"name": "2025-26"
},
"apps": 3,
"starts": 3,
"replacement_apps": 0,
"tries": 2,
"conversions": 0,
"penalties": 0,
"drop_goals": 0,
"yellow_cards": 0,
"red_cards": 0,
"points": 10,
"starts_counted_from": "matchday lineups"
}
]
}