Early Access →

data feature

Normalized Odds Schema

Every sportsbook structures odds differently — different field names, different market terminology, different ID systems. BetFlux normalizes all of it into a single consistent schema so you never write a custom parser again.

The raw data problem

The same BOS @ MIA spread looks completely different across books. Same market, three incompatible structures:

FANDUEL

Spread

BOS -3.5

-110 / -110

Total

o/u 224.5

-110 / -110

Moneyline

-165 / +140

DRAFTKINGS

Point Spread

Boston -3.5

-112 / -108

Game Total

o/u 224.5

-110 / -110

Money Line

-170 / +145

BETMGM

Spread

BOS Celtics -3.5

-115 / -105

Total Points

Over/Under 224.5

-108 / -112

To Win

-160 / +135

After normalization, all three become the same structure. One query returns all books. Zero parsing logic in your model code.

Normalized output

normalized.json
[
{
operator: "FANDUEL",
marketType: "SPREAD",
period: "FULL_GAME",
odds: -110,
spread: -3.5
},
{
operator: "DRAFTKINGS",
marketType: "SPREAD",
period: "FULL_GAME",
odds: -112,
spread: -3.5
},
{
operator: "BETMGM",
marketType: "SPREAD",
period: "FULL_GAME",
odds: -115,
spread: -3.5
}
]

Schema reference

fieldtypedescriptionexample
operatorSportsbookOperatorCanonical book identifier"FANDUEL"
marketTypeMarketTypeSPREAD | TOTAL | MONEYLINE | OTHER"SPREAD"
periodBetPeriodFULL_GAME | FIRST_HALF | FIRST_QUARTER ..."FULL_GAME"
sideBetSideHOME | AWAY | OVER | UNDER"AWAY"
oddsnumberAmerican odds at latest timestamp-110
spreadnumber | nullPoint spread value-3.5
totalnumber | nullTotal line value224.5
impliedProbabilitynumberRaw implied prob (includes vig)0.5238

early access

Query all books through one API

Normalized odds across FanDuel, DraftKings, BetMGM, and Caesars.

Join Waitlist →

Cookies

A few cookies keep you signed in, and the rest are analytics and marketing that show us what's working. You can accept, reject, or customize, and you can change your mind anytime from the footer.