Retrieving Seasonal Statistics
The Seasonal Statistics feed returns a team's complete season statistics: a team-level record object and a players[] array, both organized by stat category. One call per team per season type covers a stats page.
This scenario is commonly used to:
- Build team and player season stat pages
- Rank players within a team by category
- Surface the UFL-specific scoring categories
Relevant Feeds
| Feed | Scope | Use |
|---|---|---|
| Seasonal Statistics | season + team GUID | Team and player season statistics |
| Player Profile | player GUID | The same player across seasons and teams |
| Game Statistics | game GUID | Single-game breakdowns |
High-Level Workflow
Integration Steps
1. Pull the team's season
The team-level record object carries a category block per stat family: passing, rushing, receiving, defense, kicking and returns, penalties, efficiency, touchdowns, and the point-after families. The UFL-specific structure is visible in extra_points (point-after kicks) and its conversions block, which splits one, two, and three-point attempt types alongside defensive conversion returns, and in efficiency, which includes the onside-scrimmage alternative to the kickoff:
{
"id": "ff1f47e0-b8ef-11f0-9440-2f32b8d49d12",
"name": "Kings",
"market": "Louisville",
"alias": "LOU",
"sr_id": "sr:competitor:1320808",
"season": {
"id": "4ee5ece0-6f0b-11f0-b1e6-2dad3ff60df1",
"year": 2026,
"type": "REG"
},
"record": {
"games_played": 10,
"touchdowns": {
"pass": 10,
"rush": 13,
"total_return": 4,
"total": 27,
"fumble_return": 0,
"int_return": 3,
"kick_return": 1,
"punt_return": 0,
"other": 0
},
"extra_points": {
"kicks": {
"attempts": 25,
"blocked": 1,
"made": 23,
"pct": 92.0
},
"conversions": {
"pass_attempts": 8,
"pass_successes": 2,
"rush_attempts": 0,
"rush_successes": 0,
"defense_attempts": 1,
"defense_successes": 0,
"turnover_successes": 0
},
"special_conversions": {
"pass_three_point_attempts": 0,
"pass_three_point_successes": 0,
"rush_three_point_attempts": 0,
"rush_three_point_successes": 0,
"defense_three_point_attempts": 0,
"defense_three_point_successes": 0,
"pass_one_point_attempts": 0,
"pass_one_point_successes": 0,
"rush_one_point_attempts": 0,
"rush_one_point_successes": 0,
"defense_one_point_attempts": 0,
"defense_one_point_successes": 0
}
},
"efficiency": {
"goaltogo": {
"attempts": 22,
"successes": 13,
"pct": 59.091
},
"redzone": {
"attempts": 35,
"successes": 19,
"pct": 54.286
},
"thirddown": {
"attempts": 118,
"successes": 44,
"pct": 37.288
},
"fourthdown": {
"attempts": 19,
"successes": 5,
"pct": 26.316
},
"onside_scrimmage": {
"attempts": 0,
"successes": 0,
"pct": 0.0
}
}
}
}The record is shown trimmed to four category blocks.
2. Read the player list
Each entry in players[] carries the same category structure, populated for the categories that player accumulated:
{
"id": "3e01cc30-10bb-11f1-bbb5-bd3764a5f47a",
"name": "Ian Wheeler",
"jersey": "33",
"position": "RB",
"games_played": 9,
"games_started": 1,
"rushing": {
"avg_yards": 5.441,
"attempts": 68,
"touchdowns": 6,
"yards": 370,
"longest": 61,
"longest_touchdown": 12,
"redzone_attempts": 21,
"tlost": 11,
"tlost_yards": -16,
"first_downs": 22,
"broken_tackles": 0,
"kneel_downs": 0,
"scrambles": 0,
"yards_after_contact": 0
}
}The player entry is shown trimmed to the rushing category.
3. Follow a player across seasons
Team-scoped season stats answer "this team's season"; the Player Profile's seasons[] array answers "this player's career", with one entry per season, season type, and team. Use the profile when a player has moved between teams.
Common Use Cases
- Team stats page: one Seasonal Statistics pull per team, refreshed after game days
- League leaders: pull all eight teams and rank client-side; the full player lists arrive in one response per team
- Player career view: Player Profile
seasons[]
Best Practices
- Address teams by GUID from the current League Hierarchy
- Refresh after game days complete and when the Daily Change Log lists statistics changes; season aggregates settle once the day's games are
closed - Zero-valued fields are meaningful: a category block with zeros records participation without production, and absent players did not accumulate stats in that category
Updated 11 days ago
