Install
pnpm add @sportsdataverse/sdvplot @sportsdataverse/sporty @sportsdataverse/sdvtables @observablehq/plot
The chart libraries are optional peers: install the one you draw with. Getting started lists every entry point; the gallery shows every example, each run in CI before it is published.
What's covered
28 leagues and 5,879 teams in sdvplot; 9 sports and 53 league surfaces (plus custom dimensions) in sporty.
Leagues and resources (sdvplot)
Teams per league with each resource. Browse them in the Logos by league and Team colours notebooks.
| League | Teams | Colours | Logos | Wordmarks | Aliases | Headshots |
|---|---|---|---|---|---|---|
| Football | ||||||
nfl NFL | 32 | 32 | 32 | 32 | 509 (9 id systems) | ESPNgsis |
cfb College football | 687 | 687 | 687 | none | 10,221 (8 id systems) | ESPN |
ufl UFL | 11 | 11 | 11 | none | 95 (5 id systems) | none |
xfl XFL | 11 | 11 | 11 | none | 64 (4 id systems) | none |
usfl USFL | 9 | 9 | 9 | none | 27 (3 id systems) | none |
aaf Alliance of American Football | 8 | 8 | 8 | none | 32 (4 id systems) | none |
| Basketball | ||||||
nba NBA | 30 | 30 | 30 | none | 477 (9 id systems) | ESPNleague ids |
wnba WNBA | 15 | 15 | 15 | none | 215 (8 id systems) | ESPNleague ids |
nbagl NBA G League | 32 | 32 | 32 | none | 224 (5 id systems) | none |
mbb Men's college basketball | 366 | 366 | 366 | none | 3,614 (6 id systems) | ESPN |
wbb Women's college basketball | 364 | 364 | 364 | none | 3,615 (6 id systems) | ESPN |
| Baseball and softball | ||||||
mlb MLB | 30 | 30 | 30 | 30 | 696 (10 id systems) | ESPNleague ids |
milb Minor League Baseball | 286 | 286 | 286 | 166 | 1,747 (4 id systems) | none |
ncaa_baseball College baseball | 414 | 414 | 414 | none | 2,665 (5 id systems) | none |
ncaa_softball College softball | 415 | 415 | 415 | none | 2,649 (5 id systems) | none |
| Hockey | ||||||
nhl NHL | 32 | 32 | 32 | none | 506 (8 id systems) | ESPNleague ids |
pwhl PWHL | 12 | 12 | 12 | none | 48 (4 id systems) | none |
ahl AHL | 61 | 61 | 61 | none | 244 (4 id systems) | none |
echl ECHL | 59 | 59 | 59 | none | 236 (4 id systems) | none |
ohl OHL | 27 | 27 | 27 | none | 108 (4 id systems) | none |
whl WHL | 23 | 23 | 23 | none | 92 (4 id systems) | none |
qmjhl QMJHL | 30 | 30 | 30 | none | 120 (4 id systems) | none |
ushl USHL | 17 | 17 | 17 | none | 68 (4 id systems) | none |
phf Premier Hockey Federation | 8 | 8 | 8 | 1 | 27 (3 id systems) | none |
ncaa_mhockey Men's college hockey | 110 | 110 | 108 | none | 658 (5 id systems) | none |
ncaa_whockey Women's college hockey | 48 | 48 | 47 | none | 288 (5 id systems) | none |
| Soccer | ||||||
soccer Soccer clubs | 2,631 | 2,631 | 2,631 | none | 7,893 (3 id systems) | none |
| Cricket | ||||||
cricket Cricket teams | 111 | 111 | 111 | none | 488 (4 id systems) | none |
Playing surfaces (sporty)
Every sport surface() draws and the leagues it knows; custom takes your own dimensions. See the surfaces guide and the Playing surfaces notebook.
- Baseball
- custom
- little league
- milb
- mlb
- ncaa
- nfhs
- pony
- Basketball
- custom
- fiba
- nba
- nba g league
- ncaa
- nfhs
- wnba
- Curling
- curling canada
- custom
- wcf
- Football
- cfl
- custom
- ncaa
- nfhs11
- nfhs6
- nfhs8
- nfhs9
- nfl
- Hockey
- ahl
- custom
- echl
- iihf
- ncaa
- nhl
- nwhl
- ohl
- phf
- pwhl
- qmjhl
- ushl
- Lacrosse
- custom
- ncaam
- ncaaw
- nll
- pll
- usam
- usaw
- world lacrosse
- Soccer
- custom
- epl
- fifa
- mls
- ncaa
- nwsl
- Tennis
- atp
- custom
- ita
- itf
- ncaa
- usta
- wta
- Volleyball
- custom
- fivb
- ncaa
- usa volleyball
Data sources and provenance
- Team index
- Curated in sdvplot (Python, MIT) and bundled here, one chunk per league: index
1c025b69f8cf. Nothing is downloaded to resolve a team. - Logos and wordmarks
- The SportsDataverse logo archive: content-addressed files on
sdv.nyc3.cdn.digitaloceanspaces.com, manifest of 2026-10-06. Marks by source: espn 41,203 · hockeytech 1,251 · mlbstatic 972 · nhl 367 · ncaa.com 124 · nflverse 70 · cricinfo 64 · fox 14 · shiftstats 9 · aaf-strip-crop 8 · nwhl.co 6 · wayback 1. - Team colours
- Teams by colour source: espn 4,183 · logo 1,662 · nflverse 32 · fallback 2.
- Headshots
- ESPN's image CDN by athlete id (cfb, mbb, mlb, nba, nfl, nhl, wbb, wnba); the leagues' own CDNs by league player id (mlb, nba, nhl, wnba); NFL gsis ids through nflverse's players table. URLs only: no image is bundled.
- nflverse
- The gsis map, the NFL colours and the
nflversealiases derive from nflverse-data, licensed CC BY 4.0 (see NOTICE). - Surface dimensions
- Ported from sportyR (Ross Drucker) and sportypy, distributed under MIT by agreement of the SportsDataverse maintainers.
Any identifier
An abbreviation, an ESPN id, a full name or a relocated franchise's old code: resolve() turns it into one stable team id, season-aware, and never guesses.
Logos, wordmarks, headshots
Marks for every era from the SportsDataverse logo archive, and player headshots by ESPN or league id.
Team colours
teamColors(), palette() and matchup colours that keep two teams apart, with WCAG contrast helpers.
Playing surfaces
Courts, rinks, fields and pitches from sporty, in SVG, canvas, Observable Plot or D3.
Tables
sdvtables: a plain-data spec with logo, colour and bar cells, themes, and HTML, React or PNG output.
Your chart library
Observable Plot, D3 and React, plus adapters for Plotly, Vega-Lite, ECharts and Chart.js. Node and SSR too.