Transfermarkt APItransfermarkt.de ↗
Access Transfermarkt player profiles, transfer histories, club squads, market values, and competition stats via a structured JSON API.
What is the Transfermarkt API?
The Transfermarkt API exposes 8 endpoints covering football player profiles, transfer histories, club squads, and competition-level statistics from transfermarkt.de. The get_player_profile endpoint returns market value history, contract details, physical attributes, and club assignments by numeric player ID. Use get_competition_transfers to pull every transfer in a given league and season, or get_manager_profile for full coaching histories with tenure and agent data.
curl -X GET 'https://api.parse.bot/scraper/f9c987bb-681c-471d-a7f7-342ac6c0016b/search?query=Messi' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for players, clubs, and managers by name on Transfermarkt. Returns matching players (with Transfermarkt IDs and names), clubs (with IDs and names), and managers/coaches (with IDs and names). Results are ranked by relevance. Use player IDs with get_player_profile or get_player_transfers; use club IDs with get_club_squad; use manager IDs with get_manager_profile.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search keyword — a player name, club name, or manager name to search for. |
{
"type": "object",
"fields": {
"clubs": "array of club search result objects each with name (string) and id (string)",
"players": "array of player search result objects each with name (string) and id (string)",
"managers": "array of manager/coach search result objects each with name (string) and id (string)"
},
"sample": {
"data": {
"clubs": [
{
"id": "1104",
"name": "ACR Messina"
}
],
"players": [
{
"id": "28003",
"name": "Lionel Messi"
}
]
},
"status": "success"
}
}About the Transfermarkt API
Player and Manager Data
The get_player_profile endpoint takes a numeric player_id (e.g. '28003' for Messi) and returns a detailed object including lifeDates (age, date of birth), attributes (height, preferred foot, position, contract expiry), clubAssignments with shirt number and role, and marketValueDetails with current, previous, and peak market value. The get_player_transfers endpoint returns a history object with terminated and pending sub-arrays — each transfer record includes source and destination club IDs, competition context, fee, and date — plus a mostRecentTransfer field for quick lookup. The get_manager_profile endpoint returns biographical data, current club and role, coaching license, average tenure, agent name, and a full chronological list of clubs managed.
Squad and Competition Endpoints
The get_club_squad endpoint accepts a club_id and optional season (4-digit start year, e.g. '2024' for 2024/25) and returns each player's id, name, shirt number, position, age, nationality array, and market value. Omitting season returns the current squad. The get_competition_transfers endpoint takes a competition_id such as 'GB1' for the Premier League or 'L1' for the Bundesliga, plus an optional season, and returns all transfers in that window with player name and ID, source and destination club names, fee, date, and consultant agency where available.
Search and Discovery
The search endpoint accepts a single query string and returns three arrays: players, clubs, and managers — each with a name and Transfermarkt id. Those IDs feed directly into get_player_profile, get_club_squad, and get_manager_profile. The get_most_viewed_players endpoint requires no parameters and returns a live snapshot of the top 10 trending players on Transfermarkt, each with a full profile object including market value and position. The get_competition_penalty_takers endpoint groups penalty statistics by club, exposing per-player totals for penalties taken, scored, missed, and success rate.
The Transfermarkt API is a managed, monitored endpoint for transfermarkt.de — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when transfermarkt.de 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.de 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?+
- Track a player's market value trend over time using
marketValueDetailsfromget_player_profile - Build a transfer activity feed for a league season using
get_competition_transferswith acompetition_idandseason - Populate a club squad page with shirt numbers, positions, ages, and market values from
get_club_squad - Aggregate coaching career data including average tenure and clubs managed from
get_manager_profile - Monitor trending football players by polling
get_most_viewed_playersfor the current top 10 - Analyze penalty conversion rates by club and player for a given league using
get_competition_penalty_takers - Resolve player or club names to Transfermarkt IDs for downstream lookups using the
searchendpoint
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Transfermarkt have an official developer API?+
What does `get_player_transfers` return, and does it include loan moves?+
history object with terminated and pending sub-arrays. Each record includes source and destination club IDs, transfer fee, date, and competition context. Transfer type (permanent vs. loan) is represented in the record data where Transfermarkt distinguishes it.Which competitions are supported by `get_competition_transfers` and `get_competition_penalty_takers`?+
'GB1' (Premier League), 'L1' (Bundesliga), 'IT1' (Serie A), and 'ES1' (La Liga). Other Transfermarkt competition IDs follow the same format and can be obtained via the search endpoint or Transfermarkt URLs. Coverage depends on what Transfermarkt tracks for each competition.Does the API return historical squad data, such as a club's squad from several seasons ago?+
get_club_squad endpoint accepts a season parameter (4-digit start year), so historical seasons are accessible as far back as Transfermarkt's records go. However, there is no dedicated endpoint for comparing squad changes across multiple seasons in a single call. You can fork this API on Parse and revise it to add a multi-season comparison endpoint.