Docs/UFC API/UFC Fighters

UFC Fighters

Profiles, records, full pro careers (UFC and other promotions), career stats, style profiles, and fight history

New

Full pro career (UFC and other promotions)

GET/api/v1/ufc/fighters/{slug}/career

Every pro MMA fight we have for the fighter, in the UFC and outside it (regional promotions, Bellator, PFL, Contender Series, Road to UFC, TUF house fights), newest first, with the record split into UFC and outside-UFC. UFC fights carry boutId for /bouts/{id}. record.official is the UFC's published W-L-D; record.listed is counted from the fights in the list, and listedMatchesOfficial says whether they agree. TUF house fights are exhibitions (isExhibition) and count on the record only where the official record counts them. outsideUfcHistory is false when only UFC cards are on file for the fighter. RAF wrestling is a different sport and is served on /raf only.

Query parameters

ParameterTypeDescription
promotionstringOnly these promotion slugs, comma-separated (e.g. bellator,pfl). Records are not filtered.
excludeUfcbooleantrue drops UFC-card fights from the list (Contender Series and Road to UFC stay)
pagenumberPage number (default 1)
limitnumberPage size (default 100, max 500)

Example

bash
curl "https://api.citoapi.com/api/v1/ufc/fighters/arman-tsarukyan/career?excludeUfc=true" \
    -H "x-api-key: YOUR_API_KEY"

Response

json
{
    "success": true,
    "data": {
      "fighter": { "slug": "arman-tsarukyan", "name": "Arman Tsarukyan" },
      "record": {
        "official": { "wins": 24, "losses": 3, "draws": 0, "text": "24-3-0" },
        "listed": { "wins": 24, "losses": 3, "draws": 0, "noContests": 0, "text": "24-3-0" },
        "ufc": { "wins": 11, "losses": 2, "draws": 0, "noContests": 0, "text": "11-2-0" },
        "outsideUfc": { "wins": 13, "losses": 1, "draws": 0, "noContests": 0, "text": "13-1-0" },
        "listedMatchesOfficial": true
      },
      "outsideUfcHistory": true,
      "promotions": [
        { "slug": "ufc", "name": "Ultimate Fighting Championship", "fights": 13, "record": { "text": "11-2-0" } },
        { "slug": "mfp", "name": "MFP", "fights": 8, "record": { "text": "7-1-0" } }
      ],
      "fights": [
        {
          "date": "2018-08-22",
          "promotion": { "slug": "league-s-70", "name": "League S-70" },
          "onUfcRecord": false,
          "countsOnProRecord": true,
          "isExhibition": false,
          "event": { "name": "League S-70: Plotforma S-70: 2018", "slug": null },
          "boutId": null,
          "opponent": { "name": "Felipe Olivieri", "slug": null },
          "result": "W",
          "method": "KO/TKO",
          "methodGroup": "KO/TKO",
          "round": 3,
          "time": "1:25",
          "titleFight": false,
          "weightClass": null,
          "isUpcoming": false,
          "dataSource": "career_history"
        }
      ]
    },
    "meta": { "count": 14, "total": 14, "page": 1, "limit": 100, "hasMore": false }
  }

New

Fighter style profile

GET/api/v1/ufc/fighters/{slug}/style
GET/api/v1/mma/fighters/{slug}/style

Four style labels built from official round stats across the fighter's bouts in the UFC (with the Contender Series and Road to UFC) and the Bellator, PRIDE, Strikeforce, WEC, DREAM, EliteXC and Affliction archives: striker (split into volume and accuracy by subtype), clinch fighter (how much of the work comes in the clinch), wrestler (takedowns and control time) and submission grappler (submission attempts and ground control). Each label's score is 0-1, a blend of percentiles against every fighter with 3+ bouts with stats; primary marks the top label when it scores 0.5 or more. The numbers behind it: where they land (distance, clinch, ground), what they target (head, body, legs) and what they absorb (opponents' landed strikes and takedowns against them, per minute and by target and position). sample.lowConfidence is true under 3 bouts with stats, and sample.byPromotion counts the bouts per promotion. tentative.pressureVsOutfighter is inferred from pace and exchange balance (output per minute vs absorbed per minute, attempts) and is always marked tentative: true with its basis; treat it as a hint, not a fact. Control share is null where control time was not logged for at least half the fight time (PRIDE, DREAM and Bellator never log it). OKTAGON is not included (landed-only stats). Free and Starter plans get a profile from the bouts inside their history window (30 / 90 days, see meta.historyWindow); Pro gets the whole career. Refreshed every 6 hours.

Example

bash
curl "https://api.citoapi.com/api/v1/ufc/fighters/max-holloway/style" \
    -H "x-api-key: YOUR_API_KEY"

Response

json
{
    "success": true,
    "data": {
      "fighter": { "slug": "max-holloway", "name": "Max Holloway" },
      "sample": {
        "bouts": 33, "rounds": 112, "minutes": 533.9, "byPromotion": { "ufc": 33 },
        "firstBoutOn": "2012-02-03", "lastBoutOn": "2026-07-12", "lowConfidence": false, "controlTimeLoggedShare": 1
      },
      "normaliser": { "population": "Fighters with 3+ bouts with official round stats (UFC and the MMA archives)", "fighters": 2232 },
      "primaryStyle": "striker",
      "labels": [
        { "style": "striker", "score": 0.93, "level": "strong", "primary": true, "basis": "Distance strikes landed per minute and share of significant strikes landed at distance (percentiles)." },
        { "style": "clinch", "score": 0.4, "level": "low", "primary": false, "basis": "..." },
        { "style": "submission", "score": 0.31, "level": "low", "primary": false, "basis": "..." },
        { "style": "wrestler", "score": 0.12, "level": "low", "primary": false, "basis": "..." }
      ],
      "striker": {
        "subtype": "volume-and-precision",
        "volume": { "sigAttemptedPerMin": 14.36, "sigLandedPerMin": 6.92, "distanceAttemptedPerMin": 13.24, "distanceLandedPerMin": 6.09 },
        "accuracy": { "significant": 0.482, "distance": 0.46 },
        "knockdowns": 12, "knockdownsPer15": 0.34
      },
      "position": {
        "distance": { "landed": 3252, "attempted": 7071, "share": 0.881 },
        "clinch": { "landed": 246, "attempted": 324, "share": 0.067 },
        "ground": { "landed": 195, "attempted": 271, "share": 0.053 }
      },
      "target": {
        "head": { "landed": 2389, "attempted": 5935, "share": 0.647, "accuracy": 0.403 },
        "body": { "landed": 899, "attempted": 1207, "share": 0.243, "accuracy": 0.745 },
        "leg": { "landed": 405, "attempted": 524, "share": 0.11, "accuracy": 0.773 }
      },
      "grappling": {
        "takedowns": { "landed": 8, "attempted": 15, "accuracy": 0.533, "landedPer15": 0.22 },
        "control": { "share": 0.056, "seconds": 1785 },
        "submissionAttempts": 10, "submissionAttemptsPer15": 0.28
      },
      "absorbed": {
        "sigLandedPerMin": 4.6, "sigAttemptedPerMin": 11.14, "strikingDefence": 0.587, "knockdowns": 2,
        "target": { "head": 0.635, "body": 0.141, "leg": 0.225 },
        "position": { "distance": 0.921, "clinch": 0.051, "ground": 0.027 },
        "takedowns": { "landed": 31, "attempted": 167, "defence": 0.814 }
      },
      "tentative": {
        "pressureVsOutfighter": {
          "tag": "pressure", "tentative": true, "confidence": "inferred",
          "basis": "Inferred, not an official classification: pace and exchange balance from significant strike attempts. ..."
        }
      }
    },
    "meta": { "computedAt": "2026-11-02T14:17:52.000Z", "refreshHours": 6 }
  }

List fighters

GET/api/v1/ufc/fighters
GET/api/v1/ufc/athletes

/athletes is an alias of /fighters.

Query parameters

ParameterTypeDescription
pagenumberPage number (default 1)
limitnumberPage size (default 50)

Example

bash
curl "https://api.citoapi.com/api/v1/ufc/fighters?page=1&limit=50" \
  -H "x-api-key: YOUR_API_KEY"

Search

GET/api/v1/ufc/search

Resolve a fighter slug (also returns events and bouts).

Query parameters

ParameterTypeDescription
q*stringSearch text

Example

bash
curl "https://api.citoapi.com/api/v1/ufc/search?q=islam" \
  -H "x-api-key: YOUR_API_KEY"

Fighter profile

GET/api/v1/ufc/fighters/{slug}
GET/api/v1/ufc/athletes/{slug}

Bio, record, weight class, stance, height/reach, rankings, image.

Example

bash
curl "https://api.citoapi.com/api/v1/ufc/fighters/islam-makhachev" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "success": true,
  "data": {
    "slug": "islam-makhachev",
    "name": "Islam Makhachev",
    "record": { "wins": 27, "losses": 1, "draws": 0 },
    "weightClass": "Lightweight",
    "stance": "Orthodox",
    "imageUrl": "https://..."
  }
}

Career stats

GET/api/v1/ufc/fighters/{slug}/stats

Striking and grappling accuracy, defense, win methods, strike targets.

Example

bash
curl "https://api.citoapi.com/api/v1/ufc/fighters/islam-makhachev/stats" \
  -H "x-api-key: YOUR_API_KEY"

Fight history

GET/api/v1/ufc/fighters/{slug}/fights

Past bouts with opponents, events, and results.

Example

bash
curl "https://api.citoapi.com/api/v1/ufc/fighters/islam-makhachev/fights" \
  -H "x-api-key: YOUR_API_KEY"

Ship fighter profiles

Cito is how you build UFC fighter profiles, fight cards, rankings pages, research tools, and MMA dashboards. Try these requests in the sandbox, then drop them into your app.

bash
curl "https://api.citoapi.com/api/v1/ufc/fighters/arman-tsarukyan/career" \
  -H "x-api-key: YOUR_API_KEY"

curl "https://api.citoapi.com/api/v1/ufc/search?q=islam" \
  -H "x-api-key: YOUR_API_KEY"

curl "https://api.citoapi.com/api/v1/ufc/fighters/islam-makhachev" \
  -H "x-api-key: YOUR_API_KEY"

curl "https://api.citoapi.com/api/v1/ufc/fighters/islam-makhachev/stats" \
  -H "x-api-key: YOUR_API_KEY"

curl "https://api.citoapi.com/api/v1/ufc/fighters/islam-makhachev/fights" \
  -H "x-api-key: YOUR_API_KEY"
Was this page helpful?