SofaScore API endpoint
Returns the draft attached to a league season: the upcoming or just-held `draft` and the `previous_draft`, each with its year, start and end time, status, the draft `rounds` (the valid `round` values for draft-picks) and whether the lottery is complete. The `league` enum accepts `nba` and `nfl`. Get `season` from tournament-seasons (NBA competition id 132, NFL 9464). A season without a draft, or a season id that does not belong to the league, returns 404. A season whose draft is not scheduled yet returns only `previous_draft`.
/sofascore/draftQuery parameters:
league: required enum. Allowed values: nba, nfl.season: required. Numeric SofaScore season id of that league from the tournament-seasons endpoint (NBA competition id 132, NFL 9464), e.g. 80229.Notable response behavior:
draft is the draft held after that season and previous_draft the one before it; each has the year, start_time and end_time, status, rounds (the valid round values for draft-picks) and is_lottery_complete. A season whose draft is not scheduled yet returns only previous_draft (the NFL 2026/2027 season did when checked).lottery_year, prospects_year and has_lottery_draw are returned when SofaScore supplies them (NBA).league returns 400. A season without a draft, or a season id that does not belong to the league, returns 404.| Field | In the sample | Value in the sample |
|---|---|---|
| league | Has a value | “nba” |
| season | Has a value | 80,229 |
| lottery_year | Has a value | 2,026 |
| prospects_year | Has a value | 2,026 |
| has_lottery_draw | Has a value | true |
| draft.year | Has a value | 2,026 |
| draft.start_timestamp | Has a value | 2026-06-23 |
| draft.end_timestamp | Has a value | 2026-06-24 |
| draft.start_time | Has a value | 2026-06-23 |
| draft.end_time | Has a value | 2026-06-24 |
| draft.status | Has a value | “closed” |
| draft.rounds | Has a value | 2 entries |
| draft.is_lottery_complete | Has a value | true |
| previous_draft.year | Has a value | 2,025 |
| previous_draft.start_timestamp | Has a value | 2025-06-25 |
| previous_draft.end_timestamp | Has a value | 2025-06-26 |
| previous_draft.start_time | Has a value | 2025-06-25 |
| previous_draft.end_time | Has a value | 2025-06-26 |
| previous_draft.status | Has a value | “closed” |
| previous_draft.rounds | Has a value | 2 entries |
| previous_draft.is_lottery_complete | Has a value | true |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| league | string | Yes | League whose draft to return Allowed values: nba, nfl. | nba | |
| season | string | Yes | Numeric SofaScore season id of the league | 80229 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/sofascore/draft?league=nba&season=80229" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"league": "nba",
"season": 80229,
"source_url": "https://api.sofascore.com/api/v1/unique-tournament/132/season/80229/draft",
"fetched_at": "2026-07-08T00:00:00Z",
"lottery_year": 2026,
"prospects_year": 2026,
"has_lottery_draw": true,
"draft": {
"year": 2026,
"start_timestamp": 1782172800,
"end_timestamp": 1782259200,
"start_time": "2026-06-23T00:00:00Z",
"end_time": "2026-06-24T00:00:00Z",
"status": "closed",
"rounds": [
1,
2
],
"is_lottery_complete": true
},
"previous_draft": {
"year": 2025,
"start_timestamp": 1750809600,
"end_timestamp": 1750896000,
"start_time": "2025-06-25T00:00:00Z",
"end_time": "2025-06-26T00:00:00Z",
"status": "closed",
"rounds": [
1,
2
],
"is_lottery_complete": true
}
}
}Request schema
No body schema
Response schema
#/definitions/sofascore.draftResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | sofascore.DraftResponse | No | ||||
| data.draft | sofascore.DraftInfo | No | ||||
| data.draft.end_time | string | No | ||||
| data.draft.end_timestamp | integer | No | ||||
| data.draft.is_lottery_complete | boolean | No | ||||
| data.draft.rounds | array | No | 1,2 | |||
| data.draft.start_time | string | No | 2026-06-23T00:00:00Z | |||
| data.draft.start_timestamp | integer | No | ||||
| data.draft.status | string | No | closed | |||
| data.draft.year | integer | No | 2026 | |||
| data.fetched_at | string | No | ||||
| data.has_lottery_draw | boolean | No | ||||
| data.league | string | No | nba | |||
| data.lottery_year | integer | No | 2026 | |||
| data.previous_draft | sofascore.DraftInfo | No | ||||
| data.previous_draft.end_time | string | No | ||||
| data.previous_draft.end_timestamp | integer | No | ||||
| data.previous_draft.is_lottery_complete | boolean | No | ||||
| data.previous_draft.rounds | array | No | 1,2 | |||
| data.previous_draft.start_time | string | No | 2026-06-23T00:00:00Z | |||
| data.previous_draft.start_timestamp | integer | No | ||||
| data.previous_draft.status | string | No | closed | |||
| data.previous_draft.year | integer | No | 2026 | |||
| data.prospects_year | integer | No | 2026 | |||
| data.season | integer | No | 80229 | |||
| data.source_url | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/sofascore/draft?league=nba&season=80229" \
-H "x-api-key: $CRAWLORA_API_KEY"