{
  "openapi": "3.0.1",
  "info": {
    "title": "NHL Stats and Play-by-Play Scraper",
    "description": "Get NHL player and team stats, standings, game results, boxscores, draft picks and full play-by-play with shot coordinates. One wide row per player with time on ice, power play, penalties and shot attempts. Any season since 1917. Export to CSV or Excel.",
    "version": "1.0",
    "x-build-id": "78sY74YRIwQfaIw8a"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parselab~nhl-hockey-stats-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parselab-nhl-hockey-stats-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/parselab~nhl-hockey-stats-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parselab-nhl-hockey-stats-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/parselab~nhl-hockey-stats-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parselab-nhl-hockey-stats-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": {
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000."
          },
          "mode": {
            "title": "What to collect",
            "enum": [
              "skaters",
              "goalies",
              "teams",
              "standings",
              "games",
              "playbyplay",
              "players",
              "gamelogs",
              "draft"
            ],
            "type": "string",
            "description": "Skaters and goalies give one row per player and season. Teams gives one row per team and season. Standings gives the league table for a date. Games gives results and optional boxscores. Play-by-play gives one row per event with shot coordinates. Players gives full profiles with career totals. Game logs gives one row per game for chosen players. Draft gives every pick of a draft year.",
            "default": "skaters"
          },
          "seasons": {
            "title": "Seasons",
            "type": "array",
            "description": "Seasons to collect, for example 2024-25 or 2023-24. Works for skaters, goalies, teams and game logs. Leave empty for the current season. Data goes back to 1917-18.",
            "items": {
              "type": "string"
            }
          },
          "gameType": {
            "title": "Season part",
            "enum": [
              "regular",
              "playoffs",
              "preseason"
            ],
            "type": "string",
            "description": "Regular season, playoffs or preseason.",
            "default": "regular"
          },
          "depth": {
            "title": "Level of detail",
            "enum": [
              "full",
              "basic"
            ],
            "type": "string",
            "description": "Full merges every stat report into one wide row (time on ice, power play, penalties, shot attempts, Corsi, faceoffs, shootouts and more). Basic returns only the main stat line and bio.",
            "default": "full"
          },
          "teams": {
            "title": "Teams",
            "type": "array",
            "description": "Team abbreviations such as EDM, TOR, BOS. Filters skaters, goalies, teams and games. In players mode it loads the current roster of each team.",
            "items": {
              "type": "string"
            }
          },
          "positions": {
            "title": "Positions",
            "type": "array",
            "description": "Skater positions to keep: C for centers, L for left wings, R for right wings, D for defensemen.",
            "items": {
              "type": "string"
            }
          },
          "minGames": {
            "title": "Minimum games played",
            "minimum": 0,
            "type": "integer",
            "description": "Only return skaters and goalies who played at least this many games in the season."
          },
          "playerNames": {
            "title": "Player names",
            "type": "array",
            "description": "Look up players by name, for example Connor McDavid. Used in players and game logs modes.",
            "items": {
              "type": "string"
            }
          },
          "playerIds": {
            "title": "Player IDs",
            "type": "array",
            "description": "NHL player IDs, for example 8478402. Used in players and game logs modes, and as a filter for skaters and goalies.",
            "items": {
              "type": "string"
            }
          },
          "dateFrom": {
            "title": "Date from",
            "type": "string",
            "description": "First game date, YYYY-MM-DD. Used in games and play-by-play modes. Default is seven days before the end date."
          },
          "dateTo": {
            "title": "Date to",
            "type": "string",
            "description": "Last game date, YYYY-MM-DD. Default is today."
          },
          "includeBoxscores": {
            "title": "Include boxscores",
            "type": "boolean",
            "description": "In games mode, add the full player stat lines of every finished game.",
            "default": false
          },
          "gameIds": {
            "title": "Game IDs",
            "type": "array",
            "description": "NHL game IDs such as 2024020700 for play-by-play mode. If empty, finished games in the date range are used.",
            "items": {
              "type": "string"
            }
          },
          "eventTypes": {
            "title": "Event types",
            "type": "array",
            "description": "Keep only these play-by-play events, for example goal, shot-on-goal, missed-shot, blocked-shot, hit, giveaway, takeaway, faceoff, penalty.",
            "items": {
              "type": "string"
            }
          },
          "standingsDate": {
            "title": "Standings date",
            "type": "string",
            "description": "Date of the standings table, YYYY-MM-DD. Leave empty for today."
          },
          "draftYears": {
            "title": "Draft years",
            "type": "array",
            "description": "Draft years for draft mode, for example 2023. Leave empty for the most recent draft.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}