MLB Playoff Odds API — Monte Carlo Simulator & Value Bets avatar

MLB Playoff Odds API — Monte Carlo Simulator & Value Bets

Pricing

from $2.10 / 1,000 team projections

Go to Apify Store
MLB Playoff Odds API — Monte Carlo Simulator & Value Bets

MLB Playoff Odds API — Monte Carlo Simulator & Value Bets

MLB playoff odds as data, not a web page. Monte Carlo replays every remaining game on the real schedule for division, wild card, postseason and top-seed probabilities for all 30 baseball teams, plus projected records, value bets vs sportsbook odds and Kelly bet sizing. No API key.

Pricing

from $2.10 / 1,000 team projections

Rating

0.0

(0)

Developer

ELIO LIBERATORE

ELIO LIBERATORE

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

8 days ago

Last modified

Share

MLB Playoff Odds API — Monte Carlo Simulator for Baseball Postseason Probabilities

Get MLB playoff odds as structured data, not as a web page. This Actor replays the rest of the Major League Baseball regular season thousands of times on the real remaining schedule and returns, for all 30 teams, the probability of winning the division, taking a wild card, reaching the postseason, and finishing with the best record in the league — plus projected win totals, market edges and Kelly-style bet sizing.

Playoff odds tables are published all over the web, but almost never as an API you can pull into a spreadsheet, a model or an AI agent. This Actor computes them from scratch and hands you clean JSON, CSV, Excel or an API endpoint.

No API key. No account. No configuration. Standings and the remaining schedule come from the public ESPN feed. Run it with an empty input and it projects the current season.


What you get

  • Playoff probabilities for all 30 MLB teams — division, wild card, overall postseason, and top seed
  • Projected final records — mean wins and losses across every simulated season
  • The strength estimates behind the numbers — actual win %, Pythagorean win %, and the regressed true-talent estimate the simulation actually uses
  • Market edge — supply bookmaker implied probabilities and get the gap between model and market, per team
  • Bet sizing — quarter-Kelly stake suggestions with per-position and total-portfolio caps
  • Three ready-made dataset views — playoff overview, market edge table, and the records / run differential the model was built from

Export to JSON, CSV, Excel or XML, call it from the Apify API, schedule it daily, or plug it into n8n, Make, Zapier or an MCP-enabled AI agent.


Who uses this

Use caseWhat you do with it
Sports betting modelsCompare fair probabilities against sportsbook futures prices and size positions with the built-in Kelly caps
Fantasy baseballKnow which teams are still playing meaningful games in September before your trade deadline
Sports media and blogsA defensible playoff-odds table you generated yourself, refreshed every morning
Data science and backtestingSet a past season and project it from where it stood, then score the model against what happened
DashboardsA daily scheduled run feeding Google Sheets, a database, or a BI tool
AI agentsA tool that returns real computed probabilities instead of hallucinated ones

Quick start

Run it with an empty input:

{}

That projects the current season with 10,000 simulated seasons. A full 30-team run finishes in about three seconds.

To compare against the market, add bookmaker implied probabilities:

{
"iterations": 20000,
"marketProbabilities": [
{ "team": "New York Yankees", "market": "playoff", "impliedProbability": 0.98 },
{ "team": "Houston Astros", "market": "division", "impliedProbability": 0.45 }
]
}

Team names are matched loosely — "yankees" and "New York Yankees" both work. market accepts playoff or division.


Why simulate instead of scraping a playoff odds page

Almost every baseball tool on Apify Store copies numbers out of a website. This one computes something that is not published as data anywhere: a full distribution of season outcomes built from the actual games each team still has to play. Three design choices make the difference.

It simulates the real schedule, not an average one. MLB schedules are unbalanced. A team fighting for a wild card while facing six games against the best team in its division has a harder path than its record suggests. Every remaining fixture is loaded individually, with the correct home and away side, and played out.

It leans on run differential, not just the record. Runs scored and runs allowed predict future wins better than the win-loss column does, because one-run wins and blowout losses carry the same weight in the standings but not in reality. Strength comes from Pythagorean expectation blended with the raw record, and you control the mix.

It admits it does not know how good the teams are. A partial season is a noisy sample. The model regresses every team towards .500 by a configurable amount, then, in each simulated season, redraws each team's true talent from a distribution around that estimate. Without that second step the output is wildly overconfident: a 60 percent favourite comes out looking like a 95 percent certainty.


How it works

  1. Pull the current standings, split by league and division, including runs scored and runs allowed.
  2. Convert each team's record into a strength rating on a log-odds scale: blend Pythagorean win percentage with actual win percentage, regress towards .500 in proportion to how much season is left, then take the log-odds.
  3. Load every team's remaining fixtures and deduplicate them into one list of games.
  4. For each simulated season, redraw each team's rating with Gaussian noise, then play every remaining game. A home team's win probability is the logistic of the rating gap plus a home field term.
  5. At the end of each simulated season, award the three division titles in each league to the best record in each division, then the three wild cards to the best remaining records, and record who got the top seed.
  6. Average across all simulations to get probabilities and projected win totals.

Sanity check. On a mid-August slate the output lands close to the well-known public playoff-odds models for the clear contenders and clear also-rans, and diverges by ten to twenty points on a handful of teams whose run differential disagrees with their record. That divergence is the point: it is where the model thinks the standings are lying.


Value bets and position sizing

Supply marketProbabilities and the Actor does more than print an edge. Every team whose model probability beats the market by at least edgeThreshold is flagged, and the output carries a stake suggestion built on quarter-Kelly with two hard ceilings:

  • maxPerPositionPct caps any single bet as a fraction of bankroll (default 2%).
  • maxTotalExposurePct caps the sum of all open positions (default 6%).

The ceilings decide how many bets actually fit: 6% over 2% is three. Qualifying bets beyond that limit are still marked as value but come back with zero contracts and a portfolio-limit flag, so nothing is silently dropped. The uncapped Kelly fraction is reported alongside the capped one, so you can see what the model wanted before the clip. bankroll only scales the dollar figures — the fraction-of-bankroll column is meaningful whatever capital you run.


Input

Everything is optional.

FieldTypeDefaultWhat it does
iterationsinteger10000Seasons to simulate. 10,000 gives probabilities stable to about half a point.
seasonintegercurrentSet a past year to project that season from where it stood. Useful for backtesting.
archiveToNamedDatasetstringemptyName of a dataset in your account to also append this run's rows to. Named datasets are kept indefinitely, so scheduled runs accumulate a permanent history. See “Build your own history” below.
regressionGamesinteger70How hard to pull a partial season towards .500. Equivalent to adding this many .500 games.
pythagoreanWeightnumber0.6Share of the strength estimate that comes from run differential rather than the record.
homeFieldAdvantagenumber0.16Home edge in log-odds. 0.16 is roughly a 54 percent home win rate between equals.
strengthUncertaintynumber0.1Spread of the per-season talent redraw. Set to 0 to see how overconfident the model becomes.
edgeThresholdnumber0.05How far the model must beat the market before a team is flagged as value.
bankrollinteger1000Total betting capital in dollars. Scales the stake columns only.
maxPerPositionPctnumber0.02Hard ceiling on any single position, as a fraction of bankroll.
maxTotalExposurePctnumber0.06Ceiling on the sum of all open positions, as a fraction of bankroll.
marketProbabilitiesarray[]Bookmaker implied probabilities to compare against.

Output

One row per team, sorted by playoff probability.

FieldMeaning
league, division, team, abbreviationWhere the team sits
gamesPlayed, wins, losses, gamesRemainingCurrent record
runsScored, runsAllowed, runDifferentialScoring profile
actualWinPctWins divided by games played
pythagoreanWinPctWin percentage implied by run differential
trueTalentWinPctThe blended, regressed estimate the simulation actually uses
projectedWins, projectedLossesMean final record across all simulations
fairDivisionProbabilityChance of winning the division
fairWildCardProbabilityChance of taking one of the three wild cards
fairPlayoffProbabilityChance of reaching the postseason by either route
fairTopSeedProbabilityChance of the best record among division winners in its league
marketPlayoffProbability, marketDivisionProbabilityWhat you supplied, if anything
playoffEdge, divisionEdgeModel probability minus market probability
hasValueTrue when the larger edge clears your threshold
simulationsIterations actually run

Plus the sizing columns described above when you supply market probabilities.


Run it every morning

Playoff races move every night. Schedule the Actor to run each morning and you get a fresh table before the day's games. A full 30-team run with 10,000 iterations finishes in about three seconds, so a daily schedule costs very little.

You can also call it directly from the Apify API:

curl -X POST "https://api.apify.com/v2/acts/commodus67~mlb-playoff-odds-monte-carlo/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "iterations": 10000 }'

Build your own history

A run's own dataset is temporary — Apify deletes it 31 days after the run. A named dataset is kept indefinitely.

Set archiveToNamedDataset to a name such as mlb-playoff-odds-history and every run appends its rows to that dataset as well as writing its normal one. Point a daily schedule at it and you accumulate your own record of how each team's playoff probability moved across the season — a time series you cannot reconstruct afterwards, because the standings and remaining schedule that produced each snapshot no longer exist.

Every row already carries retrievedAt, season and simulations, so stacked snapshots are never ambiguous: you always know when a projection was taken, for which season, and how many simulated seasons it came from.

The named dataset is created the first time it is used and lives in your account under Storage → Datasets. Leave the field empty and nothing changes: you get the normal run dataset only.


Pricing

Pay per result. One result is one team, so a full-league run produces 30 results. No subscription, no minimum, no charge for what you do not run.


FAQ

Is this an MLB playoff odds API? Yes. Every run writes a dataset you can read as JSON or CSV over HTTP, and the Actor can be started from the Apify API or an MCP client. There is no key to request and no rate limit to negotiate.

Where does the data come from? Standings and remaining fixtures come from the public ESPN feed. No account or API key of your own is required.

How accurate is it? It agrees closely with well-known public playoff-odds models for clear contenders and clear also-rans, and diverges on teams whose run differential disagrees with their record. It is a probability model, not a prediction: a 30 percent chance happens three times in ten.

Can I project a past season? Yes. Set season to a past year and the model projects that season forward from where it stood, which is how you backtest it.

Does it simulate the postseason itself? No. It stops at who qualifies and who takes the top seed. It says nothing about who wins the World Series.

Can I use it to find value bets? Yes. Supply bookmaker implied probabilities in marketProbabilities and the output shows the edge per team, flags anything clearing your threshold, and suggests a stake under quarter-Kelly with per-position and portfolio caps.

How many simulations should I run? 10,000 gives probabilities stable to about half a point and finishes in a few seconds. Raise it if you want smoother tails.

Does it know about injuries or trades? No. See the caveats below — this is the model's biggest blind spot.

How much does a run cost? One result equals one team, so a full-league run bills 30 results. Check the Pricing tab for the current per-result price and volume tiers.

Is there a version for soccer? Yes — the Football (Soccer) Monte Carlo Season Predictor runs the same approach across 17 leagues including the Premier League, LaLiga, Serie A, Bundesliga, Ligue 1, Liga MX, Brasileirão and MLS.

Is there a version for other sports? Yes — the NFL Playoff Odds API — Monte Carlo Simulator runs the same engine on football: division, wild card, playoff and No. 1 seed probabilities for all 32 NFL teams.


Limitations and honest caveats

It knows records, not rosters. The model has no idea who is on the injured list, who was traded at the deadline, or who is starting tomorrow. A team that just lost its best two starting pitchers still looks as strong as its run differential says it is. On a fast-moving roster this is the model's biggest blind spot.

Tiebreakers are simplified. Real MLB tiebreakers use head-to-head records and other criteria. Ties in a simulated season are broken at random, which is fine for probabilities across thousands of runs but means no single simulated season should be read as a forecast of the actual tiebreak.

Postseason series are not simulated. The output stops at who qualifies and who gets the top seed.

It depends on ESPN. If ESPN changes or delays its feed, results change or the run fails. Standings are as fresh as ESPN makes them, which is usually within hours of the last game.

Probabilities are not predictions. A 30 percent chance happens three times in ten. The value of this tool is comparing its number with a price, not treating it as a forecast.

On betting. If you use this to inform wagers, treat the output as one noisy opinion among many, and never stake money you cannot afford to lose. No model, including this one, turns a losing bet into a winning one.


Not affiliated with, endorsed by, or sponsored by Major League Baseball or ESPN. For informational and research use.