{
  "openapi": "3.0.1",
  "info": {
    "title": "Sherdog Scraper - UFC & MMA Fight Stats, Records & Events API",
    "description": "Extract public Sherdog data: UFC and MMA fighter records with method breakdowns, full bout-by-bout fight history, and entire event cards for finished and upcoming shows.",
    "version": "0.1",
    "x-build-id": "pCfCMgJv5O7OinOf6"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parseforge~sherdog-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parseforge-sherdog-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/parseforge~sherdog-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parseforge-sherdog-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/parseforge~sherdog-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parseforge-sherdog-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "fighterUrls": {
            "title": "Fighter URLs",
            "type": "array",
            "description": "Sherdog fighter profile URLs, e.g. https://www.sherdog.com/fighter/Jon-Jones-27944. This is the most reliable input — Sherdog identifies a fighter by the number at the end of the URL.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "fighterNames": {
            "title": "Fighter names (optional)",
            "type": "array",
            "description": "Full fighter names to look up in Sherdog's Fight Finder, e.g. \"Amanda Nunes\". Only an exact full-name match is used. Sherdog searches by surname only, so a common surname costs extra requests — pass the fighter URL when you already have it.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "eventUrls": {
            "title": "Event URLs (optional)",
            "type": "array",
            "description": "Sherdog event URLs, e.g. https://www.sherdog.com/events/UFC-309-Jones-vs-Miocic-103896. The whole card is scraped, including the main event and every undercard bout. Works for upcoming events too.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "weightClass": {
            "title": "Weight class (optional)",
            "enum": [
              "",
              "Catchweight",
              "Minimumweight",
              "Atomweight",
              "Strawweight",
              "Flyweight",
              "Bantamweight",
              "Featherweight",
              "Lightweight",
              "Welterweight",
              "Middleweight",
              "Light Heavyweight",
              "Heavyweight",
              "Super Heavyweight"
            ],
            "type": "string",
            "description": "Limit the Fight Finder search to one division. On its own, with no fighter name, it browses every fighter Sherdog lists in that division.",
            "default": ""
          },
          "association": {
            "title": "Gym / association (optional)",
            "type": "string",
            "description": "Limit the search to one team. Sherdog matches this as a partial name, so \"American Top Team\" also returns its affiliates. On its own it browses every fighter listed with that team.",
            "default": ""
          },
          "resultType": {
            "title": "What to return",
            "enum": [
              "fights",
              "fighters"
            ],
            "type": "string",
            "description": "\"Fights\" returns one row per bout — the full fight history of each fighter and every bout on each event card. \"Fighter profiles\" returns one row per fighter, with the career record and method breakdown; in this mode an event URL means \"every fighter on this card\", which costs one request per fighter.",
            "default": "fights"
          },
          "includeAmateurFights": {
            "title": "Include amateur fights",
            "type": "boolean",
            "description": "Sherdog lists amateur bouts in a separate table from the pro record. Turn this off to return professional bouts only. Applies to the \"Fights\" result type.",
            "default": true
          },
          "maxSearchPages": {
            "title": "Maximum Fight Finder pages per name",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How many 20-result search pages to read when resolving a name. Raise it for common surnames; the search stops early once the results sort past the name you asked for.",
            "default": 25
          },
          "enrichOpponents": {
            "title": "Add each opponent's profile to the row",
            "type": "boolean",
            "description": "Fetches every distinct opponent's own Sherdog page and adds their nationality, gym, division, height, weight and career record to the fight row. Costs one extra request and one \"Opponent profile\" event per distinct opponent, however many times they appear — a rematch is fetched once. Applies to the \"Fights\" result type.",
            "default": false
          },
          "dateFrom": {
            "title": "Only fights on or after",
            "type": "string",
            "description": "YYYY-MM-DD. Filters on the event date. Rows excluded by a filter are never saved and never charged.",
            "default": ""
          },
          "dateTo": {
            "title": "Only fights on or before",
            "type": "string",
            "description": "YYYY-MM-DD. Filters on the event date.",
            "default": ""
          },
          "resultFilter": {
            "title": "Only these results",
            "type": "array",
            "description": "Keep only bouts that ended this way. Leave empty for all of them. \"Upcoming\" only ever appears on event cards, so it needs at least one event URL.",
            "items": {
              "type": "string",
              "enum": [
                "win",
                "loss",
                "draw",
                "no contest",
                "upcoming"
              ],
              "enumTitles": [
                "Win",
                "Loss",
                "Draw",
                "No contest",
                "Upcoming (event cards only)"
              ]
            },
            "default": []
          },
          "methodFilter": {
            "title": "Only these methods",
            "type": "array",
            "description": "Sherdog writes the method free-form (\"TKO (Spinning Back Kick and Punches)\"). Every value is also bucketed into one of these four so you can filter on it. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "KO/TKO",
                "Submission",
                "Decision",
                "Other"
              ],
              "enumTitles": [
                "KO / TKO",
                "Submission",
                "Decision",
                "Other (DQ, overturned, no contest)"
              ]
            },
            "default": []
          },
          "organizationFilter": {
            "title": "Only this promotion",
            "type": "string",
            "description": "Case-insensitive partial match, e.g. \"UFC\", \"Bellator\", \"PFL\". A fighter's history table has no promotion column, so this matches the event name there — which is where the promotion appears.",
            "default": ""
          },
          "titleFightsOnly": {
            "title": "Only title fights",
            "type": "boolean",
            "description": "Sherdog marks title bouts on event cards only, never in a fighter's history table, so this needs at least one event URL. The run fails with that message rather than returning an empty dataset.",
            "default": false
          },
          "finishesOnly": {
            "title": "Only finishes",
            "type": "boolean",
            "description": "Keep only bouts that ended by KO/TKO or submission. Decisions, DQs and no contests are dropped.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum number of rows to save, counted across every source. Free-plan runs are capped at 100 rows.",
            "default": 100
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Sherdog rate-limits by IP. Datacenter proxies are enough for most runs; switch to RESIDENTIAL if you start seeing 403s.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}