UFC round-by-round stats
Strikes, takedowns, control time and submission attempts for every round of nearly every UFC card since 2000, checked against fight totals. REST or MCP.
FighterAPI serves round-by-round statistics for UFC fights since 2000: each fighter's significant and total strikes, strikes by target and position, knockdowns, takedowns, control time, reversals and submission attempts, for every round.
Round lines are compiled by UFC Stats (FightMetric). Fight totals come separately, from ESPN. Every fight that matches across the two has its rounds added up and compared with its totals: 99.5% of fighter lines agree exactly, and a fight where they do not says so in the response rather than being served as clean. The table below is read from the database.
Coverage by season
Counted from the database on October 8, 2026: finished fights, by calendar year.
| Season | Fights | Covered | Round lines |
|---|---|---|---|
| 2026 | 473 | 89% | 1,930 |
| 2025 | 571 | 87% | 2,384 |
| 2024 | 566 | 91% | 2,646 |
| 2023 | 573 | 89% | 2,444 |
| 2022 | 563 | 91% | 2,476 |
| 2021 | 563 | 90% | 2,534 |
| 2020 | 504 | 90% | 2,228 |
| 2019 | 565 | 90% | 2,504 |
| 2018 | 529 | 88% | 2,280 |
| 2017 | 499 | 90% | 2,188 |
| 2016 | 493 | 98% | 2,372 |
| 2015 | 473 | 98% | 2,210 |
| 2014 | 503 | 98% | 2,346 |
| 2013 | 386 | 99% | 1,790 |
| 2012 | 342 | 99% | 1,566 |
| 2011 | 301 | 99% | 1,388 |
| 2010 | 253 | 100% | 1,220 |
| 2009 | 215 | 100% | 960 |
| 2008 | 201 | 100% | 834 |
| 2007 | 171 | 100% | 724 |
| 2006 | 158 | 100% | 640 |
| 2005 | 80 | 100% | 308 |
| 2004 | 39 | 100% | 146 |
| 2003 | 41 | 100% | 176 |
| 2002 | 53 | 98% | 228 |
| 2001 | 40 | 100% | 184 |
| 2000 | 43 | 100% | 182 |
How to get it
get_fight, 5 credits a call.
curl -X POST https://mcp.fighterapi.com/v1/get_fight \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"bout_id": "401612970"
}'What comes back
| bout | |
| bout.bout_id | |
| bout.event_id | |
| bout.event_name | |
| bout.event_date | |
| bout.starts_at | |
| bout.weight_class | |
| bout.card_segment | |
| bout.match_number | |
| bout.title_fight | |
| bout.scheduled_rounds | |
| bout.status | |
| bout.fighter_a | |
| bout.fighter_a_name |
Every field and a real response: get_fight docs.
Questions
Which fights have round-by-round stats?
Nearly every numbered and Fight Night card since 2000 (99% of their fights, 77 are still missing), with three exceptions that have totals but no rounds: Dana White's Contender Series and The Ultimate Fighter episodes, which UFC Stats does not publish, and the two Noche UFC cards (September 2023 and 2025), whose fights are missing from the public mirror the rounds come from. Contender Series is most of the gap in recent years in the table.
Do I have to scrape UFC Stats?
No. The rounds are already joined to each fight, keyed to the same fighter ids as everything else, and returned by get_fight.
What if the rounds and the totals disagree?
get_fight adds a rounds_note saying so. About 0.5% of fighter lines disagree; the rest match exactly.
Can I turn the round data off?
It is a separate layer, so a deployment can serve fight totals without rounds. Every tool keeps working either way.
What it will not do
- No rounds for Contender Series or The Ultimate Fighter episodes (not on UFC Stats), or for the two Noche UFC cards (missing from the mirror).
- Rounds for a new card follow when UFC Stats publishes them, usually within a few days.
- Strikes are counted, not located: target is head, body or leg, with no coordinates.
Works with
Start with 500 free credits
No card. REST or MCP.