Transfermarkt Scraper
Pricing
from $0.75 / 1,000 results
Transfermarkt Scraper
๐ฅ THE MOST COMPLETE TRANSFERMARKT SCRAPE: Get player market values, club squads, season stats & full transfers by player, club or competition. Search by name or URL, export to JSON, CSV or Excel. Perfect for scouting, analytics & fantasy football.
Pricing
from $0.75 / 1,000 results
Rating
4.0
(1)
Developer
Data Xplorer
Maintained by CommunityActor stats
5
Bookmarked
218
Total users
32
Monthly active users
0.92 hours
Issues response
5 days ago
Last modified
Categories
Share
โฝ Transfermarkt Scraper - Football Data, Player Market Values, Stats & Transfers
Get structured football data from Transfermarkt without an API key. This Transfermarkt Scraper extracts player market values, historical market values, club squads, season statistics, and the full transfer market (by player, club, or competition) into clean JSON, CSV, or Excel, ready for scouting, analytics, betting models, fantasy football, journalism, and academic research.
Whether you need soccer transfer data, player valuations, market value timelines, squad and staff information, or league-wide transfer monitoring, this tool collects and structures everything in one run: no scraping infrastructure, no proxies, no maintenance on your side.

๐ฏ What can you use the Transfermarkt Scraper for?
- ๐ Player scouting & recruitment: compare market values, contracts, and season stats across leagues
- ๐ Football analytics & data science: build datasets of goals, assists, minutes played, and valuations
- ๐ Market value analysis: track player valuation changes over time, including dates, ages, clubs, and historical values
- ๐ธ Transfer market monitoring: track arrivals, departures, fees, and loan deals per club or per competition
- ๐ฐ Betting & prediction models: feed clean player and team data into your models
- ๐ Fantasy football tools: enrich your app with live squads, positions, and market values
- ๐ฐ Sports journalism & content: pull transfer histories and trophy cabinets in seconds
- ๐ Academic & research projects: export reproducible football datasets
- ๐ค AI agents & LLM workflows: provide real football data to your agents via MCP
๐ Why choose this Transfermarkt Scraper?
- ๐ฏ Flexible input: scrape by name (
"Kylian Mbappรฉ","Ligue 1") or by direct Transfermarkt URL - ๐ Batch processing: up to 100 items per run
- ๐ Broad coverage: works across the leagues and countries supported by Transfermarkt
- ๐ Rich player profiles: market value, contract details, trophies, transfer history
- ๐ Multi-season stats: last 6 seasons by default with full per-competition breakdowns (league + cups + European + international) โ or pick one or several specific seasons
- ๐ Market value history: optionally retrieve the complete historical market value timeline with dates, seasons, ages, values, currencies, and clubs
- ๐ Complete transfer history: full career transfers via Transfermarkt's internal endpoints
- ๐ค Optional agent & agency data: contact details, players represented, and portfolio market value โ fetched when enabled and an agent is listed
- ๐๏ธ Deep club data: league info, trophies, total market value, squad & staff
- ๐ 3 transfer modes: player career, club season, and competition-wide transfers
- ๐งน Clean, export-ready data: JSON, CSV, Excel, HTML table, or API
๐ฎ 5 scrape types available
| Scrape Type | Input | What You Get |
|---|---|---|
| โฝ Players | Name or profile URL | Full player profile, stats, market value history, agent, transfers, trophies |
| ๐๏ธ Clubs | Name or profile URL | Club details, squad, staff, trophies |
| ๐ค Transfers: Player | Name or URL | Complete career transfer history for a player |
| ๐๏ธ Transfers: Club | Name or URL | All arrivals & departures for a club (current season) |
| ๐ Transfers: Competition | Name or URL | All transfers across every club in a league |
Input flexibility
Each scrape type accepts names or URLs:
- ๐ค Name search:
"Timothy Weah","Paris Saint-Germain","Ligue 1" - ๐ Direct transfers URL:
https://www.transfermarkt.com/timothy-weah/transfers/spieler/370846 - ๐ Profile URL (auto-converted):
https://www.transfermarkt.com/kylian-mbappe/profil/spieler/342229
๐ Quick start
- Click Try for free / open the Actor in Apify Console.
- Pick a scrape type (players, clubs, or one of the 3 transfer modes).
- Add names or Transfermarkt URLs to the
itemslist. - (Optional) Adjust player statistics seasons, market value history, or proxy settings.
- Click Start and download your data as JSON, CSV, or Excel.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| scrapeType | string | players | What to scrape: players, clubs, transfersPlayer, transfersClub, or transfersCompetition |
| items | array | [] | List of names or Transfermarkt URLs (max 100) |
| proxyConfig | object | {useApifyProxy: true} | Proxy configuration (datacenter recommended for best speed & success rate) |
| playersWithoutStatistics | boolean | false | Players only. If true, fetches profile information only (no seasonal statistics). |
| playerStatsSelection | array | ["last_6"] | Players only. Select one or more seasons: "last_6" (most recent 6), "2026" (2026/27), "2025" (2025/26), "2024", "2023", "2022", "2021". Accepts multiple values, e.g. ["2025", "2024"]. |
| playerMarketValueHistory | boolean | false | Players only. If true, retrieves the complete historical market value timeline, including dates, seasons, ages, values, currencies, and club information. Adds extra requests per unique historical club. |
| playerAgentDetails | boolean | false | Players only. If true, fetches the player's agent or agency page and returns contact and portfolio details. Disabled by default because the additional page can occasionally be unavailable. |
Input examples
Players by name:
{"scrapeType": "players","items": ["Lionel Messi","https://www.transfermarkt.com/kylian-mbappe/profil/spieler/342229","Cristiano Ronaldo"],"proxyConfig": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Players, specific seasons only:
{"scrapeType": "players","items": ["Ousmane Dembรฉlรฉ"],"playerStatsSelection": ["2025", "2024"]}
Players, single season (also works as a string for backward compatibility):
{"scrapeType": "players","items": ["Ousmane Dembรฉlรฉ"],"playerStatsSelection": "2025"}
Players, with market value history:
{"scrapeType": "players","items": ["Kylian Mbappรฉ", "Dilane Bakwa"],"playerMarketValueHistory": true}
Players, with market value history but without statistics:
{"scrapeType": "players","items": ["Kylian Mbappรฉ"],"playersWithoutStatistics": true,"playerMarketValueHistory": true}
Players, without statistics (faster):
{"scrapeType": "players","items": ["Kylian Mbappรฉ", "Harry Kane"],"playersWithoutStatistics": true}
Player transfer history by name:
{"scrapeType": "transfersPlayer","items": ["Timothy Weah", "Kylian Mbappรฉ"]}
Club transfers by name:
{"scrapeType": "transfersClub","items": ["Paris Saint-Germain", "FC Barcelona"]}
Competition transfers by name:
{"scrapeType": "transfersCompetition","items": ["Ligue 1", "Premier League"]}
โจ Output data
๐ Player data structure
| Field | Description |
|---|---|
| Player Name | Player name |
| Jersey Number | Current jersey number |
| Club | Current club of the player |
| League | League information including name, country, and division |
| Market Value | Current market value with currency |
| Market Value History | Optional historical market value timeline with date, season, age, value, currency, club ID, club name, club URL, and club logo |
| Arrival Date | Date when player joined current club |
| Contract End | Contract expiration date |
| Transfer History | Complete history of all player transfers |
| Trophies | List of trophies won by the player |
| Player Details | Age, nationality, position, foot, height, etc. |
| Player Agent | Optional agent/agency details: name, contact info (phone, email, website, address), key stats (players represented, total market value) โ included when playerAgentDetails is enabled and an agent is listed on Transfermarkt |
| Player Stats | Performance statistics per season (up to last 6), with all competitions per season: domestic league, domestic cups, European cups, and international tournaments |
| URL | Transfermarkt profile URL |
๐๏ธ Club data structure
| Field | Description |
|---|---|
| Club Name | Official name of the club |
| League | Name, country, division, table position, and tenure |
| Total Market Value | Current total market value of the squad with currency |
| Trophies | List of trophies won by the club with counts |
| Club Details | Stadium, founding date, members, etc. |
| Staff | Manager, assistants, and specialists |
| Squad | Complete list of current players with detailed information |
| Top Arrivals | Recent significant player arrivals with transfer details |
| Top Departures | Recent significant player departures with transfer details |
| URL | Transfermarkt club URL |
๐ค Transfers: Player data structure
| Field | Description |
|---|---|
| Player Name | Full player name |
| Player ID | Transfermarkt player ID |
| Player URL | Link to player profile |
| Transfers | Career transfer history with season, date, clubs, fees, market values |
| Total Fees | Sum of all transfer fees across career |
| Source URL | Transfermarkt transfers page URL |
๐๏ธ Transfers: Club data structure
| Field | Description |
|---|---|
| Club Name | Official name of the club |
| Season | Transfer window season (e.g., 2025/26) |
| Arrivals | Incoming transfers with player details, fees, and origin clubs |
| Departures | Outgoing transfers with player details, fees, and destination clubs |
| Summary | Totals: arrival/departure counts, expenditure, income, transfer record |
| Source URL | Transfermarkt transfers page URL |
๐ Transfers: Competition data structure
| Field | Description |
|---|---|
| Competition Name | League or competition name |
| Competition Code | Transfermarkt competition code (e.g., FR1, GB1) |
| Season | Transfer window season |
| Total Clubs | Number of clubs in the competition |
| Total Arrivals / Departures | Aggregate transfer counts |
| Clubs | Per-club breakdown of all arrivals and departures |
| Source URL | Transfermarkt transfers page URL |
Output example: Player
{"playerName": "Dilane Bakwa","jerseyNumber": "29","currentClub": "Nottingham Forest","playerLeague": {"name": "Premier League","country": "England","division": "First Tier"},"marketValue": "28.00Mโฌ","arrivalDate": "2025-09-01","contractEnd": "2030-06-30","transferHistory": [{"season": "25/26","date": "2025-09-01","left": "R. Strasbourg","joined": "Nott'm Forest","market_value": "โฌ25.00m","fee": "โฌ35.00m"}],"trophies": [],"playerDetails": {"Date of birth": "2002-07-08","Age": "23","Citizenship": "France, DR Congo","Position": "Attack - Right Winger","Foot": "left","Height": "1,80m","Player agent": "Sport Cover"},"playerAgent": {"url": "https://www.transfermarkt.com/sport-cover/beraterfirma/berater/1881","logo": "https://tmssl.akamaized.net//images/berater_logo/normal/601111_1593610847.png?lm=1593610807","agency_name": "Sport Cover","location": "Paris","country": "France","email": "contact@sportcover.co","website": "www.sportcover.co","players_count": "55","players_first_tier": "35","total_market_value": "โฌ417.48m"},"marketValueHistory": [{"date": "2025-12-12","season": "2025/26","season_id": 2025,"club_id": "148","club_name": "Nottingham Forest","club_url": "https://www.transfermarkt.com/nottingham-forest/startseite/verein/148","club_logo": "https://tmssl.akamaized.net/images/wappen/big/148.png","age": 23,"value": 28000000,"currency": "EUR","formatted_value": "โฌ28.00M"}],"playerStats": [{"season": "2025/26","stats": [{"competition": "Premier League","competition_img": "https://tmssl.akamaized.net//images/logo/mediumsmall/gb1.png?lm=1521104656","appearances": "14","assists": "2","yellow_cards": "1","minutes_played": "553"},{"competition": "FA Cup","competition_img": "https://tmssl.akamaized.net//images/logo/mediumsmall/fac.png?lm=1666031556","appearances": "1","minutes_played": "45"},{"competition": "Europa League","competition_img": "https://tmssl.akamaized.net//images/logo/mediumsmall/el.png?lm=1721915137","appearances": "8","minutes_played": "307"}]}],"profileUrl": "https://www.transfermarkt.com/dilane-bakwa/profil/spieler/540664"}
Output example: Club
{"clubName": "FC Barcelona","clubUrl": "https://www.transfermarkt.com/fc-barcelona/startseite/verein/131","clubLeague": {"name": "LaLiga","country": "Spain","division": "First Tier","tablePosition": "2nd","inLeagueSince": "1929"},"totalMarketValue": "โฌ937.50m","clubTrophies": [{ "name": "Champions League", "count": "5" },{ "name": "LaLiga", "count": "27" }],"clubDetails": {"Full name": "Futbol Club Barcelona","Founded": "Nov 29, 1899","Stadium": "Spotify Camp Nou"},"staff": [{"name": "Hansi Flick","position": "Manager","age": "59","nationality": ["Germany"],"appointed": "Jul 1, 2024"}],"topArrivals": [{"playerName": "Dani Olmo","playerPosition": "Attacking Midfield","fromClub": "RB Leipzig","fee": "โฌ55.00m"}],"clubSquad": [{"number": "10","name": "Lamine Yamal","position": "Attack","specificPosition": "Right Winger","age": "17","nationalities": ["Spain", "Morocco"],"contract": "Jun 30, 2026","marketValue": "โฌ120.00m"}]}
Output example: Transfers Player
{"ptPlayerName": "Timothy Weah","ptPlayerId": "370846","ptPlayerUrl": "https://www.transfermarkt.com/timothy-weah/profil/spieler/370846","ptTransfers": [{"season": "25/26","date": "2025-08-06","isUpcoming": false,"leftClub": "Juventus","joinedClub": "Marseille","marketValue": "โฌ17.00m","fee": "Loan fee: โฌ1.00m","transferType": "loan"}],"ptTotalFees": "โฌ36.40m","ptSourceUrl": "https://www.transfermarkt.com/timothy-weah/transfers/spieler/370846"}
Output example: Transfers Club
{"ctClubName": "Paris Saint-Germain","ctSeason": "2025/26","ctArrivals": [{"playerName": "Khvicha Kvaratskhelia","age": "24","nationalities": ["Georgia"],"position": "Left Winger","marketValue": "โฌ75.00m","fee": "โฌ70.00m","fromClub": "SSC Napoli","fromClubCountry": "Italy"}],"ctDepartures": [{"playerName": "Randal Kolo Muani","age": "26","nationalities": ["France"],"position": "Centre-Forward","marketValue": "โฌ40.00m","fee": "Loan fee: โฌ3.00m","toClub": "Juventus","toClubCountry": "Italy"}],"ctSummary": {"arrivalsCount": 5,"departuresCount": 8,"expenditure": "โฌ120.00m","income": "โฌ45.00m","transferRecord": "-โฌ75.00m"},"ctSourceUrl": "https://www.transfermarkt.com/paris-saint-germain/transfers/verein/583/saison_id/2025"}
Output example: Transfers Competition
{"competitionName": "Ligue 1","competitionCode": "FR1","competitionSeason": "25/26","totalClubs": 18,"totalArrivals": 156,"totalDepartures": 142,"clubs": [{"clubName": "Paris Saint-Germain","arrivals": ["..."],"departures": ["..."]}],"competitionSourceUrl": "https://www.transfermarkt.com/ligue-1/transfers/wettbewerb/FR1/plus/"}
๐ Integrations
Connect this scraper to your favorite tools or LLM and automate your football data workflows:
- ๐ N8N: Apify + N8N Integration Guide
- โก Make (Integromat): Apify + Make Integration Guide
- ๐ Python & JavaScript clients: Apify API clients
- ๐ค MCP (AI Agents): Apify MCP Server
- ๐ค Webhooks & Zapier: trigger downstream actions when a run finishes
๐งฉ Related Actors
Need more data sources for your projects? Check out our other fast, reliable scrapers:
- ๐ฐ Google News Scraper (Fast): collect headlines, articles, and sources from Google News for any topic, keyword, or team.
- ๐ Google Trends Scraper (Fast): track search interest over time and spot trending keywords for content and market research.
- ๐ฌ TikTok Ads Library Scraper (Fast): extract ads from the TikTok Ads Library for competitive analysis and creative research.
โ Frequently asked questions (FAQ)
Does Transfermarkt have an official API?
Transfermarkt does not offer a public, documented API for player valuations, squads, and transfers. This Actor gives you the same data in clean, structured JSON, CSV, or Excel, without dealing with rate limits, tokens, or undocumented endpoints.
Why use this scraper instead of building my own Transfermarkt API?
Doing it yourself means handling anti-bot protection, rotating proxies, retries, HTML changes, and scaling. This Actor manages all of that for you: you send names or URLs and get reliable, ready-to-use data. It also covers data points (squads, staff, trophies, agent contacts, market value history, per-competition stats, and competition-wide transfers) that aren't easily available anywhere else.
How do I get football player market values?
Choose the Players scrape type and add player names or profile URLs. Each result includes the current marketValue, contract end date, and full transfer history with historical values.
Can I get historical market values?
Yes. Enable playerMarketValueHistory when scraping players. The Actor returns the complete market value timeline, including the date of each valuation, the player's age, the season, the value, currency, and the associated club name, URL, and logo when available. This option is disabled by default because it performs additional requests.
Can I get player agent contact information?
Yes. Enable playerAgentDetails when scraping players. When an agent is listed on Transfermarkt, the scraper fetches the agent's page and returns contact details (phone, email, website, address) plus portfolio statistics (number of players represented, total market value). This option is disabled by default because agent pages can occasionally be unavailable.
Can I track the entire transfer market for a league?
Yes. Use the Transfers: Competition type with a league name (e.g., "Premier League") or its Transfermarkt URL to get every arrival and departure for every club in that competition.
Can I monitor transfers automatically?
Yes. Use the Apify Scheduler to run the Actor daily or hourly and pipe new results to your database, Google Sheets, or a webhook. This is ideal for transfer-window monitoring and alerting.
How much football data can I scrape at once?
Up to 100 items per run. For larger jobs, split inputs across scheduled runs or multiple runs.
What export formats are supported?
JSON, CSV, Excel, HTML table, RSS, and direct access via the Apify API, so you can plug the data into BI tools, notebooks, or apps.
Is it legal to scrape Transfermarkt?
Scraping publicly available data is generally permitted in many jurisdictions, but you are responsible for complying with Transfermarkt's terms, applicable laws (including copyright and data protection), and for using the data ethically. Do not collect personal data unlawfully.
What are the best alternatives for football data?
Depending on your use case you might combine Transfermarkt data (valuations, transfers, squads) with match statistics, live scores, or news and trends. See the Related Actors section above to build a complete pipeline.
๐ค Support & resources
Need help or have a feature request? Open an issue on the Actor's Issues tab. We actively maintain this scraper.
โค๏ธ Love this Transfermarkt Scraper? Please leave a review here. It really helps!