FightForensics
API Documentation

The MMA
data API

A free, read-only JSON API over the Fight Forensics dataset. Versioned at /api/v1, CORS-open, and cache-friendly. Data compiled from public MMA records; free to use with attribution and a link back.

Getting started

Every endpoint is a plain GET that returns JSON. Base URL:

https://fightforensics.com/api/v1

No key needed to start — the keyless tier is rate-limited per IP. Try it:

curl https://fightforensics.com/api/v1/rankings?limit=3

Authentication & limits

  • Keyless: works immediately — up to 30 req/min and 500 req/day per IP.
  • Free key: send it in the X-Api-Key header for 120 req/min and 5,000 req/day.
  • Get a key: request one here — free, no approval queue.
curl -H "X-Api-Key: ff_your_key" https://fightforensics.com/api/v1/rankings

Exceeding a limit returns 429 with a Retry-After header. Deep pagination is capped (offset ≤ 10,000) — filter instead of walking the whole dataset. Responses set Cache-Control so you (and the edge) can cache freely. Use is subject to the terms of use.

Endpoints

GET /api/v1/statsDataset summary — counts of fighters, bouts, events, promotions, venues, countries, referees, and the year span.
GET /api/v1/rankingsCareer-Elo leaderboard. Query: active (bool), limit, offset.
GET /api/v1/rankings/decade/{startYear}Career-Elo computed within a decade, e.g. 2010.
GET /api/v1/fightersList / search fighters. Query: q, stance, limit, offset.
GET /api/v1/fighters/{id}Fighter profile: record + recent bouts with opponents.
GET /api/v1/eventsList events. Query: org, year, limit, offset.
GET /api/v1/events/{id}Event card with the full bout list.
GET /api/v1/organizationsList promotions. Query: limit, offset.
GET /api/v1/organizations/{id}Promotion profile with recent events.

Full machine-readable contract: openapi.json — import into Postman/Insomnia or generate a client.

Example response

GET /api/v1/rankings?active=true&limit=2

{
  "dataset": "Career-Elo fighter rankings",
  "api_version": "v1",
  "attribution": "Data compiled by Fight Forensics …",
  "scope": "active",
  "rankings": [
    { "rank": 1, "elo": 1948.5, "fighter_id": 30,
      "name": "Islam Makhachev",
      "url": "https://fightforensics.com/fighter/30/islam-makhachev" },
    { "rank": 2, "elo": 1939.6, "fighter_id": 415,
      "name": "Jon Jones", "url": "https://fightforensics.com/fighter/415/jon-jones" }
  ]
}