Transfermarkt APItransfermarkt.com ↗
Access Transfermarkt data via API: player profiles, transfer histories, market value timelines, club squads, performance stats, and referee info across 10 endpoints.
What is the Transfermarkt API?
The Transfermarkt API exposes 10 endpoints covering football player profiles, transfer histories, market value timelines, club squad data, and referee career statistics. get_top_market_values returns ranked summaries for the 500 most valuable players worldwide — no parameters required. get_player_page_data consolidates profile, transfers, market value history, and current season performance into a single response, reducing round-trips for player-focused applications.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/2409cb57-5fc7-4e67-b750-07a9a68d7c70/get_top_market_values' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace transfermarkt-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Transfermarkt API — search players, explore profiles, transfers, and club squads."""
from parse_apis.Transfermarkt_API import Transfermarkt, NotFound
client = Transfermarkt()
# Search for players by name — limit caps total items fetched across pages
for player in client.player_summaries.search(query="Haaland", limit=3):
print(player.name, player.position, player.market_value)
# Drill into first match's full profile via the details navigation
summary = client.player_summaries.search(query="Haaland", limit=1).first()
if summary:
full = summary.details()
print(full.name, full.position, full.height, full.preferred_foot)
# Walk a player's transfer history via sub-resource
player = client.player(id="418560")
for transfer in player.transfers.list(limit=5):
print(transfer.from_club_name, "→", transfer.to_club_name, transfer.fee)
# Club squad — get club info then list squad members
club = client.clubs.get(id="281")
for sp in club.squad.list(limit=5):
print(sp.name, sp.position, sp.market_value)
# Typed error handling
try:
client.players.get(id="9999999999")
except NotFound as exc:
print(f"Player not found: {exc}")
print("exercised: player_summaries.search / details / players.get / transfers.list / clubs.get / squad.list")
Fetches the top 500 most valuable football players worldwide from Transfermarkt's ranking. Results are pre-sorted by descending market value. Internally paginates 20 pages of 25 players each, returning a complete ranked list in one call. Each player includes rank, name, position, age, nationality, current club, market value as display string (e.g. '€200.00m') and as integer euros. No input parameters required — always returns the full top-500 list. Useful for discovering player IDs for use with other endpoints.
No input parameters required.
{
"type": "object",
"fields": {
"players": "array of player summary objects with id, rank, name, position, age, nationality, club_id, club, market_value, market_value_euros, portrait_url, profile_url",
"total_players": "integer count of players returned (500)"
}
}About the Transfermarkt API
Player Data
get_player_profile returns personal attributes (date of birth, height, nationality, full legal name), current position, and a structured market_value object with current, previous, highest, and delta sub-fields, plus contract and club assignment details. Supply a numeric player_id string to any player endpoint. search_players accepts a query string for full-text or partial-name lookup and returns paginated results (10 per page) including club, position, age, and market_value per match. total_hits and total_pages are returned alongside results to support pagination via the page parameter.
Transfers and Market Value History
get_player_transfers returns the complete transfer log for a player: each entry includes from/to club info, fee, season, age_at_transfer, and market_value_at_transfer. A fee_sum field aggregates total fees across all moves. get_player_market_value_history returns all historical assessments as an array of entries with value, currency, date, and club_id at each point in time, plus a current_value object for the most recent assessment. This makes it straightforward to plot a player's valuation curve over their career.
Club and Squad Endpoints
get_club_info returns squad composition metrics including size, average_age, average_market_value, and total_market_value, alongside club metadata like crest_url, short_name, and club_url. get_club_squad returns a full player list with per-player shirt_number, contract_until, position, market_value, and portrait_url. Note that get_club_squad makes multiple internal calls to hydrate player-level details, so response times are longer than single-entity endpoints.
Performance Stats and Referee Data
get_player_stats returns per-competition breakdowns for the current season via a performance_data array with fields including gamesPlayed, goalsScored, assists, yellowCards, and redCards. The endpoint also attempts to return season_stats and career_totals from an alternate source, though those fields may be empty depending on page structure at the time of the request. get_referee_info covers referee career statistics with career_totals (appearances, cards, penalties) and a competition_stats array broken down by competition — a niche dataset not commonly available through other football data sources.
The Transfermarkt API is a managed, monitored endpoint for transfermarkt.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when transfermarkt.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official transfermarkt.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a player valuation dashboard using market_value_history entries to chart value over time per club
- Populate a transfer news feed by polling get_player_transfers for recent fee and club movement data
- Compare squad depth across clubs using get_club_info total_market_value and average_age fields
- Power a player search autocomplete using search_players with partial name queries and total_hits for result counts
- Generate referee performance reports using get_referee_info career_totals and per-competition card statistics
- Build a season performance tracker using get_player_stats performance_data for goals, assists, and minutes by competition
- Rank the top 500 players by market value using get_top_market_values without any query parameters
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.