{
  "dataset": "meta",
  "updated": "2026-11-08T19:12:35+00:00",
  "current_season": {
    "id": 20262027,
    "label": "2026-27",
    "number_of_games": 84,
    "start_date": "2026-09-29",
    "regular_season_end_date": "2027-04-10",
    "regular_season_complete": false,
    "team_games_played": {
      "min": 15,
      "median": 17.0,
      "max": 19
    },
    "progress_pct": 20.2,
    "playoffs_available": false,
    "total_playoff_games": 0,
    "olympic_participation": false
  },
  "window": {
    "size": 5,
    "season_ids": [
      20262027,
      20252026,
      20242025,
      20232024,
      20222023
    ],
    "labels": [
      "2026-27",
      "2025-26",
      "2024-25",
      "2023-24",
      "2022-23"
    ],
    "games_per_season": {
      "2026-27": 84,
      "2025-26": 82,
      "2024-25": 82,
      "2023-24": 82,
      "2022-23": 82
    },
    "mixed_schedule_length": true,
    "olympic_seasons": [
      "2025-26"
    ],
    "playoff_season_ids": [
      20252026,
      20242025,
      20232024,
      20222023
    ],
    "playoff_labels": [
      "2025-26",
      "2024-25",
      "2023-24",
      "2022-23"
    ],
    "current_season_id": 20262027,
    "current_season_label": "2026-27"
  },
  "teams": {
    "AFM": "Atlanta Flames",
    "ANA": "Anaheim Ducks",
    "ARI": "Arizona Coyotes",
    "ATL": "Atlanta Thrashers",
    "BOS": "Boston Bruins",
    "BRK": "Brooklyn Americans",
    "BUF": "Buffalo Sabres",
    "CAR": "Carolina Hurricanes",
    "CBJ": "Columbus Blue Jackets",
    "CGS": "California Golden Seals",
    "CGY": "Calgary Flames",
    "CHI": "Chicago Blackhawks",
    "CLE": "Cleveland Barons",
    "CLR": "Colorado Rockies",
    "COL": "Colorado Avalanche",
    "DAL": "Dallas Stars",
    "DCG": "Detroit Cougars",
    "DET": "Detroit Red Wings",
    "DFL": "Detroit Falcons",
    "EDM": "Edmonton Oilers",
    "FLA": "Florida Panthers",
    "HAM": "Hamilton Tigers",
    "HFD": "Hartford Whalers",
    "KCS": "Kansas City Scouts",
    "LAK": "Los Angeles Kings",
    "MIN": "Minnesota Wild",
    "MMR": "Montreal Maroons",
    "MNS": "Minnesota North Stars",
    "MTL": "Montr\u00e9al Canadiens",
    "MWN": "Montreal Wanderers",
    "NHL": "NHL",
    "NJD": "New Jersey Devils",
    "NSH": "Nashville Predators",
    "NYA": "New York Americans",
    "NYI": "New York Islanders",
    "NYR": "New York Rangers",
    "OAK": "Oakland Seals",
    "OTT": "Ottawa Senators",
    "PHI": "Philadelphia Flyers",
    "PHX": "Phoenix Coyotes",
    "PIR": "Pittsburgh Pirates",
    "PIT": "Pittsburgh Penguins",
    "QBD": "Quebec Bulldogs",
    "QUA": "Philadelphia Quakers",
    "QUE": "Quebec Nordiques",
    "SEA": "Seattle Kraken",
    "SEN": "Ottawa Senators (1917)",
    "SJS": "San Jose Sharks",
    "SLE": "St. Louis Eagles",
    "STL": "St. Louis Blues",
    "TAN": "Toronto Arenas",
    "TBD": "To be determined",
    "TBL": "Tampa Bay Lightning",
    "TOR": "Toronto Maple Leafs",
    "TSP": "Toronto St. Patricks",
    "UTA": "Utah Mammoth",
    "VAN": "Vancouver Canucks",
    "VGK": "Vegas Golden Knights",
    "WIN": "Winnipeg Jets (1979)",
    "WPG": "Winnipeg Jets",
    "WSH": "Washington Capitals"
  },
  "layout": {
    "rate_table_available": false,
    "rate_opens_at_team_gp": 20,
    "rate_min_gp": 10
  },
  "counts": {
    "current_season_gwg": 49,
    "current_season_otg": 37,
    "multiseason_gwg": 27,
    "multiseason_otg": 28,
    "multiseason_playoff_gwg": 33
  },
  "provenance": {
    "source": "NHL stats API (api.nhle.com), public, no authentication required",
    "endpoints": {
      "seasons": "https://api.nhle.com/stats/rest/en/season?sort=%5B%7B%22property%22%3A%22id%22%2C%22direction%22%3A%22DESC%22%7D%5D&limit=8",
      "skater_summary": "https://api.nhle.com/stats/rest/en/skater/summary?start={start}&limit=100&sort=[{\"property\":\"playerId\",\"direction\":\"ASC\"}]&cayenneExp=seasonId={seasonId} and gameTypeId={gameType}",
      "team_summary": "https://api.nhle.com/stats/rest/en/team/summary?limit=50&cayenneExp=seasonId={seasonId} and gameTypeId=2"
    },
    "game_type_ids": {
      "2": "regular season",
      "3": "playoffs"
    },
    "fetched_at_utc": "2026-11-08T19:12:35+00:00",
    "script": "nhl-api-scrape.py",
    "script_version": "2.0.0",
    "python": "3.11.18",
    "requests_made": 67,
    "window_resolved_from": "season metadata; current season = newest row whose startDate has passed; playoff seasons = window seasons with totalPlayoffGames > 0",
    "derivation": "Per-season API rows summed across the window. No imputation, no modeling, no estimates. Players are keyed by NHL playerId. Rows with zero game-winning goals and zero overtime goals are omitted from published boards; completeness records how many were considered.",
    "completeness": {
      "2026-27 regular": {
        "reported_total": 755,
        "rows_retrieved": 755,
        "rows_published": 195
      },
      "2025-26 regular": {
        "reported_total": 940,
        "rows_retrieved": 940,
        "rows_published": 482
      },
      "2024-25 regular": {
        "reported_total": 920,
        "rows_retrieved": 920,
        "rows_published": 454
      },
      "2023-24 regular": {
        "reported_total": 924,
        "rows_retrieved": 924,
        "rows_published": 474
      },
      "2022-23 regular": {
        "reported_total": 951,
        "rows_retrieved": 951,
        "rows_published": 476
      },
      "2025-26 playoffs": {
        "reported_total": 347,
        "rows_retrieved": 347,
        "rows_published": 61
      },
      "2024-25 playoffs": {
        "reported_total": 332,
        "rows_retrieved": 332,
        "rows_published": 70
      },
      "2023-24 playoffs": {
        "reported_total": 339,
        "rows_retrieved": 339,
        "rows_published": 63
      },
      "2022-23 playoffs": {
        "reported_total": 334,
        "rows_retrieved": 334,
        "rows_published": 68
      }
    },
    "known_limitations": [
      "The API returns at most 100 rows per page and ignores a larger limit; this script pages on `start`. Compare rows_retrieved with reported_total in completeness to confirm a full sweep.",
      "teamAbbrevs is comma-joined for players who changed teams mid-season; the most recent club is shown and the full list is kept as `teams`.",
      "Two different players named Sebastian Aho appear in this window, which is why aggregation is keyed by playerId rather than by name.",
      "all_data.json is overwritten each run. The immutable archive is this repository's git history, where each daily commit is a timestamped snapshot of that day's fetch."
    ]
  }
}
