Provider recipes
Beyond ESPN, sportsdataverse wraps five standalone provider families. Each is
its own top-level namespace (no {sport}/{league} nesting) and every method
honors { parsed: true }:
| Namespace | Provider | Notes |
|---|---|---|
sdv.odds | The Odds API | needs your API key (api_key) |
sdv.cbs | CBS Sports NAPI | public, anonymous; league/team ids are slugs |
sdv.fox | Fox Sports Bifrost | public apikey defaults out of the box |
sdv.yahoo | Yahoo shangrila / editorial | pass a league slug |
sdv.sports247 | 247Sports | recruits, team rankings, transfers, page models; needs impit |
Odds — The Odds API
The Odds API requires a key (free tier at the-odds-api.com). Supply it via
api_key. The sports endpoint lists every league it covers:
import sdv from 'sportsdataverse';
const sports = await sdv.odds.oddsApiSports({
api_key: process.env.ODDS_API_KEY,
parsed: true,
});
console.table(sports);
Live and inline — paste a real key into the api_key field first (calls without
one return 401):
In the playground and the cell above, replace the empty api_key field with a
real key — calls without one return a 401.
CBS — league metadata
CBS league ids are slugs like football-nfl, basketball-nba, baseball-mlb.
import sdv from 'sportsdataverse';
const league = await sdv.cbs.cbsLeague({ league_id: 'football-nfl', parsed: true });
console.table(league);
Live and inline — the league_id is a CBS slug (football-nfl,
basketball-nba, baseball-mlb):
Fox — Bifrost scoreboard
The public apikey + api-version pair default automatically — just pass a
sport (cfb, nfl, mlb, nba, …).
import sdv from 'sportsdataverse';
const board = await sdv.fox.foxApiScoreboard({ sport: 'cfb', parsed: true });
console.table(board);
Live and inline — the public apikey defaults out of the box; just pick a
sport (cfb, nfl, mlb, nba, …):
Yahoo — league standings
Yahoo's shangrila stats-graph. Pass a league slug (ncaaf, nfl, nba, …).
Some Yahoo hosts want an Origin/Referer — pass them via headers if a call
is rejected.
import sdv from 'sportsdataverse';
const standings = await sdv.yahoo.yahooLeagueStandings({
league: 'ncaaf',
parsed: true,
});
console.table(standings);
Live and inline — lang/region/tz default automatically; pass a league
slug. If a Yahoo host rejects the call, add an Origin/Referer via headers:
247Sports — recruiting rankings
sdv.sports247 covers the 247Sports Recruit Database (ipa.247sports.com) and
the 247sports.com *.json page models. A free guest token is minted for you.
Both hosts block plain HTTP clients, so install the optional impit dependency
(npm install impit). The family is not on the playground for the same reason.
Scope with year and sport_key (1 = football, 2 = basketball).
import sdv from 'sportsdataverse';
const teams = await sdv.sports247.sports247InstitutionRankings({
year: 2026,
sport_key: 1,
parsed: true,
});
const recruits = await sdv.sports247.sports247Recruits({ year: 2026, parsed: true });
console.table(teams.slice(0, 10));
The older sdv.recruiting methods (api.247sports.com) are deprecated because
that host answers HTTP 500.
Run it yourself
The current CFB scoreboard from Fox's public Bifrost API, as a ready-to-run Node sandbox (it installs the published npm package; Fox needs no key):
Opens a Node sandbox in a new tab with this script as index.mjs; runs live (no API key for ESPN).