Transfermarkt APItransfermarkt.de ↗
Access Transfermarkt player profiles, transfer histories, club squads, competition transfers, and manager data via a clean REST API. 10 endpoints.
What is the Transfermarkt API?
The Transfermarkt API exposes 10 endpoints covering football player profiles, full transfer histories, club squad rosters, competition-level market values, and manager career data sourced from transfermarkt.de. The get_player_profile endpoint returns over a dozen fields per player including market value history, contract expiry, preferred foot, and current club ID. Companion endpoints like get_competition_clubs and get_competition_transfers give season-by-season views across major European leagues.
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. A query that matches nothing returns three empty arrays. 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 accepts a numeric Transfermarkt player_id and returns a structured object with fields including age, position, country (German locale), lifeDates.dateOfBirth, attributes.height, attributes.preferredFoot, attributes.contractUntil, and the current club_id — which feeds directly into get_club_squad. The get_player_transfers endpoint returns the full transfer history object with terminated and pending sub-arrays, each record carrying source and destination club IDs, competition context, fees, and dates, plus a mostRecentTransfer shortcut field. For managers, get_manager_profile accepts a manager_id and returns biographical fields (birthplace, nationality, avg_tenure), career aggregates (career_wins, career_draws, career_games), and a full coaching history per stint.
Club and Competition Endpoints
get_club_squad takes a club_id and optional season (4-digit start year, e.g. '2024' for 2024/25) and returns every squad player with number, position, age, nationality array, and market_value. get_competition_clubs covers the same season parameter but returns one row per club within a competition, including squad_size, average_age, foreigners, and per-club total_market_value, plus the competition-wide total_market_value. The competition_id parameter follows Transfermarkt's own codes: GB1 for the Premier League, L1 for the Bundesliga, ES1 for La Liga, IT1 for Serie A.
Search and Trending Data
The search endpoint accepts a free-text query and returns three separate arrays — players, clubs, and managers — each with name and id fields that can be passed directly to the profile endpoints. get_most_viewed_players requires no parameters and returns a snapshot of the top 10 trending players on Transfermarkt with full profile detail, useful for tracking market attention. get_competition_penalty_takers returns per-player penalty statistics (taken, scored, missed, success_rate) grouped by club for the current season of a given competition.
Locale and Freshness Notes
Several string fields — country names, market values, average age, tenure — are returned in German locale format as they appear on Transfermarkt (e.g. Argentinien, 28,00 Mio. €). Squad and competition endpoints default to the current season when the season parameter is omitted. Early in a new season, competition statistics like get_competition_penalty_takers may return sparse data as fixtures accumulate.
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 and contract expiry for scouting or fantasy football tools using
get_player_profile. - Build a transfer timeline visualization by pulling full transfer history per player with
get_player_transfers. - Compare squad depth and average market value across all Premier League clubs for a given season with
get_competition_clubs. - Populate a club squad page with shirt numbers, positions, and nationalities using
get_club_squad. - Audit penalty-taking trends across a competition using club-grouped stats from
get_competition_penalty_takers. - Reconstruct a manager's career timeline including tenures, clubs, and win rates via
get_manager_profile. - Monitor in-season transfer activity for a league by polling
get_competition_transferswith a season parameter.
| 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 public developer API?+
What does `get_player_profile` return for a player with no current club?+
club field returns an empty string and club_id returns an empty string as well. The remaining profile fields — age, position, nationality, market value history, and contract details — are still returned where available.Which competitions are supported by the competition endpoints?+
competition_id parameter accepts Transfermarkt's own codes. Documented examples include GB1 (Premier League), L1 (Bundesliga), ES1 (La Liga), IT1 (Serie A), and FR1 (Ligue 1). Competitions outside these top European leagues may have varying data availability depending on Transfermarkt's own coverage depth.Does the API return historical market value data points, not just the current value?+
get_player_profile endpoint includes a market value history array within the player object, so multiple historical valuation snapshots are available per player. Standalone time-series market value charting as a dedicated endpoint is not currently exposed. You can fork the API on Parse and revise it to add a focused market value history endpoint.