Transfermarkt Player Market Value & Transfer Scraper avatar

Transfermarkt Player Market Value & Transfer Scraper

Pricing

from $0.49 / 1,000 results

Go to Apify Store
Transfermarkt Player Market Value & Transfer Scraper

Transfermarkt Player Market Value & Transfer Scraper

Look up football players, clubs, and competitions on Transfermarkt. Get player market value history, transfer records, injury logs, club squads, and competition club lists by name or ID.

Pricing

from $0.49 / 1,000 results

Rating

0.0

(0)

Developer

Dataspryva

Dataspryva

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Transfermarkt is the reference source for football player valuations and transfer fees. This actor turns its public player, club and competition data into clean JSON records: current and peak market values, the full valuation timeline, career transfers, squad lists and club/competition transfer windows. Start from a name, a Transfermarkt ID or a pasted URL.

No login, API key or proxy is required.

What you can scrape

ModeWhat it returnsInput
searchPlayersPlayer records for a name searchquery
byPlayerIdOne full player record per playerplayerIds
transfersPlayerOne transfer row per career moveplayerIds
searchClubsClub records for a name searchquery
byClubIdClub record plus its squadclubIds
transfersClubArrivals, departures and pending movesclubIds, optional season
searchCompetitionsCompetition records for a name searchquery
byCompetitionIdClub records for every team in a competitioncompetitionIds, optional season
transfersCompetitionEvery transfer in a competitioncompetitionIds, optional season
byUrlAuto-detects player, club and competition URLsurls

playerIds, clubIds and competitionIds accept either bare IDs/codes or full Transfermarkt URLs (including regional domains and profile, squad or transfers pages). byUrl accepts a mixed list of page types.

Player records

Each player record includes:

  • playerId, name, fullName, shortName
  • dateOfBirth, age, placeOfBirth, countryOfBirth
  • nationality (array), nationalityIds
  • position, subPosition, positionGroup
  • height, heightMeters, foot
  • currentClub, currentClubId, currentClubUrl, currentClubCrestUrl
  • joinedCurrentClub, contractExpires, contractOption
  • shirtNumber, isCaptain, status
  • agentName, agentId, agentVerified, outfitter
  • marketValue, marketValueNumeric, marketValueCurrency, marketValueDate
  • previousMarketValue, previousMarketValueNumeric
  • highestMarketValue, highestMarketValueNumeric, highestMarketValueDate
  • marketValueHistory - array of {date, seasonId, season, club, clubId, clubUrl, age, value, valueNumeric, currency, formattedValue}
  • transfers - array of {date, season, fromClub, fromClubId, toClub, toClubId, fee, feeNumeric, feeCurrency, transferType, feeDescription, marketValue, marketValueNumeric, age, isPending, transferUrl}
  • transferFeeSum, transferFeeSumNumeric
  • absences - injuries, suspensions and national-team call-ups
  • injuries - the injury/illness subset, in the legacy {date, injury, absence} shape
  • achievements - trophies and awards
  • profileUrl, imageUrl, siteName, recordType, scrapedAt

Club, competition and transfer records

Club records include identity, country, league, squad size, average age, foreigners, squad market value, stadium, address, squad and table position where available.

Competition records include country, confederation, current season, total market value and the club list with rank, points and goal difference.

Transfer records include the player, date, season, from/to club and competition IDs, fee text and EUR integer, transfer type, fee description, market value at the time, pending flag and direction (arrival/departure) for club windows.

Input

FieldTypeDefaultNotes
modeselectsearchPlayersOne of the 10 modes above
querystringMessiSearch modes; at least 2 characters
playerIdsstring array-Player IDs or URLs
clubIdsstring array-Club IDs or URLs
competitionIdsstring array-Competition codes or URLs
urlsstring array-Mixed player/club/competition URLs for byUrl
seasoninteger—Season start year, e.g. 2025 for 2025/26; club/competition modes. Leave empty for the current season
minMarketValueEurinteger-Keep players at or above this current value
nationalitystring-Case-insensitive substring filter
positionselectAnyExact position filter
includeMarketValueHistorybooleantrueAdd the valuation timeline
includeTransferHistorybooleantrueAdd career transfers
includeAbsencesbooleantrueAdd injuries/suspensions/call-ups
includeAchievementsbooleanfalseAdd trophies and awards
includeSquadbooleantrueAdd squads to club records; byClubId also emits player records
includeCompetitionClubsbooleantrueAdd clubs and table rows to competition records
maxItemsinteger501-1,000 top-level records

Example: three players by name

{
"mode": "searchPlayers",
"query": "Messi",
"maxItems": 3
}

Example: one player with everything

{
"mode": "byPlayerId",
"playerIds": ["28003"],
"includeAbsences": true,
"includeAchievements": true
}

Example: a club transfer window

{
"mode": "transfersClub",
"clubIds": ["https://www.transfermarkt.com/manchester-city/startseite/verein/281"],
"season": 2025,
"maxItems": 100
}

Example: auto-detect mixed URLs

{
"mode": "byUrl",
"urls": [
"https://www.transfermarkt.com/erling-haaland/profil/spieler/418560",
"https://www.transfermarkt.com/premier-league/startseite/wettbewerb/GB1"
],
"maxItems": 5
}

Output example (trimmed)

{
"recordType": "player",
"playerId": "28003",
"name": "Lionel Messi",
"fullName": "Lionel Andrés Messi Cuccitini",
"age": 39,
"nationality": ["Argentina", "Spain"],
"position": "Right Winger",
"currentClub": "Inter Miami CF",
"currentClubId": "69261",
"marketValue": "€15.00m",
"marketValueNumeric": 15000000,
"highestMarketValue": "€180.00m",
"highestMarketValueNumeric": 180000000,
"marketValueHistory": [
{
"date": "2026-06-02",
"seasonId": 2025,
"club": "Inter Miami CF",
"age": 38,
"value": 15000000,
"formattedValue": "€15.00m"
}
],
"transfers": [
{
"date": "2023-07-15",
"season": "23/24",
"fromClub": "Paris Saint-Germain",
"toClub": "Inter Miami CF",
"fee": "Free Transfer"
}
],
"profileUrl": "https://www.transfermarkt.com/lionel-messi/profil/spieler/28003",
"siteName": "Transfermarkt",
"scrapedAt": "2026-10-27T00:00:00+00:00"
}

FAQ

Do I need a Transfermarkt account, API key or proxy? No. The actor uses Transfermarkt's public football data without credentials and chooses its own transport automatically.

Where do I find a player, club or competition ID? The ID is the number in a Transfermarkt URL (/profil/spieler/28003, /verein/281) or the code in a competition URL (/wettbewerb/GB1). You can paste the whole URL instead.

Why is a transfer fee missing? Transfermarkt only publishes a fee for some moves. Free transfers, loans and undisclosed deals keep their text label, while feeNumeric is omitted. Pending moves can have no fee yet.

What does season mean? It is the season start year: 2025 means 2025/26. It applies to club squads, club transfer windows, competition tables and competition transfer windows. Player career transfers always cover the full career.

Why are some market values or club names missing? A player may have no current club, a valuation may not have been published yet, or a historical club may be recorded as "without club". Empty fields are omitted rather than sent as null.

Does byClubId return more than one record? Yes. It returns the club record first, then one player record per squad member, matching the previous behavior. Set maxItems to cap the total.

Can I scrape several players, clubs or competitions at once? Yes. Use the ID/URL arrays, or byUrl with a mixed list.

Are achievements and absences included by default? Absences are on by default. Achievements are off because they add one request per player. Both can be toggled.

How fresh is the data? Every run asks Transfermarkt live, so market values, squads and transfer records reflect the site at run time.

Limitations

  • Transfermarkt does not publish a fee for every transfer; the actor never invents one.
  • Pending transfers may have no fee or market value yet.
  • Absence records mix injuries, suspensions and national-team call-ups; use isInjury, isSuspension and isCallUp to separate them.
  • Output is English. Regional Transfermarkt mirrors are accepted as input URLs, but labels are not localized.
  • Profile, club and competition URLs are canonical Transfermarkt pages; the site may challenge direct browserless requests, while image URLs load publicly.
  • Player season statistics and global ranking/transfer-record lists are not part of this actor.
  • Search needs at least two characters.

This actor is not affiliated with Transfermarkt. Use the data responsibly and respect the source's terms.