MLB, NPB and KBO baseball: live scores, betting odds, runs, hits and errors inning by inning, MLB box scores with 27 batting and 22 pitching columns, probable and decision pitchers, fixtures and head-to-head history. No login, no browser, callable as an API.
Pricing
from $0.35 / 1,000 match with score and competitions
New fields and options; nothing is removed, and the one renamed input field still accepts its old name.
pitchers is in every record, without includePlayerStats: probable starters of games not started yet from the daily list (probable.source: "flashscore", without player IDs) and the winning and losing pitcher once final. With includePlayerStats the MLB API still takes over where it covers the game (probable.source: "mlb-statsapi").
live.inningHalf (top or bottom), and live.period names the half inning (Top 1st).
hits and errors are null on old games that the source keeps without an R/H/E line (all four 0, a real score and no innings).
startTimeKnown next to startTime: false for archive records the source keeps without a start time. Those have startTime null and startDate set to the day of the match, and dateFrom and dateTo compare that day.
TV listings come from the source's channel list by country: channelId, bookmakerId and countryHint on each item, url null for the source's partner links. match-broadcasts is charged only when at least one TV channel is listed.
In-play prices: each bookmaker's first in-play price and whether the price is now above or below it (openingHome, homeDirection and the rest), and how many bookmakers hold each price above or below their first one (homeUpBookmakers and the rest).
In monitor mode the three odds events are billed by their own part of odds, and the free parts (bookmaker streams) no longer make a match changed.
With includeLive or the Live now filter, status, period and clock follow the live feed: a match that ended after the daily list was read comes as finished.
A run close to its timeout stops starting new work, finishes the records on their way and ends on its own, so notOutputMatchIds in RUN_SUMMARY holds only matches that were not charged.
The input field monitorKey is renamed monitorName. The old name is still accepted wherever it was (runs, saved tasks, schedules, Standby queries): the same value keeps the same monitor memory, and when both are set monitorName is used.
Monitor mode after the update: a match the monitor remembers from 1.0 is output once more, and billed for the base event, when its record changed shape: pitchers now in most baseball records; TV listings from the new source (with includeBroadcasts, also match-broadcasts). It happens once per match; matches whose records did not change are not output again.
Changed default:
oddsCountries defaults to ["US"], the New Jersey books, instead of ["GB"]. Set ["GB"] to keep the British bookmakers, or ["US", "GB"] for both. A monitor that ran with the old default sees the new bookmakers as an odds change once.
1.0 — first public version
The record and every view are described in the README (Output fields, Getting a spreadsheet) and in the dataset schema. Changes of the output since the 0.1 test builds:
Flat columns at the start of every record: startDate, startTime and timezone (the run's time zone), homeTeam, awayTeam, homeScore, awayScore; scrapedAt is the moment the record was output.
periodScores instead of setScores; box-score lines carry the batting numbers as snake_case columns (at_bats, hits_stat, home_runs...); the always empty live.currentPoints and live.serving are no longer output.
Odds: impliedHome, impliedDraw, impliedAway instead of the impliedProbability object; best price per outcome with its bookmaker, average opening prices and bookmakersCount; bookmaker rows homePrice, drawPrice, awayPrice instead of home, draw, away; price list rows price instead of odds; movement.homeDirection instead of movement.direction; numeric handicap lines; American prices with oddsFormat.
Statistics rows homeText and awayText instead of home and away, with isHeadline; head-to-head rows homeName and awayName instead of home and away.
Events with minuteNumber, addedTime and shootoutOrder; lineups with confirmed, numeric rating and numberInt; live.clockStale.
Monitor mode: monitorChangedFieldsText, and odds.previous with odds.changePct.
unavailableParts can name odds (also when one of several oddsCountries did not answer) and the box score, with unavailablePartsText next to it; RUN_SUMMARY can have status: "timing-out" and, with onlyWithOdds, scanned.
Head-to-head rows: meetingId, meetingTournament, meetingHomeScore, meetingAwayScore, meetingWinner and meetingStatus instead of matchId, tournament, homeScore, awayScore, winner and status, which the Head-to-head view mixed up with the match itself.
Numbers next to text: live.minuteNumber and live.addedTime, substitutedAtMinuteNumber and cameOnAtMinuteNumber in lineups, numberInt in box-score lines; American prices also on the in-play averages.
From here on a field that is removed, or renamed without its old name still working, or a default that changes, comes with a new major version. To stay on one build, pass its build number (such as 1.0.3, shown in the run's details) as build when you start a run through the API.