ON-DEMAND DATA EXTRACT
Historical xG for one competition — delivered in 48 hours
$89, one-off. No subscription, no API integration, no rate limits. You send the competition and the seasons; you get a CSV and a notebook back.
If the data isn't there, you get a full refund and I say so before delivery, not after.
What you get
- Shot-level xG for every match in the chosen competition and seasons (coordinates, body part, situation, xG per shot)
- A match-level table with xG for, xG against and over/under-performance vs actual goals
- A CSV with stable IDs you can join to your own data
- A Jupyter notebook that loads the CSV and reproduces the three most common tables
- Provider and licence named in writing
How it works
- 1) Pay $89 and fill the short form with your competition and season requirements.
- 2) I extract, sanity-check and package it — if a season is thin or missing, I tell you before billing anything else.
- 3) Delivery within 48 hours by email, as a clean, ready-to-use zip file.
Coverage
Deepest coverage is Bundesliga, 2. Bundesliga, DFB Pokal and Superliga României. Historical xG is also available for the Premier League, La Liga, Serie A and Ligue 1 (Understat-derived).
Ask before you buy if your league isn't listed — the 75-competition catalogue is broader than the deep coverage.
This service is not for:
- Live or in-play data
- Anything you need refreshed daily (that's the $14/month API)
- Leagues outside the list above
- Anything requiring a signed data-licence agreement
If the data isn't there, you get a full refund and I say so before delivery, not after.