Documentation
11 MMA data endpoints over REST and MCP. One key, credits per call.
Your first call
Sign up for a free key (500 credits, no card), swap it in for YOUR_API_KEY, and send this. search_fighters costs 1 credit.
Request
curl -X POST https://mcp.fighterapi.com/v1/search_fighters \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"query": "topuria"
}'Response
{
"fighters": [
{
"fighter_id": "4350812",
"name": "Ilia Topuria",
"nickname": "El Matador",
"weight_class": "Lightweight",
"country": "Georgia",
"date_of_birth": "1997-01-21",
"pro_record": null,
"bouts": 10,
"last_bout": "2026-06-15T00:00:00.000Z",
"ufc_bouts": 10
},
...First 14 lines. Full response and every field
REST / cURL
POST to /v1/{tool_name} with your params as JSON body. No MCP client needed:
curl -X POST https://mcp.fighterapi.com/v1/list_events \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY"With parameters:
curl -X POST https://mcp.fighterapi.com/v1/search_fighters \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{"query":"topuria"}'Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"fighterapi": {
"url": "https://mcp.fighterapi.com/mcp?key=YOUR_API_KEY"
}
}
}Claude Code
One command:
claude mcp add fighterapi https://mcp.fighterapi.com/mcp?key=YOUR_API_KEY --transport streamable-httpFind the right call
All 11 questionsEndpoints
11 endpoints by category. Each page has parameters, requests in three formats, a full example response and every response field.
Static reference1 credit/call
Basic lookup2 credits/call
Stats + aggregation5 credits/call
- get_fight5 creditsOne fight: result, full stat sheets, round-by-round lines, ratings and odds
- get_fighter5 creditsProfile, UFC record by method, career rates, rating and recent fights
- get_fighter_fights5 creditsA fighter's full UFC history with stats, ratings and closing lines
- get_leaders5 creditsCareer leaderboards from every fight's stat sheet
- get_odds5 creditsOpening, closing and current moneylines by sportsbook for a fight (5) or a card (10)
Time-series10 credits/call
Reference
Authentication
Every request requires an API key. Pass it via header or query parameter:
x-api-key: YOUR_API_KEY
# or
Authorization: Bearer YOUR_API_KEY
# or (MCP only)
?key=YOUR_API_KEYVerify your email, then create an API key from the dashboard. Free accounts get 500 credits.
Base URL
https://mcp.fighterapi.comREST API: POST /v1/{tool} with JSON body. Works with cURL, Python, any HTTP client.
MCP: POST /mcp via Streamable HTTP. Works with Claude Desktop, Claude Code, Cursor, and any MCP client.
Rate limits
| Credit balance | Rate limit |
|---|---|
| 100 credits or more | 60 req/min |
| Under 100 credits | 10 req/min |
The limit is the same on every plan. It is burst protection, not the spend boundary; credits are that, and they are enforced per request. Running low slows you down so you notice before the balance reaches zero.
Error handling
| Code | Meaning | What to do |
|---|---|---|
| 400 | Invalid parameters | Check required fields and value types |
| 401 | Invalid or missing API key | Check your x-api-key header |
| 402 | Insufficient credits | Top up your wallet or upgrade your plan |
| 429 | Rate limit exceeded | Wait and retry (see limits above) |
| 500 | Server error | Retry with idempotency key. Credits auto-refund on server errors. |
Pass x-idempotency-key or x-request-id headers to make retries duplicate-safe.
Data coverage
Professional Fighters League (PFL)
FighterAPI also serves the PFL. Pass "league": "pfl" to any tool that lists it, or connect to https://mcp.fighterapi.com/mcp/pfl. What the PFL data covers.
Bellator MMA (Bellator)
FighterAPI also serves the Bellator. Pass "league": "bellator" to any tool that lists it, or connect to https://mcp.fighterapi.com/mcp/bellator. What the Bellator data covers.
| Data | Status | Coverage | Volume |
|---|---|---|---|
Cards and results Events, fights in card order, winner, method, round, time, judges' scores and referee. | Available | 2000 to current | Every UFC card |
Fight stat sheets Strikes by target and position, takedowns, control time, guard passes, reversals, submission attempts. A few dozen fights, mostly from 2016 to 2019 and Ultimate Fighter semifinals, have no stat sheet. | Available | 2000 to current | Per fighter per fight |
Round-by-round Each round's strikes, takedowns, control and submission attempts, compiled by UFC Stats (FightMetric). A fight whose rounds do not add up to its totals is flagged. | Available | 2000 to current | Per fighter per round |
Fighters Date of birth, height, reach, stance, gym, record by method and career rates. | Available | Everyone who fought in the UFC since 2000 | Profiles and careers |
Odds Opening, closing and current moneylines and the total-rounds line, by sportsbook. From 2024 only; mostly one book per fight; moneylines and total rounds, no props. | Partial | 2024 to current | Several books January to June 2024, usually one after |
Ratings Our Elo from UFC results, before and after every fight. | Available | 2000 to current | Every fighter, every fight |
Coverage describes the datasets FighterAPI supports. Freshness and operational health are tracked separately.
Odds snapshot definitions
opening: The first moneyline a sportsbook posted for the fight, as ESPN reports it.
closing: The sportsbook's last moneyline before the fight.
Odds coverage currently documents the books ESPN reports: about nine for January to June 2024 (including Bet365, DraftKings, Caesars and ESPN BET), then usually ESPN BET or DraftKings alone. No opening or closing lines before November 2023, and every fight since mid-2024 has one book. Opening and closing moneylines start with the November 2023 cards: several sportsbooks for January to June 2024, then usually one book per fight (ESPN BET, later DraftKings). There are no opening or closing lines before November 2023. Daily snapshots for each fight with a posted line from October 2026.
Response format
REST API
All successful REST responses wrap the result in a data key:
{ "data": { "events": [...], "count": 50 } }Error responses return:
{ "error": "Insufficient credits", "message": "This tool costs 5 credits, you have 2" }MCP Protocol
MCP responses follow the standard MCP tool result format. The data is returned directly (no data wrapper). Both access methods return identical data, just different envelopes.
Conventions
Seasons: 4-digit year (cards are grouped by calendar year). Example: 2025.
Fight IDs: a fight's id, e.g. 401630119 (an ESPN competition id; list a card's fights with get_event). Get them from get_event, get_schedule or get_fighter_fights.
Fighter IDs: Get them from search_fighters, by name or nickname.
Pagination: Endpoints use a limit parameter. No cursor or offset. Narrow your filters to get different slices of data.
Credits: Deducted before the request executes. Automatically refunded on server errors. Monthly credits are used first, then wallet balance.