Documentation / Clubs
FOOTBALL CLUB FORM API
FormComplimentary keyMCP tool
club_formThe last results of a club, newest first, with a summary of goals, clean sheets and points. On the complimentary key it reads this season's Premier League.
GET
/v1/clubs/{club_id}/formTRY ITComplimentary
Kept in this browser for every docs page. No key yet? Get a free key
GET https://api.footballapi.org/v1/clubs/cl_4x2bczxvv/form?last=5The answer appears below, with its status and time.
curl "https://api.footballapi.org/v1/clubs/cl_4x2bczxvv/form?last=5" \ -H "X-API-Key: your key"
PARAMETERS
club_idrequiredstringA club id from any match, table or club list, such as cl_a7vhnxhhh. In the path.lastintegerHow many matches, newest first. Default 5.From 1 to 50RETURNS
club_idstringOur id for the club, cl_ and 9 characters, the same in every answer and for goodclub_namestringThe clublastintegerHow many matches the form coversformstringThe results, newest first: W, D or L for each matchsummaryobjectThe matches counted, in figuressummary.playedintegerMatches countedsummary.wonintegerMatches wonsummary.drawnintegerMatches drawnsummary.lostintegerMatches lostsummary.goals_forintegerGoals scoredsummary.goals_againstintegerGoals let insummary.clean_sheetsintegerMatches without letting one insummary.failed_to_scoreintegerMatches without scoringsummary.goal_differenceintegerGoals scored less goals let insummary.pointsintegerThree for a win, one for a drawsummary.win_pctintegerShare of the matches won, as a percentagesummary.goals_per_gamenumberGoals scored a match, on averagesummary.conceded_per_gamenumberGoals let in a match, on averagehomeobjectThe home sidehome.playedintegerMatches countedhome.wonintegerMatches wonhome.drawnintegerMatches drawnhome.lostintegerMatches losthome.goals_forintegerGoals scoredhome.goals_againstintegerGoals let inhome.clean_sheetsintegerMatches without letting one inhome.failed_to_scoreintegerMatches without scoringhome.goal_differenceintegerGoals scored less goals let inhome.pointsintegerThree for a win, one for a drawhome.win_pctnumberShare of the matches won, as a percentagehome.goals_per_gamenumberGoals scored a match, on averagehome.conceded_per_gamenumberGoals let in a match, on averageawayobjectThe away sideaway.playedintegerMatches countedaway.wonintegerMatches wonaway.drawnintegerMatches drawnaway.lostintegerMatches lostaway.goals_forintegerGoals scoredaway.goals_againstintegerGoals let inaway.clean_sheetsintegerMatches without letting one inaway.failed_to_scoreintegerMatches without scoringaway.goal_differenceintegerGoals scored less goals let inaway.pointsintegerThree for a win, one for a drawaway.win_pctintegerShare of the matches won, as a percentageaway.goals_per_gameintegerGoals scored a match, on averageaway.conceded_per_gameintegerGoals let in a match, on averagematcheslistMatches countedmatches[].match_idstringOur id for the match, mt_ and 9 characters, the same in every answer and for goodmatches[].kickoff_datestringThe day of kickoff in UTC, YYYY-MM-DDmatches[].competition_namestringThe competition as people write itmatches[].venuestringhome or away when the table counts only those; null for bothmatches[].opponent_idstringOur id for the other clubmatches[].opponent_namestringThe other clubmatches[].goals_forintegerGoals scoredmatches[].goals_againstintegerGoals let inmatches[].outcomestringwon, drawn or lost, for the club the answer is aboutEXAMPLE ANSWER
200GET /v1/clubs/cl_4x2bczxvv/form?last=5, taken 21 Oct 2026, first rows shown
{ "data": { "club_id": "cl_4x2bczxvv", "club_name": "Tottenham", "last": 5, "form": "WDLLD", "summary": { "played": 5, "won": 1, "drawn": 2, "lost": 2, "goals_for": 7, "goals_against": 8, "clean_sheets": 1, "failed_to_score": 1, "goal_difference": -1, "points": 5, "win_pct": 20, "goals_per_game": 1.4, "conceded_per_game": 1.6 }, "home": { "played": 3, "won": 1, "drawn": 1, "lost": 1, "goals_for": 5, "goals_against": 4, "clean_sheets": 1, "failed_to_score": 1, "goal_difference": 1, "points": 4, "win_pct": 33.3, "goals_per_game": 1.67, "conceded_per_game": 1.33 }, "away": { "played": 2, "won": 0, "drawn": 1, "lost": 1, "goals_for": 2, "goals_against": 4, "clean_sheets": 0, "failed_to_score": 0, "goal_difference": -2, "points": 1, "win_pct": 0, "goals_per_game": 1, "conceded_per_game": 2 }, "matches": [ { "match_id": "mt_95kf4jw9a", "kickoff_date": "2026-10-19", "competition_name": "Premier League", "venue": "home", "opponent_id": "cl_frt0n2e46", "opponent_name": "Coventry", "goals_for": 3, "goals_against": 1, "outcome": "won" }, { "match_id": "mt_9g56fvmwj", "kickoff_date": "2026-10-10", "competition_name": "Premier League", "venue": "away", "opponent_id": "cl_3pekhsfp3", "opponent_name": "Manchester United", "goals_for": 1, "goals_against": 1, "outcome": "drawn" }, { "match_id": "mt_74kh014pt", "kickoff_date": "2026-09-19", "competition_name": "Premier League", "venue": "home", "opponent_id": "cl_7me91q2ds", "opponent_name": "Aston Villa", "goals_for": 2, "goals_against": 3, "outcome": "lost" } ] }, "meta": { "request_id": "req_9b43d0b398031906" } }
ERRORS
401unauthorizedNo key, or a key we do not know.400bad_requestA parameter is missing or not in the right form; the message names it.403upgrade_requiredAnything outside this season's Premier League, on the complimentary key.404not_foundAn id or competition we do not have.422unknown_parameterA parameter this endpoint does not take.429quota_exceededThe day's 50 calls are used, on the complimentary key; they reset at 00:00 UTC.