DocumentationBulk export
Volleyball lineups export
GET/v1/export/lineups
Every lineup between two days in one call, up to 92 days at a time: the starting six by court zone for each set, the players who came on, and both head coaches.
Parameters
Parameters marked required must be sent; the rest are optional. 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.
| Name | Type | What it does | Example |
|---|---|---|---|
from | date | First day of a range. Send with to; a range covers 31 days at most. | 2020-02-01 |
to | date | Last day of the range, included. | 2020-02-01 |
gender | enum | One of men, women, mixed. | men |
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.
# Every lineup between two days in one call: starting six by zone, players who came on, coaches (up to 92 days) curl "https://api.volleyballapi.com/v1/export/lineups?from=2020-02-01&to=2020-02-01" \ -H "Authorization: Bearer $VBA_KEY"
$q = http_build_query(['from' => '2020-02-01', 'to' => '2020-02-01']); $ch = curl_init('https://api.volleyballapi.com/v1/export/lineups?' . $q); curl_setopt_array($ch, [ CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('VBA_KEY')], CURLOPT_RETURNTRANSFER => true, ]); $res = json_decode(curl_exec($ch), true); print_r($res['data']);
import os, requests r = requests.get( "https://api.volleyballapi.com/v1/export/lineups", params={"from": "2020-02-01", "to": "2020-02-01"}, headers={"Authorization": f"Bearer {os.environ['VBA_KEY']}"}, ) print(r.json()["data"])
const res = await fetch("https://api.volleyballapi.com/v1/export/lineups?from=2020-02-01&to=2020-02-01", { headers: { "X-API-Key": process.env.VBA_KEY }, }); const { data, meta } = await res.json();
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.
{
"data": [
{
"match": "mt_xm83jr95",
"date": "2020-02-01",
"coaches": { "team_a": "Kalstad Frank", "team_b": "Hunnestad Herman" },
"sets": [
{
"set": 1,
"team_a": {
"starters": [
{
"zone": 1,
"player": { "id": "pl_35tbdc68", "name": "Klopstad Simon" },
"shirt": "1",
"libero": false
},
{
"zone": 2,
"player": { "id": "pl_p98mrks4", "name": "Clayborough Martin" },
"shirt": "4",
"libero": false
},
{
"zone": 3,
"player": { "id": "pl_adzv2z7n", "name": "Kalstad August" },
"shirt": "3",
"libero": false
},
{
"zone": 4,
"player": { "id": "pl_mnfj1qfk", "name": "Mikalsen Markus" },
"shirt": "11",
"libero": false
},
...
],
"came_on": [
{
"player": { "id": "pl_nnrz7v4b", "name": "Malterud Thomas" },
"shirt": "12",
"libero": false
},
{
"player": { "id": "pl_g35w2v29", "name": "Thue Lars" },
"shirt": "15",
"libero": true
}
]
},
"team_b": {
"starters": [
{
"zone": 1,
"player": { "id": "pl_pt82wnhx", "name": "Alm Ole" },
"shirt": "15",
"libero": false
},
{
"zone": 2,
"player": { "id": "pl_fjrdfja5", "name": "Buset Vegard" },
"shirt": "3",
"libero": false
},
{
"zone": 3,
"player": { "id": "pl_bsmtwhzv", "name": "Opdal Fredrik" },
"shirt": "10",
"libero": false
},
{
"zone": 4,
"player": { "id": "pl_d1sb8f3k", "name": "Aglen Trygve Magnus" },
"shirt": "4",
"libero": false
},
...
],
"came_on": [
{
"player": { "id": "pl_p93p0ys1", "name": "Hunnestad Eirik Palm" },
"shirt": "13",
"libero": true
}
]
}
},
{
"set": 2,
"team_a": {
"starters": [
{
"zone": 1,
"player": { "id": "pl_adzv2z7n", "name": "Kalstad August" },
"shirt": "3",
"libero": false
},
{
"zone": 2,
"player": { "id": "pl_mnfj1qfk", "name": "Mikalsen Markus" },
"shirt": "11",
"libero": false
},
{
"zone": 3,
"player": { "id": "pl_sea6whgf", "name": "Hessegjerdet Fredrik" },
"shirt": "17",
"libero": false
},
{
"zone": 4,
"player": { "id": "pl_x0abqcnj", "name": "Fauske Martin" },
"shirt": "14",
"libero": false
},
...
],
"came_on": [
{
"player": { "id": "pl_ng7pqj97", "name": "Kleveland Joakim" },
"shirt": "7",
"libero": false
},
{
"player": { "id": "pl_nnrz7v4b", "name": "Malterud Thomas" },
"shirt": "12",
"libero": false
},
{
"player": { "id": "pl_g35w2v29", "name": "Thue Lars" },
"shirt": "15",
"libero": true
},
{
"player": { "id": "pl_rvywwcfy", "name": "Sande Per Heine" },
"shirt": "18",
"libero": true
}
]
},
"team_b": {
"starters": [
{
"zone": 1,
"player": { "id": "pl_pt82wnhx", "name": "Alm Ole" },
"shirt": "15",
"libero": false
},
{
"zone": 2,
"player": { "id": "pl_fjrdfja5", "name": "Buset Vegard" },
"shirt": "3",
"libero": false
},
{
"zone": 3,
"player": { "id": "pl_bsmtwhzv", "name": "Opdal Fredrik" },
"shirt": "10",
"libero": false
},
{
"zone": 4,
"player": { "id": "pl_d1sb8f3k", "name": "Aglen Trygve Magnus" },
"shirt": "4",
"libero": false
},
...
],
"came_on": [
{
"player": { "id": "pl_zg1k7ekq", "name": "Jokstad Vebjørn" },
"shirt": "2",
"libero": true
},
{
"player": { "id": "pl_2989ga6n", "name": "Brandis Andreas von" },
"shirt": "6",
"libero": false
},
{
"player": { "id": "pl_p93p0ys1", "name": "Hunnestad Eirik Palm" },
"shirt": "13",
"libero": true
}
]
}
},
{
"set": 3,
"team_a": {
"starters": [
{
"zone": 1,
"player": { "id": "pl_p98mrks4", "name": "Clayborough Martin" },
"shirt": "4",
"libero": false
},
{
"zone": 2,
"player": { "id": "pl_adzv2z7n", "name": "Kalstad August" },
"shirt": "3",
"libero": false
},
{
"zone": 3,
"player": { "id": "pl_mnfj1qfk", "name": "Mikalsen Markus" },
"shirt": "11",
"libero": false
},
{
"zone": 4,
"player": { "id": "pl_ng7pqj97", "name": "Kleveland Joakim" },
"shirt": "7",
"libero": false
},
...
],
"came_on": [
{
"player": { "id": "pl_g35w2v29", "name": "Thue Lars" },
"shirt": "15",
"libero": true
},
{
"player": { "id": "pl_sea6whgf", "name": "Hessegjerdet Fredrik" },
"shirt": "17",
"libero": false
}
]
},
"team_b": {
"starters": [
{
"zone": 1,
"player": { "id": "pl_fjrdfja5", "name": "Buset Vegard" },
"shirt": "3",
"libero": false
},
{
"zone": 2,
"player": { "id": "pl_2989ga6n", "name": "Brandis Andreas von" },
"shirt": "6",
"libero": false
},
{
"zone": 3,
"player": { "id": "pl_d1sb8f3k", "name": "Aglen Trygve Magnus" },
"shirt": "4",
"libero": false
},
{
"zone": 4,
"player": { "id": "pl_gd30kjv1", "name": "Olsen Sveinung Berg" },
"shirt": "5",
"libero": false
},
...
],
"came_on": [
{
"player": { "id": "pl_zg1k7ekq", "name": "Jokstad Vebjørn" },
"shirt": "2",
"libero": true
},
{
"player": { "id": "pl_bsmtwhzv", "name": "Opdal Fredrik" },
"shirt": "10",
"libero": false
},
{
"player": { "id": "pl_p93p0ys1", "name": "Hunnestad Eirik Palm" },
"shirt": "13",
"libero": true
}
]
}
}
]
},
{
"match": "mt_72zy3tmv",
"date": "2020-02-01",
"coaches": { "team_a": "Reiter Raul", "team_b": "Arak Argo" },
"sets": [
{
"set": 1,
"team_a": {
"starters": [
{
"zone": 1,
"player": { "id": "pl_fhygvpc3", "name": "Õun Krister" },
"shirt": "3",
"libero": false
},
{
"zone": 2,
"player": { "id": "pl_e0jrmzcd", "name": "Õuekallas Ivory" },
"shirt": "4",
"libero": false
},
{
"zone": 3,
"player": { "id": "pl_3zg3b7pr", "name": "Stamm Karmo" },
"shirt": "11",
"libero": false
},
{
"zone": 4,
"player": { "id": "pl_vjfp6f2n", "name": "Pärna Meris" },
"shirt": "1",
"libero": false
},
...
],
"came_on": [
{
"player": { "id": "pl_6zaddytv", "name": "Roodi Egert" },
"shirt": "2",
"libero": true
}
]
},
"team_b": {
"starters": [
{
"zone": 1,
"player": { "id": "pl_068rs8d7", "name": "Riiner\t Rauno" },
"shirt": "10",
"libero": false
},
{
"zone": 2,
"player": { "id": "pl_qpa5bf3m", "name": "Laes Ivar" },
"shirt": "13",
"libero": true
},
{
"zone": 3,
"player": { "id": "pl_mckw60rk", "name": "Kuri Reimo" },
"shirt": "8",
"libero": false
},
{
"zone": 4,
"player": { "id": "pl_j2k9m0yc", "name": "Vantsi Virko" },
"shirt": "9",
"libero": false
},
...
],
"came_on": [
{
"player": { "id": "pl_dyar30n9", "name": "Tigane Jarek" },
"shirt": "15",
"libero": true
},
{
"player": { "id": "pl_5m1rcdme", "name": "Arak Argo" },
"shirt": "18",
"libero": true
}
]
}
},
{
"set": 2,
"team_a": {
"starters": [
{
"zone": 1,
"player": { "id": "pl_fhygvpc3", "name": "Õun Krister" },
"shirt": "3",
"libero": false
},
{
"zone": 2,
"player": { "id": "pl_e0jrmzcd", "name": "Õuekallas Ivory" },
"shirt": "4",
"libero": false
},
{
"zone": 3,
"player": { "id": "pl_3zg3b7pr", "name": "Stamm Karmo" },
"shirt": "11",
"libero": false
},
{
"zone": 4,
"player": { "id": "pl_vjfp6f2n", "name": "Pärna Meris" },
"shirt": "1",
"libero": false
},
...
],
"came_on": [
{
"player": { "id": "pl_6zaddytv", "name": "Roodi Egert" },
"shirt": "2",
"libero": true
},
{
"player": { "id": "pl_798gevd4", "name": "Lankei Oliver" },
"shirt": "9",
"libero": false
}
]
},
"team_b": {
"starters": [
{
"zone": 1,
"player": { "id": "pl_068rs8d7", "name": "Riiner\t Rauno" },
"shirt": "10",
"libero": false
},
{
"zone": 2,
"player": { "id": "pl_qpa5bf3m", "name": "Laes Ivar" },
"shirt": "13",
"libero": true
},
{
"zone": 3,
"player": { "id": "pl_mckw60rk", "name": "Kuri Reimo" },
"shirt": "8",
"libero": false
},
{
"zone": 4,
"player": { "id": "pl_8ha1g4as", "name": "Mesila Argo" },
"shirt": "3",
"libero": false
},
...
],
"came_on": [
{
"player": { "id": "pl_v3reh4p3", "name": "Ellermaa Karel" },
"shirt": "17",
"libero": false
},
{
"player": { "id": "pl_5m1rcdme", "name": "Arak Argo" },
"shirt": "18",
"libero": true
}
]
}
},
{
"set": 3,
"team_a": {
"starters": [
{
"zone": 1,
"player": { "id": "pl_fhygvpc3", "name": "Õun Krister" },
"shirt": "3",
"libero": false
},
{
"zone": 2,
"player": { "id": "pl_mpqy3kmw", "name": "Meius Rasmus" },
"shirt": "14",
"libero": true
},
{
"zone": 3,
"player": { "id": "pl_798gevd4", "name": "Lankei Oliver" },
"shirt": "9",
"libero": false
},
{
"zone": 4,
"player": { "id": "pl_vjfp6f2n", "name": "Pärna Meris" },
"shirt": "1",
"libero": false
},
...
],
"came_on": [
{
"player": { "id": "pl_6zaddytv", "name": "Roodi Egert" },
"shirt": "2",
"libero": true
}
]
},
"team_b": {
"starters": [
{
"zone": 1,
"player": { "id": "pl_v3reh4p3", "name": "Ellermaa Karel" },
"shirt": "17",
"libero": false
},
{
"zone": 2,
"player": { "id": "pl_8ha1g4as", "name": "Mesila Argo" },
"shirt": "3",
"libero": false
},
{
"zone": 3,
"player": { "id": "pl_5dfqcya6", "name": "Jakobson Timo" },
"shirt": "2",
"libero": true
},
{
"zone": 4,
"player": { "id": "pl_j2k9m0yc", "name": "Vantsi Virko" },
"shirt": "9",
"libero": false
},
...
],
"came_on": [
{
"player": { "id": "pl_mckw60rk", "name": "Kuri Reimo" },
"shirt": "8",
"libero": false
},
{
"player": { "id": "pl_dyar30n9", "name": "Tigane Jarek" },
"shirt": "15",
"libero": true
},
{
"player": { "id": "pl_5m1rcdme", "name": "Arak Argo" },
"shirt": "18",
"libero": true
}
]
}
},
{
"set": 4,
"team_a": {
"starters": [
{
"zone": 1,
"player": { "id": "pl_fhygvpc3", "name": "Õun Krister" },
"shirt": "3",
"libero": false
},
{
"zone": 2,
"player": { "id": "pl_e0jrmzcd", "name": "Õuekallas Ivory" },
"shirt": "4",
"libero": false
},
{
"zone": 3,
"player": { "id": "pl_798gevd4", "name": "Lankei Oliver" },
"shirt": "9",
"libero": false
},
{
"zone": 4,
"player": { "id": "pl_vjfp6f2n", "name": "Pärna Meris" },
"shirt": "1",
"libero": false
},
...
],
"came_on": [
{
"player": { "id": "pl_6zaddytv", "name": "Roodi Egert" },
"shirt": "2",
"libero": true
},
{
"player": { "id": "pl_mpqy3kmw", "name": "Meius Rasmus" },
"shirt": "14",
"libero": true
}
]
},
"team_b": {
"starters": [
{
"zone": 1,
"player": { "id": "pl_8ha1g4as", "name": "Mesila Argo" },
"shirt": "3",
"libero": false
},
{
"zone": 2,
"player": { "id": "pl_mckw60rk", "name": "Kuri Reimo" },
"shirt": "8",
"libero": false
},
{
"zone": 3,
"player": { "id": "pl_j2k9m0yc", "name": "Vantsi Virko" },
"shirt": "9",
"libero": false
},
{
"zone": 4,
"player": { "id": "pl_eg16f200", "name": "Steinberg Sander" },
"shirt": "11",
"libero": false
},
...
],
"came_on": [
{
"player": { "id": "pl_5dfqcya6", "name": "Jakobson Timo" },
"shirt": "2",
"libero": true
},
{
"player": { "id": "pl_dyar30n9", "name": "Tigane Jarek" },
"shirt": "15",
"libero": true
}
]
}
}
]
}
],
"meta": {
"plan": "Complete",
"from": "2020-02-01",
"to": "2020-02-01",
"count": 113
}
}Fields
| Field | Type | What it holds |
|---|---|---|
data[].match, data[].date | string | The match id and its day |
data[].coaches | object | team_a and team_b head coaches |
data[].sets | array | As /v1/matches/{id}/lineups: per set, starters by zone and players who came on |
meta.count | int | Matches with a lineup in the range |
Errors
Errors come back as {"error": {"code", "message", "docs"}}, with plan and pricing added when a plan would answer. Every error.
| HTTP | Code | When |
|---|---|---|
| 400 | bad_request | A value of the wrong shape, or a required parameter left out |
| 401 | unauthorized | No key, or a key that is not known or was revoked |
| 403 | upgrade_required | Your plan does not include this endpoint; the answer names the plans that do |
| 422 | unknown_parameter | A parameter this endpoint does not take; the answer lists the ones it does |
| 429 | rate_limited | Too many calls this minute; Retry-After says when to try again |
| 429 | quota_exceeded | The 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 Complete plans.