Expected goals, xG on target, expected points and 10 more xG metrics for every covered fixture, live or post-match. Delivered in the same uniform JSON as the rest of the Sportmonks Football API, one include away.
Real Madrid
{
"data": {
"id": 19662566,
"name": "Real Madrid vs Manchester City",
"starting_at": "2026-03-11 20:00:00",
"result_info": "Real Madrid won after full-time.",
"leg": "1/2",
"xgfixture": [
{
"type": { "name": "Expected Goals (xG)", "code": "expected-goals" },
"location": "home",
"data": { "value": 1.9498 }
},
{
"type": { "name": "Expected Goals (xG)", "code": "expected-goals" },
"location": "away",
"data": { "value": 0.8279 }
},
{
"type": { "name": "Expected Goals on Target (xGoT)" },
"location": "home",
"data": { "value": 3.5842 }
},
{
"type": { "name": "Expected Points (xPTS)" },
"location": "home",
"data": { "value": 2.12 }
}
// + npxG, xGOP, xGSP, xGC, xGP, xGA and player-level xG in the same call
]
}
}


Case study
"The quality of the data itself stands out."
Once you start utilising it, you realise its excellence isn't just superficial.

Case study
"Data reliability has been constantly improving."
I particularly highlight the support team's agility and efficiency in resolving any issues.


Case study
"Sportmonks has proven to be a great partner."
Finding high-quality football and betting data is challenging. When available, it's often too expensive or hard to integrate.

Case study
"Real-world football, inside FIFA Career Mode."
SoFIFA pulls up-to-date squads, ratings and historical seasons into the game.

Case study
"Seven years. No major problems."
Other services provided the same data at much higher prices that we could not afford.
Case study
"Automated sports media at scale."
ScorePlay powers sports media management with real-time Sportmonks data: every match, every moment.
"Sportmonks feels like a partner rather than just a service."
The support team is fast, helpful, and actually understands what you're trying to achieve.
Case study
"AI football commentary in 12+ languages."
Botbrains scales generative match commentary across markets, powered by Sportmonks data.
Case study
"Middle East's fastest-growing football fan platform."
Built on Sportmonks data to power live experiences for millions of fans.
"Fast and consistent, critical for live features."
Getting started was very smooth. Within a short time we were retrieving data and integrating it into the platform.
Case study
"Logic over gut feeling in sports betting."
Fine Line replaces guesswork with data-driven decisions across 2,200+ leagues.
Case study
"Side project to sustainable football platform."
Footi built and scaled the whole product on Sportmonks data.
"Worldwide coverage at unmatched price."
Depth of coverage on the worldwide package was unmatched at the price point.
Case study
"Sweden's most complete football site."
Fotboll.com is built end-to-end on Sportmonks data across all major leagues.
Expected goals (xG) measures the quality of a scoring chance. Every shot gets a value between 0 and 1 that expresses the probability it results in a goal, based on shot location, angle, distance, shot type, goalkeeper position and surrounding players. The total xG of a team or player is the sum of the xG of their individual chances, so totals can exceed 1.
xG tells you what the scoreline cannot: which team created the better chances, whether a striker is over- or underperforming their opportunities, and whether results are sustainable or likely to revert. That is why it has become the standard metric for betting models, scouting tools, analytics platforms and modern match coverage.
The Sportmonks xG Data API delivers these metrics per fixture and per player as an add-on to the Football API. xG is one of our proprietary metrics, next to the Pressure Index and Predictions, so you will not find this exact dataset anywhere else. Want the full theory first? Read our guide on what expected goals is and how it is calculated.
Every card below comes from one real API response: Real Madrid 3-0 Manchester City, Champions League, 11 March 2026. One call returned the team metrics, the player metrics and the story of the match. Pick the view your product needs.
City had 60 percent of the ball, but the chances tell the truth: 1.95 xG against 0.83, and 3.58 expected goals on target. One include on the fixture call returns the full team comparison.
Real Madrid
"Once you start utilising it, you realise that its excellence isn't just superficial, the quality of the data itself stands out."
Valverde scored a hat-trick from 0.53 xG and walked off with the highest rating on the pitch. Vinícius created more than a goal of xG and finished with none. Player-level xG turns every match into a debate.
Real Madrid
Federico ValverdeReal Madrid · #8 · 3 goals · Man of the Match0.53 xG+2.47 vs xG
Vinicius JuniorReal Madrid · #7 · penalty saved1.09 xG0 goals
Antoine SemenyoMan City · #42 · City's biggest threat0.22 xG2 on target
"Finding high-quality football and betting data is challenging. This is where Sportmonks has proven to be a great partner."
City forced 10 corners but generated just 0.13 xG from them. Real Madrid's set-play threat was one penalty worth 0.79. The splits make tactical stories your competitors cannot tell.
Real Madrid
"The way the API is structured and documented makes it naturally compatible with how modern development works, including AI-assisted coding and automated data pipelines."
xPTS turns chance quality into deserved points for expected standings. Shooting performance shows who finished above their chances: Real Madrid at +1.63, City below par. xG prevented credits both keepers, including Donnarumma's penalty save.
Real Madrid
"The widest coverage out there for both in-play and pre-match events."
Every metric is delivered per team on the fixture, in the same uniform JSON for every covered league. xG, xGoT and Shooting Performance are also available per player through the lineup include.
Note: Expected Goals Penalties and Expected Goals Prevented both abbreviate to xGP. Use the code or type id to tell them apart in your integration. A fixture response contains the metrics that apply to that match, so situational types like penalty xG only appear when the situation occurred. Full type definitions live in the xG types documentation.
No new endpoints to learn. If you already use the Football API, xG is one include away on the fixture calls you make today. New here? Your first call is minutes away.
include=xGFixture to any fixture request, or lineups.xgLineup for player-level xG.Stuck on an include or a metric? You talk to a person, 7 days a week. Sportmonks is the only sports data API with an actual face.
{
"xgfixture": [
{
"fixture_id": 19662566,
"type_id": 5304,
"location": "home",
"data": { "value": 1.9498 },
"type": {
"name": "Expected Goals (xG)",
"developer_name": "EXPECTED_GOALS",
"stat_group": "offensive"
}
}
// one object per metric, per team
]
}
Surface which team created the better chances behind the scoreline. Feed xG, xGoT and set-piece splits into pre-match and in-play analytics.
Betting platforms →
Compare xG with actual goals to spot over- and underperformance, at team or player level, and know when results are likely to revert to the mean.
Clubs and analysts →
Identify players who consistently generate high-quality chances or finish above their xG, independent of team form and scorelines.
Scouting tools →
xGOP against xGSP shows where danger comes from. Corner and free-kick splits reveal which teams weaponise set pieces and which defences leak them.
Analytics platforms →
Add the numbers behind the match to every report: xG race, big chances, deserved-to-win verdicts, all generated from one call.
Sports media →
Reward process, not just output. Expected stats make player pricing, captain picks and transfer debates smarter and more engaging.
Fantasy games →Using xG correctly: a higher xG does not mean a team should have won. xG measures chance quality, not the expected outcome of a fixture. For predicted outcomes and win probabilities, use our Football Predictions API, which works hand in hand with xG.
"Once you start utilising it, you realise that its excellence isn't just superficial, the quality of the data itself stands out."
Josip BožićCEO & Lead Developer, ShiftOneZero
"Finding high-quality football and betting data is challenging. This is where Sportmonks has proven to be a great partner."
Pasquale PuzioCo-founder, FantaMaster
"The way the API is structured and documented makes it naturally compatible with how modern development works, including AI-assisted coding and automated data pipelines."
Ahmet SayarliogluCo-Founder, ScoutsLand
Read the full stories on our case studies page.
The xG add-on attaches to your Football API plan. No contracts, no minimums. We publish our prices, compare us openly.
Post-match xG for reports, models and scouting
per month, paid yearly
Live xG for in-play products
per month, paid yearly
All prices are exclusive of VAT and, where applicable, VAT will be applied at the standard rate.
Quick answers before you sign up. Want the long version? It's all in the xG documentation.
xG values are calculated using historical shot data. Each shot is rated on its location, angle and distance to goal, the type of shot (header or foot), and the position of the goalkeeper and surrounding players. Expected goals is expressed as a value between 0 and 1. A value above 0.38 for a single shot counts as a big chance, and a penalty has an average xG of 0.79. Player quality is not part of the model: the chance is rated, not the finisher.
Read the full explanation in our expected goals guide.
Per-player values usually range between 0 and 1.5 for a single fixture. In the Manchester derby (fixture 18842545), Erling Haaland recorded an xG of 1.1634 and scored once. The team totals were Manchester City 3.6439 against Manchester United 0.3841, close to the actual 3-1 result.
xG will not always match the outcome: Marcus Rashford scored in that match from an xG of just 0.3553. That is not the model being wrong, it is a low-probability chance going in.
Expected goals data is available from the 2024 season onward. xG metrics were not collected for earlier seasons, so they are not available historically before that point.
xG covers the top European competitions, including the Premier League and the Champions League, and the list keeps growing as new competitions go live. The up-to-date, per-league coverage list is in our xG coverage documentation.
On the Advanced add-on, xG values are continuously calculated during the match, with updates every couple of minutes. The maximum time between updates is 5 minutes.
Basic delivers all xG metrics directly after a match has ended. Advanced delivers the same metrics live during the match. The metric set is identical, the difference is timing.
They break xG Set Play down into its parts, so you can show where a team's set-piece threat actually comes from. Some teams are dangerous from free kicks because they have a specialist, others generate more from corners with tall centre-backs joining the attack. Comparing set-piece xG across title rivals or relegation candidates makes for analysis your users will not find elsewhere.
Go to MySportmonks and add the xG add-on to your subscription. Not registered yet? Create your account, pick a Football API plan and add xG Basic or xG Advanced. Your API token works immediately.
Professional-grade expected goals data on the most approachable sports data API. Start free, upgrade when your product does.