rugbyAPI
Players / Matches

Matches

Archive

Every match a player was named in, newest first, with shirt, role and what they scored.

GEThttps://api.rugbyapi.com/v1/players/{id}/matches

Parameters

NameWhat it doesExample
idpath, requiredThe 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

FieldMeaning
data[]Each match has id, date, kickoff_utc, status, competition, season, and home and away with team id, name and score.
data[].shirt, role, positionAs named on the teamsheet
data[].tries, pointsWhat the player scored in the match

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 player 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/players/pl_2TS991Z/matches \
  -H "Authorization: Bearer YOUR_KEY"
$ch = curl_init('https://api.rugbyapi.com/v1/players/pl_2TS991Z/matches');
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/matches",
    headers={"Authorization": "Bearer YOUR_KEY"},
)
data = r.json()
const r = await fetch('https://api.rugbyapi.com/v1/players/pl_2TS991Z/matches', {
  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": 24,
  "data": [
    {
      "id": "mt_064VTQ5",
      "date": "2026-10-31",
      "kickoff_utc": "2026-10-31T19:45:00Z",
      "status": "finished",
      "competition": {
        "id": "cp_2EW9542",
        "name": "United Rugby Championship"
      },
      "season": {
        "id": "ss_1VSX6S8",
        "name": "2026-27"
      },
      "home": {
        "id": "tm_1KTEF3F",
        "name": "Ospreys",
        "score": 0
      },
      "away": {
        "id": "tm_179VXFK",
        "name": "Cardiff Rugby",
        "score": 26
      },
      "shirt": 11,
      "role": "starter",
      "position": "Left Wing",
      "tries": 2,
      "points": 10
    },
    {
      "id": "mt_0HXGSSN",
      "date": "2026-10-23",
      "kickoff_utc": "2026-10-23T18:45:00Z",
      "status": "finished",
      "competition": {
        "id": "cp_2EW9542",
        "name": "United Rugby Championship"
      },
      "season": {
        "id": "ss_1VSX6S8",
        "name": "2026-27"
      },
      "home": {
        "id": "tm_179VXFK",
        "name": "Cardiff Rugby",
        "score": 21
      },
      "away": {
        "id": "tm_24KCBBM",
        "name": "Sharks",
        "score": 36
      },
      "shirt": 23,
      "role": "replacement",
      "position": null,
      "tries": 0,
      "points": 0
    },
    {
      "id": "mt_0QWJ414",
      "date": "2026-10-18",
      "kickoff_utc": "2026-10-18T16:30:00Z",
      "status": "finished",
      "competition": {
        "id": "cp_0Z553MH",
        "name": "European Rugby Champions Cup"
      },
      "season": {
        "id": "ss_10H7V4D",
        "name": "2026-27"
      },
      "home": {
        "id": "tm_28GXJQH",
        "name": "Northampton Saints",
        "score": 28
      },
      "away": {
        "id": "tm_179VXFK",
        "name": "Cardiff Rugby",
        "score": 12
      },
      "shirt": 11,
      "role": "starter",
      "position": "Left Wing",
      "tries": 0,
      "points": 0
    }
  ]
}