Live now!
Football API add-on

xG Data API for every fixture and player

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.

✓ No contracts, no minimums ✓ First call in minutes ✓ Live updates within 5 minutes
GET /v3/football/fixtures/19662566?include=xGFixture 200 OK
Champions League · leg 1/2 · 11 Mar 2026FT
Real Madrid crestReal Madrid
3 - 0
Man CityManchester City crest
1.95Expected Goals (xG)0.83
3.58xG on Target (xGoT)0.67
2.12Expected Points (xPTS)0.67
Real fixture, real response. Every number on this card comes from the API call above.
{
  "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
    ]
  }
}

Trusted by 30,000+ sports builders

Case study
Case study
Case study
Case study
Case study Case study ScoutsLand Case study Case study Case study Sportspoule Case study Case study Case study Last5Games Case study Case study
2,200+
football leagues
99.99%
uptime
6.4B
API requests per month
10 years
of sports data, at scale
Expected goals explained

What is xG data?

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.

xG reference points

0 - 1Every shot gets an xG value between 0 and 1. Closer to 1 means more likely to be scored.
0.38+A single chance above 0.38 xG counts as a big chance.
0.79The average xG of a penalty. Player quality is not part of the model: the chance is rated, not the finisher.
13xG metric types in the add-on, from plain xG to set-piece splits and expected points.
Infographic: how expected goals (xG) is calculated from shot location, angle, distance, shot type and goalkeeper position
How every shot gets its xG value, from location and angle to goalkeeper position.
See it in action

One real match. Every xG angle.

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.

The story the scoreline hides.

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.

  • xG, xGoT and xPTS per team, per fixture
  • Live during the match on the Advanced add-on
  • Same JSON shape for every covered league
Champions League · leg 1/2 · FT 3-0xG
Real Madrid crestReal Madrid
3 - 0
Man CityManchester City crest
Team metricsinclude=xGFixture
1.95Expected Goals (xG)0.83
3.58xG on Target (xGoT)0.67
1.16Non-Penalty xG (npxG)0.83
0.83xG Against (xGA)1.95
Josip Božić
★★★★★

"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

Per-player xG, faces included.

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.

  • xG, xGoT and shooting performance per player
  • Goals, ratings and Man of the Match in the same lineup object
  • Player photos on the same CDN as crests
Champions League · leg 1/2 · FT 3-0Player xG
Real Madrid crestReal Madrid
3 - 0
Man CityManchester City crest
Match xG per playerinclude=lineups.xgLineup
Federico ValverdeFederico ValverdeReal Madrid · #8 · 3 goals · Man of the Match0.53 xG+2.47 vs xG
Vinicius JuniorVinicius JuniorReal Madrid · #7 · penalty saved1.09 xG0 goals
Antoine SemenyoAntoine SemenyoMan City · #42 · City's biggest threat0.22 xG2 on target
Pasquale Puzio
★★★★★

"Finding high-quality football and betting data is challenging. This is where Sportmonks has proven to be a great partner."

Pasquale PuzioCo-founder, FantaMaster

Where the danger comes from.

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.

  • Open play vs set play, split per team
  • Corners, free kicks and penalties as separate metrics
  • npxG to strip penalties out of any analysis
Champions League · leg 1/2 · FT 3-0Splits
Real Madrid crestReal Madrid
3 - 0
Man CityManchester City crest
xG by situationinclude=xGFixture
1.14Open Play (xGOP)0.68
0.81Set Play (xGSP)0.15
0.79Penalties (xGP)0.00
0.02Corners (xGC)0.13
Ahmet Sayarlioglu
★★★★★

"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

Expected points and finishing quality.

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.

  • Build expected standings from xPTS
  • Spot over- and underperforming teams early
  • xG Prevented as a goalkeeper quality signal
Champions League · leg 1/2 · FT 3-0xPTS
Real Madrid crestReal Madrid
3 - 0
Man CityManchester City crest
Outcome metricsinclude=xGFixture
2.12Expected Points (xPTS)0.67
+1.63Shooting Performance (SP)-0.16
0.67xG Prevented (keepers)0.58
Borko Bajic
★★★★★

"The widest coverage out there for both in-play and pre-match events."

Borko BajicCTO at BettingKick.com
What's included

All 13 xG metrics in the add-on

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.

xG
Expected Goals
expected-goals
team + player
xGoT
Expected Goals on Target
expected-goals-on-target
team + player
xPTS
Expected Points
expected-points
team
npxG
Expected Goals Non Penalty Goals
expected-non-penalty-goals
team
xGOP
Expected Goals Open Play
expected-goals-open-play
team
xGSP
Expected Goals Set Play
expected-goals-set-play
team
xGFK
Expected Goals Free Kicks
expected-goals-free-kicks
team
xGC
Expected Goals Corners
expected-goals-corners
team
xGP
Expected Goals Penalties
expected-goals-penalties
set pieces
xGD
Expected Goals Difference
expected-goals-difference
team
xGA
Expected Goals Against
expected-goals-against
team
SP
Shooting Performance
shooting-performance
team + player
xGP
Expected Goals Prevented
expected-goals-prevented
defensive

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.

Built for builders

From token to xG in one session

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.

  1. 1Sign up and get your API token instantly. No credit card, no sales call.
  2. 2Add include=xGFixture to any fixture request, or lineups.xgLineup for player-level xG.
  3. 3Parse one uniform JSON shape for every covered league. Write the parser once.

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.

Start building for free Read the xG tutorial
curl "https://api.sportmonks.com/v3/football/fixtures/19662566?api_token=YOUR_TOKEN&include=xGFixture" 200 OK
{
  "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
  ]
}
Use cases

What builders ship with xG data

Betting insights with xG

Betting insights

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 →
Evaluate team and player performance with xG

Performance analysis

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 →
Scouting and recruitment with xG

Scouting and recruitment

Identify players who consistently generate high-quality chances or finish above their xG, independent of team form and scorelines.

Scouting tools →
Tactical and set-piece analysis with xG

Tactical and set-piece analysis

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 →
Media and match coverage with xG

Media and match coverage

Add the numbers behind the match to every report: xG race, big chances, deserved-to-win verdicts, all generated from one call.

Sports media →
Fan engagement with xG

Fantasy engagement

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.

From builders using Sportmonks

Data quality developers vouch for

★★★★★

"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ć 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 Puzio 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 Sayarlioglu Ahmet SayarliogluCo-Founder, ScoutsLand

Read the full stories on our case studies page.

Add-on pricing

Transparent pricing, like everything else

The xG add-on attaches to your Football API plan. No contracts, no minimums. We publish our prices, compare us openly.

xG Basic

Post-match xG for reports, models and scouting

€ 15

per month, paid yearly

  • All 13 xG metrics
  • Available directly after full time
  • Uniform JSON across covered leagues
Start with Basic
Live

xG Advanced

Live xG for in-play products

€ 159

per month, paid yearly

  • All 13 xG metrics, live during the match
  • Updates within 5 minutes during play
  • Everything in Basic included
Start with Advanced

All prices are exclusive of VAT and, where applicable, VAT will be applied at the standard rate.

xG Data API, FAQ

xG questions developers actually ask

Quick answers before you sign up. Want the long version? It's all in the xG documentation.

How are xG values calculated?

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.

What does a typical xG value look like?

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.

From which season is xG data available?

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.

Which leagues have xG data?

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.

How often are live xG values updated?

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.

What is the difference between xG Basic and xG Advanced?

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.

What can I use xG Corner, xG Free Kick and xG Penalty for?

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.

How do I get access to xG data?

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.

Add xG to your app today

Professional-grade expected goals data on the most approachable sports data API. Start free, upgrade when your product does.

✓ No contracts, no minimums ✓ First call in minutes ✓ Human support, 7 days a week
More Football API add-ons