Soccer match predictions API: 1X2, Over/Under, BTTS and correct score

A per-match model for upcoming soccer fixtures. It fits a Dixon-Coles bivariate Poisson model to each league's real results and returns one scoreline probability grid per match, from which every market is read.

What it returns

How the model works

Every team gets an attack rating and a defence rating, and the league gets a home advantage. They are fitted on recent results, with exponential time decay so last month counts for more than two seasons ago.

A plain Poisson model treats home and away goals as independent. Real matches are not like that at low scores: 0-0, 1-0, 0-1 and 1-1 happen at different rates than independence predicts. Dixon and Coles (1997) added a correlation term for exactly those four scorelines, fitted from the league's own results.

The model builds the full scoreline grid for each fixture and normalises it, so 1X2, Over/Under, BTTS and correct score all come from the same numbers and always add up.

Why the low-score correction matters

An illustration with the same expected goals on both models (1.35 for the home side, 1.15 for the away side): an independent Poisson grid gives a draw about 26.8% of the time. With a Dixon-Coles correlation of -0.13 the draw rises to about 30.2%. The parameter here is illustrative; in the Actor it is fitted per league.

Leagues with ready-made examples

9 ready-made examples

Each one is a saved configuration with its input filled in. Open it on Apify and run it in one click.

Common questions

Why use Dixon-Coles instead of a plain Poisson model?

Because a plain Poisson model misprices low-scoring results, and draws are mostly low-scoring results. The correction changes the draw probability by several percentage points, which is the same size as the margins people look for when they compare with a market.

Do the markets add up?

Yes. Home, draw and away sum to one, Over and Under sum to one, and both are read from the same grid as the correct-score probabilities, so they cannot contradict each other.

How much history does it use?

The ready-made examples fit on three seasons of results with time decay, and predict fixtures in the next 14 days. Both settings are inputs you can change.

What happens with a newly promoted or newly added team?

There is less history to fit, so the output carries a data-quality note for fixtures involving that team. Treat those probabilities with more caution.

Further reading

Correct score, BTTS and Over/Under probabilities with Dixon-Coles — why a plain Poisson model underprices draws, and what a per-match prediction looks like for MLS and Liga MX.

Other models