Data

Data Sources

Every number in Sportslyx traces back to a public feed. This page lists the feeds, what each one provides, how often they refresh, where they fall short, and what the product does when data is missing.

Primary feed

Schedules, Scores and Box Scores

The ESPN public scoreboard is the keyless primary source for all seven sports. It is the backbone because it needs no API key, does not meter and covers every sport with one shape of data.

For NFL, NBA, MLB, NHL, soccer, UFC and golf the scoreboard feed supplies the schedule, start times, venue, competition, live status and score, final score and the base market lines attached to each event. Box scores — the per-player statistics that settle MLB player props — come from the same family of endpoints. Because one provider covers every sport, an outage or format change shows up everywhere at once, and Sportslyx treats an empty slate across all sports as an infrastructure problem to be alerted on, not as an off-season.

Golf is the exception in shape: a tournament is a single event with a field rather than two sides, and its schedule is date-only. UFC cards are events with a list of bouts. Both are normalised into the same public game format used by the sport hubs and the individual game pages. Golf previews are published for information only — golf does not appear in the graded record on the Pick Tracker.

Feed inventory
SourceWhat it provides
ESPN public scoreboardKeyless primary for all seven sports: schedules, start times, venues, live and final scores, base market lines, box scores.
ESPN core endpointMLB player prop lines — player props are covered for MLB only — graded afterwards from the official box score.
The Odds API, API-Sports, football-dataOptional keyed enrichment: additional lines, competition detail and fixtures where a key is configured. Not required for the product to run.
Free odds feedReference lines for some markets, including individual-event sports such as UFC and golf.
Sportslyx team profilesRefreshed daily from the feeds above and holding identity only: display name, abbreviation and crest for every team the feed carries. Form, head-to-head, lines and injuries are not stored on the profile — they live in the per-game package. There is no player profile.
Per-game packageAssembled per game from all of the above: statistics, form, head-to-head, injuries and availability, probable starters or goaltenders, and a data-quality tier.

Markets

Market Lines and Odds

Lines are the single most important input, because the win probability shown on every game is derived from them.

Base lines — moneyline, spread or run line or puck line, and total — arrive with the scoreboard feed for each event. Where an optional enrichment provider is configured it adds further markets and competition detail; where it is not, the product runs on the scoreboard lines alone. A free odds feed supplies reference lines for some markets, including fight and outright markets in individual-event sports. MLB player prop lines come from the ESPN core endpoint and are settled from the official box score; player props are covered for MLB only.

The moneyline pair is de-vigged into a fair two-way probability, which is the percentage shown on the game. Soccer is priced on the three-way 1X2 line, and a draw is graded as a push — a convention stated openly on every soccer page because it inflates the published ROI relative to a true draw-no-bet price. Lines shown on public pages are reference lines for analysis, not live prices; they can lag a sportsbook, and they are refreshed with the feed on each board refresh. The full pricing logic is on the methodology page.

Entities

Team Profiles

A profile is what turns a feed row into a team you recognise: name, abbreviation and crest, refreshed daily. Everything that changes from game to game lives in the per-game package, not on the profile.

A daily job walks the schedule feed and updates the profile of every team it sees — display name, abbreviation and crest, nothing more. Crests are stored as absolute addresses from the feed and served through a small proxy so a page never depends on a third-party image host being reachable at render time. Recent results, head-to-head history, market lines and injuries are not stored on the profile: they are assembled per game into the package the breakdowns are written from, and there is no player profile at all.

The statistics themselves are public and sport-specific. In basketball that is efficiency, pace and rest; in baseball, probable starting pitchers, run scoring and pitching; in hockey, goaltending, special teams and shot metrics; in soccer, goals and shots per match — the proxy for chance quality on this data tier — and form; in MMA, records, finish rates and striking and grappling profiles; in golf, strokes gained, recent finishes, made-cut rate and field strength. Browse them on the statistics hub or on each sport’s team pages.

Per-game context

Injuries, Availability and Starters

Availability is part of the per-game package, not a separate feed — which is why it can only be as fresh as the package itself.

When a game is packaged, the injury and availability report, rest situation and — where the sport has them — probable starting pitchers or confirmed goaltenders are hydrated alongside the statistics. The language model reads them as structured inputs, and they are among the main reasons a line moves: a late scratch in the NBA, a goalie change in the NHL or a pitching change in MLB will typically move the market. The percentage on the card follows that move; the written breakdown is generated once and is not rewritten, so news that lands after generation is not in the text. The table below lists what is hydrated for each sport; it is the same list the breakdowns are written from.

Inputs hydrated per sport
SportData points in the per-game package
NFLinjury report, team form and rest, market lines and movement, head-to-head history, venue.
NBAavailability and injury report, pace and efficiency, rest and back-to-backs, market lines and movement, head-to-head history.
MLBprobable starting pitchers, recent form, team run scoring and pitching statistics, market lines and movement, head-to-head history.
NHLstarting goaltender, rest and back-to-backs, special teams, shot metrics, market lines and movement.
Soccerleague table and form, goals and shot data, rest and fixture congestion, market odds and movement, head-to-head history.
UFCfighter records and finish rates, striking and grappling profiles, reach and stance, layoff and activity, market odds and movement.
Golfcurrent form and recent finishes, made-cut rate, strokes-gained profile, field strength, outright market and movement.

Timing

Refresh Cadence

Feeds are polled on a schedule; breakdowns are generated ahead of the slate once and cached, while the percentage on each card follows the line.

Schedules, lines and scores are refreshed several times a day, with the cadence tied to how quickly each kind of data goes stale: scores and status move fastest on game day, team profiles — name, abbreviation and crest — change slowly and are refreshed once a day. AI breakdowns are pre-generated for the upcoming slate — today and the next few days — by scheduled jobs, so a game usually has its read ready before anyone opens it. A validated breakdown is written once and cached: the market-derived percentage on the card follows the line with each board refresh, but the text is not rewritten when the line moves, so a late scratch may not be reflected in the read. Settlement jobs run after games finish to grade every read from the final score or box score, and cached analyses that carry an expiry are purged automatically when they expire.

What refreshes when
DataCadence
Schedules, status and scoresSeveral times a day; most frequently on game day as events go live and finish.
Market linesWith the schedule feed on each board refresh. Public pages show the last fetched line, not a live price.
Team profilesRefreshed daily from the schedule feed — identity only: display name, abbreviation and crest.
AI breakdownsPre-generated for the upcoming slate by scheduled jobs, then cached and served to every reader. The text is not rewritten when the line moves; a read that fails validation is held briefly and regenerated.
SettlementAfter the final result, from the official score or box score; the calendar-month record updates with each settled read.
Cache retentionExpired analyses and day packages are purged automatically. A validated breakdown is kept for the life of the game; one that failed validation expires within the hour so the next generation can replace it.

Honest limits

Known Gaps and Delays

Public feeds are not perfect, and the product is built on the assumption that they will sometimes fail. These are the gaps we know about.

  • Feed latency. Injury news, goaltender confirmations and late scratches can reach the feed after the breakdown was written, and the text is not rewritten when they do. The line and the availability panel can therefore be ahead of the written read.
  • Line lag. Reference lines on public pages can trail a sportsbook. They are for analysis, not for pricing a wager.
  • Uneven soccer coverage. Shot data is available for some competitions and not others, and expected-goals feeds are not ingested at all — chance quality is proxied from goals and shots per match. A match without shot data gets a thinner package and a lower quality tier.
  • Individual-event sports. UFC fighter records and golf strokes-gained histories are sparse for debutants and for events outside the main tours. A first-time entrant is a small sample by definition.
  • Shared league names. Some leagues share team abbreviations across competitions; profiles are namespaced by league to stop one competition’s crest overwriting another’s, but a mismatch can still appear when the feed changes shape.
  • Outages. When the primary feed is unreachable, the slate is empty for every sport at once. The product alerts on that condition rather than reporting an off-season, and public pages keep rendering with an explanation instead of an error.

Degradation

How We Handle Missing Data

The rule is simple: degrade, disclose, never invent. Quality tiers make it mechanical.

Every per-game package is scored on how much of the expected data arrived and assigned a tier — rich, partial or weak. The tier is not just a badge: it is passed to the language model as part of its brief, so a breakdown written from a weak package is instructed to hedge and is written more cautiously. The weights behind the tier reflect what matters for the sport; a baseball package without both probable starters, for example, cannot be rich no matter how much else it contains.

On the page, sections degrade independently. A game without shot data shows the statistics it does have and says which are missing; a slate with no games shows the upcoming schedule and a note rather than an empty heading; a breakdown that fails validation is held briefly and regenerated rather than published. Public pages render with a 200 status and explanatory text even when the primary feed is down, because for a reader and for a crawler an honest empty state is better than an error.

The same discipline applies to grading. A player who did not appear in the box score makes an MLB prop void, not a loss; a game without a final score is not settled; a cancelled fight leaves the record; golf previews are never graded at all, because golf sits outside the record. Where the data is not there, the number is not there either.

Frequently Asked Questions

Is any of the data proprietary?

No. Every input comes from a public feed: the ESPN scoreboard and core endpoints, optional enrichment providers where configured, and a free odds feed for some markets. Team profiles and the per-game package are built by Sportslyx from those feeds, not from private sources.

How current are the lines shown on a game?

Lines refresh with the schedule feed several times a day, and the market-derived percentage on a game follows each refresh. They are reference lines for analysis, not live prices, and they can lag a sportsbook by some time.

What happens when a feed is down?

The page still renders and says what is missing. The per-game package is marked partial or weak, the breakdown is told to hedge, and empty sections show an explanation rather than invented values. Nothing is fabricated to fill a gap.

Do you cover leagues outside the ones listed?

Coverage follows the public schedule feed: NFL, NBA, MLB, NHL, UFC, PGA Tour golf and the soccer competitions the feed carries — major European leagues, MLS and the main cups and internationals. Each match page states its competition.

See the Data Behind Every Breakdown

The 7-day Pro trial opens every game package — statistics, form, head-to-head, availability and the data-quality tier — alongside its AI breakdown and market-derived probability, so you can see exactly what each read was written from.

7-day trial · $0 today · card required · cancel anytime before the trial ends

Public feeds only — no proprietary data.Refreshed several times a day.

Sportslyx produces statistical estimates and analytical breakdowns for information and entertainment. Nothing on this page is betting advice, and no outcome is certain. 18+ only. Please play responsibly — see our Responsible Play page.