🥊 Jaspr.io MMA API

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.

Authentication

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.

API Endpoints

System

Method Endpoint Description
GET /v1/status Get API status and health information

Promotions

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:

  1. First, use /v1/promotions to retrieve the list of available promotions with their IDs.
  2. Then, use the promotion ID to fetch detailed information about specific promotions using /v1/promotion/:id.

Currently, only UFC is available, but more promotions (PFL, ONE, BKFC) are planned for future releases.

Events

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:

  1. First, use /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.
  2. Implement your own filtering logic in your application code if needed to find specific events.
  3. Then, use the event_id from your results to fetch complete event details using /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.

Fights

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:

  1. First, use /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.
  2. Implement your own filtering logic in your application code to find specific fights (by fighter name, weight class, etc.).
  3. Then, use the fight_id from your filtered results to fetch complete fight statistics using /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.

Fighters

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:

  1. First, use /v1/fighters to retrieve the complete list of fighters with their IDs, names, and nicknames.
  2. Implement your own filtering or search logic in your application code to find specific fighters (by name, nickname, etc.).
  3. Then, use the fighter_id from your filtered results to fetch complete fighter profiles including physical attributes, records, and fight history using /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.

Rankings

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:

  1. Use /v1/rankings to pull every division with the freshest rankings snapshot.
  2. From that payload, capture the promotion_id and division_id you care about.
  3. Call /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.

Teams

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:

  1. First, use /v1/teams to retrieve the complete list of teams with their IDs and names.
  2. Implement your own filtering or search logic in your application code to find specific teams.
  3. Then, use the team_id from your filtered results to fetch complete team profiles including social links and fighter roster using /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.

Response Format

All API responses are returned in JSON format with a consistent structure containing three main fields:

Usage Examples & Responses

System

Get API Status

cURL:

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": {}
}

Promotions

Get All Promotions

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": {}
}

Get Specific Promotion

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": {}
}

Events

Get All Events

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": {}
}

Get Events by Year

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": {}
}

Get Events by Year and Month

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": {}
}

Get Events by Specific Date

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": {}
}

Get Specific Event by ID

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.

Look Up Event by Platform ID

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.

Fights

Get All Fights

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.

Get Fights by Year

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": {}
}

Get Fights by Year and Month

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.

Get Fights by Specific Date

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": {}
}

Get Specific Fight by ID

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.

Fighters

Get All Fighters

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": {}
}

Get Specific Fighter by ID

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.

Look Up Fighter by Platform ID

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.

Rankings

Get All Current Rankings

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.

Get Rankings for a Specific Division

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.

Teams

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:

  1. First, use /v1/teams to retrieve the complete list of teams with their IDs and names.
  2. Implement your own filtering or search logic in your application code to find specific teams.
  3. Then, use the team_id from your filtered results to fetch complete team profiles including social links and fighter roster using /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.

Get All Teams

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": {}
}

Get Specific Team by ID

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.

Support & Contact

For support and enquiries, please contact:

jaspr.io@pm.me