Volleyball API
DocumentationLiveCoveragePricingMCPStatusSign inGet a free key

DocumentationMatches

Volleyball lineups API

GET/v1/matches/{id}/lineups

Who started every set and where: the six players in court zones 1 to 6 for each team, the players who came on during the set, liberos marked, and both head coaches. Rotations, substitution patterns and coach records in one call.

PlansFree keyLiveArchiveComplete
Base URLhttps://api.volleyballapi.com
Answerone object

Parameters

Days you can read depend on your plan: the free key reads today and yesterday, Live the last 30 days, Archive and Complete every season since 2001.

NameTypeWhat it doesExample
idpathThe match id, in the address. Required.mt_y6t4v607

Request

Send your key in the Authorization header as a Bearer token, or in X-API-Key. A key in the address is refused, so it never ends up in a log.

# Starting six by court zone for every set, the players who came on, and both head coaches
curl "https://api.volleyballapi.com/v1/matches/mt_y6t4v607/lineups" \
  -H "Authorization: Bearer $VBA_KEY"

Response

Every answer is data plus meta. This is a real answer to the request above, counted 2026-10-12, with long lists cut short.

200 application/json
{
  "data": {
    "match": "mt_y6t4v607",
    "coaches": { "team_a": "Isacsson Johan", "team_b": "Eriksson Per" },
    "sets": [
      {
        "set": 1,
        "team_a": {
          "starters": [
            {
              "zone": 1,
              "player": { "id": "pl_rjay30dv", "name": "Kurppa Mauri" },
              "shirt": "12",
              "libero": false
            },
            {
              "zone": 2,
              "player": { "id": "pl_dkpvvtwd", "name": "Shurdhi Alvi" },
              "shirt": "19",
              "libero": false
            },
            {
              "zone": 3,
              "player": { "id": "pl_3gy482nb", "name": "Nilsson Wilhelm" },
              "shirt": "7",
              "libero": false
            },
            {
              "zone": 4,
              "player": { "id": "pl_aamwxjx3", "name": "Moberg Tomasz" },
              "shirt": "11",
              "libero": false
            },
            ...
          ],
          "came_on": [
            {
              "player": { "id": "pl_29p7fr5j", "name": "Johansson Albert" },
              "shirt": "8",
              "libero": true
            }
          ]
        },
        "team_b": {
          "starters": [
            {
              "zone": 1,
              "player": { "id": "pl_e1q7abdc", "name": "Hästö Jon" },
              "shirt": "10",
              "libero": false
            },
            {
              "zone": 2,
              "player": { "id": "pl_wex4g1w5", "name": "Hedberg Albin" },
              "shirt": "12",
              "libero": false
            },
            {
              "zone": 3,
              "player": { "id": "pl_he2gtvy4", "name": "Gustafsson Viktor" },
              "shirt": "5",
              "libero": false
            },
            {
              "zone": 4,
              "player": { "id": "pl_gw5df6z1", "name": "VAGULS Gvido" },
              "shirt": "3",
              "libero": false
            },
            ...
          ],
          "came_on": [
            {
              "player": { "id": "pl_2hy4yjg3", "name": "Emanuelsson Johan" },
              "shirt": "13",
              "libero": true
            }
          ]
        }
      },
      {
        "set": 2,
        "team_a": {
          "starters": [
            {
              "zone": 1,
              "player": { "id": "pl_rjay30dv", "name": "Kurppa Mauri" },
              "shirt": "12",
              "libero": false
            },
            {
              "zone": 2,
              "player": { "id": "pl_dkpvvtwd", "name": "Shurdhi Alvi" },
              "shirt": "19",
              "libero": false
            },
            {
              "zone": 3,
              "player": { "id": "pl_3gy482nb", "name": "Nilsson Wilhelm" },
              "shirt": "7",
              "libero": false
            },
            {
              "zone": 4,
              "player": { "id": "pl_aamwxjx3", "name": "Moberg Tomasz" },
              "shirt": "11",
              "libero": false
            },
            ...
          ],
          "came_on": [
            {
              "player": { "id": "pl_29p7fr5j", "name": "Johansson Albert" },
              "shirt": "8",
              "libero": true
            }
          ]
        },
        "team_b": {
          "starters": [
            {
              "zone": 1,
              "player": { "id": "pl_e1q7abdc", "name": "Hästö Jon" },
              "shirt": "10",
              "libero": false
            },
            {
              "zone": 2,
              "player": { "id": "pl_wex4g1w5", "name": "Hedberg Albin" },
              "shirt": "12",
              "libero": false
            },
            {
              "zone": 3,
              "player": { "id": "pl_he2gtvy4", "name": "Gustafsson Viktor" },
              "shirt": "5",
              "libero": false
            },
            {
              "zone": 4,
              "player": { "id": "pl_gw5df6z1", "name": "VAGULS Gvido" },
              "shirt": "3",
              "libero": false
            },
            ...
          ],
          "came_on": [
            {
              "player": { "id": "pl_ratj3gmc", "name": "Kronstrand Noa" },
              "shirt": "1",
              "libero": false
            },
            {
              "player": { "id": "pl_2hy4yjg3", "name": "Emanuelsson Johan" },
              "shirt": "13",
              "libero": true
            }
          ]
        }
      },
      {
        "set": 3,
        "team_a": {
          "starters": [
            {
              "zone": 1,
              "player": { "id": "pl_rjay30dv", "name": "Kurppa Mauri" },
              "shirt": "12",
              "libero": false
            },
            {
              "zone": 2,
              "player": { "id": "pl_dkpvvtwd", "name": "Shurdhi Alvi" },
              "shirt": "19",
              "libero": false
            },
            {
              "zone": 3,
              "player": { "id": "pl_3gy482nb", "name": "Nilsson Wilhelm" },
              "shirt": "7",
              "libero": false
            },
            {
              "zone": 4,
              "player": { "id": "pl_aamwxjx3", "name": "Moberg Tomasz" },
              "shirt": "11",
              "libero": false
            },
            ...
          ],
          "came_on": [
            {
              "player": { "id": "pl_mpe1paze", "name": "Ringqvist Joacim" },
              "shirt": "2",
              "libero": false
            },
            {
              "player": { "id": "pl_ggzpcn7v", "name": "Rune Andreas" },
              "shirt": "3",
              "libero": false
            },
            {
              "player": { "id": "pl_b2fbxw8g", "name": "Larsson Martin" },
              "shirt": "6",
              "libero": false
            },
            {
              "player": { "id": "pl_29p7fr5j", "name": "Johansson Albert" },
              "shirt": "8",
              "libero": true
            }
          ]
        },
        "team_b": {
          "starters": [
            {
              "zone": 1,
              "player": { "id": "pl_e1q7abdc", "name": "Hästö Jon" },
              "shirt": "10",
              "libero": false
            },
            {
              "zone": 2,
              "player": { "id": "pl_wex4g1w5", "name": "Hedberg Albin" },
              "shirt": "12",
              "libero": false
            },
            {
              "zone": 3,
              "player": { "id": "pl_he2gtvy4", "name": "Gustafsson Viktor" },
              "shirt": "5",
              "libero": false
            },
            {
              "zone": 4,
              "player": { "id": "pl_gw5df6z1", "name": "VAGULS Gvido" },
              "shirt": "3",
              "libero": false
            },
            ...
          ],
          "came_on": [
            {
              "player": { "id": "pl_2hy4yjg3", "name": "Emanuelsson Johan" },
              "shirt": "13",
              "libero": true
            }
          ]
        }
      }
    ]
  },
  "meta": { "plan": "Complete", "sets": 3 }
}

Fields

FieldTypeWhat it holds
matchstringThe match id
coachesobjectteam_a and team_b: each head coach's name, or null
setsarrayOne entry a set: set, team_a, team_b
startersarrayThe starting six by court zone 1 to 6 (zone 1 serves first): zone, player, shirt, libero
came_onarrayPlayers who came on during the set: player, shirt, libero
meta.setsintSets with a lineup

Errors

Errors come back as {"error": {"code", "message", "docs"}}, with plan and pricing added when a plan would answer. Every error.

HTTPCodeWhen
401unauthorizedNo key, or a key that is not known or was revoked
403upgrade_requiredYour plan does not include this endpoint; the answer names the plans that do
404not_foundAn id that does not exist
422unknown_parameterA parameter this endpoint does not take; the answer lists the ones it does
429rate_limitedToo many calls this minute; Retry-After says when to try again
429quota_exceededThe day's or month's allowance is used; the answer says when it resets

Try it

Fill in what you need; the request is built as you type. Paste your key to run it here, straight against the API. This endpoint answers on the Archive and Complete plans.