OKTAGON MMA APIoktagonmma.com ↗
Access OKTAGON MMA fighter profiles, records, rankings, fight history, and weight class data via 4 structured API endpoints.
What is the OKTAGON MMA API?
The OKTAGON MMA API provides access to fighter data from Europe's leading MMA promotion through 4 endpoints. Use list_fighters to browse the roster with weight class filtering, get_fighter to retrieve a full profile including gym affiliation, rankings, height, and links to Sherdog and Tapology, and get_fighter_fight_history to pull per-fight outcomes, result types, and event details for any fighter on the roster.
curl -X GET 'https://api.parse.bot/scraper/36854270-8f1b-4f95-9a0c-7057bcb4e2a7/list_fighters?lang=en&skip=0&limit=10&weight_class_id=1' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace oktagonmma-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.oktagon_mma_fighter_api import Oktagon, WeightClass, FighterNotFound
oktagon = Oktagon()
# Browse welterweight fighters
for fighter in oktagon.fighters.list(weight_class_id=WeightClass.WELTERWEIGHT):
print(fighter.full_name, fighter.record.wins, fighter.record.losses, fighter.nationality)
# Get a specific fighter's full profile
david = oktagon.fighters.get(fighter_id=1)
print(david.full_name, david.nickname, david.gym, david.height_cm)
# Browse that fighter's OKTAGON fight history
for fight in david.fights.list():
print(fight.outcome, fight.result_type, fight.opponent.full_name, fight.event.title)
List fighters with pagination and optional weight class filtering. Returns basic fighter information including name, record, weight class, nationality, and image. The API returns fighters ordered by most recently added. Uses skip/limit offset pagination; each call returns one page.
| Param | Type | Description |
|---|---|---|
| skip | integer | Number of fighters to skip for pagination. |
| limit | integer | Number of fighters to return per page (max 100). |
| weight_class_id | integer | Filter by weight class ID. Known values: 1=Welterweight, 2=Middleweight, 3=Light Heavyweight, 4=Lightweight, 5=Heavyweight, 6=Bantamweight. |
{
"type": "object",
"fields": {
"fighters": "array of fighter objects with id, full_name, record, weight_class, nationality, and other profile fields",
"pagination": "object with limit, skip, and count keys"
},
"sample": {
"data": {
"fighters": [
{
"id": 1028,
"gym": "Box Club Gifhorn",
"slug": "joseph-donkor",
"links": {
"tapology": "https://www.tapology.com/fightcenter/fighters/236338-joseph-donkor",
"instagram": "https://www.instagram.com/aberration_mma/"
},
"record": {
"wins": 6,
"draws": 0,
"losses": 2,
"no_contests": 0
},
"champion": false,
"nickname": null,
"rankings": [],
"full_name": "Joseph Donkor",
"height_cm": null,
"image_url": "https://assets.oktagonmma.com/FIGHTER_PROFILE_IMAGE/98e4e1eb-5a80-4eaa-8063-d7962c9d32e3/cs.1781026487229.png",
"last_name": "Donkor",
"first_name": "Joseph",
"description": "<p>Joseph Donkor...</p>",
"nationality": "DE",
"weight_class": "Lightweight",
"year_of_birth": null,
"other_rankings": [],
"weight_class_id": 4
}
],
"pagination": {
"skip": 0,
"count": 5,
"limit": 5
}
},
"status": "success"
}
}About the OKTAGON MMA API
Fighter Roster and Filtering
The list_fighters endpoint returns paginated fighter objects, each containing id, full_name, record, weight_class, nationality, and image_url. You can filter by division using the weight_class_id parameter — accepted values map to Welterweight (1), Middleweight (2), Light Heavyweight (3), Heavyweight (5), and Bantamweight (6). Pagination is controlled with skip and limit (max 100 per request), and the response includes a pagination object with count, skip, and limit fields.
Detailed Fighter Profiles
get_fighter accepts a single fighter_id and returns the full profile: gym, nickname, height_cm, champion (boolean indicating current title status), rankings (array of division positions), and a links object with external references to Sherdog, Tapology, and Instagram. The record field breaks down wins, losses, draws, and no contests.
Fight History
get_fighter_fight_history returns a fights array for the specified fighter, where each entry includes outcome, opponent, event, result_type (e.g. KO, submission, decision), and time. The optional limit parameter caps the number of fights returned. Fighters who have not competed under the OKTAGON banner will return an empty fights array with count: 0.
Full Roster Export
get_all_fighters iterates through all available pages and returns every fighter on the OKTAGON roster in a single response under a fighters array with a total count. This endpoint performs multiple paginated fetches internally and may take several seconds to resolve.
The OKTAGON MMA API is a managed, monitored endpoint for oktagonmma.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when oktagonmma.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official oktagonmma.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a fighter comparison tool using
record,height_cm,weight_class, andrankingsfromget_fighter - Track divisional standings by querying
list_fighterswith eachweight_class_idand sorting by ranking position - Populate a fan app's fighter directory using
get_all_fightersfor full roster data with profile images - Analyze finish rates by iterating
get_fighter_fight_historyacross multiple fighters and aggregatingresult_typevalues - Cross-reference OKTAGON fighters on Sherdog or Tapology using the
linksobject returned byget_fighter - Identify current champions by filtering
get_all_fightersresults on thechampionboolean field - Monitor fighter gym affiliations and nationality distribution across weight classes using roster data
| 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 | 100 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 OKTAGON MMA have an official developer API?+
How does weight class filtering work in `list_fighters`?+
weight_class_id integer as a query parameter. The supported mappings are: 1 = Welterweight, 2 = Middleweight, 3 = Light Heavyweight, 5 = Heavyweight, and 6 = Bantamweight. Omitting the parameter returns fighters across all divisions. Note that weight class IDs are not consecutive — there is no ID 4 in the current set.What happens when a fighter has no OKTAGON fights recorded?+
get_fighter_fight_history will return a valid response with count: 0 and an empty fights array. This can occur for recently signed fighters or those whose records have not yet been logged under the OKTAGON banner.Does the API return upcoming scheduled fights or event schedules?+
Are fight statistics like significant strikes or takedown numbers available?+
outcome, opponent, event, result_type, and time, but do not include in-fight strike or grappling statistics. You can fork this API on Parse and revise it to add per-fight statistical breakdowns if that data becomes accessible from the source.