SofaScore API endpoint
Returns the bouts of one MMA fight card, main event first, narrowed with `part` to `all` bouts, the `maincard`, the `prelims` or the `earlyprelims`. Each bout has the fighters (country, nickname, ranking where 0 is the champion, record), weight class, scheduled rounds, status, and for finished bouts the winner, win type, final round and fight time. Get `org_id` and `card_id` from sofascore-mma-schedule. Returns 404 when the card is unknown or has no bouts in that segment (for example a card without early prelims).
/sofascore/mma-cardQuery parameters:
org_id: required. Numeric SofaScore MMA organisation id, e.g. 19906 for UFC. See sofascore/mma-schedule for the list of organisations.card_id: required. Numeric card id (card_id) from sofascore/mma-schedule, e.g. 197311.part: required enum. Allowed values: all (every bout), maincard, prelims, earlyprelims. Any other value is rejected with 400 before SofaScore is contacted.Notable response behavior:
fights is ordered main event first (order descending). fight_type is the segment each bout belongs to (maincard, prelims, earlyprelims); part=all returns every segment and the other values only their own.197311) returned 14 bouts for all, 5 for maincard, 4 for prelims and 5 for earlyprelims.sofascore/mma-schedule. Every bout has its own event id, which also works with the event endpoints.404 when the card is unknown or has no bouts in the requested segment; for example UFC 333 has no early prelims. SofaScore also answers 404 for a card id that belongs to another organisation.Example response (shortened):
{
"code": 200,
"msg": "OK",
"data": {
"org_id": 19906,
"card_id": 197311,
"card_name": "UFC 332: Silva vs. Wang",
"part": "all",
"source_url": "https://api.sofascore.com/api/v1/unique-tournament/19906/tournament/197311/mma-events/all",
"fetched_at": "2026-10-07T17:00:00Z",
"count": 14,
"fights": [
{
"id": 17042538,
"slug": "wang-cong-natalia-silva",
"card_id": 197311,
"card_name": "UFC 332: Silva vs. Wang",
"order": 14,
"fight_type": "maincard",
"weight_class": "fly",
"win_type": "UD",
"gender": "F",
"final_round": 5,
"scheduled_rounds": 5,
"time_played_seconds": 1500,
"status": {
"code": 100,
"description": "Ended",
"type": "finished"
},
"winner_code": 1,
"start_timestamp": 1791079953,
"start_time": "2026-10-04T02:12:33Z",
"home_fighter": {
"id": 461932,
"name": "Natália Silva",
"slug": "natalia-silva",
"country": "Brazil",
"ranking": 0,
"wins": 21,
"draws": 1,
"losses": 5
},
"away_fighter": {
"id": 811429,
"name": "Wang Cong",
"slug": "cong-wang",
"country": "China",
"nickname": "The Joker",
"ranking": 8,
"wins": 10,
"draws": 0,
"losses": 2
}
},
{
"id": 16941581,
"slug": "imanol-rodriguez-alden-coria",
"card_id": 197311,
"card_name": "UFC 332: Silva vs. Wang",
"order": 9,
"fight_type": "prelims",
"weight_class": "fly",
"win_type": "TKO",
"gender": "M",
"final_round": 1,
"scheduled_rounds": 3,
"time_played_seconds": 191,
"status": {
"code": 100,
"description": "Ended",
"type": "finished"
},
"winner_code": 1,
"start_timestamp": 1791070629,
"start_time": "2026-10-03T23:37:09Z",
"home_fighter": {
"id": 1132073,
"name": "Imanol Rodriguez",
"slug": "imanol-rodriguez",
"country": "Mexico",
"nickname": "Hioman",
"ranking": 13,
"wins": 8,
"draws": 0,
"losses": 0
},
"away_fighter": {
"id": 1118994,
"name": "Alden Coria",
"slug": "alden-coria",
"country": "USA",
"nickname": "Cobra",
"wins": 13,
"draws": 0,
"losses": 4
}
},
{
"id": 16941579,
"slug": "mick-parkin-johnny-walker",
"card_id": 197311,
"card_name": "UFC 332: Silva vs. Wang",
"order": 5,
"fight_type": "earlyprelims",
"weight_class": "heavy",
"win_type": "KO",
"gender": "M",
"final_round": 1,
"scheduled_rounds": 3,
"time_played_seconds": 215,
"status": {
"code": 100,
"description": "Ended",
"type": "finished"
},
"winner_code": 1,
"start_timestamp": 1791063234,
"start_time": "2026-10-03T21:33:54Z",
"home_fighter": {
"id": 467489,
"name": "Johnny Walker",
"slug": "johnny-walker",
"country": "Brazil",
"nickname": " ",
"ranking": 12,
"wins": 23,
"draws": 0,
"losses": 10
},
"away_fighter": {
"id": 523249,
"name": "Mick Parkin",
"slug": "mick-parkin",
"country": "England",
"wins": 10,
"draws": 0,
"losses": 2
}
},
{
"id": 16941583,
"slug": "eric-nolan-court-mcgee",
"card_id": 197311,
"card_name": "UFC 332: Silva vs. Wang",
"order": 1,
"fight_type": "earlyprelims",
"weight_class": "welter",
"win_type": "TKO",
"gender": "M",
"final_round": 3,
"scheduled_rounds": 3,
"time_played_seconds": 801,
"status": {
"code": 100,
"description": "Ended",
"type": "finished"
},
"winner_code": 2,
"start_timestamp": 1791057751,
"start_time": "2026-10-03T20:02:31Z",
"home_fighter": {
"id": 471745,
"name": "Court McGee",
"slug": "court-mcgee",
"country": "USA",
"nickname": "The Crusher",
"wins": 22,
"draws": 0,
"losses": 16
},
"away_fighter": {
"id": 1117502,
"name": "Eric Nolan",
"slug": "eric-nolan",
"country": "USA",
"nickname": "Night Time",
"wins": 10,
"draws": 0,
"losses": 5
}
}
]
}
}
| Field | Filled in, of 5 checked | Values in the sample |
|---|---|---|
| id | 5 | |
| slug | 5 | |
| card_id | 5 | |
| card_name | 5 | UFC 332: Silva vs. Wang in all 5 |
| order | 5 | 10 to 14, median 12 |
| fight_type | 5 | maincard in all 5 |
| weight_class | 5 | “fly” and 4 other values |
| win_type | 5 | UD (2), TKO (2), KO (1) |
| gender | 5 | |
| final_round | 5 | 1 to 5, median 1 |
| scheduled_rounds | 5 | 3 to 5, median 3 |
| time_played_seconds | 5 | 129 to 1,500, median 248 |
| status | 5 | |
| winner_code | 5 | |
| start_timestamp | 5 | 2026-10-04 |
| start_time | 5 | 2026-10-04 |
| home_fighter | 5 | |
| away_fighter | 5 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| org_id | string | Yes | Numeric SofaScore MMA organisation id | 19906 | |
| card_id | string | Yes | Numeric card id (card_id) from sofascore-mma-schedule | 197311 | |
| part | string | Yes | Which segment of the card to return Allowed values: all, maincard, prelims, earlyprelims. | all | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/sofascore/mma-card?org_id=19906&card_id=197311&part=all" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"org_id": 19906,
"card_id": 197311,
"card_name": "UFC 332: Silva vs. Wang",
"part": "all",
"source_url": "https://api.sofascore.com/api/v1/unique-tournament/19906/tournament/197311/mma-events/all",
"fetched_at": "2026-10-07T17:00:00Z",
"count": 14,
"fights": [
{
"id": 17042538,
"slug": "wang-cong-natalia-silva",
"card_id": 197311,
"card_name": "UFC 332: Silva vs. Wang",
"order": 14,
"fight_type": "maincard",
"weight_class": "fly",
"win_type": "UD",
"gender": "F",
"final_round": 5,
"scheduled_rounds": 5,
"time_played_seconds": 1500,
"status": {
"code": 100,
"description": "Ended",
"type": "finished"
},
"winner_code": 1,
"start_timestamp": 1791079953,
"start_time": "2026-10-04T02:12:33Z",
"home_fighter": {
"id": 461932,
"name": "Natália Silva",
"slug": "natalia-silva",
"country": "Brazil",
"ranking": 0,
"wins": 21,
"draws": 1,
"losses": 5
},
"away_fighter": {
"id": 811429,
"name": "Wang Cong",
"slug": "cong-wang",
"country": "China",
"nickname": "The Joker",
"ranking": 8,
"wins": 10,
"draws": 0,
"losses": 2
}
},
{
"id": 16941581,
"slug": "imanol-rodriguez-alden-coria",
"card_id": 197311,
"card_name": "UFC 332: Silva vs. Wang",
"order": 9,
"fight_type": "prelims",
"weight_class": "fly",
"win_type": "TKO",
"gender": "M",
"final_round": 1,
"scheduled_rounds": 3,
"time_played_seconds": 191,
"status": {
"code": 100,
"description": "Ended",
"type": "finished"
},
"winner_code": 1,
"start_timestamp": 1791070629,
"start_time": "2026-10-03T23:37:09Z",
"home_fighter": {
"id": 1132073,
"name": "Imanol Rodriguez",
"slug": "imanol-rodriguez",
"country": "Mexico",
"nickname": "Hioman",
"ranking": 13,
"wins": 8,
"draws": 0,
"losses": 0
},
"away_fighter": {
"id": 1118994,
"name": "Alden Coria",
"slug": "alden-coria",
"country": "USA",
"nickname": "Cobra",
"wins": 13,
"draws": 0,
"losses": 4
}
},
{
"id": 16941579,
"slug": "mick-parkin-johnny-walker",
"card_id": 197311,
"card_name": "UFC 332: Silva vs. Wang",
"order": 5,
"fight_type": "earlyprelims",
"weight_class": "heavy",
"win_type": "KO",
"gender": "M",
"final_round": 1,
"scheduled_rounds": 3,
"time_played_seconds": 215,
"status": {
"code": 100,
"description": "Ended",
"type": "finished"
},
"winner_code": 1,
"start_timestamp": 1791063234,
"start_time": "2026-10-03T21:33:54Z",
"home_fighter": {
"id": 467489,
"name": "Johnny Walker",
"slug": "johnny-walker",
"country": "Brazil",
"nickname": " ",
"ranking": 12,
"wins": 23,
"draws": 0,
"losses": 10
},
"away_fighter": {
"id": 523249,
"name": "Mick Parkin",
"slug": "mick-parkin",
"country": "England",
"wins": 10,
"draws": 0,
"losses": 2
}
},
{
"id": 16941583,
"slug": "eric-nolan-court-mcgee",
"card_id": 197311,
"card_name": "UFC 332: Silva vs. Wang",
"order": 1,
"fight_type": "earlyprelims",
"weight_class": "welter",
"win_type": "TKO",
"gender": "M",
"final_round": 3,
"scheduled_rounds": 3,
"time_played_seconds": 801,
"status": {
"code": 100,
"description": "Ended",
"type": "finished"
},
"winner_code": 2,
"start_timestamp": 1791057751,
"start_time": "2026-10-03T20:02:31Z",
"home_fighter": {
"id": 471745,
"name": "Court McGee",
"slug": "court-mcgee",
"country": "USA",
"nickname": "The Crusher",
"wins": 22,
"draws": 0,
"losses": 16
},
"away_fighter": {
"id": 1117502,
"name": "Eric Nolan",
"slug": "eric-nolan",
"country": "USA",
"nickname": "Night Time",
"wins": 10,
"draws": 0,
"losses": 5
}
}
]
}
}Request schema
No body schema
Response schema
#/definitions/sofascore.mmaCardResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | sofascore.MMACardResponse | No | ||||
| data.card_id | integer | No | 197311 | |||
| data.card_name | string | No | UFC 332: Silva vs. Wang | |||
| data.count | integer | No | ||||
| data.fetched_at | string | No | ||||
| data.fights | array | No | ||||
| data.fights[].away_fighter | sofascore.MMAFighter | No | ||||
| data.fights[].away_fighter.country | string | No | Brazil | |||
| data.fights[].away_fighter.draws | integer | No | 1 | |||
| data.fights[].away_fighter.id | integer | No | 461932 | |||
| data.fights[].away_fighter.losses | integer | No | 5 | |||
| data.fights[].away_fighter.name | string | No | Natália Silva | |||
| data.fights[].away_fighter.nickname | string | No | Deus da Guerra | |||
| data.fights[].away_fighter.ranking | integer | No | 0 | Ranking is the fighter's division ranking; 0 is the champion, and it is omitted for an unranked fighter. | ||
| data.fights[].away_fighter.slug | string | No | natalia-silva | |||
| data.fights[].away_fighter.wins | integer | No | 21 | Wins, Draws and Losses are the professional record going into the fight. | ||
| data.fights[].card_id | integer | No | 197311 | |||
| data.fights[].card_name | string | No | UFC 332: Silva vs. Wang | |||
| data.fights[].fight_type | string | No | maincard | FightType is the card segment the bout belongs to: `maincard`, `prelims` or `earlyprelims`. | ||
| data.fights[].final_round | integer | No | 5 | FinalRound is the round the bout ended in; ScheduledRounds is its scheduled length. TimePlayedSeconds is the fight time actually fought. | ||
| data.fights[].gender | string | No | F | |||
| data.fights[].home_fighter | sofascore.MMAFighter | No | ||||
| data.fights[].home_fighter.country | string | No | Brazil | |||
| data.fights[].home_fighter.draws | integer | No | 1 | |||
| data.fights[].home_fighter.id | integer | No | 461932 | |||
| data.fights[].home_fighter.losses | integer | No | 5 | |||
| data.fights[].home_fighter.name | string | No | Natália Silva | |||
| data.fights[].home_fighter.nickname | string | No | Deus da Guerra | |||
| data.fights[].home_fighter.ranking | integer | No | 0 | Ranking is the fighter's division ranking; 0 is the champion, and it is omitted for an unranked fighter. | ||
| data.fights[].home_fighter.slug | string | No | natalia-silva | |||
| data.fights[].home_fighter.wins | integer | No | 21 | Wins, Draws and Losses are the professional record going into the fight. | ||
| data.fights[].id | integer | No | 17042538 | |||
| data.fights[].order | integer | No | 14 | Order is the bout's position on the card; the highest number is the main event. | ||
| data.fights[].scheduled_rounds | integer | No | 5 | |||
| data.fights[].slug | string | No | wang-cong-natalia-silva | |||
| data.fights[].start_time | string | No | 2026-10-02T02:12:33Z | |||
| data.fights[].start_timestamp | integer | No | ||||
| data.fights[].status | sofascore.EventStatus | No | ||||
| data.fights[].status.code | integer | No | SofaScore's numeric status code, for example 0 for not started and 100 for ended. | |||
| data.fights[].status.description | string | No | Ended | Status as displayed, for example "Ended". | ||
| data.fights[].status.type | string | No | finished | Status group, for example `notstarted`, `inprogress` or `finished`. | ||
| data.fights[].time_played_seconds | integer | No | 1500 | |||
| data.fights[].weight_class | string | No | fly | WeightClass is SofaScore's division key, for example `fly`, `bantam`, `feather`, `light`, `welter`, `middle`, `lightheavy`, `heavy` or `straw`. | ||
| data.fights[].win_type | string | No | UD | WinType is how the bout ended, for example `KO`, `TKO`, `SUB`, `UD`, `SD` or `NC`; omitted until it has ended. | ||
| data.fights[].winner_code | integer | No | 1 | WinnerCode is 1 when the home fighter won, 2 for the away fighter; absent until decided. | ||
| data.org_id | integer | No | 19906 | |||
| data.part | string | No | all | |||
| 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/mma-card?org_id=19906&card_id=197311&part=all" \
-H "x-api-key: $CRAWLORA_API_KEY"