Transfermarkt APItransfermarkt.it ↗
Access Serie A team market values, squad rosters, player career stats, and transfer records from Transfermarkt via 5 structured REST endpoints.
What is the Transfermarkt API?
This API exposes 5 endpoints covering Serie A football data from Transfermarkt, including team market valuations across multiple seasons, full squad rosters with per-player market values, and granular career statistics broken down by season and competition. The get_player_career_stats endpoint returns goals, assists, cards, and minutes for any player identified by their Transfermarkt numeric ID, making it straightforward to build season-by-season performance profiles.
curl -X GET 'https://api.parse.bot/scraper/a2a79966-9580-40ab-9d74-b3a9c82996ee/get_team_market_values?end_year=2025&start_year=2025' \ -H 'X-API-Key: $PARSE_API_KEY'
Retrieve market values for all teams in Serie A for a specified season range. Returns team names, IDs, and market values as formatted on Transfermarkt (e.g., '741,85 mln €'). Each season year in the range produces one page fetch, so wide ranges are slow.
| Param | Type | Description |
|---|---|---|
| end_year | integer | Ending season year (e.g., 2025 for 2025/26 season) |
| start_year | integer | Starting season year (e.g., 2024 for 2024/25 season) |
{
"type": "object",
"fields": {
"items": "array of objects each containing season, team_id, team_name, and market_value"
},
"sample": {
"data": {
"items": [
{
"season": "2025/2026",
"team_id": "46",
"team_name": "Inter",
"market_value": "646,70 mln €"
},
{
"season": "2025/2026",
"team_id": "506",
"team_name": "Juventus FC",
"market_value": "499,70 mln €"
}
]
},
"status": "success"
}
}About the Transfermarkt API
Team and League Coverage
The get_team_market_values endpoint accepts a start_year and end_year range and returns one record per team per season, including team_id, team_name, and market_value formatted as Transfermarkt displays it (e.g., '741,85 mln €'). Wide year ranges increase response time because each season year is fetched separately. Team IDs returned here feed directly into get_team_squad and get_team_transfers.
Squad and Transfer Data
get_team_squad accepts a team_id and optional season string (e.g., '2025' for the 2025/26 season) and returns a full roster array. Each player object includes player_id, name, position, shirt_number, date_of_birth, age, nationality, and market_value in EUR. get_team_transfers covers the same team_id/season inputs and returns arrivals and departures with direction (in or out), counterpart club, club_id, fee, and transfer date. Seasons with many transfers produce slower responses due to per-player date lookups.
Player Discovery and Career Statistics
get_serie_a_players iterates through team rosters for a given season and returns player_id, player_slug, name, profile_url, and team_url for every player found. The max_teams parameter caps how many teams are processed, which is useful for quick partial lookups. Once you have a player_id, get_player_career_stats returns a career_stats array aggregated by season, competition, and club — fields include matches played, goals, assists, yellow and red cards, and minutes played.
IDs and Cross-Endpoint Navigation
Transfermarkt numeric IDs are the linking key across all five endpoints. get_team_market_values surfaces team_id values; get_serie_a_players surfaces player_id values. Both feed into the detail endpoints. The player_slug field in get_serie_a_players mirrors the slug segment in Transfermarkt URLs but is not required by get_player_career_stats in the current implementation.
The Transfermarkt API is a managed, monitored endpoint for transfermarkt.it — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when transfermarkt.it 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.it 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 how Serie A club valuations change season-over-season using
market_valuefields fromget_team_market_values - Build a player scouting database by pulling career goals, assists, and minutes from
get_player_career_statsfor all discovered Serie A players - Compare squad depth and average age across clubs using
get_team_squadroster data - Monitor transfer activity for a specific club by querying
get_team_transferswithdirectionfiltering for arrivals or departures - Correlate transfer fees from
get_team_transferswith current market values fromget_team_squadto assess valuation accuracy - Enumerate every player in a given Serie A season via
get_serie_a_playersto seed a larger player database - Analyze positional market value distribution within a squad using
positionandmarket_valuefromget_team_squad
| 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_career_stats` return, and how granular is the breakdown?+
career_stats array where each entry is grouped by season, competition, and club. Fields per entry include matches played, goals, assists, yellow cards, red cards, and minutes played. You need a Transfermarkt numeric player_id (e.g., '406625' for Lautaro Martínez) to query it; these IDs are discoverable via get_serie_a_players.Why are some endpoints slow to respond?+
get_team_market_values performs one fetch per season year in the requested range, so a five-year range is roughly five times slower than a single year. get_serie_a_players iterates through every team roster, and get_team_transfers performs per-player date lookups for seasons with many transfers. Use max_teams in get_serie_a_players and narrow date ranges in get_team_market_values to reduce latency.Does the API cover leagues outside Serie A, such as Premier League or Bundesliga?+
Are individual match-level statistics available, or only season aggregates?+
get_player_career_stats returns data aggregated by season and competition — it does not expose individual match logs or fixture-level breakdowns. You can fork this API on Parse and revise it to add a per-match statistics endpoint if that granularity is needed.