Open data
The projections, in full, for anyone
Every player’s expected points for the coming gameweek — the whole cross-section, keyed on the FPL player id, free to use with attribution. Published next to the model’s realised accuracy, so the numbers can be checked rather than taken on trust.
Currently published
Gameweek 4 — 654 players, generated 2026-09-12T11:50:38Z.
- https://sidelinequant.com/data/gw/4/projections.json — every player, every column
- https://sidelinequant.com/data/gw/4/projections.md — ranked extracts, written to be quoted
- https://sidelinequant.com/data/latest.json — always-current pointer; redirects to the gameweek permalink
What makes this different
- It is the whole set. Every player, not a top thirty. A feed you cannot join against is a shop window.
- It carries the distribution. Each player’s simulated floor, ceiling and haul probability — computed per player, not approximated from a single squad-level curve.
- It carries availability. Every row has a start probability, so a low-ownership name that is not expected to play reads as exactly that rather than as a bargain.
- It says how it has done. The payload embeds our realised error on settled gameweeks and links to the full record.
- A URL per gameweek. Each gameweek has its own address and latest redirects to the current one, so nothing is served under a heading that has quietly moved on. We keep the current gameweek only — an address for a finished gameweek returns nothing rather than today’s numbers wearing last week’s date.
Columns
Every field the feed publishes, and what it means. Rows are at fixture grain: a player with two fixtures in the gameweek has two rows.
| Field | Meaning |
|---|---|
| player_id | FPL element id. Stable across the season; join key to the official game. |
| fixture_id | FPL fixture id. Rows are at fixture grain, so a double gameweek is two rows. |
| gameweek | FPL gameweek number. |
| name | Full player name. |
| web_name | Short display name, as FPL renders it. |
| club | Player's club. |
| team | Player's club (same value as `club`). |
| position | GK, DEF, MID or FWD. |
| price_tenths | Current FPL price in tenths of a million (96 = £9.6m). |
| kickoff_time | Fixture kickoff, ISO 8601 UTC. |
| opponent | Opposition club in this fixture. |
| was_home | True when the player's club is at home. |
| xP | Expected FPL points for this fixture. An expectation over simulated minutes states, not a per-90 rate scaled by expected minutes. |
| sigma | Standard deviation of this fixture's simulated points. |
| gw_sigma | Standard deviation of the player's gameweek points total, summed across their fixtures in the gameweek. |
| gw_p10 | 10th percentile of the simulated gameweek points total (a realistic floor). |
| gw_p90 | 90th percentile of the simulated gameweek points total (a realistic ceiling). |
| e_mins | Expected minutes. |
| p_start | Probability the player starts. |
| p_start60 | Probability the player starts and plays at least 60 minutes. |
| p_start_sub | Probability the player starts but is substituted before 60 minutes. |
| p_cameo | Probability the player appears as a substitute. |
| p_unused | Probability the player does not appear at all. |
| p_goal | Probability of scoring at least one goal. |
| p_goals_2plus | Probability of scoring two or more goals. |
| p_assist | Probability of at least one assist. |
| p_cs | Probability of a clean sheet for this player (conditional on playing 60+ minutes). |
| p_return | Probability of a goal or an assist. |
| p_defcon | Probability of hitting the defensive-contribution points threshold. |
| p_ge_6 | Probability the gameweek points total is 6 or more. |
| p_ge_10 | Probability the gameweek points total is 10 or more (a haul). |
| bonus_mean | Expected bonus points. |
| xbps_mean | Expected BPS (the score bonus points are awarded from). |
| total_points | FPL points actually scored so far this season. |
| form | Mean points over the player's last four gameweeks. Not FPL's own 30-day form. |
| owned_pct | Percentage of all FPL managers owning the player. |
| lambda_home | Model expected goals for the home side in this fixture. |
| lambda_away | Model expected goals for the away side in this fixture. |
| p_cs_home | Model clean-sheet probability for the home side. |
| p_cs_away | Model clean-sheet probability for the away side. |
| d_lambda_home | Change in lambda_home over the odds-drift window. |
| d_lambda_away | Change in lambda_away over the odds-drift window. |
| d_p_cs_home | Change in p_cs_home over the odds-drift window. |
| d_p_cs_away | Change in p_cs_away over the odds-drift window. |
| drift_from_ts | Start of the odds-drift window, ISO 8601 UTC. |
| drift_to_ts | End of the odds-drift window, ISO 8601 UTC. |
| pen_taker | True when the player is first-choice penalty taker. |
| corner_taker | True when the player is first-choice corner / indirect free-kick taker. |
| fk_taker | True when the player is first-choice direct free-kick taker. |
| rates_source | Where this fixture's team rates came from: market odds, or the team model. |
| has_unseen_team | True when a club in this fixture has no played matches to fit on yet. |
Licence and use
Licensed CC BY 4.0. Free to use, quote and redistribute — including commercially — with attribution to Sideline Quant and a link to https://sidelinequant.com. Please cache rather than poll: the payload carries an ETag, and it only moves when a model refresh lands.
Fixture-by-fixture projections across the near horizon, chip planning, elite ownership and the squad optimiser are the paid product — see pricing. This feed covers the next gameweek and stays free, as does the whole-season view.