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-2.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
- All results come from the ESPN public API.
- Judge scorecards come from athletic commission records and are added as they are verified.
- The data is a work in progress; scorecard fields may be empty for recent events.