Welcome to the Jaspr.io MMA API. This API provides comprehensive Mixed Martial Arts data including promotions, fighters, events, and more.
Base URL: https://mma.jaspr.tech
Promotions covered: UFC
Promotions planned: PFL, ONE, BKFC.
All API requests require authentication using an API key. Include your key as a query parameter in every request:
https://mma.jaspr.tech/v1/endpoint?key=YOUR_API_KEY
Important: This API is designed for backend applications and server-side implementations. It is not built with the intention of powering front-end applications directly. Your API key should be kept secure on your server and never exposed in client-side code.
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/status |
Get API status and health information |
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/promotions |
Retrieve a list of all MMA promotions with their IDs and names |
| GET | /v1/promotion/:id |
Get complete promotion details including country, founding year, and website |
Recommended Workflow: The promotion endpoints are designed to be used in a two-step process:
/v1/promotions to retrieve the list of available promotions with their IDs./v1/promotion/:id.Currently, only UFC is available, but more promotions (PFL, ONE, BKFC) are planned for future releases.
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/events |
Retrieve all MMA events with their IDs, names, and dates |
| GET | /v1/events/:year |
Retrieve all events scheduled in a specific year |
| GET | /v1/events/:year/:month |
Retrieve all events scheduled in a specific month |
| GET | /v1/events/:year/:month/:day |
Retrieve all events scheduled on a specific date |
| GET | /v1/event/:event_id |
Get complete event details including venue, timezone, and all associated fights |
| GET | /v1/event/espn/:id |
Look up an event by its ESPN ID |
| GET | /v1/event/tapology/:id |
Look up an event by its Tapology ID |
| GET | /v1/event/sherdog/:id |
Look up an event by its Sherdog ID |
| GET | /v1/event/fightmatrix/:id |
Look up an event by its FightMatrix ID |
| GET | /v1/event/ufc/:id |
Look up an event by its UFC.com ID |
| GET | /v1/event/ufcstats/:id |
Look up an event by its UFCStats ID |
Recommended Workflow: The event endpoints are designed to be used in a two-step process:
/v1/events to retrieve all events, or use the date filter endpoints
(/v1/events/:year, /v1/events/:year/:month, or
/v1/events/:year/:month/:day) to narrow down by date./v1/event/:event_id.Platform ID Lookup: If you already have an event ID from another
platform (e.g. an ESPN event ID), use the platform-specific route (e.g. /v1/event/espn/:id)
to get the same full event detail without needing the canonical event_id first. Supported
platforms: ESPN, Tapology, Sherdog, FightMatrix, UFC.com, UFCStats.
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/fights |
Retrieve all fights with their IDs, fighters, categories, and results |
| GET | /v1/fights/:year |
Retrieve all fights scheduled in a specific year with basic info and results |
| GET | /v1/fights/:year/:month |
Retrieve all fights scheduled in a specific month with basic info and results |
| GET | /v1/fights/:year/:month/:day |
Retrieve all fights scheduled on a specific date with basic info and results |
| GET | /v1/fight/:fight_id |
Get complete fight details including round-by-round stats, strikes, and submissions |
Recommended Workflow: The fight endpoints are designed to be used in a two-step process:
/v1/fights to retrieve all fights, or use the date filter endpoints
(/v1/fights/:year, /v1/fights/:year/:month, or
/v1/fights/:year/:month/:day) to narrow down by date./v1/fight/:fight_id.This approach minimizes API calls by allowing you to retrieve and filter fights locally, then request detailed statistics only for the fights you want to analyze.
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/fighters |
Retrieve a list of all fighters with their IDs, names, and nicknames |
| GET | /v1/fighter/:fighter_id |
Get complete fighter profile including physical stats, record, and fight history |
| GET | /v1/fighter/espn/:id |
Look up a fighter by their ESPN ID |
| GET | /v1/fighter/tapology/:id |
Look up a fighter by their Tapology ID |
| GET | /v1/fighter/sherdog/:id |
Look up a fighter by their Sherdog ID |
| GET | /v1/fighter/fightmatrix/:id |
Look up a fighter by their FightMatrix ID |
| GET | /v1/fighter/ufc/:id |
Look up a fighter by their UFC.com ID |
| GET | /v1/fighter/ufcstats/:id |
Look up a fighter by their UFCStats ID |
Recommended Workflow: The fighter endpoints are designed to be used in a two-step process:
/v1/fighters to retrieve the complete list of fighters with their IDs, names, and
nicknames./v1/fighter/:fighter_id.Platform ID Lookup: If you already have a fighter's ID from another
platform (e.g. an ESPN athlete ID), use the platform-specific route (e.g. /v1/fighter/espn/:id)
to get the same full fighter profile without needing the canonical fighter_id first. Supported
platforms: ESPN, Tapology, Sherdog, FightMatrix, UFC.com, UFCStats.
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/rankings |
Retrieve latest rankings for every division across a promotion |
| GET | /v1/rankings/:promotion_id/:division_id |
Retrieve the latest rankings for a specific division (e.g., UFC Featherweight) |
Recommended Workflow: Rankings endpoints are designed to first give you the full board, then let you drill down:
/v1/rankings to pull every division with the freshest rankings snapshot.promotion_id and division_id you care about./v1/rankings/:promotion_id/:division_id to fetch just that division's latest ordered
table.Ranks use either the literal champion label or numeric positions.
Each rank entry includes a stable fighter id plus the display name for quick
rendering.
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/teams |
Retrieve a list of all teams with their IDs and names |
| GET | /v1/team/:team_id |
Get complete team details including links and roster of fighters |
Recommended Workflow: The team endpoints are designed to be used in a two-step process:
/v1/teams to retrieve the complete list of teams with their IDs and names./v1/team/:team_id.This approach minimizes API calls by allowing you to search and filter the lightweight list locally, then request detailed data only for the teams you actually need.
All API responses are returned in JSON format with a consistent structure containing three main fields:
qry - Query status code (1 for success, 0 for denied/error)res - Response data object containing the requested informationmsg - Message object containing any additional information or error messagescURL:
curl -X GET "https://mma.jaspr.tech/v1/status?key=YOUR_API_KEY"
Node.js:
const axios = require('axios');
const response = await axios.get('https://mma.jaspr.tech/v1/status', {
params: { key: 'YOUR_API_KEY' }
});
console.log(response.data);
PHP:
$apiKey = 'YOUR_API_KEY';
$url = 'https://mma.jaspr.tech/v1/status?key=' . $apiKey;
$response = file_get_contents($url);
$data = json_decode($response, true);
print_r($data);
Response:
{
"qry": 1,
"res": {
"ok": true,
"version": "0.1.0-dev",
"time": "2025-11-14T00:50:12.687Z"
},
"msg": {}
}
cURL:
curl -X GET "https://mma.jaspr.tech/v1/promotions?key=YOUR_API_KEY"
Node.js:
const response = await axios.get('https://mma.jaspr.tech/v1/promotions', {
params: { key: 'YOUR_API_KEY' }
});
console.log(response.data);
PHP:
$apiKey = 'YOUR_API_KEY';
$url = 'https://mma.jaspr.tech/v1/promotions?key=' . $apiKey;
$response = file_get_contents($url);
$data = json_decode($response, true);
Response:
{
"qry": 1,
"res": [
{
"id": "ufc",
"name": "Ultimate Fighting Championship"
}
],
"msg": {}
}
cURL:
curl -X GET "https://mma.jaspr.tech/v1/promotion/ufc?key=YOUR_API_KEY"
Node.js:
const promotionId = 'ufc';
const response = await axios.get(`https://mma.jaspr.tech/v1/promotion/${promotionId}`, {
params: { key: 'YOUR_API_KEY' }
});
PHP:
$apiKey = 'YOUR_API_KEY';
$promotionId = 'ufc';
$url = 'https://mma.jaspr.tech/v1/promotion/' . $promotionId . '?key=' . $apiKey;
$response = file_get_contents($url);
$data = json_decode($response, true);
Response:
{
"qry": 1,
"res": {
"id": "ufc",
"name": "Ultimate Fighting Championship",
"country": "USA",
"founded": 1993,
"website": "https://www.ufc.com"
},
"msg": {}
}
cURL:
curl -X GET "https://mma.jaspr.tech/v1/events?key=YOUR_API_KEY"
Node.js:
const response = await axios.get('https://mma.jaspr.tech/v1/events', {
params: { key: 'YOUR_API_KEY' }
});
PHP:
$apiKey = 'YOUR_API_KEY';
$url = 'https://mma.jaspr.tech/v1/events?key=' . $apiKey;
$response = file_get_contents($url);
$data = json_decode($response, true);
Response:
{
"qry": 1,
"res": [
{
"event_id": "ufc_fight_night_machado_garry_vs_buckley",
"promotion_id": "ufc",
"event_name": "UFC Fight Night: Machado Garry vs. Buckley",
"event_time": "2024-12-14T19:00:00+00:00"
}
],
"msg": {}
}
cURL:
curl -X GET "https://mma.jaspr.tech/v1/events/2024?key=YOUR_API_KEY"
Node.js:
const year = 2024;
const response = await axios.get(`https://mma.jaspr.tech/v1/events/${year}`, {
params: { key: 'YOUR_API_KEY' }
});
PHP:
$apiKey = 'YOUR_API_KEY';
$year = 2024;
$url = 'https://mma.jaspr.tech/v1/events/' . $year . '?key=' . $apiKey;
$response = file_get_contents($url);
$data = json_decode($response, true);
Response:
{
"qry": 1,
"res": [
{
"event_id": "ufc_fight_night_machado_garry_vs_buckley",
"promotion_id": "ufc",
"event_name": "UFC Fight Night: Machado Garry vs. Buckley",
"event_time": "2024-12-14T19:00:00+00:00"
}
],
"msg": {}
}
cURL:
curl -X GET "https://mma.jaspr.tech/v1/events/2024/12?key=YOUR_API_KEY"
Node.js:
const year = 2024;
const month = 12;
const response = await axios.get(`https://mma.jaspr.tech/v1/events/${year}/${month}`, {
params: { key: 'YOUR_API_KEY' }
});
PHP:
$apiKey = 'YOUR_API_KEY';
$year = 2024;
$month = 12;
$url = 'https://mma.jaspr.tech/v1/events/' . $year . '/' . $month . '?key=' . $apiKey;
$response = file_get_contents($url);
$data = json_decode($response, true);
Response:
{
"qry": 1,
"res": [
{
"event_id": "ufc_fight_night_machado_garry_vs_buckley",
"promotion_id": "ufc",
"event_name": "UFC Fight Night: Machado Garry vs. Buckley",
"event_time": "2024-12-14T19:00:00+00:00"
}
],
"msg": {}
}
cURL:
curl -X GET "https://mma.jaspr.tech/v1/events/2024/12/14?key=YOUR_API_KEY"
Node.js:
const year = 2024;
const month = 12;
const day = 14;
const response = await axios.get(`https://mma.jaspr.tech/v1/events/${year}/${month}/${day}`, {
params: { key: 'YOUR_API_KEY' }
});
PHP:
$apiKey = 'YOUR_API_KEY';
$year = 2024;
$month = 12;
$day = 14;
$url = 'https://mma.jaspr.tech/v1/events/' . $year . '/' . $month . '/' . $day . '?key=' . $apiKey;
$response = file_get_contents($url);
$data = json_decode($response, true);
Response:
{
"qry": 1,
"res": [
{
"event_id": "ufc_fight_night_machado_garry_vs_buckley",
"promotion_id": "ufc",
"event_name": "UFC Fight Night: Machado Garry vs. Buckley",
"event_time": "2024-12-14T19:00:00+00:00"
}
],
"msg": {}
}
cURL:
curl -X GET "https://mma.jaspr.tech/v1/event/ufc_308?key=YOUR_API_KEY"
Node.js:
const eventId = 'ufc_308';
const response = await axios.get(`https://mma.jaspr.tech/v1/event/${eventId}`, {
params: { key: 'YOUR_API_KEY' }
});
PHP:
$apiKey = 'YOUR_API_KEY';
$eventId = 'ufc_308';
$url = 'https://mma.jaspr.tech/v1/event/' . $eventId . '?key=' . $apiKey;
$response = file_get_contents($url);
$data = json_decode($response, true);
What to expect: The payload includes high-level event metadata (date parts, timezone, and
last_aggregation as a Unix timestamp indicating when the event was last refreshed) plus a
fights array. Each fight entry provides IDs for cross-linking, status, winner flags on each fighter,
and finishing details when available. Unconfirmed or future bouts return null for fields that are not
finalized yet.
Response:
{
"qry": 1,
"res": {
"event_id": "ufc_308",
"promotion_id": "ufc",
"event_year": 2024,
"event_month": 10,
"event_day": 26,
"last_aggregation": 1763744987,
"name": "UFC 308",
"date_time": "2024-10-26T10:00:00+00:00",
"timezone": "UTC",
"fights": [
{
"fight_id": "2024_10_26_ufc_robert_whittaker_vs_khamzat_chimaev",
"category": "Middleweight",
"status": "Finished",
"fighter_1": {
"fighter_id": "robert_whittaker",
"name": "Robert Whittaker",
"winner": false
},
"fighter_2": {
"fighter_id": "khamzat_chimaev",
"name": "Khamzat Chimaev",
"winner": true
},
"method": "SUB",
"minute": "3:34",
"round": 1
},
{
"fight_id": "2024_10_26_ufc_magomed_ankalaev_vs_aleksandar_rakic",
"category": "Light Heavyweight",
"status": "Finished",
"fighter_1": {
"fighter_id": "magomed_ankalaev",
"name": "Magomed Ankalaev",
"winner": true
},
"fighter_2": {
"fighter_id": "aleksandar_rakic",
"name": "Aleksandar Rakic",
"winner": false
},
"method": "Points",
"minute": "5:00",
"round": 3
},
{
"fight_id": "2024_10_26_ufc_lerone_murphy_vs_dan_ige",
"category": "Featherweight",
"status": "Finished",
"fighter_1": {
"fighter_id": "lerone_murphy",
"name": "Lerone Murphy",
"winner": true
},
"fighter_2": {
"fighter_id": "dan_ige",
"name": "Dan Ige",
"winner": false
},
"method": "Points",
"minute": "5:00",
"round": 3
},
{
"fight_id": "2024_10_26_ufc_sharabutdin_magomedov_vs_armen_petrosyan",
"category": null,
"status": null,
"fighter_1": {
"fighter_id": "sharabutdin_magomedov",
"name": "Sharabutdin Magomedov",
"winner": null
},
"fighter_2": {
"fighter_id": "armen_petrosyan",
"name": "Armen Petrosyan",
"winner": null
},
"method": null,
"minute": null,
"round": null
},
{
"fight_id": "2024_10_26_ufc_ilia_topuria_vs_max_holloway",
"category": "Featherweight",
"status": "Finished",
"fighter_1": {
"fighter_id": "ilia_topuria",
"name": "Ilia Topuria",
"winner": true
},
"fighter_2": {
"fighter_id": "max_holloway",
"name": "Max Holloway",
"winner": false
},
"method": "KO",
"minute": "1:34",
"round": 3
},
{
"fight_id": "2024_10_26_ufc_geoff_neal_vs_rafael_dos_anjos",
"category": "Welterweight",
"status": "Finished",
"fighter_1": {
"fighter_id": "geoff_neal",
"name": "Geoff Neal",
"winner": true
},
"fighter_2": {
"fighter_id": "rafael_dos_anjos",
"name": "Rafael Dos Anjos",
"winner": false
},
"method": "KO",
"minute": "1:30",
"round": 1
},
{
"fight_id": "2024_10_26_ufc_farid_basharat_vs_victor_hugo",
"category": "Bantamweight",
"status": "Finished",
"fighter_1": {
"fighter_id": "farid_basharat",
"name": "Farid Basharat",
"winner": true
},
"fighter_2": {
"fighter_id": "victor_hugo",
"name": "Victor Hugo",
"winner": false
},
"method": "Points",
"minute": "5:00",
"round": 3
},
{
"fight_id": "2024_10_26_ufc_abusupiyan_magomedov_vs_brunno_ferreira",
"category": null,
"status": null,
"fighter_1": {
"fighter_id": "abusupiyan_magomedov",
"name": "Abusupiyan Magomedov",
"winner": null
},
"fighter_2": {
"fighter_id": "brunno_ferreira",
"name": "Brunno Ferreira",
"winner": null
},
"method": null,
"minute": null,
"round": null
},
{
"fight_id": "2024_10_26_ufc_kennedy_nzechukwu_vs_chris_barnett",
"category": "Heavyweight",
"status": "Finished",
"fighter_1": {
"fighter_id": "kennedy_nzechukwu",
"name": "Kennedy Nzechukwu",
"winner": true
},
"fighter_2": {
"fighter_id": "chris_barnett",
"name": "Chris Barnett",
"winner": false
},
"method": "KO",
"minute": "4:27",
"round": 1
},
{
"fight_id": "2024_10_26_ufc_ibo_aslan_vs_raffael_cerqueira",
"category": "Light Heavyweight",
"status": "Finished",
"fighter_1": {
"fighter_id": "ibo_aslan",
"name": "Ibo Aslan",
"winner": true
},
"fighter_2": {
"fighter_id": "raffael_cerqueira",
"name": "Raffael Cerqueira",
"winner": false
},
"method": "KO",
"minute": "0:51",
"round": 1
},
{
"fight_id": "2024_10_26_ufc_rinat_fakhretdinov_vs_carlos_leal",
"category": "Welterweight",
"status": "Finished",
"fighter_1": {
"fighter_id": "rinat_fakhretdinov",
"name": "Rinat Fakhretdinov",
"winner": true
},
"fighter_2": {
"fighter_id": "carlos_leal",
"name": "Carlos Leal",
"winner": false
},
"method": "Points",
"minute": "5:00",
"round": 3
},
{
"fight_id": "2024_10_26_ufc_mateusz_rebecki_vs_myktybek_orolbai_uulu",
"category": null,
"status": null,
"fighter_1": {
"fighter_id": "mateusz_rebecki",
"name": "Mateusz Rebecki",
"winner": null
},
"fighter_2": {
"fighter_id": "myktybek_orolbai_uulu",
"name": "Myktybek Orolbai Uulu",
"winner": null
},
"method": null,
"minute": null,
"round": null
},
{
"fight_id": "2024_10_26_ufc_ismail_naurdiev_vs_bruno_silva",
"category": "Middleweight",
"status": "Finished",
"fighter_1": {
"fighter_id": "ismail_naurdiev",
"name": "Ismail Naurdiev",
"winner": true
},
"fighter_2": {
"fighter_id": "bruno_silva",
"name": "Bruno Silva",
"winner": false
},
"method": "Points",
"minute": "5:00",
"round": 3
}
]
},
"msg": {
}
}
Note: The event payload now includes the full fight card under res.fights with winner flags,
method, round, and timing for completed bouts. Upcoming or unconfirmed fights keep category,
status, method, minute, and round as null so
consumers can distinguish scheduled versus finished matchups.
If you have an event ID from another platform (ESPN, Tapology, Sherdog, FightMatrix, UFC.com, or UFCStats),
you can look up the event directly without knowing the canonical event_id. The response is the same
full event object as the canonical route.
cURL (ESPN example):
curl -X GET "https://mma.jaspr.tech/v1/event/espn/600047680?key=YOUR_API_KEY"
Node.js:
// Supported platforms: espn, tapology, sherdog, fightmatrix, ufc, ufcstats
const platform = 'espn';
const platformId = '600047680';
const response = await axios.get(`https://mma.jaspr.tech/v1/event/${platform}/${platformId}`, {
params: { key: 'YOUR_API_KEY' }
});
PHP:
$apiKey = 'YOUR_API_KEY';
$platform = 'espn';
$platformId = '600047680';
$url = 'https://mma.jaspr.tech/v1/event/' . $platform . '/' . $platformId . '?key=' . $apiKey;
$response = file_get_contents($url);
$data = json_decode($response, true);
Response: Returns the same full event object as /v1/event/:event_id, including
venue, timezone, fights array, and all metadata. Returns "qry": 0 if no event matches the
given platform ID.
cURL:
curl -X GET "https://mma.jaspr.tech/v1/fights?key=YOUR_API_KEY"
Node.js:
const response = await axios.get('https://mma.jaspr.tech/v1/fights', {
params: { key: 'YOUR_API_KEY' }
});
PHP:
$apiKey = 'YOUR_API_KEY';
$url = 'https://mma.jaspr.tech/v1/fights?key=' . $apiKey;
$response = file_get_contents($url);
$data = json_decode($response, true);
Response:
{
"qry": 1,
"res": [
{
"fight_id": "2024_10_26_ufc_robert_whittaker_vs_khamzat_chimaev",
"promotion_id": "ufc",
"event_id": "ufc_308",
"time": "2024-10-26T10:00:00+00:00",
"category": "Middleweight",
"status": "Finished",
"fighter_1": {
"fighter_id": "robert_whittaker",
"name": "Robert Whittaker",
"winner": false
},
"fighter_2": {
"fighter_id": "khamzat_chimaev",
"name": "Khamzat Chimaev",
"winner": true
},
"result": {
"method": "SUB",
"round": 1,
"minute": "3:34"
}
}
],
"msg": {}
}
Note: The res array can be large; apply server-side or client-side filters when possible to
reduce payload size.
cURL:
curl -X GET "https://mma.jaspr.tech/v1/fights/2024?key=YOUR_API_KEY"
Node.js:
const year = 2024;
const response = await axios.get(`https://mma.jaspr.tech/v1/fights/${year}`, {
params: { key: 'YOUR_API_KEY' }
});
PHP:
$apiKey = 'YOUR_API_KEY';
$year = 2024;
$url = 'https://mma.jaspr.tech/v1/fights/' . $year . '?key=' . $apiKey;
$response = file_get_contents($url);
$data = json_decode($response, true);
Response:
{
"qry": 1,
"res": [
{
"fight_id": "2024_10_26_ufc_robert_whittaker_vs_khamzat_chimaev",
"promotion_id": "ufc",
"event_id": "ufc_308",
"time": "2024-10-26T10:00:00+00:00",
"category": "Middleweight",
"status": "Finished",
"fighter_1": {
"fighter_id": "robert_whittaker",
"name": "Robert Whittaker",
"winner": false
},
"fighter_2": {
"fighter_id": "khamzat_chimaev",
"name": "Khamzat Chimaev",
"winner": true
},
"result": {
"method": "SUB",
"round": 1,
"minute": "3:34"
}
}
],
"msg": {}
}
cURL:
curl -X GET "https://mma.jaspr.tech/v1/fights/2025/11?key=YOUR_API_KEY"
Node.js:
const year = 2025;
const month = 11;
const response = await axios.get(`https://mma.jaspr.tech/v1/fights/${year}/${month}`, {
params: { key: 'YOUR_API_KEY' }
});
PHP:
$apiKey = 'YOUR_API_KEY';
$year = 2025;
$month = 11;
$url = 'https://mma.jaspr.tech/v1/fights/' . $year . '/' . $month . '?key=' . $apiKey;
$response = file_get_contents($url);
$data = json_decode($response, true);
Response:
{
"qry": 1,
"res": [
{
"fight_id": "2025_11_15_ufc_jack_della_maddalena_vs_islam_makhachev",
"promotion_id": "ufc",
"event_id": "ufc_322",
"time": "2025-11-16T05:30:00+00:00",
"category": "Welterweight",
"status": "Finished",
"fighter_1": {
"fighter_id": "jack_della_maddalena",
"name": "Jack Della Maddalena",
"winner": false
},
"fighter_2": {
"fighter_id": "islam_makhachev",
"name": "Islam Makhachev",
"winner": true
},
"result": {
"method": "Points"
}
},
{
"fight_id": "2025_11_15_ufc_valentina_shevchenko_vs_zhang_weili",
"promotion_id": "ufc",
"event_id": "ufc_322",
"time": "2025-11-16T04:20:00+00:00",
"category": "Women's Flyweight",
"status": "Finished",
"fighter_1": {
"fighter_id": "valentina_shevchenko",
"name": "Valentina Shevchenko",
"winner": true
},
"fighter_2": {
"fighter_id": "zhang_weili",
"name": "Zhang Weili",
"winner": false
},
"result": {
"method": "Points"
}
}
],
"msg": {}
}
Note: This endpoint returns a list of fights for the specified year and month, sorted by date descending. Each fight includes basic information and the result.
cURL:
curl -X GET "https://mma.jaspr.tech/v1/fights/2024/10/26?key=YOUR_API_KEY"
Node.js:
const year = 2024;
const month = 10;
const day = 26;
const response = await axios.get(`https://mma.jaspr.tech/v1/fights/${year}/${month}/${day}`, {
params: { key: 'YOUR_API_KEY' }
});
PHP:
$apiKey = 'YOUR_API_KEY';
$year = 2024;
$month = 10;
$day = 26;
$url = 'https://mma.jaspr.tech/v1/fights/' . $year . '/' . $month . '/' . $day . '?key=' . $apiKey;
$response = file_get_contents($url);
$data = json_decode($response, true);
Response:
{
"qry": 1,
"res": [
{
"fight_id": "2024_10_26_ufc_robert_whittaker_vs_khamzat_chimaev",
"promotion_id": "ufc",
"event_id": "ufc_308",
"time": "2024-10-26T10:00:00+00:00",
"category": "Middleweight",
"status": "Finished",
"fighter_1": {
"fighter_id": "robert_whittaker",
"name": "Robert Whittaker",
"winner": false
},
"fighter_2": {
"fighter_id": "khamzat_chimaev",
"name": "Khamzat Chimaev",
"winner": true
},
"result": {
"method": "SUB",
"round": 1,
"minute": "3:34"
}
}
],
"msg": {}
}
cURL:
curl -X GET "https://mma.jaspr.tech/v1/fight/2025_11_15_ufc_jack_della_maddalena_vs_islam_makhachev?key=YOUR_API_KEY"
Node.js:
const fightId = '2025_11_15_ufc_jack_della_maddalena_vs_islam_makhachev';
const response = await axios.get(`https://mma.jaspr.tech/v1/fight/${fightId}`, {
params: { key: 'YOUR_API_KEY' }
});
PHP:
$apiKey = 'YOUR_API_KEY';
$fightId = '2025_11_15_ufc_jack_della_maddalena_vs_islam_makhachev';
$url = 'https://mma.jaspr.tech/v1/fight/' . $fightId . '?key=' . $apiKey;
$response = file_get_contents($url);
$data = json_decode($response, true);
Response:
{
"qry": 1,
"res": {
"date": "2025-11-15",
"main_or_prelim": "Main",
"is_main": true,
"time": "2025-11-16T05:30:00+00:00",
"timezone": "UTC",
"category": "Welterweight",
"status": "Finished",
"fighter_1": {
"fighter_id": "jack_della_maddalena",
"name": "Jack Della Maddalena",
"winner": false,
"knockdowns": 0,
"sig_strikes": {
"head": 10,
"body": 6,
"legs": 2
},
"submissions": 0,
"takedowns": {
"attempt": 1,
"landed": 0,
"control_time": "0:00"
},
"total_strikes": {
"head": 45,
"body": 12,
"legs": 4
}
},
"fighter_2": {
"fighter_id": "islam_makhachev",
"name": "Islam Makhachev",
"winner": true,
"knockdowns": 0,
"sig_strikes": {
"head": 14,
"body": 6,
"legs": 10
},
"submissions": 0,
"takedowns": {
"attempt": 4,
"landed": 4,
"control_time": "19:10"
},
"total_strikes": {
"head": 40,
"body": 7,
"legs": 10
}
},
"id": 2296,
"result": {
"ko_type": null,
"method": "Points",
"minute": "5:00",
"round": 5,
"score_cards": [
"45-50|45-50|45-50"
],
"sub_type": null,
"target": null
}
},
"msg": {}
}
Note: This endpoint returns complete fight details including comprehensive statistics for both fighters. Use the fight_id obtained from the date filter endpoints to retrieve full fight data.
cURL:
curl -X GET "https://mma.jaspr.tech/v1/fighters?key=YOUR_API_KEY"
Node.js:
const response = await axios.get('https://mma.jaspr.tech/v1/fighters', {
params: { key: 'YOUR_API_KEY' }
});
PHP:
$apiKey = 'YOUR_API_KEY';
$url = 'https://mma.jaspr.tech/v1/fighters?key=' . $apiKey;
$response = file_get_contents($url);
$data = json_decode($response, true);
Response:
{
"qry": 1,
"res": [
{
"fighter_id": "ilia_topuria",
"name": "Ilia Topuria",
"nickname": "El Matador"
},
{
"fighter_id": "max_holloway",
"name": "Max Holloway",
"nickname": "Blessed"
}
],
"msg": {}
}
cURL:
curl -X GET "https://mma.jaspr.tech/v1/fighter/ilia_topuria?key=YOUR_API_KEY"
Node.js:
const fighterId = 'ilia_topuria';
const response = await axios.get(`https://mma.jaspr.tech/v1/fighter/${fighterId}`, {
params: { key: 'YOUR_API_KEY' }
});
PHP:
$apiKey = 'YOUR_API_KEY';
$fighterId = 'ilia_topuria';
$url = 'https://mma.jaspr.tech/v1/fighter/' . $fighterId . '?key=' . $apiKey;
$response = file_get_contents($url);
$data = json_decode($response, true);
Response:
{
"qry": 1,
"res": {
"fighter_id": "ilia_topuria",
"name": "Ilia Topuria",
"nickname": "El Matador",
"data": {
"name": "Ilia Topuria",
"nickname": "El Matador",
"gender": "M",
"category": "Featherweight",
"age": "28",
"height": "67.00",
"weight": "145.00",
"reach": "69.00",
"leg_reach": "37.00",
"stance": "Orthodox",
"fighting_style": "Brazilian Jiu-Jitsu",
"place_of_birth": "Germany",
"date_of_birth": "1997-01-21",
"team": {
"id": "climent_club",
"name": "Climent Club"
},
"record": {
"wins": "17",
"losses": "0",
"draws": "0"
},
"octagon_debut": "Oct. 10, 2020",
"last_update": "2025-07-06T00:10:33+00:00",
"creation_time": 1763223877,
"fights": [
{
"fight_id": "2025_02_15_ufc_topuria_vs_volkanovski",
"promotion_id": "ufc",
"event_id": "ufc_312",
"event_time": "2025-02-15T22:00:00+00:00",
"timezone": "UTC",
"category": "Featherweight",
"status": "Scheduled",
"winner": null,
"method": null,
"round": null,
"minute": null
},
{
"fight_id": "2024_02_18_ufc_topuria_vs_volkanovski",
"promotion_id": "ufc",
"event_id": "ufc_298",
"event_time": "2024-02-18T03:15:00+00:00",
"timezone": "UTC",
"category": "Featherweight",
"status": "Finished",
"winner": true,
"method": "KO",
"round": 2,
"minute": "3:45"
}
]
}
},
"msg": {}
}
Note: This endpoint returns detailed normalized information about a single fighter. Height values are in
inches, weight in pounds, and reach measurements in inches. All field names use snake_case for consistency. The
data.fights array lists the fighter's bouts (newest first) with winner/method information pulled
from the aggregation pipeline.
If you have a fighter's ID from another platform (ESPN, Tapology, Sherdog, FightMatrix, UFC.com, or UFCStats),
you can look up their profile directly without knowing the canonical fighter_id. The response is the
same full fighter object as the canonical route.
cURL (ESPN example):
curl -X GET "https://mma.jaspr.tech/v1/fighter/espn/4566007?key=YOUR_API_KEY"
Node.js:
// Supported platforms: espn, tapology, sherdog, fightmatrix, ufc, ufcstats
const platform = 'espn';
const platformId = '4566007';
const response = await axios.get(`https://mma.jaspr.tech/v1/fighter/${platform}/${platformId}`, {
params: { key: 'YOUR_API_KEY' }
});
PHP:
$apiKey = 'YOUR_API_KEY';
$platform = 'espn';
$platformId = '4566007';
$url = 'https://mma.jaspr.tech/v1/fighter/' . $platform . '/' . $platformId . '?key=' . $apiKey;
$response = file_get_contents($url);
$data = json_decode($response, true);
Response: Returns the same full fighter profile as /v1/fighter/:fighter_id, including
physical stats, record, fight history, and team. Returns "qry": 0 if no fighter matches the
given platform ID.
cURL:
curl -X GET "https://mma.jaspr.tech/v1/rankings?key=YOUR_API_KEY"
Node.js:
const response = await axios.get('https://mma.jaspr.tech/v1/rankings', {
params: { key: 'YOUR_API_KEY' }
});
console.log(response.data);
PHP:
$apiKey = 'YOUR_API_KEY';
$url = 'https://mma.jaspr.tech/v1/rankings?key=' . $apiKey;
$response = file_get_contents($url);
$data = json_decode($response, true);
print_r($data);
Response:
{
"qry": 1,
"res": [
{
"promotion_id": "ufc",
"division_id": "mens_pound_for_pound_top_rank",
"division_name": "Men's Pound-for-Pound Top Rank",
"ranks": [
{ "rank": 1, "id": "ilia_topuria", "name": "Ilia Topuria" },
{ "rank": 2, "id": "islam_makhachev", "name": "Islam Makhachev" },
{ "rank": 3, "id": "merab_dvalishvili", "name": "Merab Dvalishvili" },
{ "rank": 4, "id": "dricus_du_plessis", "name": "Dricus Du Plessis" },
{ "rank": 5, "id": "alexandre_pantoja", "name": "Alexandre Pantoja" },
{ "rank": 6, "id": "alexander_volkanovski", "name": "Alexander Volkanovski" },
{ "rank": 7, "id": "magomed_ankalaev", "name": "Magomed Ankalaev" },
{ "rank": 8, "id": "jack_della_maddalena", "name": "Jack Della Maddalena" },
{ "rank": 9, "id": "tom_aspinall", "name": "Tom Aspinall" },
{ "rank": 10, "id": "alex_pereira", "name": "Alex Pereira" },
{ "rank": 11, "id": "max_holloway", "name": "Max Holloway" },
{ "rank": 12, "id": "belal_muhammad", "name": "Belal Muhammad" },
{ "rank": 13, "id": "arman_tsarukyan", "name": "Arman Tsarukyan" },
{ "rank": 14, "id": "khamzat_chimaev", "name": "Khamzat Chimaev" },
{ "rank": 15, "id": "charles_oliveira", "name": "Charles Oliveira" }
]
},
{
"promotion_id": "ufc",
"division_id": "flyweight",
"division_name": "Flyweight",
"ranks": [
{ "rank": "champion", "id": "alexandre_pantoja", "name": "Alexandre Pantoja" },
{ "rank": 1, "id": "joshua_van", "name": "Joshua Van" },
{ "rank": 2, "id": "brandon_moreno", "name": "Brandon Moreno" },
{ "rank": 3, "id": "brandon_royval", "name": "Brandon Royval" },
{ "rank": 4, "id": "amir_albazi", "name": "Amir Albazi" },
{ "rank": 5, "id": "kai_kara_france", "name": "Kai Kara-France" },
{ "rank": 6, "id": "tatsuro_taira", "name": "Tatsuro Taira" },
{ "rank": 7, "id": "manel_kape", "name": "Manel Kape" },
{ "rank": 8, "id": "alex_perez", "name": "Alex Perez" },
{ "rank": 9, "id": "asu_almabayev", "name": "Asu Almabayev" },
{ "rank": 10, "id": "steve_erceg", "name": "Steve Erceg" },
{ "rank": 11, "id": "tim_elliott", "name": "Tim Elliott" },
{ "rank": 12, "id": "tagir_ulanbekov", "name": "Tagir Ulanbekov" },
{ "rank": 13, "id": "ramazan_temirov", "name": "Ramazan Temirov" },
{ "rank": 14, "id": "bruno_silva", "name": "Bruno Silva" },
{ "rank": 15, "id": "kai_asakura", "name": "Kai Asakura" }
]
}
],
"msg": {}
}
Note: The response bundles every division we track; grab the promotion_id and
division_id you need, then call the division endpoint for a narrower payload.
cURL:
curl -X GET "https://mma.jaspr.tech/v1/rankings/ufc/featherweight?key=YOUR_API_KEY"
Node.js:
const promotionId = 'ufc';
const divisionId = 'featherweight';
const response = await axios.get(`https://mma.jaspr.tech/v1/rankings/${promotionId}/${divisionId}`, {
params: { key: 'YOUR_API_KEY' }
});
console.log(response.data);
PHP:
$apiKey = 'YOUR_API_KEY';
$promotionId = 'ufc';
$divisionId = 'featherweight';
$url = 'https://mma.jaspr.tech/v1/rankings/' . $promotionId . '/' . $divisionId . '?key=' . $apiKey;
$response = file_get_contents($url);
$data = json_decode($response, true);
print_r($data);
Response:
{
"qry": 1,
"res": {
"promotion_id": "ufc",
"division_id": "featherweight",
"division_name": "Featherweight",
"ranks": [
{ "rank": "champion", "id": "alexander_volkanovski", "name": "Alexander Volkanovski" },
{ "rank": 1, "id": "max_holloway", "name": "Max Holloway" },
{ "rank": 2, "id": "movsar_evloev", "name": "Movsar Evloev" },
{ "rank": 3, "id": "diego_lopes", "name": "Diego Lopes" },
{ "rank": 4, "id": "yair_rodriguez", "name": "Yair Rodriguez" },
{ "rank": 5, "id": "brian_ortega", "name": "Brian Ortega" },
{ "rank": 6, "id": "arnold_allen", "name": "Arnold Allen" },
{ "rank": 7, "id": "lerone_murphy", "name": "Lerone Murphy" },
{ "rank": 8, "id": "aljamain_sterling", "name": "Aljamain Sterling" },
{ "rank": 9, "id": "josh_emmett", "name": "Josh Emmett" },
{ "rank": 10, "id": "jean_silva", "name": "Jean Silva" },
{ "rank": 11, "id": "youssef_zalal", "name": "Youssef Zalal" },
{ "rank": 12, "id": "dan_ige", "name": "Dan Ige" },
{ "rank": 13, "id": "david_onama", "name": "David Onama" },
{ "rank": 14, "id": "calvin_kattar", "name": "Calvin Kattar" },
{ "rank": 15, "id": "giga_chikadze", "name": "Giga Chikadze" }
]
},
"msg": {}
}
Note: Division responses keep the same structure as the aggregate endpoint but scoped to one division so you can render only the table your users are viewing.
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/teams |
Retrieve a list of all teams with their IDs and names |
| GET | /v1/team/:team_id |
Get complete team details including links and roster of fighters |
Recommended Workflow: The team endpoints are designed to be used in a two-step process:
/v1/teams to retrieve the complete list of teams with their IDs and names./v1/team/:team_id.This approach minimizes API calls by allowing you to search and filter the lightweight list locally, then request detailed data only for the teams you actually need.
cURL:
curl -X GET "https://mma.jaspr.tech/v1/teams?key=YOUR_API_KEY"
Node.js:
const response = await axios.get('https://mma.jaspr.tech/v1/teams', {
params: { key: 'YOUR_API_KEY' }
});
console.log(response.data);
PHP:
$apiKey = 'YOUR_API_KEY';
$url = 'https://mma.jaspr.tech/v1/teams?key=' . $apiKey;
$response = file_get_contents($url);
$data = json_decode($response, true);
Response:
{
"qry": 1,
"res": [
{
"team_id": "mma_lab",
"team_name": "MMA LAB"
},
{
"team_id": "fortis_mma",
"team_name": "Fortis MMA"
},
{
"team_id": "alliance_mma",
"team_name": "Alliance MMA"
}
],
"msg": {}
}
cURL:
curl -X GET "https://mma.jaspr.tech/v1/team/mma_lab?key=YOUR_API_KEY"
Node.js:
const teamId = 'mma_lab';
const response = await axios.get(`https://mma.jaspr.tech/v1/team/${teamId}`, {
params: { key: 'YOUR_API_KEY' }
});
PHP:
$apiKey = 'YOUR_API_KEY';
$teamId = 'mma_lab';
$url = 'https://mma.jaspr.tech/v1/team/' . $teamId . '?key=' . $apiKey;
$response = file_get_contents($url);
$data = json_decode($response, true);
Response:
{
"qry": 1,
"res": {
"team_id": "mma_lab",
"team_name": "MMA LAB",
"links": {
"official_website": null,
"youtube": null,
"instagram": null,
"facebook": null,
"x": null,
"tiktok": null,
"wikipedia": null,
"tapology": null,
"sherdog": null,
"sofascore": null,
"mmafighting": null
},
"fighters": [
{
"fighter_id": "joe_riggs",
"name": "Joe Riggs"
},
{
"fighter_id": "efrain_escudero",
"name": "Efrain Escudero"
},
{
"fighter_id": "alex_caceres",
"name": "Alex Caceres"
}
]
},
"msg": {}
}
Note: This endpoint returns complete team information including social media links and a roster of all
fighters associated with the team. The fighters array contains lightweight fighter objects with
just the fighter_id and name for efficient roster display.
For support and enquiries, please contact: