Compare
The UFC API: UFC Stats, ESPN's feed and FighterAPI
UFC Stats, its community scrapers and ESPN's UFC JSON are free but have no API contract. Where each fits, and how FighterAPI differs.
Comparison facts checked October 14, 2026. FighterAPI data last refreshed 2026-10-14 23:05 UTC, newest data through 2026-10-13. Changelog
There is no official, documented UFC API. UFC Stats (ufcstats.com), the site that publishes round-by-round fight statistics, is HTML only and answered a plain scripted request with a "Checking your browser" challenge on 2026-10-14. Community projects mirror its pages as CSV, and ESPN publishes undocumented UFC JSON that is free to call.
FighterAPI is a documented fight data API and MCP server, with every tool described, a live example for each, and 500 free credits every month. It serves every UFC card since 2000 with results, fight stat sheets, round-by-round lines, fighter profiles, our Elo ratings and, from June 2020, sportsbook moneylines, over REST and MCP. For a one-off analysis, the community CSVs are free and enough. For a product, a model that joins results to prices, or an AI agent, a keyed, documented API is the cleaner base.
The options
- UFC Stats (ufcstats.com)
The site that publishes UFC events, fight results and fight statistics, including round by round, as HTML pages.
Live in a browser. No API. A plain scripted request to the completed events page returned a JavaScript browser challenge instead of the data on 2026-10-14.
- Greco1899/scrape_ufc_stats
Python scrapers and the CSVs they produce: events, fight results, fight stats, fighter details and fighter tale of the tape.
GPL-3.0. Last pushed 2026-10-11. Its README says a scheduled job refreshes the files daily; the events file listed UFC Fight Night: Allen vs. Duncan, 2026-10-10, as its latest event.
- mtoto/ufc.stats
An R package holding UFC fight statistics as a data frame, one row per fighter per round with 37 variables.
GitHub shows a custom licence. Last commit 2026-07-18. Its README says it is updated with the latest events.
- ESPN UFC JSON
ESPN's public UFC scoreboard and core API: cards, results and fight totals, which FighterAPI also reads.
Live. Free, no key, undocumented. The scoreboard call answered with HTTP 200 on 2026-10-14.
Side by side
| FighterAPI | the free UFC data sources | |
|---|---|---|
| Price and key | 500 free credits a month, then from $19/mo; a free key | All free, no key |
| Documentation | Every tool documented with parameters, response fields and a live example | UFC Stats and ESPN: none. The CSV projects have READMEs and, for ufc.stats, a data dictionary |
| Access | REST API and MCP server | UFC Stats: HTML behind a browser challenge. CSV mirrors: files you download. ESPN: JSON |
| Round-by-round | get_fight: each round's strikes by target, takedowns, control time and submission attempts | UFC Stats: the source. ufc.stats: one row per fighter per round |
| Fighter lookups | Profile, fight history, record by method, search by name | CSV: fighter details files you join yourself. ESPN: assembled from several calls |
| Odds | Moneylines and total rounds by sportsbook for UFC since June 2020, with line movement | ESPN's feed has carried some lines (about nine books for January to June 2024, usually one since). UFC Stats and the CSV mirrors: none |
| Ratings | Our Elo for every fighter, before and after every fight since 2000 | None |
| Terms for automated use | Keyed API intended for products and models | The CSV mirrors are third-party scrapes of UFC Stats under their own licences (Greco1899: GPL-3.0); check them and the source site's terms. ESPN: none published |
| Upkeep | Ours | Yours, whenever the pages change |
| Live in-fight data | No: results land each morning | ESPN: updated during events |
Example call
One fight, UFC 332's women's flyweight title fight: the result and method, a fighter's stat sheet and Elo change, a round's lines and an opening and closing moneyline. On the free side this is a scrape of the fight page joined to results and prices from elsewhere.
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": "401912278"
}'{"data": {"bout": {"bout_id": "401912278", "event_id": "600061182", "event_name": "UFC 332: Silva vs. Wang", "event_date": "2026-10-03", "starts_at": "2026-10-04T00:00:00.000Z", "weight_class": "Women's Flyweight", "card_segment": "main", "match_number": 1, "title_fight": true, "scheduled_rounds": 5, "status": "final", "fighter_a": "4054605", "fighter_a_name": "Natalia Silva", "fighter_b": "4215200", "fighter_b_name": "Wang Cong", "winner": "4054605", "method": "decision---unanimous", "method_display": "Decision - Unanimous", "end_round": 5, "end_clock": "5:00", "duration_seconds": 1500, "judges_scores": "48-47 | 49-46 | 48-47", "referee": "Marc Goddard"}, "fighters": [{"fighter_id": "4054605", "name": "Natalia Silva", "stats": {"fighter_id": "4054605", "knock_downs": 1, "sig_strikes_attempted": 216, "sig_strikes_landed": 109, "takedowns_attempted": 5, "takedowns_landed": 3, "time_in_control_seconds": 252}, "elo": {"before": 1633, "after": 1643}}], "rounds": [{"fighter_id": "4054605", "fighter_name": "Natalia Silva", "round": 1, "knock_downs": 0, "sig_landed": 16, "sig_attempted": 40, "total_landed": 20, "total_attempted": 44, "td_landed": 1, "td_attempted": 1, "sub_attempts": 0, "reversals": 0, "control_seconds": 88, "head_landed": 12, "head_attempted": 33, "body_landed": 3, "body_attempted": 4, "leg_landed": 1, "leg_attempted": 3, "distance_landed": 12, "distance_attempted": 34, "clinch_landed": 4, "clinch_attempted": 5, "ground_landed": 0, "ground_attempted": 1}], "odds": [{"provider": "BetMGM", "a_open": -220, "a_close": -220, "a_current": -220, "b_open": 180, "b_close": 180, "b_current": 180, "total_rounds": null}]}}The response is cut to one fighter, a handful of stat fields, the first round and the first sportsbook here (the full response has both fighters' complete sheets and every round and book). Responses are wrapped in a data object. get_fight costs 5 credits.
Use the free UFC data sources instead if
- You are doing a one-off analysis and the free CSVs from the UFC Stats mirrors have the columns you need.
- You need fights before 2000. UFC Stats goes back further; FighterAPI starts in 2000.
- You need the numbers the moment UFC Stats posts them, and are set up to run a headless browser and maintain a scraper.
- You need scores during a card. FighterAPI updates each morning.
- Your budget is zero and your time is not.
Questions
Is there an official UFC API?
Not a documented public one that we found. UFC Stats publishes HTML pages, ESPN publishes undocumented JSON, and community projects mirror UFC Stats as CSV.
Does UFC Stats have an API?
No. It publishes HTML pages only, and on 2026-10-14 a plain scripted request to its completed events page returned a browser challenge instead of the data.
Where can I download free UFC fight data?
Greco1899/scrape_ufc_stats publishes CSVs of events, fights, fight stats and fighters, refreshed daily according to its README. mtoto/ufc.stats packages round-level statistics for R. Check each project's licence before reuse.
Where do I get UFC round-by-round stats from an API?
FighterAPI's get_fight returns each round's strikes by target, takedowns, control time and submission attempts for every UFC card since 2000, with the result and ratings. UFC Stats is the original source for those numbers.
Is there a UFC odds API?
FighterAPI keeps opening, closing and current moneylines and the total-rounds line by sportsbook for UFC from June 2020, with line movement. ESPN's UFC JSON has carried a book or two per fight since mid-2024, and UFC Stats and the CSV mirrors carry none.
Can Claude or ChatGPT use FighterAPI?
Yes. FighterAPI runs an MCP server at mcp.fighterapi.com, so Claude, ChatGPT and Cursor can call the same tools as the REST API.
Sources
- UFC Stats completed events (returns a browser challenge to plain requests)
- Greco1899/scrape_ufc_stats
- mtoto/ufc.stats
- ESPN UFC scoreboard JSON
Checked October 14, 2026.
See the data
Try it with 500 free credits every month
No card. REST or MCP.