Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/sportstatsapi:sportstatsapi-mma-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
contact:
name: SportStatsAPI
url: https://sportstatsapi.com
description: 'Every public endpoint of SportStatsAPI. Endpoints marked with x-x402 can also be paid per call by an AI agent; the curated list of those is https://api.sportstatsapi.com/api/openapi.agents.json.
Authentication: an API key (header X-API-Key, or Authorization: Bearer ), or without a key an x402 payment (header PAYMENT-SIGNATURE, USDC on Base). Prices and payment offers: https://api.sportstatsapi.com/.well-known/x402. Docs for AI models: https://api.sportstatsapi.com/llms.txt. MCP server: https://mcp.sportstatsapi.com/mcp.'
summary: Sports data API and x402 pay-per-call endpoints
title: SportStats Mma API
version: '1.0'
servers:
- url: https://api.sportstatsapi.com/api/v1
tags:
- name: mma
paths:
/mma/bouts/{id}:
get:
description: One fight with its result and per-fighter stats (strikes by target, knockdowns, takedowns, submission attempts, control time), and its event
operationId: getMmaBoutsById
parameters:
- description: Bout ID
in: path
name: id
required: true
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
data:
$ref: '#/components/schemas/dto.MMABoutResponse'
type: object
description: OK
'400':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Bad Request
'401':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Unauthorized
'404':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Not Found
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Get an MMA bout
tags:
- mma
/mma/events:
get:
description: Fight cards (UFC) by date, with the main event and its result once known
operationId: getMmaEvents
parameters:
- description: scheduled, live, finished or cancelled
in: query
name: status
schema:
type: string
- description: Events on or after this date (YYYY-MM-DD)
in: query
name: date_from
schema:
type: string
- description: Events on or before this date (YYYY-MM-DD)
in: query
name: date_to
schema:
type: string
- description: Maximum results (1-100)
in: query
name: limit
schema:
default: 50
type: integer
- description: Results to skip
in: query
name: offset
schema:
default: 0
type: integer
responses:
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
data:
items:
$ref: '#/components/schemas/dto.MMAEventResponse'
type: array
meta:
$ref: '#/components/schemas/middleware.MetaInfo'
type: object
description: OK
'401':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Unauthorized
'402':
$ref: '#/components/responses/PaymentRequired'
'500':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Internal Server Error
security:
- ApiKeyAuth: []
- BearerAuth: []
- x402: []
summary: List MMA events
tags:
- mma
x-x402:
asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
currency: USDC
discovery: https://api.sportstatsapi.com/.well-known/x402
minSinglePayment: '0.01'
network: eip155:8453
price: '0.002'
/mma/events/{id}:
get:
description: 'A fight card with every bout from the main event down: weight class, fighters, winner, method, round, time, judges'' scores and fight stats'
operationId: getMmaEventsById
parameters:
- description: Event ID
in: path
name: id
required: true
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
data:
$ref: '#/components/schemas/dto.MMAEventResponse'
type: object
description: OK
'400':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Bad Request
'401':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Unauthorized
'402':
$ref: '#/components/responses/PaymentRequired'
'404':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Not Found
security:
- ApiKeyAuth: []
- BearerAuth: []
- x402: []
summary: Get an MMA event
tags:
- mma
x-x402:
asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
currency: USDC
discovery: https://api.sportstatsapi.com/.well-known/x402
minSinglePayment: '0.01'
network: eip155:8453
price: '0.005'
/mma/fighters:
get:
description: Fighters whose name contains q, among the bouts we hold, most recently active first
operationId: getMmaFighters
parameters:
- description: Part of the name (2+ characters)
in: query
name: q
required: true
schema:
type: string
- description: Maximum results (1-100)
in: query
name: limit
schema:
default: 50
type: integer
responses:
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
data:
items:
$ref: '#/components/schemas/dto.MMAFighterHit'
type: array
type: object
description: OK
'400':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Bad Request
'401':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Unauthorized
'500':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Internal Server Error
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Find MMA fighters
tags:
- mma
/mma/fighters/{id}:
get:
description: 'Wins, losses, draws and no contests with the methods, from the bouts we hold (the provider''s 2026 season on; the data provider has no career records), and the last 10 fights. Where the fighter has a Wikipedia/Wikidata entry: profile (birth date, height, reach, stance, nationality, weight class, team), Wikipedia''s career record and the fights before 2026 (history), with the attribution (CC BY-SA 4.0 / CC0) in data and meta.'
operationId: getMmaFightersById
parameters:
- description: Fighter ID
in: path
name: id
required: true
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
data:
$ref: '#/components/schemas/dto.MMAFighterResponse'
meta:
$ref: '#/components/schemas/middleware.MetaInfo'
type: object
description: OK
'400':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Bad Request
'401':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Unauthorized
'404':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Not Found
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Get an MMA fighter's record
tags:
- mma
/mma/live:
get:
description: Events on now (a bout decided, not all), each with its full card
operationId: getMmaLive
responses:
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
data:
items:
$ref: '#/components/schemas/dto.MMAEventResponse'
type: array
type: object
description: OK
'401':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Unauthorized
'402':
$ref: '#/components/responses/PaymentRequired'
'500':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/middleware.Response'
- properties:
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
type: object
description: Internal Server Error
security:
- ApiKeyAuth: []
- BearerAuth: []
- x402: []
summary: Get MMA cards in progress
tags:
- mma
x-x402:
asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
currency: USDC
discovery: https://api.sportstatsapi.com/.well-known/x402
minSinglePayment: '0.01'
network: eip155:8453
price: '0.002'
components:
responses:
PaymentRequired:
content:
application/json:
schema:
properties:
accepts:
items:
additionalProperties: true
type: object
type: array
error:
type: string
resource:
properties:
mimeType:
type: string
url:
type: string
type: object
x402Version:
example: 2
type: integer
required:
- x402Version
- accepts
type: object
description: 'Payment Required: no API key and no valid payment. The body and the PAYMENT-REQUIRED header (base64 JSON) carry the x402 offers; pay one and repeat the request with PAYMENT-SIGNATURE. Only a 200 answer is charged.'
headers:
PAYMENT-REQUIRED:
description: Base64 JSON of the x402 offers
schema:
type: string
schemas:
dto.MMAHistoryFight:
properties:
date:
description: YYYY-MM-DD
type: string
event:
type: string
location:
type: string
method:
type: string
opponent:
type: string
record:
type: string
result:
type: string
round:
type: integer
time:
type: string
type: object
dto.MMAFighterRef:
properties:
id:
type: integer
name:
type: string
type: object
dto.MMAFighterProfile:
properties:
birth_date:
description: YYYY-MM-DD
type: string
height_cm:
type: integer
nationality:
description: citizenship(s)
type: string
reach_cm:
type: integer
source:
type: string
stance:
description: Orthodox, Southpaw, Switch
type: string
team:
type: string
updated_at:
type: string
weight_class:
description: current or last division
type: string
wikidata_id:
type: string
wikipedia_title:
type: string
type: object
dto.MMABoutResponse:
properties:
attribution:
type: string
event_id:
type: integer
fighter1:
$ref: '#/components/schemas/dto.MMAFighterRef'
fighter2:
$ref: '#/components/schemas/dto.MMAFighterRef'
id:
type: integer
judges_scores:
description: '"29-28", one per judge'
items:
type: string
type: array
main_card:
type: boolean
main_event:
type: boolean
method:
type: string
method_detail:
description: Punches, Rear Naked Choke
type: string
order:
type: integer
result_source:
description: 'ResultSource: provider, or wikipedia where the result (winner,
method, round, time, scores) is the event article''s: the data provider had
none, it was changed after the event (overturned), or the data provider does
not list the bout. Attribution is set then.'
type: string
round:
description: the round it ended in
type: integer
start:
description: UTC
type: string
stats:
description: 'fighter1, fighter2: strikes by target (total, power), knockdowns, takedowns, submissions, control time'
items:
type: integer
type: array
status:
description: scheduled, live, finished, cancelled, postponed
type: string
time:
description: time in that round, "4:07"
type: string
updated_at:
type: string
weight_class:
type: string
winner:
type: integer
type: object
dto.MMAEventResponse:
properties:
attribution:
description: 'Attribution: set when a result shown comes from Wikipedia.'
type: string
bouts:
type: integer
card:
items:
$ref: '#/components/schemas/dto.MMABoutResponse'
type: array
date:
description: the event's (US) date
type: string
id:
type: integer
main_event:
$ref: '#/components/schemas/dto.MMABoutResponse'
name:
type: string
status:
type: string
type: object
dto.MMAFighterResponse:
properties:
attribution:
type: string
career_record:
$ref: '#/components/schemas/dto.MMACareerRecord'
draws:
type: integer
history:
items:
$ref: '#/components/schemas/dto.MMAHistoryFight'
type: array
id:
type: integer
losses:
type: integer
losses_by:
additionalProperties:
type: integer
description: same
type: object
name:
type: string
no_contests:
type: integer
profile:
$ref: '#/components/schemas/dto.MMAFighterProfile'
recent_fights:
items:
$ref: '#/components/schemas/dto.MMABoutResponse'
type: array
record:
description: W-L-D
type: string
record_source:
type: string
wins:
type: integer
wins_by:
additionalProperties:
type: integer
description: ko_tko, submission, decision, other
type: object
type: object
dto.MMAFighterHit:
properties:
bouts:
type: integer
id:
type: integer
last_bout:
description: YYYY-MM-DD
type: string
name:
type: string
type: object
middleware.Response:
properties:
data: {}
error:
$ref: '#/components/schemas/middleware.ErrorInfo'
meta:
$ref: '#/components/schemas/middleware.MetaInfo'
success:
type: boolean
type: object
middleware.MetaInfo:
properties:
attribution:
description: Attribution a data source's licence asks for (Cricsheet's history).
type: string
has_more:
description: 'HasMore: the cursor-paged list has more rows now (ask again at once).'
type: boolean
limit:
type: integer
live:
description: 'Live: the answer is the live feed''s, kept while the match is played
(cricket ball by ball before Cricsheet''s file replaces it).'
type: boolean
next_cursor:
description: NextCursor continues a cursor-paged list (GET /changes).
type: string
offset:
type: integer
sources:
description: 'Sources: where the answer''s data came from, with each source''s licence
and the attribution it asks for (docs/source-licences.md).'
items:
$ref: '#/components/schemas/middleware.SourceInfo'
type: array
total:
type: integer
warnings:
description: 'Warnings: query parameters ignored or changed (a limit above the
maximum is clamped to it; a from/to that is not a date is ignored).'
items:
type: string
type: array
type: object
middleware.SourceInfo:
properties:
attribution:
description: show it with the data
example: 'Data: nflverse (CC-BY 4.0)'
type: string
licence:
description: the licence or terms the data is served under
example: CC-BY-4.0
type: string
name:
description: provider = our main licensed feed
example: nflverse
type: string
type: object
middleware.ErrorInfo:
properties:
code:
type: string
message:
type: string
type: object
dto.MMACareerRecord:
properties:
draws:
type: integer
losses:
type: integer
no_contests:
type: integer
record:
description: W-L-D
type: string
source:
type: string
wins:
type: integer
type: object
securitySchemes:
ApiKeyAuth:
description: API key
in: header
name: X-API-Key
type: apiKey
BearerAuth:
description: The same API key as a bearer token
scheme: bearer
type: http
x402:
description: x402 v2 payment (USDC on Base, eip155:8453) built from the offers of a 402 answer; see https://api.sportstatsapi.com/.well-known/x402
in: header
name: PAYMENT-SIGNATURE
type: apiKey
externalDocs:
description: x402 payment offers and prices
url: https://api.sportstatsapi.com/.well-known/x402