Transfermarkt Scraper avatar

Transfermarkt Scraper

Pricing

from $0.75 / 1,000 results

Go to Apify Store
Transfermarkt Scraper

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

Data Xplorer

Maintained by Community

Actor stats

5

Bookmarked

218

Total users

32

Monthly active users

0.92 hours

Issues response

5 days ago

Last modified

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.

Transfermarkt Scraper

๐ŸŽฏ 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 TypeInputWhat You Get
โšฝ PlayersName or profile URLFull player profile, stats, market value history, agent, transfers, trophies
๐ŸŸ๏ธ ClubsName or profile URLClub details, squad, staff, trophies
๐Ÿ‘ค Transfers: PlayerName or URLComplete career transfer history for a player
๐ŸŸ๏ธ Transfers: ClubName or URLAll arrivals & departures for a club (current season)
๐Ÿ† Transfers: CompetitionName or URLAll 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

  1. Click Try for free / open the Actor in Apify Console.
  2. Pick a scrape type (players, clubs, or one of the 3 transfer modes).
  3. Add names or Transfermarkt URLs to the items list.
  4. (Optional) Adjust player statistics seasons, market value history, or proxy settings.
  5. Click Start and download your data as JSON, CSV, or Excel.

Input parameters

ParameterTypeDefaultDescription
scrapeTypestringplayersWhat to scrape: players, clubs, transfersPlayer, transfersClub, or transfersCompetition
itemsarray[]List of names or Transfermarkt URLs (max 100)
proxyConfigobject{useApifyProxy: true}Proxy configuration (datacenter recommended for best speed & success rate)
playersWithoutStatisticsbooleanfalsePlayers only. If true, fetches profile information only (no seasonal statistics).
playerStatsSelectionarray["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"].
playerMarketValueHistorybooleanfalsePlayers 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.
playerAgentDetailsbooleanfalsePlayers 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

FieldDescription
Player NamePlayer name
Jersey NumberCurrent jersey number
ClubCurrent club of the player
LeagueLeague information including name, country, and division
Market ValueCurrent market value with currency
Market Value HistoryOptional historical market value timeline with date, season, age, value, currency, club ID, club name, club URL, and club logo
Arrival DateDate when player joined current club
Contract EndContract expiration date
Transfer HistoryComplete history of all player transfers
TrophiesList of trophies won by the player
Player DetailsAge, nationality, position, foot, height, etc.
Player AgentOptional 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 StatsPerformance statistics per season (up to last 6), with all competitions per season: domestic league, domestic cups, European cups, and international tournaments
URLTransfermarkt profile URL

๐ŸŸ๏ธ Club data structure

FieldDescription
Club NameOfficial name of the club
LeagueName, country, division, table position, and tenure
Total Market ValueCurrent total market value of the squad with currency
TrophiesList of trophies won by the club with counts
Club DetailsStadium, founding date, members, etc.
StaffManager, assistants, and specialists
SquadComplete list of current players with detailed information
Top ArrivalsRecent significant player arrivals with transfer details
Top DeparturesRecent significant player departures with transfer details
URLTransfermarkt club URL

๐Ÿ‘ค Transfers: Player data structure

FieldDescription
Player NameFull player name
Player IDTransfermarkt player ID
Player URLLink to player profile
TransfersCareer transfer history with season, date, clubs, fees, market values
Total FeesSum of all transfer fees across career
Source URLTransfermarkt transfers page URL

๐ŸŸ๏ธ Transfers: Club data structure

FieldDescription
Club NameOfficial name of the club
SeasonTransfer window season (e.g., 2025/26)
ArrivalsIncoming transfers with player details, fees, and origin clubs
DeparturesOutgoing transfers with player details, fees, and destination clubs
SummaryTotals: arrival/departure counts, expenditure, income, transfer record
Source URLTransfermarkt transfers page URL

๐Ÿ† Transfers: Competition data structure

FieldDescription
Competition NameLeague or competition name
Competition CodeTransfermarkt competition code (e.g., FR1, GB1)
SeasonTransfer window season
Total ClubsNumber of clubs in the competition
Total Arrivals / DeparturesAggregate transfer counts
ClubsPer-club breakdown of all arrivals and departures
Source URLTransfermarkt 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:


Need more data sources for your projects? Check out our other fast, reliable scrapers:


โ“ 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.

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!