SofaScore API endpoint
Returns one round of a league draft: each pick with the overall and in-round number, the drafting team, and the drafted prospect (name, position, college or club, top-prospect flag and the player id when SofaScore has one), plus the teams that hold no pick in that round. The `league` enum accepts `nba` (rounds 1 and 2) and `nfl` (rounds 1 to 7); other rounds return 400. Get `year` from the draft endpoint's `draft.year` and `previous_draft.year`; SofaScore keeps only recent drafts, so an older year returns 404. Returns 404 when SofaScore has no picks for that year and round.
/sofascore/draft-picksQuery parameters:
league: required enum. Allowed values: nba, nfl.year: required. Four-digit draft year, e.g. 2025. Take it from draft.year or previous_draft.year of the draft endpoint.round: required. Draft round, 1 or 2 for nba and 1 to 7 for nfl. The draft endpoint lists the rounds. Any other round returns 400.Notable response behavior:
pick_in_round, overall_pick, the drafting team, and the prospect (name, position, school_name and school for the college or club, is_top_prospect and, when SofaScore has the player, a player with the player id). teams_without_round_pick lists teams that hold no pick in the round.404. Returns 404 as well for a year in the future.| Field | Filled in, of 30 checked | Values in the sample |
|---|---|---|
| pick_in_round | 30 | 1 to 30, median 15 |
| overall_pick | 30 | 1 to 30, median 15 |
| round | 30 | 1 |
| team | 30 | |
| prospect | 30 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| league | string | Yes | League whose draft to return Allowed values: nba, nfl. | nba | |
| year | string | Yes | Four-digit draft year | 2025 | |
| round | integer | Yes | Draft round: 1 to 2 for nba, 1 to 7 for nfl Minimum: 1. Maximum: 7. | 1 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/sofascore/draft-picks?league=nba&year=2025&round=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"league": "nba",
"year": 2025,
"round": 1,
"source_url": "https://api.sofascore.com/api/v1/unique-tournament/132/draft/2025/pick/1",
"fetched_at": "2026-07-08T00:00:00Z",
"count": 2,
"picks": [
{
"pick_in_round": 1,
"overall_pick": 1,
"round": 1,
"team": {
"id": 3411,
"name": "Dallas Mavericks",
"short_name": "Mavericks",
"slug": "dallas-mavericks"
},
"prospect": {
"name": "Cooper Flagg",
"first_name": "Cooper",
"last_name": "Flagg",
"position": "GF",
"school_name": "Duke",
"school": {
"id": 34622,
"name": "Duke Blue Devils",
"short_name": "Duke",
"slug": "duke-blue-devils"
},
"is_top_prospect": true,
"player": {
"id": 1908739,
"name": "Cooper Flagg",
"short_name": "C. Flagg",
"slug": "cooper-flagg",
"position": "GF",
"jersey_number": "32"
}
}
}
],
"teams_without_round_pick": [
{
"id": 3417,
"name": "Denver Nuggets",
"short_name": "Nuggets",
"slug": "denver-nuggets"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/sofascore.draftPicksResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | sofascore.DraftPicksResponse | No | ||||
| data.count | integer | No | ||||
| data.fetched_at | string | No | ||||
| data.league | string | No | nba | |||
| data.picks | array | No | ||||
| data.picks[].overall_pick | integer | No | 1 | |||
| data.picks[].pick_in_round | integer | No | 1 | |||
| data.picks[].prospect | sofascore.DraftProspect | No | ||||
| data.picks[].prospect.first_name | string | No | ||||
| data.picks[].prospect.is_top_prospect | boolean | No | ||||
| data.picks[].prospect.last_name | string | No | ||||
| data.picks[].prospect.name | string | No | Cooper Flagg | |||
| data.picks[].prospect.player | sofascore.PlayerBrief | No | PlayerBrief record, 6 fields: id, jersey_number, name, position, short_name, slug. Described under SofaScore event at-bat pitches API. | |||
| data.picks[].prospect.position | string | No | GF | |||
| data.picks[].prospect.school | sofascore.TeamRef | No | TeamRef record, 6 fields: country, id, name, national, short_name, slug. Described under SofaScore venue API. | |||
| data.picks[].prospect.school_name | string | No | Duke | |||
| data.picks[].round | integer | No | 1 | |||
| data.picks[].team | sofascore.TeamRef | No | TeamRef record, 6 fields: country, id, name, national, short_name, slug. Described under SofaScore venue API. | |||
| data.round | integer | No | 1 | |||
| data.source_url | string | No | ||||
| data.teams_without_round_pick | array | No | TeamRef record, 6 fields: country, id, name, national, short_name, slug. Described under SofaScore venue API. | |||
| data.year | integer | No | 2025 | |||
| 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-picks?league=nba&year=2025&round=1" \
-H "x-api-key: $CRAWLORA_API_KEY"