Transfermarkt APItransfermarkt.com ↗
Access Transfermarkt player profiles, transfer histories, market values, club squads, free agent listings, and referee stats via 12 structured endpoints.
What is the Transfermarkt API?
This API exposes 12 endpoints covering Transfermarkt's football data: player profiles, full transfer histories, market value timelines, club squad rosters, free agent listings, and referee career statistics. The get_top_market_values endpoint returns a pre-sorted ranked list of the 500 most valuable players worldwide in a single call, while get_player_page_data aggregates profile, transfers, market value history, and season stats for any player ID into one response.
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'
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
The core player endpoints revolve around a numeric player_id, which can be discovered through search_players (supports partial name matching, returns 10 results per page with total_hits and total_pages) or get_top_market_values (returns 500 ranked players with market_value_euros, position, club_id, and nationality). get_player_profile returns personal details including full_name, date_of_birth, height, preferred_foot, and a market_value object with current, previous, highest, and delta sub-fields. get_player_market_value_history provides every historical assessment ever recorded, each entry carrying value, currency, date, club_id, and age at time of assessment.
Transfers and Season Stats
get_player_transfers returns the complete chronological transfer log for a player: each record includes from/to club info, fee (display string and numeric where available), market_value_at_transfer, season, and age_at_transfer, plus a fee_sum summary field. get_player_stats breaks down current-season performance by competition, exposing gamesPlayed, goalsScored, assists, yellowCards, redCards, and minutesPlayed in performance_data. For a single-call aggregation, get_player_page_data merges profile, transfer history, market value history, and performance stats into one response.
Clubs and Free Agents
get_club_info returns squad composition metrics (squad_size, average_age, total_market_value, top18_market_value), crest image URL, and physical location details. get_club_squad lists every player in the current roster with shirt_number, contract_until, market_value, and position. For free agents, get_free_agents and get_all_free_agents both support filtering by position, nationality_id, min_age/max_age, min_market_value_eur/max_market_value_eur, and sort. The site caps results at 5 pages of 50 rows per filter combination; total_hits is only populated when the last page is reached.
Referees
get_referee_info accepts a numeric referee_id and returns personal details alongside career_totals (total appearances, yellow cards, red cards, penalty kicks) and competition_stats broken down per competition. This is the only endpoint that does not require a player ID.
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?+
- Track a player's market value trajectory over their career using
get_player_market_value_historywith timestamped assessment entries. - Build a transfer fee database by iterating player IDs through
get_player_transfersand aggregating the numericfeeandfee_sumfields. - Scout free agents by position and nationality using
get_all_free_agentswithposition,nationality_id, andmin_market_value_eurfilters. - Assemble club squad sheets with shirt numbers, contract expiry dates, and individual market values via
get_club_squad. - Identify the top 500 most valued players globally in a single call using
get_top_market_valuesfor ranking dashboards or valuation benchmarks. - Correlate referee card-issuing tendencies across competitions using
competition_statsfromget_referee_info. - Power a player comparison tool by fetching full profiles and season performance stats side-by-side with
get_player_page_data.
| 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?+
How do I find the numeric player_id needed for most endpoints?+
search_players accepts a partial or full player name via the query parameter and returns up to 10 results per page, each including the numeric id field. get_top_market_values also returns id for each of the 500 players listed. Those IDs are then usable with get_player_profile, get_player_transfers, get_player_stats, get_player_market_value_history, and get_player_page_data.What are the pagination constraints on the free agent endpoints?+
total_pages never exceeds 5 and a value of 5 may mean additional results exist beyond what the site surfaces. total_hits is only populated when the requested page is the final page; for earlier pages it is null. Age and market value filters (min_age, max_age, min_market_value_eur, max_market_value_eur) are applied locally to the returned rows, not as server-side constraints.Does the API cover historical club squads or only the current roster?+
get_club_squad returns the current active roster only. Historical squad data for past seasons is not currently covered. You can fork this API on Parse and revise it to add an endpoint that accepts a season parameter and returns squad snapshots for past seasons.