Changelog¶
All notable changes to this project are documented here. The format follows Keep a Changelog, and the project uses Semantic Versioning. While the version is 0.x, minor releases may contain breaking changes; they are always listed under Changed.
0.3.1 - 2026-10-03¶
Fixed¶
- README examples now create the client with
output="dataframe"before using pandas methods, sincerecordsbecame the default in 0.3.0. - The
members/statsendpoint notes count positions from the cleanedpositioncolumn, with no pandas needed.
0.3.0 - 2026-10-03¶
Changed¶
- Breaking: the default output is now
records. In 0.2.0 the default wasdataframe, soFC27API().get_club_matches(...)raisedImportErroron a plainpip install fc-clubs-api. Methods now return lists of dicts unless asked otherwise. For DataFrames, installfc-clubs-api[pandas]and passoutput="dataframe"per call or set it once withFC27API(output="dataframe").
0.2.0 - 2026-10-03¶
The client is now a proper package with three output formats, decoded match events and full documentation.
Added¶
- Output formats. Every data method takes
output="raw" | "records" | "dataframe"(orOutputFormat.RAW/RECORDS/DATAFRAME), with a client-wide default viaFC27API(output=...).rawreturns EA's JSON untouched;recordsreturns typed, flat dicts without needing pandas;dataframeis the 0.1 behaviour and the default. - Current-season leaderboard.
search_club_by_name(scope="current_season")usescurrentSeasonLeaderboard/search.max_result_count=passes EA'smaxResultCount. - Match events.
get_match_players(include_events=True)adds 85 stats decoded frommatch_event_aggregate_*(pass direction/length, possession won by third, positioning, feedback, ...).fc_clubs_api.eventsexposesparse_event_aggregates,decode_eventsand theEVENT_STATStable. Mappings from the EA FC Pro Clubs API research project. - Crests and images.
crestUrlin search, club details and matches (opponentCrestUrltoo).fc_clubs_api.assetsbuilds crest, division badge and reputation tier URLs and converts kit colours to hex. - New columns:
reputationTier,promotions,relegations(search),reputationTier(overall stats),crestAssetId(details),playerId(match players). get_member_career_stats(all_columns=...),get_playoff_achievements(output=...).- Specific exceptions:
FC27HTTPError(.status_code),FC27ConnectionError,FC27ResponseError(all subclassFC27APIError),ClubNotFoundErrorandAmbiguousClubError(.candidates, both subclassValueError). - Enums
MatchType,LeaderboardScope,Platform(allstrsubclasses). FC27API(headers=...)to add or override HTTP headers.fc-clubscommand line tool (python -m fc_clubs_api).- Type hints throughout and a
py.typedmarker. - Documentation site (MkDocs), CI on Python 3.9–3.14 with and without pandas, ruff, release workflow.
Changed¶
- Breaking: pandas is now optional.
pip install fc-clubs-apino longer installs pandas. Installfc-clubs-api[pandas]to keep DataFrame output (still the default); without it, DataFrame calls raiseImportErrorwith the install command. - Breaking:
get_member_career_statsnow returns curated, renamed columns by default (ratingAve→averageRating,favoritePosition→position). Passall_columns=Truefor the previous output. - Breaking:
MATCH_TYPES,COLUMNS,to_dataframeandpick_columnsare no longer importable fromfc_clubs_api; useMatchTypeandall_columns=True. - The package moved to a
src/layout.from fc_clubs_api import FC27APIis unchanged. - Minimum pandas version is 2.0.
- On Windows,
tzdatais installed for timezone support.
Removed¶
requirements.txt(dependencies live inpyproject.toml).
0.1.1 - 2026-10-02¶
Changed¶
- README links are absolute so they work on PyPI.
0.1.0 - 2026-10-02¶
First release: FC27API with club search, details, overall stats, member and career
stats, matches and per-player match stats as pandas DataFrames.