Integration GuidesReference Docs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

Tracking Standings

The Postgame Standings feed carries the league table: ranks, records, win percentage, points, streaks, strength of schedule and victory, record splits, and clinch markers, updating after games conclude.

This scenario is commonly used to:

  • Render the league table
  • Track the playoff race with clinch and elimination markers
  • Show home, road, and division record splits
  • Feed tiebreaker displays with strength-of-schedule detail


Relevant Feeds

FeedUse
Postgame StandingsThe table itself, by {season_year}/{season_type}
League HierarchyConference and division structure
SeasonsSeason catalog


Reading the Table

Standings nest conferences[] > divisions[] > teams[]. The 2026 season plays as a single UFL Conference table of eight teams; the hierarchy also lists earlier division groupings, so build grouping from what the standings response itself returns rather than assuming a fixed layout. The top of the 2026 table:

{
  "season": {
    "id": "4ee5ece0-6f0b-11f0-b1e6-2dad3ff60df1",
    "year": 2026,
    "type": "REG"
  },
  "conferences": [
    {
      "id": "23f26d00-966b-11ec-aba0-0f22e7db39c9",
      "name": "UFL",
      "alias": "UFL",
      "divisions": [
        {
          "id": "c281ba41-b8f7-11f0-bff0-bb54b53201d3",
          "name": "UFL Conference",
          "alias": "UFL",
          "teams": [
            {
              "id": "0dc60b30-b8f0-11f0-9440-2f32b8d49d12",
              "name": "Storm",
              "market": "Orlando",
              "alias": "ORL",
              "sr_id": "sr:competitor:1320812",
              "rank": {
                "conference": 1,
                "division": 1,
                "clinched": "playoff_berth"
              },
              "wins": 8,
              "losses": 2,
              "ties": 0,
              "win_pct": 0.8,
              "points_for": 232,
              "points_against": 186,
              "strength_of_schedule": {
                "sos": 0.47,
                "wins": 47,
                "total": 100
              },
              "strength_of_victory": {
                "sov": 0.463,
                "wins": 37,
                "total": 80
              },
              "streak": {
                "type": "win",
                "length": 4,
                "desc": "Won 4"
              },
              "records": [
                {
                  "category": "division",
                  "wins": 8,
                  "losses": 2,
                  "ties": 0,
                  "win_pct": 0.8,
                  "points_for": 232,
                  "points_against": 186
                },
                {
                  "category": "home",
                  "wins": 3,
                  "losses": 2,
                  "ties": 0,
                  "win_pct": 0.6,
                  "points_for": 103,
                  "points_against": 89
                },
                {
                  "category": "road",
                  "wins": 5,
                  "losses": 0,
                  "ties": 0,
                  "win_pct": 1.0,
                  "points_for": 129,
                  "points_against": 97
                }
              ]
            },
            {
              "id": "38355600-c045-11ee-8037-85feac748e1f",
              "name": "Renegades",
              "market": "Dallas",
              "alias": "DAL",
              "sr_id": "sr:competitor:661843",
              "rank": {
                "conference": 7,
                "division": 7,
                "clinched": "eliminated"
              },
              "wins": 4,
              "losses": 6,
              "ties": 0,
              "win_pct": 0.4,
              "points_for": 224,
              "points_against": 259,
              "strength_of_schedule": {
                "sos": 0.51,
                "wins": 51,
                "total": 100
              },
              "strength_of_victory": {
                "sov": 0.475,
                "wins": 19,
                "total": 40
              },
              "streak": {
                "type": "win",
                "length": 1,
                "desc": "Won 1"
              },
              "records": [
                {
                  "category": "home",
                  "wins": 3,
                  "losses": 2,
                  "ties": 0,
                  "win_pct": 0.6,
                  "points_for": 144,
                  "points_against": 133
                },
                {
                  "category": "division",
                  "wins": 4,
                  "losses": 6,
                  "ties": 0,
                  "win_pct": 0.4,
                  "points_for": 224,
                  "points_against": 259
                },
                {
                  "category": "road",
                  "wins": 1,
                  "losses": 4,
                  "ties": 0,
                  "win_pct": 0.2,
                  "points_for": 80,
                  "points_against": 126
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}
<?xml version="1.0" ?>
<!-- Generation started @ 2026-07-17 17:06:44 +0000 -->
<season xmlns="http://feed.elasticstats.com/schema/football/ufl/postgame-standings-v7.0.xsd" id="4ee5ece0-6f0b-11f0-b1e6-2dad3ff60df1" year="2026" type="REG" name="REG">
  
  
  <conference id="23f26d00-966b-11ec-aba0-0f22e7db39c9" name="UFL" alias="UFL">
    
    
    <division id="c281ba41-b8f7-11f0-bff0-bb54b53201d3" name="UFL Conference" alias="UFL">
      
      
      <team id="0dc60b30-b8f0-11f0-9440-2f32b8d49d12" name="Storm" market="Orlando" alias="ORL" sr_id="sr:competitor:1320812" wins="8" losses="2" ties="0" win_pct="0.8" points_for="232" points_against="186">
        
        
        <rank conference="1" division="1" clinched="playoff_berth"/>
        
        
        <streak type="win" length="4" desc="Won 4"/>
        
        
        <strength-of-schedule sos="0.47" wins="47" total="100"/>
        
        
        <strength-of-victory sov="0.463" wins="37" total="80"/>
        
        
        <records>
          
          
          <record category="neutral" wins="0" losses="0" ties="0" win_pct="0.0" points_for="0" points_against="0"/>
          
          
          <record category="division" wins="8" losses="2" ties="0" win_pct="0.8" points_for="232" points_against="186"/>
          
          
          <record category="home" wins="3" losses="2" ties="0" win_pct="0.6" points_for="103" points_against="89"/>
          
          
          <record category="ufl" wins="8" losses="2" ties="0" win_pct="0.8" points_for="232" points_against="186"/>
          
          
          <record category="road" wins="5" losses="0" ties="0" win_pct="1.0" points_for="129" points_against="97"/>
          
          
          <record category="conference" wins="8" losses="2" ties="0" win_pct="0.8" points_for="232" points_against="186"/>
          
        
        </records>
        
      
      </team>
      <team id="38355600-c045-11ee-8037-85feac748e1f" name="Renegades" market="Dallas" alias="DAL" sr_id="sr:competitor:661843" wins="4" losses="6" ties="0" win_pct="0.4" points_for="224" points_against="259">
        
        
        <rank conference="7" division="7" clinched="eliminated"/>
        
        
        <streak type="win" length="1" desc="Won 1"/>
        
        
        <strength-of-schedule sos="0.51" wins="51" total="100"/>
        
        
        <strength-of-victory sov="0.475" wins="19" total="40"/>
        
        
        <records>
          
          
          <record category="home" wins="3" losses="2" ties="0" win_pct="0.6" points_for="144" points_against="133"/>
          
          
          <record category="neutral" wins="0" losses="0" ties="0" win_pct="0.0" points_for="0" points_against="0"/>
          
          
          <record category="conference" wins="4" losses="6" ties="0" win_pct="0.4" points_for="224" points_against="259"/>
          
          
          <record category="ufl" wins="4" losses="6" ties="0" win_pct="0.4" points_for="224" points_against="259"/>
          
          
          <record category="division" wins="4" losses="6" ties="0" win_pct="0.4" points_for="224" points_against="259"/>
          
          
          <record category="road" wins="1" losses="4" ties="0" win_pct="0.2" points_for="80" points_against="126"/>
          
        
        </records>
        
      
      </team>
      <!-- ... omitted for brevity -->
      
    
    </division>
    
  
  </conference>
  

</season>
<!-- Generation ended @ 2026-07-17 17:06:44 +0000 -->

Both responses are shown trimmed to the top two rows, with three record splits kept in the JSON. The rows render straight into a table, with rank.clinched surfacing as a badge; club marks are placeholders for your own or licensed assets:

UFL CONFERENCE2026 Regular Season
TEAMW-LPCTPFPA CLINCHED BERTH
1ORLOrlando Storm8-2.800232186 CLINCHED BERTH
2STLSt. Louis Battlehawks6-4.600212197 CLINCHED BERTH
3LOULouisville Kings6-4.600265219 CLINCHED BERTH
4DCDC Defenders5-5.500281224 CLINCHED BERTH
Rows follow the rank values in the payload.


Row Anatomy

  • rank carries conference and division positions, and adds a clinched marker when a team's fate is decided: division (clinched the division title), playoff_berth, or eliminated
  • wins / losses / ties and win_pct
  • points_for / points_against are season totals
  • strength_of_schedule and strength_of_victory are objects carrying the computed value plus the wins and total games behind it
  • streak carries kind and length
  • records[] is a list of split records by category: home, road, division, conference, neutral-site, and a league-wide split


Integration Steps


1. Pull the table postgame

Standings update after games conclude, so pull once games reach closed rather than on a fast timer. Standings land within about 2 minutes of a game reaching complete, and on quiet days the feed's 10-minute cache TTL makes an hourly refresh more than enough.


2. Track the race

Watch rank.clinched appear as the season closes: playoff_berth marks qualification, division the title, eliminated the end of a team's chances. Pair with the Tracking Playoffs page once seeding settles.


3. Handle the postseason variant

The feed also serves PST, reflecting postseason results in the same shape. Use it for playoff-week records rather than as the seeding source; seeds appear in the Tournament Summary.



Best Practices

  • Order rows by the rank values in the payload rather than re-sorting on win percentage; the feed's order reflects league tiebreakers
  • Key rows by team GUID and treat names and aliases as display data
  • Refresh standings after each game day completes, and after the Daily Change Log lists standings changes

Did this page help you?