ufcstats.com APIwww.ufcstats.com ↗
Access UFC event results, fight cards, detailed striking/takedown stats, and fighter profiles from ufcstats.com via a clean JSON API.
curl -X GET 'https://api.parse.bot/scraper/f45724d0-2ef7-41f8-987f-f9440a23e87c/get_events?page=1&limit=5' \ -H 'X-API-Key: $PARSE_API_KEY'
Get a paginated list of completed UFC events with name, date, and location.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| limit | integer | Maximum number of events to return per page. |
{
"type": "object",
"fields": {
"page": "current page number",
"events": "array of event objects with event_id, name, date, and location",
"total_pages": "total number of available pages"
},
"sample": {
"data": {
"page": 1,
"events": [
{
"date": "May 09, 2026",
"name": "UFC 328: Chimaev vs. Strickland",
"event_id": "9eedac48b497de5a",
"location": "Newark, New Jersey, USA"
}
],
"total_pages": 30
},
"status": "success"
}
}About the ufcstats.com API
The UFCStats API covers 5 endpoints that expose completed UFC events, full fight cards, per-round fight statistics, and individual fighter profiles sourced from ufcstats.com. The get_fight_details endpoint alone returns knockdowns, significant strikes broken down by target (head, body, leg, distance, clinch, ground), takedown attempts and successes, control time, referee, judges' scores, and round-by-round breakdowns for both fighters.
Events and Fight Cards
get_events returns a paginated list of completed UFC events — each with an event_id, name, date, and location. Pass page and limit to step through the full event history. Feed any event_id into get_event_details to pull the complete fight card: every bout on the card with fight_id, both fighter names, result, weight class, method of victory, round, time, and a summary of knockdowns, significant strikes, and takedown counts per fighter.
Fight-Level Statistics
get_fight_details goes deeper than the card summary. It exposes fighter totals (knockdowns, significant strikes attempted and landed, total strikes, takedowns, submission attempts, control time) plus a significant_strikes breakdown by zone — head, body, leg, distance, clinch, and ground — for each fighter. The per_round array repeats this full breakdown for every round that was fought. Additional fields include referee, judges (for decision outcomes), time_format, and the exact time and round the fight ended.
Fighter Profiles and Search
search_fighters accepts a partial or full fighter name and returns matching records with fighter_id, nickname, physical attributes (height, weight, reach, stance), and win-loss-draw totals. Pass a fighter_id to get_fighter_details for the complete profile: career averages like strikes landed per minute, striking accuracy, striking defense, takedown accuracy, takedown defense, and submission average, plus a full fight_history array linking back to fight_id and event_id for each bout.
ID Chaining
All five endpoints are designed to chain. get_events → get_event_details → get_fight_details gives a drill-down path from event calendar to per-round punch stats. search_fighters → get_fighter_details → individual fight_id entries in fight_history connect a fighter's career to the raw bout data for every appearance.
- Build a UFC historical results database keyed on event dates and locations from
get_events. - Compare fighters' significant-strike accuracy and takedown defense before a scheduled bout using
get_fighter_details. - Track how a fighter's striking output per round changes across their career by chaining
fight_historyentries intoget_fight_details. - Populate a fantasy MMA scoring app with live per-round knockdown, strike, and takedown tallies.
- Analyze finish rates by weight class and method of victory across all events from
get_event_details. - Build a fighter search autocomplete backed by
search_fighterspartial-name matching. - Study judge-scoring patterns by aggregating the
judgesfield from split and majority decisions inget_fight_details.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does UFCStats have an official developer API?+
What does `get_fight_details` return beyond what `get_event_details` already shows?+
get_event_details gives summary-level stats per fight: knockdowns, significant strikes, takedowns, submission attempts, method, round, and time. get_fight_details adds the full significant-strike breakdown by target zone (head, body, leg) and position (distance, clinch, ground), control time, referee name, judge scores for decisions, the time format, and a per_round array with all of those stats repeated for every individual round.Does the API cover upcoming or scheduled UFC events?+
get_events returns completed events only. Upcoming fight cards and scheduled bouts are not covered by the current endpoints. You can fork this API on Parse and revise it to add an endpoint targeting scheduled event data.How does pagination work for `get_events`?+
page (integer) and limit (integer) parameters. The response includes page (current page), total_pages (total available), and the events array for that page. Increment page up to total_pages to retrieve the full event history.