{
  "canonical_id": "john-harms",
  "canonical_name": "John Harms",
  "positions": [
    "GK"
  ],
  "leagues": [
    "USL1"
  ],
  "sport_names": [],
  "ambiguous": false,
  "appearances": [
    {
      "id": 1502896,
      "full_name": "John Harms",
      "team": "",
      "position": "GK",
      "sport_id": null,
      "league": "USL1",
      "jersey": null,
      "college": null,
      "college_stats": null,
      "height": "6'1\"",
      "weight": "181",
      "college_full": null
    }
  ],
  "career_totals": {
    "minutes_played": 2196.0,
    "shots": 1.0,
    "shots_on_target": 1.0,
    "goals": 0.0,
    "xg": 0.0617,
    "xg_place": -0.0119,
    "goals_minus_xg": -0.0617,
    "key_passes": 2.0,
    "assists": 0.0,
    "xa": 0.2465,
    "assists_minus_xa": -0.2465,
    "goals_plus_assists": 0.0,
    "xg_plus_xa": 0.3082,
    "points_added": 0.0,
    "xpoints_added": 0.016,
    "passes_attempted": 820.0,
    "pass_completion_pct": 1.4095,
    "xpass_completion_pct": 1.3775,
    "passes_over_expected": 13.0198,
    "passes_over_expected_p100": 3.1931000000000003,
    "avg_pass_distance": 74.83019999999999,
    "avg_pass_vertical": 57.0762,
    "shots_faced": 127.0,
    "goals_conceded": 38.0,
    "saves": 85.0,
    "headed_shot_share": 0.197,
    "xg_faced": 34.3027,
    "goals_conceded_minus_xg": 3.6973000000000003,
    "goals_per_xg": 2.0923
  },
  "season_totals": {
    "MLSNP-2025": {
      "minutes_played": 1603.0,
      "shots": 1.0,
      "shots_on_target": 1.0,
      "goals": 0.0,
      "xg": 0.0617,
      "xg_place": -0.0119,
      "goals_minus_xg": -0.0617,
      "key_passes": 2.0,
      "assists": 0.0,
      "xa": 0.2465,
      "assists_minus_xa": -0.2465,
      "goals_plus_assists": 0.0,
      "xg_plus_xa": 0.3082,
      "points_added": 0.0,
      "xpoints_added": 0.016,
      "passes_attempted": 636.0,
      "pass_completion_pct": 0.7736,
      "xpass_completion_pct": 0.7578,
      "passes_over_expected": 10.0528,
      "passes_over_expected_p100": 1.5806,
      "avg_pass_distance": 32.288,
      "avg_pass_vertical": 22.5362,
      "shots_faced": 103.0,
      "goals_conceded": 31.0,
      "saves": 68.0,
      "headed_shot_share": 0.1553,
      "xg_faced": 26.832,
      "goals_conceded_minus_xg": 4.168,
      "goals_per_xg": 1.1553
    },
    "USL1-2026": {
      "minutes_played": 593.0,
      "shots": 0.0,
      "shots_on_target": 0.0,
      "goals": 0.0,
      "xg": 0.0,
      "xg_place": 0.0,
      "goals_minus_xg": 0.0,
      "key_passes": 0.0,
      "assists": 0.0,
      "xa": 0.0,
      "assists_minus_xa": 0.0,
      "goals_plus_assists": 0.0,
      "xg_plus_xa": 0.0,
      "points_added": 0.0,
      "xpoints_added": 0.0,
      "passes_attempted": 184.0,
      "pass_completion_pct": 0.6359,
      "xpass_completion_pct": 0.6197,
      "passes_over_expected": 2.967,
      "passes_over_expected_p100": 1.6125,
      "avg_pass_distance": 42.5422,
      "avg_pass_vertical": 34.54,
      "shots_faced": 24.0,
      "goals_conceded": 7.0,
      "saves": 17.0,
      "headed_shot_share": 0.0417,
      "xg_faced": 7.4707,
      "goals_conceded_minus_xg": -0.4707,
      "goals_per_xg": 0.937
    }
  },
  "season_coaches": {},
  "game_log": [
    {
      "game_id": "soccer-mlsnp-2025-ljqE94Vqx0",
      "game_slug": "soccer-mlsnp-2025-ljqe94vqx0",
      "display": "MLSNP 2025 Season",
      "season": 2025,
      "week": 1,
      "league": "MLSNP",
      "sport_slug": "mlsnp-2025",
      "away_team": "",
      "home_team": "",
      "date_str": "",
      "score_home": "",
      "score_away": "",
      "stats": {
        "minutes_played": 1603.0,
        "shots": 1.0,
        "shots_on_target": 1.0,
        "goals": 0.0,
        "xg": 0.0617,
        "xg_place": -0.0119,
        "goals_minus_xg": -0.0617,
        "key_passes": 2.0,
        "assists": 0.0,
        "xa": 0.2465,
        "assists_minus_xa": -0.2465,
        "goals_plus_assists": 0.0,
        "xg_plus_xa": 0.3082,
        "points_added": 0.0,
        "xpoints_added": 0.016,
        "passes_attempted": 636.0,
        "pass_completion_pct": 0.7736,
        "xpass_completion_pct": 0.7578,
        "passes_over_expected": 10.0528,
        "passes_over_expected_p100": 1.5806,
        "avg_pass_distance": 32.288,
        "avg_pass_vertical": 22.5362,
        "shots_faced": 103.0,
        "goals_conceded": 31.0,
        "saves": 68.0,
        "headed_shot_share": 0.1553,
        "xg_faced": 26.832,
        "goals_conceded_minus_xg": 4.168,
        "goals_per_xg": 1.1553
      }
    },
    {
      "game_id": "soccer-usl1-2026-e7Mz0LJqr0",
      "game_slug": "soccer-usl1-2026-e7mz0ljqr0",
      "display": "USL1 2026 Season",
      "season": 2026,
      "week": 1,
      "league": "USL1",
      "sport_slug": "usl1-2026",
      "away_team": "",
      "home_team": "",
      "date_str": "",
      "score_home": "",
      "score_away": "",
      "stats": {
        "minutes_played": 593.0,
        "shots": 0.0,
        "shots_on_target": 0.0,
        "goals": 0.0,
        "xg": 0.0,
        "xg_place": 0.0,
        "goals_minus_xg": 0.0,
        "key_passes": 0.0,
        "assists": 0.0,
        "xa": 0.0,
        "assists_minus_xa": 0.0,
        "goals_plus_assists": 0.0,
        "xg_plus_xa": 0.0,
        "points_added": 0.0,
        "xpoints_added": 0.0,
        "passes_attempted": 184.0,
        "pass_completion_pct": 0.6359,
        "xpass_completion_pct": 0.6197,
        "passes_over_expected": 2.967,
        "passes_over_expected_p100": 1.6125,
        "avg_pass_distance": 42.5422,
        "avg_pass_vertical": 34.54,
        "shots_faced": 24.0,
        "goals_conceded": 7.0,
        "saves": 17.0,
        "headed_shot_share": 0.0417,
        "xg_faced": 7.4707,
        "goals_conceded_minus_xg": -0.4707,
        "goals_per_xg": 0.937
      }
    }
  ],
  "college": null,
  "nfl": null,
  "articles": []
}