betaider.com
Sign in

Union Berlin v Borussia Dortmund — Prediction, Odds & Stats

Saturday 24 January 2026 · GER-Bundesliga · 2526

Bundesliga xG Prediction generated

0–3
0.99 – 2.27 xG
Shots
10 – 15
On target
3 – 5
Shots in box
8 – 11
xG per shot
0.10 – 0.15
Set-piece xG
0.87 – 1.08
Goals − xG
-0.99 – +0.71

AI prediction

ai-blend-oos No snapshot has been taken for this fixture yet; this is the stored price.
Union Berlin win
24.8%
Draw
29.0%
Borussia Dortmund win
46.2%

Probabilities, not certainties. How they are made: the methodology.

Was this pick made in advance?
A model whose name ends -oos is out of sample: it was fitted only on matches played before this one, so its pick is a genuine forecast rather than hindsight. Anything without that suffix was fitted on all available data.

What the chances say

Union Berlin have scored 15 from 14.2 expected and conceded 21 from 20.5 — both ends in line with the chances, so the recent record is a fair reflection.

DWWDLLLWDD last 10 scored 15 from 14.2 xG conceded 21 from 20.5 xG

Borussia Dortmund are finishing below their chances — 3.7 goals fewer than expected across 10 matches, despite creating the openings. They are also conceding sharply fewer than expected — 4.1 goals saved beyond what the chances suggest.

LWWWWWWDDW last 10 scored 17 from 20.7 xG conceded 7 from 11.1 xG

Finishing swings far more than chance creation, so a gap this size usually narrows. Over ten matches it is suggestive, not settled — a genuinely elite finisher beats expected goals for years.

What the model said

ModelHome / Draw / Away Expected goalsLikeliest score O2.5BTTSOutcome
ai-blend-oos 1.04–1.50 0% 0% 0% Away ✓
dc-xg-oos 1.11–1.74 1-1 11% 54% 55% Away ✓

A model whose name ends -oos was produced by the walk-forward backtest: it was fitted only on matches played before this one, so the pick is genuinely out of sample.

Reading the xG timeline
Each step up is a shot; the height of the step is how good the chance was. Dots mark goals. A side whose line climbs steadily created chances all match. A side that scored while its line stayed flat took a rare chance — that is finishing luck, and it rarely repeats.

Expected goals by minute

0.00.61.31.92.60'15'30'45'60'75'90'Emre Can 9' — goalNico Schlotterbeck 52' — goalMaximilian Beier 83' — goal
Union Berlin 0.99 xGBorussia Dortmund 2.29 xG
Reading the shot map
Each circle is a shot, placed where it was taken. Bigger means a better chance; filled circles are goals. Clusters near the goal mean a side worked good openings; lots of small circles far out means shooting from poor positions and hoping. Hover any circle for the player, minute and chance quality.

Shot map

Andrej Ilic 5' — Saved Shot (0.38 xG, Set Piece)Emre Can 9' — Goal (0.76 xG, )Fabio Silva 11' — Saved Shot (0.05 xG, Open Play)Julian Ryerson 13' — Blocked Shot (0.05 xG, Open Play)Andrej Ilic 16' — Missed Shot (0.13 xG, From Corner)Fabio Silva 17' — Missed Shot (0.10 xG, Open Play)Jobe Bellingham 17' — Blocked Shot (0.13 xG, Open Play)Felix Nmecha 20' — Missed Shot (0.09 xG, Direct Freekick)Diogo Leite 27' — Saved Shot (0.08 xG, From Corner)Josip Juranovic 30' — Missed Shot (0.05 xG, Direct Freekick)Danilho Doekhi 37' — Missed Shot (0.02 xG, Open Play)Woo-Yeong Jeong 40' — Missed Shot (0.04 xG, Set Piece)Fabio Silva 45' — Blocked Shot (0.02 xG, Set Piece)Fabio Silva 45' — Missed Shot (0.04 xG, Set Piece)Maximilian Beier 48' — Missed Shot (0.05 xG, Open Play)Jobe Bellingham 52' — Saved Shot (0.04 xG, Open Play)Nico Schlotterbeck 52' — Goal (0.18 xG, From Corner)Diogo Leite 56' — Missed Shot (0.13 xG, From Corner)Diogo Leite 59' — Blocked Shot (0.03 xG, Set Piece)Felix Nmecha 70' — Blocked Shot (0.02 xG, Open Play)Andrej Ilic 73' — Saved Shot (0.03 xG, From Corner)Livan Burcu 80' — Missed Shot (0.09 xG, Open Play)Serhou Guirassy 82' — Missed Shot (0.40 xG, Open Play)Maximilian Beier 83' — Goal (0.23 xG, Open Play)Salih Özcan 93' — Blocked Shot (0.14 xG, Open Play)
Union Berlin attacking right Borussia Dortmund attacking left Marker size is xG; filled markers are goals.

Every shot

MinTeamPlayerxG SituationBody partResultAssisted by
5' Union Berlin Andrej Ilic 0.38 Set Piece — Saved Shot Josip Juranovic
9' Borussia Dortmund Emre Can 0.76 Right Foot Goal —
11' Borussia Dortmund Fabio Silva 0.05 Open Play — Saved Shot Julian Ryerson
13' Borussia Dortmund Julian Ryerson 0.05 Open Play Right Foot Blocked Shot Serhou Guirassy
16' Union Berlin Andrej Ilic 0.13 From Corner — Missed Shot Janik Haberer
17' Borussia Dortmund Fabio Silva 0.10 Open Play Right Foot Missed Shot —
17' Borussia Dortmund Jobe Bellingham 0.13 Open Play Right Foot Blocked Shot Serhou Guirassy
20' Borussia Dortmund Felix Nmecha 0.09 Direct Freekick Right Foot Missed Shot —
27' Union Berlin Diogo Leite 0.08 From Corner — Saved Shot Josip Juranovic
30' Union Berlin Josip Juranovic 0.05 Direct Freekick Right Foot Missed Shot —
37' Union Berlin Danilho Doekhi 0.02 Open Play — Missed Shot Josip Juranovic
40' Union Berlin Woo-Yeong Jeong 0.04 Set Piece Right Foot Missed Shot Josip Juranovic
45' Borussia Dortmund Fabio Silva 0.02 Set Piece Right Foot Blocked Shot —
45' Borussia Dortmund Fabio Silva 0.05 Set Piece — Missed Shot Julian Ryerson
48' Borussia Dortmund Maximilian Beier 0.05 Open Play Left Foot Missed Shot —
52' Borussia Dortmund Jobe Bellingham 0.04 Open Play Right Foot Saved Shot Maximilian Beier
52' Borussia Dortmund Nico Schlotterbeck 0.18 From Corner — Goal Julian Ryerson
56' Union Berlin Diogo Leite 0.13 From Corner — Missed Shot —
59' Union Berlin Diogo Leite 0.03 Set Piece — Blocked Shot Josip Juranovic
70' Borussia Dortmund Felix Nmecha 0.02 Open Play — Blocked Shot Julian Ryerson
73' Union Berlin Andrej Ilic 0.03 From Corner — Saved Shot Janik Haberer
80' Union Berlin Livan Burcu 0.09 Open Play Right Foot Missed Shot Andrej Ilic
82' Borussia Dortmund Serhou Guirassy 0.40 Open Play Right Foot Missed Shot Daniel Svensson
83' Borussia Dortmund Maximilian Beier 0.23 Open Play Right Foot Goal Jobe Bellingham
93' Borussia Dortmund Salih Özcan 0.14 Open Play Right Foot Blocked Shot Serhou Guirassy

Players

Borussia Dortmund

PlayerMinGA ShKPxGxA xGChain
Serhou Guirassy FW 90 0 0 1 3 0.40 0.31 0.94
Maximilian Beier AMC 90 1 0 2 1 0.28 0.04 0.72
Nico Schlotterbeck DC 90 1 0 1 0 0.18 0.00 0.18
Jobe Bellingham MC 90 0 1 2 1 0.16 0.23 0.44
Felix Nmecha MC 90 0 0 2 0 0.11 0.00 0.64
Julian Ryerson DMR 90 0 1 1 4 0.05 0.30 0.35
Daniel Svensson DML 90 0 0 0 1 0.00 0.40 0.63
Gregor Kobel GK 90 0 0 0 0 0.00 0.00 0.00
Waldemar Anton DC 90 0 0 0 0 0.00 0.00 0.00
Fabio Silva AMC 83 0 0 4 0 0.21 0.00 0.23
Emre Can DC 73 1 0 1 0 0.76 0.00 0.05
Aaron Anselmino Sub 17 0 0 0 0 0.00 0.00 0.00
Carney Chukwuemeka Sub 7 0 0 0 0 0.00 0.00 0.23
Salih Özcan Sub 1 0 0 1 0 0.14 0.00 0.14
Filippo Mané Sub 1 0 0 0 0 0.00 0.00 0.00

Union Berlin

PlayerMinGA ShKPxGxA xGChain
Andrej Ilic FW 90 0 0 3 1 0.54 0.09 0.09
Woo-Yeong Jeong AMC 90 0 0 1 0 0.04 0.00 0.00
Danilho Doekhi DC 90 0 0 1 0 0.02 0.00 0.02
Janik Haberer DMR 90 0 0 0 2 0.00 0.16 0.00
Rani Khedira MC 90 0 0 0 0 0.00 0.00 0.00
Frederik Rönnow GK 90 0 0 0 0 0.00 0.00 0.00
Leopold Querfeld DC 90 0 0 0 0 0.00 0.00 0.00
Diogo Leite DC 80 0 0 3 0 0.25 0.00 0.00
Aljoscha Kemlein MC 80 0 0 0 0 0.00 0.00 0.00
Josip Juranovic DML 70 0 0 1 5 0.05 0.56 0.02
Ilyas Ansah AMC 70 0 0 0 0 0.00 0.00 0.00
Livan Burcu Sub 20 0 0 1 0 0.09 0.00 0.09
Stanley N'Soki Sub 20 0 0 0 0 0.00 0.00 0.00
Oliver Burke Sub 10 0 0 0 0 0.00 0.00 0.00
Andras Schafer Sub 10 0 0 0 0 0.00 0.00 0.00
Christopher Trimmel Sub 1 0 0 0 0 0.00 0.00 0.00
betaider.com

Sport

Football sections

Preferences

Appearance
Aider Reading the Football model · online
Open the Radar
Bet slip
Open full page
↑↓ to move ↵ to open esc to close See all results

On this page

Match

What this page is for

One fixture in full. The model's probability for every market it prices, the prices stored against them, the teams expected to feature, and for a match already played, the shot map and the xG timeline.

How to read the shot map

Every shot is placed where it was taken and sized by its chance of being scored. A cluster of small marks from distance and a clean sheet is a side that was busy without ever threatening; two big marks and a defeat is a side that had the better of it and lost anyway. Both happen constantly, and both are invisible in the score.

How to read the xG timeline

The steps are chances as they arrived, so the shape shows who was on top and when. A flat line that jumps once near the end is a smash and grab.

Things to watch

The stored prediction is the one made before the match, kept deliberately so it can be judged afterwards. It is not re-fitted with hindsight.

Press esc to close Read the full guide