Coverage · 7 September 2026 · updated 14 October 2026

Every MLB Betting Market in the SockOdds API

Winner, run line, totals, the first five innings and batter and pitcher markets for MLB, with the keys to request each one.

MLB is in SockOdds API v1 under the league key mlb (sport key baseball). 19 market types apply to it: the game lines, team totals, the first five innings, and player markets for batters and pitchers.

As of 30 October 2026, 19 bookmakers, exchanges and prediction markets were delivering MLB prices: Sportsbet, Unibet, Dabble, DraftKings, FanDuel, BetMGM, Kalshi, Polymarket, Bally Bet, BearBet, BetFocus, BetRivers, CashCage, Hard Rock Bet, LightningBet, Mintbet, ProphetX, TABtouch and theScore Bet. That mixes Australian bookmakers with US sportsbooks and prediction markets, so one request can put a Sportsbet price next to a US book's and a prediction market's.

Every MLB market type

The table comes from the API's own catalogue. A bookmaker quotes the markets it offers for each game, so a type being listed means you can ask for it, not that every bookmaker prices it every game.

Game markets

MarketKeySidesLinePeriods
Winnerwinnerhome, away, competitor_1, competitor_2Nofull, innings_1_to_5
Result (with the draw)resulthome, draw, awayNofull, inning_1, innings_1_to_5
Handicaphandicaphome, away, competitor_1, competitor_2Yesfull, innings_1_to_5
Total runstotal_runsover, underYesfull, innings_1_to_5, inning_1

Team markets

MarketKeySidesLinePeriods
Team runs over/underteam_runs_over_underover, underYesfull, innings_1_to_5, inning_1

Player markets

MarketKeySidesLinePeriods
Player hits over/underplayer_hits_over_underover, underYesfull
To hit a home runplayer_home_runs_anytimeyes, noNofull
Player home runs over/underplayer_home_runs_over_underover, underYesfull
Player hits + runs + runs batted in over/underplayer_hits_runs_runs_batted_in_over_underover, underYesfull
Player total bases over/underplayer_total_bases_over_underover, underYesfull
Player runs batted in over/underplayer_runs_batted_in_over_underover, underYesfull
Player runs over/underplayer_runs_over_underover, underYesfull
Player strikeouts (as a batter) over/underplayer_strikeouts_over_underover, underYesfull
Pitcher strikeouts thrown over/underplayer_strikeouts_thrown_over_underover, underYesfull
Pitcher hits allowed over/underplayer_hits_allowed_over_underover, underYesfull
Pitcher earned runs allowed over/underplayer_earned_runs_allowed_over_underover, underYesfull
Pitcher outs recorded over/underplayer_outs_recorded_over_underover, underYesfull
Player stolen bases over/underplayer_stolen_bases_over_underover, underYesfull
Player batter walks over/underplayer_walks_over_underover, underYesfull

Reading baseball markets

  • winner is the moneyline: sides home and away.
  • handicap is the run line. Each outcome carries its own line, so the favourite might be home at -1.5 and the underdog away at 1.5.
  • total_runs is the game total; team_runs_over_under is one team's total, with the team as the market's subject.
  • Periods are full and innings_1_to_5. The first five innings markets are the same market types on the innings_1_to_5 period, so winner on innings_1_to_5 is the first five moneyline. Check period before you compare two prices.

Prices are decimal, exactly as each bookmaker showed them, US sportsbooks included. The API never converts or rounds them, and it has no American odds field. If your users read American odds, convert at display time (odds format conversion has the formulas).

Batter and pitcher markets

Player markets are over/under markets on one player, who is the market's subject with a pl_ id that stays the same across bookmakers and games:

  • batters: hits, total bases, runs batted in, runs, strikeouts, and the anytime home run (player_home_runs_anytime, side yes);
  • pitchers: strikeouts thrown, hits allowed, earned runs allowed and outs recorded.

An "N or more" bet is the over at N minus 0.5: two or more hits is player_hits_over_under over 1.5. Ask for the ones you want with markets=, up to 20 keys at once.

Moneyline across every book

This program reads the next MLB game's moneyline at every bookmaker your plan includes, regroups each outcome's prices by bookmaker key, and prints each bookmaker's prices with the moment the first was seen:

const response = await fetch(`https://api.sockodds.com/v1/odds?league=mlb&markets=winner&limit=1&starts_after=${new Date().toISOString().slice(0, 19)}Z`, {
  headers: { Authorization: `Bearer ${process.env.SOCKODDS_API_KEY}` },
});
const body = await response.json();
for (const event of body.data) {
  console.log(`${event.name}, ${event.scheduled_start}`);
  // One line per bookmaker: collect each bookmaker's price on every side of the full game market.
  const rows = new Map();
  for (const market of event.markets) {
    if (market.period !== "full") continue;
    for (const o of market.outcomes) {
      for (const price of o.prices) {
        const row = rows.get(price.bookmaker) ?? { prices: [], seen: price.observed_at };
        row.prices.push(`${o.name} ${price.decimal_odds.toFixed(2)}`);
        rows.set(price.bookmaker, row);
      }
    }
  }
  for (const [bookmaker, row] of rows) {
    console.log(`  ${bookmaker}: ${row.prices.join(", ")} (seen ${row.seen})`);
  }
}
import json, os, urllib.request
from datetime import datetime, timezone

request = urllib.request.Request(
    f"https://api.sockodds.com/v1/odds?league=mlb&markets=winner&limit=1&starts_after={datetime.now(timezone.utc):%Y-%m-%dT%H:%M:%SZ}",
    headers={"Authorization": "Bearer " + os.environ["SOCKODDS_API_KEY"]},
)
with urllib.request.urlopen(request) as response:
    body = json.load(response)
for event in body["data"]:
    print(f"{event['name']}, {event['scheduled_start']}")
    # One line per bookmaker: collect each bookmaker's price on every side of the full game market.
    rows = {}
    for market in event["markets"]:
        if market["period"] != "full":
            continue
        for o in market["outcomes"]:
            for price in o["prices"]:
                row = rows.setdefault(price["bookmaker"], {"prices": [], "seen": price["observed_at"]})
                row["prices"].append(f"{o['name']} {price['decimal_odds']:.2f}")
    for bookmaker, row in rows.items():
        print(f"  {bookmaker}: {', '.join(row['prices'])} (seen {row['seen']})")

Output from a local copy of the API with invented test prices

Arizona Diamondbacks v Athletics, 2026-10-16T15:00:00.000Z
  bally_bet: Arizona Diamondbacks 1.81, Athletics 2.23 (seen 2026-10-15T07:58:00.000Z)
  thescore_bet: Arizona Diamondbacks 1.81, Athletics 2.23 (seen 2026-10-15T07:58:00.000Z)
  fanduel: Arizona Diamondbacks 1.77, Athletics 2.18 (seen 2026-10-15T07:58:00.000Z)
  unibet: Arizona Diamondbacks 1.77, Athletics 2.18 (seen 2026-10-15T07:58:00.000Z)
  betrivers: Arizona Diamondbacks 1.74, Athletics 2.14 (seen 2026-10-15T07:58:00.000Z)
  draftkings: Arizona Diamondbacks 1.72, Athletics 2.12 (seen 2026-10-15T07:58:00.000Z)
  sportsbet: Arizona Diamondbacks 1.72, Athletics 2.12 (seen 2026-10-15T07:58:00.000Z)
  dabble: Arizona Diamondbacks 1.69, Athletics 2.08 (seen 2026-10-15T07:58:00.000Z)
  hard_rock_bet: Arizona Diamondbacks 1.69, Athletics 2.08 (seen 2026-10-15T07:58:00.000Z)
  betmgm: Arizona Diamondbacks 1.65, Athletics 2.04 (seen 2026-10-15T07:58:00.000Z)

The output comes from a local copy of the API with invented prices.

Which plan

MLB is on every plan, the free Developer plan included. Each plan reads a set of bookmakers, and a response holds those of them that are pricing the game: the Developer plan's are Sportsbet, TAB and Ladbrokes, Rookie adds more, and Pro includes every bookmaker we deliver, with recorded price history and the odds stream. See pricing and the MLB page.

Next

SockOdds provides data only. It does not offer tips or predictions on any game.

Search across the SockOdds documentation and catalogue.