{"openapi":"3.1.0","info":{"title":"Fantasy Premier League API","version":"1.0.0","description":"The official Fantasy Premier League (FPL) data as an API — the game played by over 13 million managers. List every player with their price, total points, form, ownership percentage and underlying stats (goals, assists, clean sheets, bonus, expected goals and assists, minutes and injury news). Browse the 20 Premier League clubs with their league record and fixture strength, the full gameweek calendar with deadlines and average scores, and fixtures with live and final results. Pull per-player detail with recent gameweek-by-gameweek history and upcoming fixtures with difficulty ratings. Real data, no key needed upstream. Ideal for FPL tools and draft assistants, fantasy-football apps, stat dashboards and Premier League widgets.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/fpl-api","description":"oanor gateway"}],"tags":[{"name":"FPL"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/fixtures":{"get":{"operationId":"get_v1_fixtures","tags":["FPL"],"summary":"Fixtures & results","description":"","parameters":[{"name":"gameweek","in":"query","required":false,"description":"Gameweek number, e.g. 1","schema":{"type":"string"},"example":"1"},{"name":"future","in":"query","required":false,"description":"Set 1 for only upcoming fixtures","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"count":10,"fixtures":[{"id":1,"away":"Bournemouth","home":"Liverpool","kickoff":"2025-08-15T19:00:00Z","started":true,"finished":true,"gameweek":1,"away_score":2,"home_score":4,"away_difficulty":4,"home_difficulty":3},{"id":2,"away":"Newcastle","home":"Aston Villa","kickoff":"2025-08-16T11:30:00Z","started":true,"finished":true,"gameweek":1,"away_score":0,"home_score":0,"away_difficulty":4,"home_difficulty":3},{"id":3,"away":"Fulham","home":"Brighton","kickoff":"2025-08-16T14:00:00Z","started":true,"finished":true,"gameweek":1,"away_score":1,"home_score":1,"away_difficulty":4,"home_difficulty":3},{"id":6,"away":"Burnley","home":"Spurs","kickoff":"2025-08-16T14:00:00Z","started":true,"finished":true,"gameweek":1,"away_score":0,"home_score":3,"away_difficulty":3,"home_difficulty":1},{"id":5,"away":"West Ham","home":"Sunderland","kickoff":"2025-08-16T14:00:00Z","started":true,"finished":true,"gameweek":1,"away_score":0,"home_score":3,"away_difficulty":3,"home_difficulty":2},{"id":7,"away":"Man City","home":"Wolves","kickoff":"2025-08-16T16:30:00Z","started":true,"finished":true,"gameweek":1,"away_score":4,"home_score":0,"away_difficulty":2,"home_difficulty":4},{"id":8,"away":"Crystal Palace","home":"Chelsea","kickoff":"2025-08-17T13:00:00Z","started":true,"finished":true,"gameweek":1,"away_score":0,"home_score":0,"away_difficulty":3,"home_difficulty":3},{"id":4,"away":"Brentford","home":"Nott'm Forest","kickoff":"2025-08-17T13:00:00Z","started":true,"finished":true,"gameweek":1,"away_score":1,"home_score":3,"away_difficulty":3,"home_difficulty":3},{"id":9,"away":"Arsenal","home":"Man Utd","kickoff":"2025-08-17T15:30:00Z","started":true,"finished":true,"gameweek":1,"away_score":1,"home_score":0,"away_difficulty":4,"home_difficulty":4},{"id":10,"away":"Everton","home":"Leeds","kickoff":"2025-08-18T19:00:00Z","started":true,"finished":true,"gameweek":1,"away_score":0,"home_score":1,"away_difficulty":3,"home_difficulty":3}]},"meta":{"timestamp":"2026-06-08T01:18:33.739Z","request_id":"ff29672a-7e63-4871-8e25-ee833a94c656"},"status":"ok","message":"Fixtures retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/gameweeks":{"get":{"operationId":"get_v1_gameweeks","tags":["FPL"],"summary":"All gameweeks with deadlines","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"count":38,"gameweeks":[{"id":1,"name":"Gameweek 1","is_next":false,"deadline":"2025-08-15T17:30:00Z","finished":true,"is_current":false,"average_score":54,"highest_score":127,"most_selected":235,"most_captained":381},{"id":2,"name":"Gameweek 2","is_next":false,"deadline":"2025-08-22T17:30:00Z","finished":true,"is_current":false,"average_score":51,"highest_score":140,"most_selected":235,"most_captained":381},{"id":3,"name":"Gameweek 3","is_next":false,"deadline":"2025-08-30T10:00:00Z","finished":true,"is_current":false,"average_score":48,"highest_score":118,"most_selected":249,"most_captained":430},{"id":4,"name":"Gameweek 4","is_next":false,"deadline":"2025-09-13T10:00:00Z","finished":true,"is_current":false,"average_score":63,"highest_score":139,"most_selected":249,"most_captained":381},{"id":5,"name":"Gameweek 5","is_next":false,"deadline":"2025-09-20T10:00:00Z","finished":true,"is_current":false,"average_score":42,"highest_score":112,"most_selected":249,"most_captained":381},{"id":6,"name":"Gameweek 6","is_next":false,"deadline":"2025-09-27T10:00:00Z","finished":true,"is_current":false,"average_score":46,"highest_score":124,"most_selected":249,"most_captained":430},{"id":7,"name":"Gameweek 7","is_next":false,"deadline":"2025-10-03T17:30:00Z","finished":true,"is_current":false,"average_score":60,"highest_score":135,"most_selected":249,"most_captained":430},{"id":8,"name":"Gameweek 8","is_next":false,"deadline":"2025-10-18T10:00:00Z","finished":true,"is_current":false,"average_score":56,"highest_score":138,"most_selected":430,"most_captained":430},{"id":9,"name":"Gameweek 9","is_next":false,"deadline":"2025-10-24T17:30:00Z","finished":true,"is_current":false,"average_score":46,"highest_score":124,"most_selected":430,"most_captained":430},{"id":10,"name":"Gameweek 10","is_next":false,"deadline":"2025-11-01T13:30:00Z","finished":true,"is_current":false,"average_score":65,"highest_score":135,"most_selected":430,"most_captained":430},{"id":11,"name":"Gameweek 11","is_next":false,"deadline":"2025-11-08T11:00:00Z","finished":true,"is_current":false,"average_score":38,"highest_score":120,"most_selected":430,"most_captained":430},{"id":12,"name":"Gameweek 12","is_next":false,"deadline":"2025-11-22T11:00:00Z","finished":true,"is_current":false,"average_score":39,"highest_score":134,"most_selected":430,"most_captained":430},{"id":13,"name":"Gameweek 13","is_next":false,"deadline":"2025-11-29T13:30:00Z","finished":true,"is_current":false,"average_score":35,"highest_score":123,"most_selected":430,"most_captained":430},{"id":14,"name":"Gameweek 14","is_next":false,"deadline":"2025-12-02T18:00:00Z","finished":true,"is_current":false,"average_score":58,"highest_score":138,"most_selected":430,"most_captained":430},{"id":15,"name":"Gameweek 15","is_next":false,"deadline":"2025-12-06T11:00:00Z","finished":true,"is_current":false,"average_score":49,"highest_score":133,"most_selected":430,"most_captained":430},{"id":16,"name":"Gameweek 16","is_next":false,"deadline":"2025-12-13T13:30:00Z","finished":true,"is_current":false,"average_score":60,"highest_score":149,"most_selected":430,"most_captained":430},{"id":17,"name":"Gameweek 17","is_next":false,"deadline":"2025-12-20T11:00:00Z","finished":true,"is_current":false,"average_score":66,"highest_score":148,"most_selected":430,"most_captained":430},{"id":18,"name":"Gameweek 18","is_next":false,"deadline":"2025-12-26T18:30:00Z","finished":true,"is_current":false,"average_score":44,"highest_score":118,"most_selected":430,"most_captained":430},{"id":19,"name":"Gameweek 19","is_next":false,"deadline":"2025-12-30T18:00:00Z","finished":true,"is_current":false,"average_score":40,"highest_score":112,"most_selected":430,"most_captained":430},{"id":20,"name":"Gameweek 20","is_next":false,"deadline":"2026-01-03T11:00:00Z","finished":true,"is_current":false,"average_score":42,"highest_score":117,"most_selected":430,"most_captained":430},{"id":21,"name":"Gameweek 21","is_next":false,"deadline":"2026-01-06T18:30:00Z","finished":true,"is_current":false,"average_score":48,"highest_score":118,"most_selected":430,"most_captained":430},{"id":22,"name":"Gameweek 22","is_next":false,"deadline":"2026-01-17T11:00:00Z","finished":true,"is_current":false,"average_score":40,"highest_score":111,"most_selected":430,"most_captained":430},{"id":23,"name":"Gameweek 23","is_next":false,"deadline":"2026-01-24T11:00:00Z","finished":true,"is_current":false,"average_score":44,"highest_score":115,"most_selected":430,"most_captained":430},{"id":24,"name":"Gameweek 24","is_next":false,"deadline":"2026-01-31T13:30:00Z","finished":true,"is_current":false,"average_score":55,"highest_score":126,"most_selected":430,"most_captained":430},{"id":25,"name":"Gameweek 25","is_next":false,"deadline":"2026-02-06T18:30:00Z","finished":true,"is_current":false,"average_score":58,"highest_score":147,"most_selected":430,"most_captained":430},{"id":26,"name":"Gameweek 26","is_next":false,"deadline":"2026-02-10T18:00:00Z","finished":true,"is_current":false,"average_score":58,"highest_score":138,"most_selected":430,"most_captained":430},{"id":27,"name":"Gameweek 27","is_next":false,"deadline":"2026-02-21T13:30:00Z","finished":true,"is_current":false,"average_score":45,"highest_score":117,"most_selected":430,"most_captained":430},{"id":28,"name":"Gameweek 28","is_next":false,"deadline":"2026-02-27T18:30:00Z","finished":true,"is_current":false,"average_score":53,"highest_score":125,"most_selected":430,"most_captained":430},{"id":29,"name":"Gameweek 29","is_next":false,"deadline":"2026-03-03T18:00:00Z","finished":true,"is_current":false,"average_score":54,"highest_score":143,"most_selected":430,"most_captained":430},{"id":30,"name":"Gameweek 30","is_next":false,"deadline":"2026-03-14T13:30:00Z","finished":true,"is_current":false,"average_score":43,"highest_score":110,"most_selected":430,"most_captained":430},{"id":31,"name":"Gameweek 31","is_next":false,"deadline":"2026-03-20T18:30:00Z","finished":true,"is_current":false,"average_score":38,"highest_score":109,"most_selected":249,"most_captained":430},{"id":32,"name":"Gameweek 32","is_next":false,"deadline":"2026-04-10T17:30:00Z","finished":true,"is_current":false,"average_score":46,"highest_score":132,"most_selected":430,"most_captained":430},{"id":33,"name":"Gameweek 33","is_next":false,"deadline":"2026-04-18T10:00:00Z","finished":true,"is_current":false,"average_score":66,"highest_score":177,"most_selected":430,"most_captained":430},{"id":34,"name":"Gameweek 34","is_next":false,"deadline":"2026-04-24T17:30:00Z","finished":true,"is_current":false,"average_score":36,"highest_score":114,"most_selected":430,"most_captained":430},{"id":35,"name":"Gameweek 35","is_next":false,"deadline":"2026-05-01T17:30:00Z","finished":true,"is_current":false,"average_score":50,"highest_score":129,"most_selected":430,"most_captained":430},{"id":36,"name":"Gameweek 36","is_next":false,"deadline":"2026-05-09T10:00:00Z","finished":true,"is_current":false,"average_score":65,"highest_score":145,"most_selected":430,"most_captained":430},{"id":37,"name":"Gameweek 37","is_next":false,"deadline":"2026-05-15T17:30:00Z","finished":true,"is_current":false,"average_score":53,"highest_score":131,"most_selected":430,"most_captained":430},{"id":38,"name":"Gameweek 38","is_next":false,"deadline":"2026-05-24T13:30:00Z","finished":true,"is_current":true,"average_score":41,"highest_score":117,"most_selected":430,"most_captained":430}],"total_players":13107732},"meta":{"timestamp":"2026-06-08T01:18:33.841Z","request_id":"d5f26aef-d8f7-4b87-acee-bd432dd31742"},"status":"ok","message":"Gameweeks retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/player":{"get":{"operationId":"get_v1_player","tags":["FPL"],"summary":"A single player with history & fixtures","description":"","parameters":[{"name":"id","in":"query","required":true,"description":"Player id, e.g. 1","schema":{"type":"string"},"example":"1"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"player":{"id":1,"form":5,"name":"Raya","team":"Arsenal","bonus":11,"price":6.2,"saves":60,"status":"a","assists":0,"history":[{"bonus":0,"goals":0,"points":3,"assists":0,"minutes":90,"gameweek":28,"opponent":"CHE"},{"bonus":1,"goals":0,"points":7,"assists":0,"minutes":90,"gameweek":29,"opponent":"BHA"},{"bonus":0,"goals":0,"points":7,"assists":0,"minutes":90,"gameweek":30,"opponent":"EVE"},{"bonus":0,"goals":0,"points":1,"assists":0,"minutes":90,"gameweek":32,"opponent":"BOU"},{"bonus":0,"goals":0,"points":1,"assists":0,"minutes":90,"gameweek":33,"opponent":"MCI"},{"bonus":3,"goals":0,"points":10,"assists":0,"minutes":90,"gameweek":34,"opponent":"NEW"},{"bonus":0,"goals":0,"points":6,"assists":0,"minutes":90,"gameweek":35,"opponent":"FUL"},{"bonus":2,"goals":0,"points":9,"assists":0,"minutes":90,"gameweek":36,"opponent":"WHU"},{"bonus":0,"goals":0,"points":6,"assists":0,"minutes":90,"gameweek":37,"opponent":"BUR"},{"bonus":0,"goals":0,"points":0,"assists":0,"minutes":0,"gameweek":38,"opponent":"CRY"}],"minutes":3330,"position":"Goalkeeper","upcoming":[],"last_name":"Raya Martín","red_cards":0,"first_name":"David","photo_code":154561,"team_short":"ARS","clean_sheets":19,"goals_scored":0,"total_points":162,"yellow_cards":1,"expected_goals":0,"points_per_game":4.4,"expected_assists":0.07,"selected_by_percent":36.4}},"meta":{"timestamp":"2026-06-08T01:18:33.971Z","request_id":"e132c9e4-0f35-4709-af1d-905125b1633d"},"status":"ok","message":"Player retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/players":{"get":{"operationId":"get_v1_players","tags":["FPL"],"summary":"Players with prices, points & stats","description":"","parameters":[{"name":"search","in":"query","required":false,"description":"Name search","schema":{"type":"string"}},{"name":"team","in":"query","required":false,"description":"Club name or short code, e.g. MCI","schema":{"type":"string"}},{"name":"position","in":"query","required":false,"description":"goalkeeper | defender | midfielder | forward","schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"description":"total_points | form | now_cost | selected_by_percent | goals_scored | assists","schema":{"type":"string"},"example":"total_points"},{"name":"limit","in":"query","required":false,"description":"Max results (default 30, max 200)","schema":{"type":"string"},"example":"30"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"sort":"total_points","count":30,"players":[{"id":430,"form":5,"name":"Haaland","team":"Man City","bonus":43,"price":14.7,"saves":0,"status":"a","assists":8,"minutes":2953,"position":"Forward","last_name":"Haaland","red_cards":0,"first_name":"Erling","photo_code":223094,"team_short":"MCI","clean_sheets":13,"goals_scored":27,"total_points":239,"yellow_cards":2,"expected_goals":25.5,"points_per_game":6.8,"expected_assists":2.67,"selected_by_percent":62.5},{"id":449,"form":8.7,"name":"B.Fernandes","team":"Man Utd","bonus":41,"price":10.4,"saves":0,"status":"a","assists":24,"minutes":3065,"position":"Midfielder","last_name":"Borges Fernandes","red_cards":0,"first_name":"Bruno","photo_code":141746,"team_short":"MUN","clean_sheets":7,"goals_scored":9,"total_points":235,"yellow_cards":5,"expected_goals":10.79,"points_per_game":6.7,"expected_assists":12.28,"selected_by_percent":48},{"id":5,"form":6,"name":"Gabriel","team":"Arsenal","bonus":30,"price":7.3,"saves":0,"status":"a","assists":5,"minutes":2750,"position":"Defender","last_name":"dos Santos Magalhães","red_cards":0,"first_name":"Gabriel","photo_code":226597,"team_short":"ARS","clean_sheets":18,"goals_scored":3,"total_points":209,"yellow_cards":4,"expected_goals":2.94,"points_per_game":6.5,"expected_assists":1.75,"selected_by_percent":45.4},{"id":82,"form":4.8,"name":"Semenyo","team":"Man City","bonus":18,"price":8,"saves":0,"status":"a","assists":6,"minutes":3200,"position":"Midfielder","last_name":"Semenyo","red_cards":0,"first_name":"Antoine","photo_code":437730,"team_short":"MCI","clean_sheets":12,"goals_scored":17,"total_points":202,"yellow_cards":7,"expected_goals":11.1,"points_per_game":5.5,"expected_assists":3.12,"selected_by_percent":46.2},{"id":515,"form":5.3,"name":"Gibbs-White","team":"Nott'm Forest","bonus":18,"price":7.6,"saves":0,"status":"a","assists":4,"minutes":3101,"position":"Midfielder","last_name":"Gibbs-White","red_cards":0,"first_name":"Morgan","photo_code":222531,"team_short":"NFO","clean_sheets":10,"goals_scored":15,"total_points":188,"yellow_cards":1,"expected_goals":10.81,"points_per_game":5.1,"expected_assists":2.91,"selected_by_percent":9.2},{"id":624,"form":5.3,"name":"Bowen","team":"West Ham","bonus":28,"price":7.8,"saves":0,"status":"a","assists":13,"minutes":3406,"position":"Forward","last_name":"Bowen","red_cards":0,"first_name":"Jarrod","photo_code":178186,"team_short":"WHU","clean_sheets":8,"goals_scored":9,"total_points":187,"yellow_cards":4,"expected_goals":7.22,"points_per_game":4.9,"expected_assists":5.21,"selected_by_percent":17.5},{"id":21,"form":2.7,"name":"Rice","team":"Arsenal","bonus":23,"price":7.2,"saves":0,"status":"a","assists":9,"minutes":3093,"position":"Midfielder","last_name":"Rice","red_cards":0,"first_name":"Declan","photo_code":204480,"team_short":"ARS","clean_sheets":18,"goals_scored":4,"total_points":184,"yellow_cards":3,"expected_goals":3.15,"points_per_game":5.1,"expected_assists":7.32,"selected_by_percent":23.3},{"id":136,"form":2,"name":"Thiago","team":"Brentford","bonus":22,"price":7.2,"saves":0,"status":"a","assists":1,"minutes":3282,"position":"Forward","last_name":"Nascimento Rodrigues","red_cards":0,"first_name":"Igor Thiago","photo_code":502500,"team_short":"BRE","clean_sheets":10,"goals_scored":22,"total_points":181,"yellow_cards":7,"expected_goals":20.6,"points_per_game":4.8,"expected_assists":1.83,"selected_by_percent":30.2},{"id":517,"form":8.7,"name":"Anderson","team":"Nott'm Forest","bonus":16,"price":5.7,"saves":0,"status":"a","assists":5,"minutes":3332,"position":"Midfielder","last_name":"Anderson","red_cards":0,"first_name":"Elliot","photo_code":215379,"team_short":"NFO","clean_sheets":10,"goals_scored":4,"total_points":180,"yellow_cards":8,"expected_goals":2.94,"points_per_game":4.7,"expected_assists":4.79,"selected_by_percent":9.4},{"id":260,"form":4.2,"name":"Guéhi","team":"Man City","bonus":14,"price":5.1,"saves":0,"status":"a","assists":5,"minutes":3150,"position":"Defender","last_name":"Guéhi","red_cards":0,"first_name":"Marc","photo_code":209036,"team_short":"MCI","clean_sheets":14,"goals_scored":3,"total_points":179,"yellow_cards":6,"expected_goals":4.05,"points_per_game":5.1,"expected_assists":2.37,"selected_by_percent":32.6},{"id":249,"form":1,"name":"João Pedro","team":"Chelsea","bonus":30,"price":7.4,"saves":0,"status":"a","assists":9,"minutes":2658,"position":"Forward","last_name":"Junqueira de Jesus","red_cards":0,"first_name":"João Pedro","photo_code":475168,"team_short":"CHE","clean_sheets":10,"goals_scored":15,"total_points":177,"yellow_cards":5,"expected_goals":14.91,"points_per_game":5.1,"expected_assists":1.96,"selected_by_percent":34.8},{"id":72,"form":4.7,"name":"Senesi","team":"Bournemouth","bonus":14,"price":5.2,"saves":0,"status":"a","assists":6,"minutes":3288,"position":"Defender","last_name":"Senesi Barón","red_cards":0,"first_name":"Marcos","photo_code":221466,"team_short":"BOU","clean_sheets":11,"goals_scored":0,"total_points":175,"yellow_cards":8,"expected_goals":1.53,"points_per_game":4.7,"expected_assists":4.72,"selected_by_percent":22},{"id":373,"form":6,"name":"Virgil","team":"Liverpool","bonus":10,"price":6.1,"saves":0,"status":"a","assists":1,"minutes":3420,"position":"Defender","last_name":"van Dijk","red_cards":0,"first_name":"Virgil","photo_code":97032,"team_short":"LIV","clean_sheets":10,"goals_scored":6,"total_points":175,"yellow_cards":4,"expected_goals":3.77,"points_per_game":4.6,"expected_assists":1.44,"selected_by_percent":31.5},{"id":291,"form":7,"name":"Tarkowski","team":"Everton","bonus":12,"price":5.8,"saves":0,"status":"a","assists":3,"minutes":3330,"position":"Defender","last_name":"Tarkowski","red_cards":0,"first_name":"James","photo_code":17761,"team_short":"EVE","clean_sheets":11,"goals_scored":2,"total_points":170,"yellow_cards":8,"expected_goals":2.53,"points_per_game":4.6,"expected_assists":2.1,"selected_by_percent":12.6},{"id":47,"form":4.7,"name":"Rogers","team":"Aston Villa","bonus":17,"price":7.3,"saves":0,"status":"a","assists":8,"minutes":3280,"position":"Midfielder","last_name":"Rogers","red_cards":0,"first_name":"Morgan","photo_code":244850,"team_short":"AVL","clean_sheets":9,"goals_scored":10,"total_points":169,"yellow_cards":7,"expected_goals":6.84,"points_per_game":4.6,"expected_assists":4.32,"selected_by_percent":20.2},{"id":329,"form":2.3,"name":"Wilson","team":"Fulham","bonus":21,"price":5.8,"saves":0,"status":"a","assists":9,"minutes":2674,"position":"Midfielder","last_name":"Wilson","red_cards":0,"first_name":"Harry","photo_code":153682,"team_short":"FUL","clean_sheets":9,"goals_scored":10,"total_points":168,"yellow_cards":7,"expected_goals":5.88,"points_per_game":4.7,"expected_assists":4.77,"selected_by_percent":17.4},{"id":64,"form":12.3,"name":"Watkins","team":"Aston Villa","bonus":26,"price":8.7,"saves":0,"status":"a","assists":4,"minutes":2833,"position":"Forward","last_name":"Watkins","red_cards":0,"first_name":"Ollie","photo_code":178301,"team_short":"AVL","clean_sheets":9,"goals_scored":16,"total_points":167,"yellow_cards":4,"expected_goals":15.4,"points_per_game":4.5,"expected_assists":1.18,"selected_by_percent":13},{"id":74,"form":6.3,"name":"Truffert","team":"Bournemouth","bonus":19,"price":4.8,"saves":0,"status":"a","assists":6,"minutes":3378,"position":"Defender","last_name":"Truffert","red_cards":0,"first_name":"Adrien","photo_code":494521,"team_short":"BOU","clean_sheets":11,"goals_scored":1,"total_points":165,"yellow_cards":5,"expected_goals":1.35,"points_per_game":4.3,"expected_assists":3.07,"selected_by_percent":5.3},{"id":457,"form":0.3,"name":"Casemiro","team":"Man Utd","bonus":20,"price":5.8,"saves":0,"status":"a","assists":4,"minutes":2575,"position":"Midfielder","last_name":"Casimiro","red_cards":1,"first_name":"Carlos Henrique","photo_code":61256,"team_short":"MUN","clean_sheets":9,"goals_scored":9,"total_points":165,"yellow_cards":9,"expected_goals":5.44,"points_per_game":4.9,"expected_assists":3.17,"selected_by_percent":3.8},{"id":1,"form":5,"name":"Raya","team":"Arsenal","bonus":11,"price":6.2,"saves":60,"status":"a","assists":0,"minutes":3330,"position":"Goalkeeper","last_name":"Raya Martín","red_cards":0,"first_name":"David","photo_code":154561,"team_short":"ARS","clean_sheets":19,"goals_scored":0,"total_points":162,"yellow_cards":1,"expected_goals":0,"points_per_game":4.4,"expected_assists":0.07,"selected_by_percent":36.4},{"id":387,"form":4.3,"name":"Szoboszlai","team":"Liverpool","bonus":21,"price":7.1,"saves":0,"status":"a","assists":7,"minutes":3232,"position":"Midfielder","last_name":"Szoboszlai","red_cards":1,"first_name":"Dominik","photo_code":424876,"team_short":"LIV","clean_sheets":9,"goals_scored":6,"total_points":160,"yellow_cards":8,"expected_goals":4.76,"points_per_game":4.4,"expected_assists":6.83,"selected_by_percent":15.1},{"id":411,"form":1.8,"name":"O'Reilly","team":"Man City","bonus":10,"price":5.3,"saves":0,"status":"a","assists":4,"minutes":2643,"position":"Defender","last_name":"O'Reilly","red_cards":0,"first_name":"Nico","photo_code":472769,"team_short":"MCI","clean_sheets":14,"goals_scored":5,"total_points":160,"yellow_cards":5,"expected_goals":6.12,"points_per_game":4.7,"expected_assists":2.67,"selected_by_percent":19.2},{"id":303,"form":2,"name":"Garner","team":"Everton","bonus":13,"price":5.2,"saves":0,"status":"a","assists":7,"minutes":3413,"position":"Midfielder","last_name":"Garner","red_cards":0,"first_name":"James","photo_code":232928,"team_short":"EVE","clean_sheets":11,"goals_scored":2,"total_points":159,"yellow_cards":12,"expected_goals":2.1,"points_per_game":4.2,"expected_assists":6.18,"selected_by_percent":3.6},{"id":16,"form":4,"name":"Saka","team":"Arsenal","bonus":18,"price":10,"saves":0,"status":"a","assists":10,"minutes":2218,"position":"Midfielder","last_name":"Saka","red_cards":0,"first_name":"Bukayo","photo_code":223340,"team_short":"ARS","clean_sheets":12,"goals_scored":7,"total_points":157,"yellow_cards":2,"expected_goals":7.57,"points_per_game":5.1,"expected_assists":7.16,"selected_by_percent":11.6},{"id":237,"form":7.3,"name":"Enzo","team":"Chelsea","bonus":19,"price":6.5,"saves":0,"status":"a","assists":5,"minutes":3114,"position":"Midfielder","last_name":"Fernández","red_cards":0,"first_name":"Enzo","photo_code":448047,"team_short":"CHE","clean_sheets":8,"goals_scored":10,"total_points":157,"yellow_cards":10,"expected_goals":11.26,"points_per_game":4.4,"expected_assists":7.26,"selected_by_percent":12.3},{"id":257,"form":1.5,"name":"Lacroix","team":"Crystal Palace","bonus":11,"price":5.2,"saves":0,"status":"a","assists":2,"minutes":3085,"position":"Defender","last_name":"Lacroix","red_cards":1,"first_name":"Maxence","photo_code":437499,"team_short":"CRY","clean_sheets":11,"goals_scored":1,"total_points":154,"yellow_cards":4,"expected_goals":2.45,"points_per_game":4.4,"expected_assists":0.83,"selected_by_percent":7.1},{"id":407,"form":2,"name":"Matheus N.","team":"Man City","bonus":16,"price":5.3,"saves":0,"status":"a","assists":8,"minutes":2861,"position":"Defender","last_name":"Nunes","red_cards":0,"first_name":"Matheus","photo_code":465351,"team_short":"MCI","clean_sheets":12,"goals_scored":1,"total_points":154,"yellow_cards":5,"expected_goals":0.34,"points_per_game":4.5,"expected_assists":2.23,"selected_by_percent":2.9},{"id":488,"form":3.7,"name":"Bruno G.","team":"Newcastle","bonus":22,"price":6.9,"saves":0,"status":"a","assists":7,"minutes":2456,"position":"Midfielder","last_name":"Guimarães Rodriguez Moura","red_cards":0,"first_name":"Bruno","photo_code":208706,"team_short":"NEW","clean_sheets":6,"goals_scored":9,"total_points":154,"yellow_cards":6,"expected_goals":5.59,"points_per_game":5.3,"expected_assists":4.96,"selected_by_percent":6.5},{"id":242,"form":3,"name":"Dewsbury-Hall","team":"Everton","bonus":18,"price":5.3,"saves":0,"status":"a","assists":7,"minutes":2629,"position":"Midfielder","last_name":"Dewsbury-Hall","red_cards":0,"first_name":"Kiernan","photo_code":215413,"team_short":"EVE","clean_sheets":8,"goals_scored":8,"total_points":151,"yellow_cards":6,"expected_goals":4.35,"points_per_game":4.9,"expected_assists":5.34,"selected_by_percent":7.9},{"id":694,"form":4,"name":"Mukiele","team":"Sunderland","bonus":11,"price":4.6,"saves":0,"status":"a","assists":5,"minutes":2784,"position":"Defender","last_name":"Mukiele","red_cards":0,"first_name":"Nordi","photo_code":200834,"team_short":"SUN","clean_sheets":9,"goals_scored":3,"total_points":151,"yellow_cards":5,"expected_goals":1.62,"points_per_game":4.7,"expected_assists":2.65,"selected_by_percent":8.7}]},"meta":{"timestamp":"2026-06-08T01:18:34.068Z","request_id":"c5c17673-fd54-4558-acc0-aa84460ea508"},"status":"ok","message":"Players retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/teams":{"get":{"operationId":"get_v1_teams","tags":["FPL"],"summary":"The 20 Premier League clubs","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"count":20,"teams":[{"id":1,"won":0,"code":3,"lost":0,"name":"Arsenal","drawn":0,"played":0,"points":0,"position":1,"strength":5,"short_name":"ARS","strength_overall_away":1355,"strength_overall_home":1305},{"id":2,"won":0,"code":7,"lost":0,"name":"Aston Villa","drawn":0,"played":0,"points":0,"position":4,"strength":3,"short_name":"AVL","strength_overall_away":1230,"strength_overall_home":1135},{"id":3,"won":0,"code":90,"lost":0,"name":"Burnley","drawn":0,"played":0,"points":0,"position":19,"strength":2,"short_name":"BUR","strength_overall_away":1045,"strength_overall_home":975},{"id":4,"won":0,"code":91,"lost":0,"name":"Bournemouth","drawn":0,"played":0,"points":0,"position":6,"strength":3,"short_name":"BOU","strength_overall_away":1235,"strength_overall_home":1150},{"id":5,"won":0,"code":94,"lost":0,"name":"Brentford","drawn":0,"played":0,"points":0,"position":9,"strength":3,"short_name":"BRE","strength_overall_away":1215,"strength_overall_home":1135},{"id":6,"won":0,"code":36,"lost":0,"name":"Brighton","drawn":0,"played":0,"points":0,"position":8,"strength":4,"short_name":"BHA","strength_overall_away":1250,"strength_overall_home":1170},{"id":7,"won":0,"code":8,"lost":0,"name":"Chelsea","drawn":0,"played":0,"points":0,"position":10,"strength":3,"short_name":"CHE","strength_overall_away":1195,"strength_overall_home":1190},{"id":8,"won":0,"code":31,"lost":0,"name":"Crystal Palace","drawn":0,"played":0,"points":0,"position":15,"strength":3,"short_name":"CRY","strength_overall_away":1185,"strength_overall_home":1160},{"id":9,"won":0,"code":11,"lost":0,"name":"Everton","drawn":0,"played":0,"points":0,"position":13,"strength":3,"short_name":"EVE","strength_overall_away":1160,"strength_overall_home":1135},{"id":10,"won":0,"code":54,"lost":0,"name":"Fulham","drawn":0,"played":0,"points":0,"position":11,"strength":3,"short_name":"FUL","strength_overall_away":1200,"strength_overall_home":1105},{"id":11,"won":0,"code":2,"lost":0,"name":"Leeds","drawn":0,"played":0,"points":0,"position":14,"strength":3,"short_name":"LEE","strength_overall_away":1205,"strength_overall_home":1100},{"id":12,"won":0,"code":14,"lost":0,"name":"Liverpool","drawn":0,"played":0,"points":0,"position":5,"strength":4,"short_name":"LIV","strength_overall_away":1250,"strength_overall_home":1180},{"id":13,"won":0,"code":43,"lost":0,"name":"Man City","drawn":0,"played":0,"points":0,"position":2,"strength":4,"short_name":"MCI","strength_overall_away":1355,"strength_overall_home":1265},{"id":14,"won":0,"code":1,"lost":0,"name":"Man Utd","drawn":0,"played":0,"points":0,"position":3,"strength":4,"short_name":"MUN","strength_overall_away":1250,"strength_overall_home":1180},{"id":15,"won":0,"code":4,"lost":0,"name":"Newcastle","drawn":0,"played":0,"points":0,"position":12,"strength":3,"short_name":"NEW","strength_overall_away":1205,"strength_overall_home":1120},{"id":16,"won":0,"code":17,"lost":0,"name":"Nott'm Forest","drawn":0,"played":0,"points":0,"position":16,"strength":3,"short_name":"NFO","strength_overall_away":1165,"strength_overall_home":1125},{"id":17,"won":0,"code":56,"lost":0,"name":"Sunderland","drawn":0,"played":0,"points":0,"position":7,"strength":3,"short_name":"SUN","strength_overall_away":1150,"strength_overall_home":1055},{"id":18,"won":0,"code":6,"lost":0,"name":"Spurs","drawn":0,"played":0,"points":0,"position":17,"strength":3,"short_name":"TOT","strength_overall_away":1120,"strength_overall_home":1120},{"id":19,"won":0,"code":21,"lost":0,"name":"West Ham","drawn":0,"played":0,"points":0,"position":18,"strength":3,"short_name":"WHU","strength_overall_away":1130,"strength_overall_home":1095},{"id":20,"won":0,"code":39,"lost":0,"name":"Wolves","drawn":0,"played":0,"points":0,"position":20,"strength":2,"short_name":"WOL","strength_overall_away":1060,"strength_overall_home":975}]},"meta":{"timestamp":"2026-06-08T01:18:34.150Z","request_id":"f9d3188d-1468-49dc-9cde-ebeb54420013"},"status":"ok","message":"Teams retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Service description & endpoints","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"service":"fpl-api","endpoints":{"GET /v1/meta":"This document.","GET /v1/teams":"The 20 clubs.","GET /v1/player":"A single player with history & upcoming fixtures (id=).","GET /v1/players":"Players (search=, team=, position=, sort=total_points|form|now_cost|…, limit=).","GET /v1/fixtures":"Fixtures & results (gameweek=, future=1).","GET /v1/gameweeks":"All gameweeks with deadlines."},"description":"Official Fantasy Premier League (FPL) data: all players with prices, total points, form, ownership and underlying stats; the 20 Premier League clubs with their league record; fixtures and results; gameweeks with deadlines and average scores; and per-player detail with recent history and upcoming fixtures. Real data, no key."},"meta":{"timestamp":"2026-06-08T01:18:34.235Z","request_id":"9238a830-f516-4188-8f79-2f9ede2a9d78"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":10000,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":500,"monthly_call_quota":135000,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2400,"monthly_call_quota":690000,"rps_limit":25,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":8000,"monthly_call_quota":3250000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/fpl-api"}