Transfermarkt API: Get a football player's market value and transfers
Finds a football player on Transfermarkt by name (a club picks among namesakes) and returns the current and highest market values, the value history and the transfer history, in euros.
Unofficial. Not affiliated with or endorsed by Transfermarkt.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Club optional
club Current club to distinguish players, for example Real Madrid.
CF Montréal
Default
.- Player, required
player Football player name, for example Jude Bellingham.
Alexis Sanchez
Input as JSON
{ "club": "CF Montréal", "player": "Alexis Sanchez"}Output
{ "age": 37, "link": "https://www.transfermarkt.com/alexis-sanchez/profil/spieler/40433" , "name": "Alexis Sánchez", "currency": "EUR", "position": "Second Striker", "photo_url": "https://img.a.transfermarkt.technology/portrait/big/40433-1759840737.jpg?lm=4711" , "player_id": "40433", "transfers": [ { "fee": null, "date": "2026-08-11", "link": "https://www.transfermarkt.com/alexis-sanchez/transfers/spieler/40433/transfer_id/6495807" , "season": "26/27" , "to_club": "Montréal", "from_club": "Sevilla FC", "fee_as_shown": "free transfer" }, { "fee": null, "date": "2025-09-01", "link": "https://www.transfermarkt.com/alexis-sanchez/transfers/spieler/40433/transfer_id/5912040" , "season": "25/26" , "to_club": "Sevilla FC", "from_club": "Udinese", "fee_as_shown": "free transfer" }, { "fee": null, "date": "2024-08-10", "link": "https://www.transfermarkt.com/alexis-sanchez/transfers/spieler/40433/transfer_id/5186556" , "season": "24/25" , "to_club": "Udinese", "from_club": "Inter", "fee_as_shown": "free transfer" } ], "nationality": "Chile", "current_club": "CF Montréal", "value_history": [ { "club": "CSD Colo-Colo", "date": "2006-12-29", "value": 50000 }, { "club": "CA River Plate", "date": "2007-09-24", "value": 2750000 }, { "club": "CA River Plate", "date": "2008-03-31", "value": 3400000 } ], "contract_end_date": "2027-06-30", "current_market_value": 1000000, "highest_market_value": 70000000, "highest_market_value_date": "2018-01-02"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"transfermarkt.com/get_player_value","input":{"club":"CF Montréal","player":"Alexis Sanchez"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "transfermarkt.com/get_player_value" , "input": { "club": "CF Montréal", "player": "Alexis Sanchez" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "transfermarkt.com/get_player_value" , "input": { "club": "CF Montréal", "player": "Alexis Sanchez" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run transfermarkt.com/get_player_value# with {"club":"CF Montréal","player":"Alexis Sanchez"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "player" ], "properties": { "club": { "type": "string", "default": "", "description": "Current club to distinguish players, for example Real Madrid." }, "player": { "type": "string", "description": "Football player name, for example Jude Bellingham." } }}Output schema
{ "type": "object", "required": [ "name", "current_club", "position", "age", "nationality", "contract_end_date", "currency", "current_market_value", "highest_market_value", "highest_market_value_date", "photo_url", "link", "player_id", "value_history", "transfers" ], "properties": { "age": { "type": [ "integer", "null" ], "description": "Age in years." }, "link": { "type": "string", "description": "Transfermarkt player page link." }, "name": { "type": "string", "description": "Player name." }, "currency": { "type": "string", "description": "Currency for all values and fees (EUR)." }, "position": { "type": [ "string", "null" ], "description": "Playing position." }, "photo_url": { "type": [ "string", "null" ], "description": "Player photo image link." }, "player_id": { "type": "string", "description": "Transfermarkt player ID." }, "transfers": { "type": "array", "items": { "type": "object", "required": [ "date", "season", "from_club", "to_club", "fee", "fee_as_shown", "link" ], "properties": { "fee": { "type": [ "number", "null" ], "description": "Fee in euros, if numeric." }, "date": { "type": [ "string", "null" ], "description": "Transfer date (YYYY-MM-DD)." }, "link": { "type": [ "string", "null" ], "description": "Transfer page link." }, "season": { "type": [ "string", "null" ], "description": "Season label." }, "to_club": { "type": [ "string", "null" ], "description": "Destination club." }, "from_club": { "type": [ "string", "null" ], "description": "Previous club." }, "fee_as_shown": { "type": [ "string", "null" ], "description": "Displayed fee, including loan, free transfer or undisclosed labels." } } }, "description": "Transfers, newest first." }, "nationality": { "type": [ "string", "null" ], "description": "Citizenship or nationalities." }, "current_club": { "type": [ "string", "null" ], "description": "Current club." }, "value_history": { "type": "array", "items": { "type": "object", "required": [ "date", "club", "value" ], "properties": { "club": { "type": [ "string", "null" ], "description": "Club at the value date." }, "date": { "type": [ "string", "null" ], "description": "Value date (YYYY-MM-DD)." }, "value": { "type": [ "number", "null" ], "description": "Market value in euros." } } }, "description": "Market values, oldest first." }, "contract_end_date": { "type": [ "string", "null" ], "description": "Contract end date (YYYY-MM-DD)." }, "current_market_value": { "type": [ "number", "null" ], "description": "Current market value in euros." }, "highest_market_value": { "type": [ "number", "null" ], "description": "Highest market value in euros." }, "highest_market_value_date": { "type": [ "string", "null" ], "description": "Date of highest market value (YYYY-MM-DD)." } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
transfermarkt.com/get_player_value- Returns
- name, club, position, age, nationality, contract end, current and highest market value, value history, transfers, photo, link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method transfermarkt.com/get_player_value with the inputs above.
Ask your agent
- What's Bukayo Saka's current market value and how has it changed over the years?
- Show me the transfer history of Victor Osimhen, including fees paid by each club
- Look up Pedri on transfermarkt — I need his highest-ever valuation and when his contract with Barcelona ends
- Rodri from Manchester City: current value in euros, age, nationality and every move he's made
- Pull the transfermarkt profile for Lautaro Martínez at Inter, with his value history chart data and past transfers
See more
All Transfermarkt methodsFinds a football club on Transfermarkt by name, link or ID and returns its squad for a season with each player's position, age, nationality, market value and contract, highest value first.
transfermarkt.com/get_club_squadLooks up a Premier League player by name and returns the profile and either career totals or the stats for a chosen season. If names clash, a current Premier League player is preferred.
premierleague.com/get_player_statsGets a football player's season statistics on SofaScore by name, with an optional competition and season (defaults: the player's main league and the current season). Unavailable statistics are null.
sofascore.com/get_player_season_statsGets a named NFL player's season and career stats, with profile details. Active players are preferred when names match.
nfl.com/get_player_statsLooks up an NBA player by name, including retired players, and returns the bio and regular-season per-game averages for the reported season and career.
nba.com/get_playerLooks up a Yahoo Sports player by name and returns the player's regular-season statistics for a season, alongside career totals. Each stat includes season and career values.
sports.yahoo.com/get_player_statsFinds a player on Basketball, Pro Football, Baseball or Hockey Reference and returns regular-season career statistics, awards and a season-by-season record.
sports-reference.com/get_player_careerLooks up an NHL player by name, link or ID and returns the profile with regular-season stats for a season and career totals.
nhl.com/get_player_stats