JSON API

Static JSON generated at build time. No keys, no rate limits. Fetch what you need.

Endpoints

Path Returns
/api/events.json Every event with nested fights, fighters, and scores. Newest first.
/api/events/<slug>.json One event by slug, same shape as an item in the array above.

Example: /api/events/ufc-fight-night-fiziev-vs-torres.json

Response shape

Fields are snake_case and stable. winner is null for draws and no contests. official_scores and media_scores are flat arrays of per-round rows; they are empty until commission scorecards are ingested. fan_tally is a static snapshot of anonymous fan submissions as of the last build.

{
  "id": 1,
  "slug": "ufc-324-gaethje-vs-pimblett",
  "promotion": "UFC",
  "name": "UFC 324: Gaethje vs. Pimblett",
  "date": "2026-01-24",
  "venue": "T-Mobile Arena",
  "city": "Las Vegas",
  "country": "USA",
  "fights": [
    {
      "id": 11,
      "bout_order": 10,
      "weight_class": "Lightweight",
      "scheduled_rounds": 5,
      "is_decision": true,
      "method": "Decision - Unanimous",
      "method_detail": null,
      "ending_round": 5,
      "ending_time": "5:00",
      "fighter1": { "id": 21, "slug": "justin-gaethje", "name": "Justin Gaethje" },
      "fighter2": { "id": 22, "slug": "paddy-pimblett", "name": "Paddy Pimblett" },
      "winner":  { "id": 21, "slug": "justin-gaethje", "name": "Justin Gaethje" },
      "official_scores": [
        {
          "judge_id": 3,
          "judge_name": "Sal D'Amato",
          "judge_slug": "sal-damato",
          "fighter_id": 21,
          "round": 1,
          "score": 10
        }
      ],
      "media_scores": [],
      "fan_tally": { "sessions": 0, "f1Votes": 0, "f2Votes": 0, "drawVotes": 0 }
    }
  ]
}

Notes