Skip to main content

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 }:

NamespaceProviderNotes
sdv.oddsThe Odds APIneeds your API key (api_key)
sdv.cbsCBS Sports NAPIpublic, anonymous; league/team ids are slugs
sdv.foxFox Sports Bifrostpublic apikey defaults out of the box
sdv.yahooYahoo shangrila / editorialpass a league slug
sdv.sports247247Sportsrecruits, 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);

Open in playground ▶

Live and inline — paste a real key into the api_key field first (calls without one return 401):

Loading live cell…
note

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):

Loading live cell…

Open in playground ▶

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, …):

Loading live cell…

Open in playground ▶

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:

Loading live cell…

Open in playground ▶

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).

tip

Per-provider method tables: odds, cbs, fox, yahoo, 247Sports.