SofaScore API endpoint
Returns the main event of every fight card an MMA organisation holds in one calendar month, with the card id and name, fighters (country, nickname, ranking where 0 is the champion, record), weight class, scheduled rounds, status, and for finished fights the winner, win type and final round. Find organisation ids (UFC 19906, PFL 19910, ONE 20269, Rizin 19905, Fight Nation Championship 20463, KSW 19946, OKTAGON 20258, Absolute Championship Akhmat 20254, Cage Warriors 19909, Dana White's Contender Series 20264, Brave CF 20267, Jungle Fight 20253) with sofascore-categories (sport `mma`) and sofascore-category-tournaments (category 1708). Use the `card_id` with sofascore-mma-card to read every bout. Returns 404 when the organisation has no card in that month or the id is not an MMA organisation.
/sofascore/mma-scheduleQuery parameters:
org_id: required. Numeric SofaScore MMA organisation id. Organisations (live-verified 2026-10-07): 19906 UFC, 19910 PFL, 20269 ONE Fighting Championship, 19905 Rizin, 20463 Fight Nation Championship, 19946 KSW, 20258 OKTAGON MMA, 20254 Absolute Championship Akhmat, 19909 Cage Warriors, 20264 Dana White's Contender Series, 20267 Brave Combat Federation, 20253 Jungle Fight Championship. Discover the current list with sofascore/categories (sport mma, which returns the World category 1708) and sofascore/category-tournaments with id=1708.month: required. Calendar month as YYYY-MM, e.g. 2026-10. Any other format is rejected with 400.Notable response behavior:
main_events has one fight per card: the main event, with the card_id and card_name (the card is a SofaScore tournament, e.g. UFC 332: Silva vs. Wang). Pass card_id to sofascore/mma-card to list every bout of the card.home_fighter and away_fighter (id is the SofaScore team id, the same id the rankings endpoint uses), weight_class (seen: straw, fly, bantam, feather, light, welter, middle, lightheavy, heavy), scheduled_rounds, status and start_time. A finished fight also has winner_code (1 home, 2 away), win_type (seen: KO, TKO, SUB, UD, SD, NC), final_round and time_played_seconds.ranking is the division ranking where 0 is the champion; it is omitted for an unranked fighter. wins, draws and losses are the professional record. nickname is omitted when SofaScore has none.404 when the organisation has no card in that month. SofaScore answers the same 404 for a month far in the past or future and for an id that is not an MMA organisation, so they cannot be told apart.Example response (shortened):
{
"code": 200,
"msg": "OK",
"data": {
"org_id": 19906,
"month": "2026-10",
"source_url": "https://api.sofascore.com/api/v1/unique-tournament/19906/scheduled-mma-main-events/2026-10",
"fetched_at": "2026-10-07T17:00:00Z",
"count": 5,
"main_events": [
{
"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": 16855023,
"slug": "movsar-evloev-alexander-volkanovski",
"card_id": 194262,
"card_name": "UFC 333: Volkanovski vs. Evloev",
"order": 12,
"fight_type": "maincard",
"weight_class": "feather",
"gender": "M",
"scheduled_rounds": 5,
"status": {
"code": 0,
"description": "Not started",
"type": "notstarted"
},
"start_timestamp": 1792857600,
"start_time": "2026-10-24T16:00:00Z",
"home_fighter": {
"id": 467404,
"name": "Alexander Volkanovski",
"slug": "alex-volkanovski",
"country": "Australia",
"nickname": "The Great",
"ranking": 0,
"wins": 27,
"draws": 0,
"losses": 4
},
"away_fighter": {
"id": 467455,
"name": "Movsar Evloev",
"slug": "movsar-evloev",
"country": "Russia",
"ranking": 1,
"wins": 19,
"draws": 0,
"losses": 0
}
}
]
}
}
| Field | Filled in, of 4 checked | Values in the sample |
|---|---|---|
| id | 4 | |
| slug | 4 | |
| card_id | 4 | |
| card_name | 4 | “UFC 320: Ankalaev vs. Pereira 2” and 3 other values |
| order | 4 | 13 to 14, median 13 |
| fight_type | 4 | maincard in all 4 |
| weight_class | 4 | “lightheavy” and 3 other values |
| win_type | 4 | “TKO” and 2 other values |
| gender | 4 | |
| final_round | 4 | 1 to 4, median 1 |
| scheduled_rounds | 4 | 3 to 5, median 3 |
| time_played_seconds | 4 | 82 to 1,200, median 278 |
| status | 4 | |
| winner_code | 4 | |
| start_timestamp | 4 | 2025-10-05 to 2025-10-25 |
| start_time | 4 | 2025-10-05 to 2025-10-25 |
| home_fighter | 4 | |
| away_fighter | 4 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| org_id | string | Yes | Numeric SofaScore MMA organisation id | 19906 | |
| month | string | Yes | Calendar month as YYYY-MM | 2026-10 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/sofascore/mma-schedule?org_id=19906&month=2026-10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"org_id": 19906,
"month": "2026-10",
"source_url": "https://api.sofascore.com/api/v1/unique-tournament/19906/scheduled-mma-main-events/2026-10",
"fetched_at": "2026-10-07T17:00:00Z",
"count": 5,
"main_events": [
{
"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": 16855023,
"slug": "movsar-evloev-alexander-volkanovski",
"card_id": 194262,
"card_name": "UFC 333: Volkanovski vs. Evloev",
"order": 12,
"fight_type": "maincard",
"weight_class": "feather",
"gender": "M",
"scheduled_rounds": 5,
"status": {
"code": 0,
"description": "Not started",
"type": "notstarted"
},
"start_timestamp": 1792857600,
"start_time": "2026-10-24T16:00:00Z",
"home_fighter": {
"id": 467404,
"name": "Alexander Volkanovski",
"slug": "alex-volkanovski",
"country": "Australia",
"nickname": "The Great",
"ranking": 0,
"wins": 27,
"draws": 0,
"losses": 4
},
"away_fighter": {
"id": 467455,
"name": "Movsar Evloev",
"slug": "movsar-evloev",
"country": "Russia",
"ranking": 1,
"wins": 19,
"draws": 0,
"losses": 0
}
}
]
}
}Request schema
No body schema
Response schema
#/definitions/sofascore.mmaScheduleResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | sofascore.MMAScheduleResponse | No | ||||
| data.count | integer | No | ||||
| data.fetched_at | string | No | ||||
| data.main_events | array | No | MMAFight record, 39 fields: away_fighter, card_id, card_name, fight_type, final_round, gender, home_fighter, id, order, scheduled_rounds, slug, start_time and 6 more. Described under SofaScore MMA card API. | |||
| data.month | string | No | 2026-10 | |||
| data.org_id | integer | No | 19906 | |||
| 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-schedule?org_id=19906&month=2026-10" \
-H "x-api-key: $CRAWLORA_API_KEY"