How ESPN is put together: sports, leagues, seasons, events
ESPN publishes sport, but underneath the articles it runs a working sports database, and that database is the part worth collecting. The public index carries seventeen sports - football, basketball, baseball, hockey, soccer, golf, tennis, racing, rugby, rugby league, cricket, MMA, lacrosse, volleyball, water polo, field hockey and Australian football - and each one holds its own league list, from a single league under Australian football to 219 soccer competitions in September 2026, coded with dots: eng.1, esp.1, ger.1, usa.1, uefa.champions, fifa.world.
Addressing is regular once the shape is clear. Everything hangs off sport, then league, then season, then season type, then a week or a calendar date, then an event. Season types separate preseason, regular season, postseason and off season, and tables exist only for the first two. Playoff rounds are modelled as weeks named Wild Card, Divisional Round, Conference Championship and Super Bowl, so a bracket is rebuilt from round-labelled events rather than read out of a bracket object. Ids are numeric and travel with a compact uid: s:20~l:28~t:9 is a team, where 20 is the football sport and 28 the NFL, while soccer sits under sport 600 with the Premier League as league 700.
Web pages reuse the same ids. A gamecast is /nfl/game/_/gameId/ plus the event id. A club page is /nfl/team/_/name/gb/green-bay-packers, with roster, depth chart, schedule, stats, injuries and transactions tabs beneath it. A player is /nfl/player/_/id/ plus the athlete id, carrying stats, splits, gamelog and bio. Football uses /soccer/match/_/gameId/. The trailing name in the path is decoration; the id is the stable handle.
Get a Quote