Volleyball API
DocumentationLiveCoveragePricingMCPStatusSign inGet a free key

DocumentationBulk export

Volleyball point-by-point export

GET/v1/export/points

Every rally of every match between two days in one call, up to 14 days at a time: the score after each rally, who won it and who served.

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

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.

NameTypeWhat it doesExample
fromdateFirst day of a range. Send with to; a range covers 31 days at most.2026-10-11
todateLast day of the range, included.2026-10-11
disciplineenumOne of indoor, beach.indoor
genderenumOne 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 rally of every match between two days in one call (up to 14 days)
curl "https://api.volleyballapi.com/v1/export/points?from=2026-10-11&to=2026-10-11" \
  -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_hnqdc25s",
      "date": "2026-10-11",
      "sets": [
        {
          "set": 1,
          "rallies": [
            { "a": 0, "b": 1, "won_by": "b", "served_by": "b" },
            { "a": 1, "b": 1, "won_by": "a", "served_by": "b" },
            { "a": 1, "b": 2, "won_by": "b", "served_by": "a" }
          ]
        }
      ]
    }
  ],
  "meta": {
    "plan": "Complete",
    "from": "2026-10-11",
    "to": "2026-10-11",
    "count": 67,
    "rallies": 10577
  }
}

Fields

FieldTypeWhat it holds
data[].match, data[].datestringThe match id and its day
data[].setsarrayAs /v1/matches/{id}/points: per set, every rally
meta.count, meta.ralliesintMatches and rallies in the range

Errors

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

HTTPCodeWhen
400bad_requestA value of the wrong shape, or a required parameter left out
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
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 Complete plans.