Transfermarkt Scraper — Market Values & Transfers | $3/1K
Pricing
from $2.91 / 1,000 player records
Transfermarkt Scraper — Market Values & Transfers | $3/1K
Scrape Transfermarkt (transfermarkt.com) football player data: market values, squads, transfers, and rankings. Returns 25+ fields per player — name, club, position, age, nationality, market value (current + peak), contract, agent, and transfer history. No login or API key. Pay per player record.
Pricing
from $2.91 / 1,000 player records
Rating
0.0
(0)
Developer
Vitalii Bondarev
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
Transfermarkt Scraper — Market Values, Transfers & Squads | $3/1K | No Login
For football analytics firms, fantasy sports platforms, sports betting models, and football journalists that need the world's most complete player valuation dataset.
$3.00 per 1,000 player records. Transfer history and market-value history are optional extras — pay only when you pull them. No login, no API key, no proxy required for standard volumes.
Pricing example: 500 players = $1.50. Full Premier League squad (500 players) + transfer history (avg 8 moves each = 4,000 entries) = $1.50 + $4.00 = $5.50 total. Rankings top-100 = $0.30.
| Scraper | Price / 1k | League mode | Transfer history | MV history | parse_confidence |
|---|---|---|---|---|---|
| This actor | $3/1k | Yes (whole division) | Yes | Yes (opt-in) | Yes |
| apify transfermarkt-scraper (official) | ~$3-5/1k | No (single player) | No | No | No |
| manual API/SDK solutions | Dev time | No | No | No | N/A |
Scrape football player data from Transfermarkt — the world's reference for market values, squads, and transfers. This Transfermarkt Scraper returns 30+ fields per player: name, current club, league, position, age, nationality, current and peak market value, full market-value history, contract expiry, agent, shirt number, profile image, and full transfer history. Scrape a single player, a whole club squad, or an entire league in one run. No login, no API key, no proxy required for standard volumes. Pay per player record at $3.00 per 1,000 results — and no charge for the actor start, unlike most competitors.
Why this Transfermarkt Scraper
- Whole-league scraping — paste a competition code (
GB1,ES1,IT1,L1,FR1,MLS1) and get every club's full squad in one call. Most scrapers stop at single players or single clubs. - Self-healing market value (dual-source) — every current market value is taken from the page header and cross-checked against Transfermarkt's own
ceapivaluation endpoint. If the website's HTML layout changes, the scraper automatically falls back to the JSON source and keeps working — the fieldmarket_value_source(html/ceapi/html+ceapi) tells you exactly where each value came from. - Quality score on every record —
parse_confidence(0–1.0) plus machine-readablewarningsmean you (and your monitoring) instantly see if a page structure drifted, instead of silently getting blanks. - No start fee — you pay only for player records actually returned. Runs that hit zero results cost you nothing.
- Peak value + full history + full transfers — current value, all-time peak (with date), the complete dated valuation history (opt-in), and the complete transfer history (clubs, fees, dates) — all in one record.
Why this beats the alternatives
The Apify Store has a mature field of Transfermarkt scrapers — automation-lab/transfermarkt-scraper (tiered $0.56–$2.30/1k), parseforge/transfermarkt-scraper (from $19/1k), solidcode, webdatalabs, curious_coder, data_xplorer, and more. They are uniformly strong on current player data and weak in the same four places — and this actor closes every one:
| Capability | This actor | automation-lab | parseforge | Other incumbents |
|---|---|---|---|---|
| Market-value history (dated series) | Yes (opt-in) | No — "no market value history" | No — "join datasets over time" yourself | No |
| All-time peak value (+ date) | Yes | No | No | No |
| Whole-league squad scraping | Yes (leagueCodes, walks every club) | No (player search only) | League ranking only, 13 fields | Partial |
| Free-text player search | Yes (search) | Yes | No | Varies |
| Self-healing dual-source MV | Yes (market_value_source) | No (single HTML selector) | No | No |
Full transfer history (+ fee_type) | Yes | Optional, no fee classification | No | Rare |
parse_confidence on every record | Yes | No | No | No |
| No actor-start fee | Yes | No ($0.005/run) | Varies | Varies |
| Base price / 1k | $3 | $0.56–$2.30 | $19 | $1–5 |
The one-sentence edge: the only Transfermarkt scraper that returns market-value history + peak, scrapes a whole league in one run, and self-heals its market value from Transfermarkt's own ceapi JSON when the page HTML drifts (market_value_source: html / ceapi / html+ceapi) — with a parse_confidence score none of them expose. The lean competitors make you chain two actors (one for ranking, one for profiles) and rebuild the time series yourself; this does both in one call. Full breakdown in ./COMPETITIVE_EDGE.md.
What the Transfermarkt Scraper returns
25+ fields per player record:
| Field | Description |
|---|---|
player_id | Transfermarkt numeric player ID |
name | Player display name |
full_name | Name in home country (full legal name) |
shirt_number | Squad shirt number |
current_club | Current club name |
league | League / competition (club mode) |
position | Playing position (e.g. "Attack - Right Winger") |
age | Age in years |
date_of_birth | Date of birth (DD/MM/YYYY) |
place_of_birth | City of birth |
nationality | List of citizenships |
height | Height (e.g. "1,70 m") |
foot | Preferred foot |
market_value | Current market value, integer EUR |
market_value_str | Current market value, display (e.g. "€15.00m") |
market_value_currency | Currency symbol (€, £, $, US$) |
market_value_source | Where the value came from: html, ceapi, or html+ceapi (both agree) |
market_value_peak | All-time peak market value, integer EUR |
market_value_peak_str | Peak value, display |
market_value_peak_date | Date of the peak value |
market_value_history | Full dated valuation history (opt-in: includeMarketValueHistory) |
contract_until | Contract expiry date |
agent | Player agent |
outfitter | Boot/kit outfitter |
profile_url | Canonical Transfermarkt profile URL |
image_url | Player portrait image URL |
transfers | Transfer history (from/to club, fee, fee_type, date) |
parse_confidence | Data quality score (0–1.0) |
warnings | List of quality warning codes |
scraped_at | ISO-8601 scrape timestamp |
Each transfers[] entry includes season, date, from_club, to_club, fee (int EUR), fee_str, fee_type (fee / free / loan / end_of_loan / unknown), and market_value_str. Each market_value_history[] point includes date, value (int EUR), value_str, and club.
How to scrape Transfermarkt market values
The actor has five input modes — combine any of them in one run:
playerUrls— paste profile URLs or bare IDs (e.g.28003). Each player gets a full profile scrape with peak market value and complete transfer history.clubUrls— paste squad URLs or club IDs (e.g.131). Every squad player becomes one record: name, position, market value, age, nationality.leagueCodes— paste a competition code or URL (e.g.GB1for the Premier League,ES1for LaLiga). The scraper walks every member club and returns their full squads, capped by Max Results across the league. Scrape a whole division in one run.search— free-text player search (e.g.Haaland). The top matches are looked up and their profiles scraped.rankings— scrape Transfermarkt's most-valuable-players ranking, paginated, up to Max Results.
Common competition codes: GB1 Premier League · ES1 LaLiga · IT1 Serie A · L1 Bundesliga · FR1 Ligue 1 · MLS1 Major League Soccer · PO1 Liga Portugal · NL1 Eredivisie.
Use cases for Transfermarkt football player data
- Market value tracking — monitor current and peak market values for any player or squad over time
- Squad analysis — pull a full club roster with positions, ages, and valuations in one call
- Transfer research — extract complete transfer history (fees, clubs, dates) for scouting and journalism
- Fantasy football & analytics — feed player valuations and positions into models and dashboards
- Talent scouting — rank the most valuable footballers and surface rising young players
- Betting & media — build datasets of player values, contracts, and nationalities for content and models
Input example
{"playerUrls": ["28003"],"clubUrls": ["131"],"leagueCodes": ["GB1"],"rankings": true,"maxResults": 100,"includeMarketValueHistory": false}
Pricing
Pay Per Event — three wired charge events:
| Event | When charged | Rate |
|---|---|---|
player-record (primary) | every player pushed | $3.00 / 1k |
transfer-record | per transfer entry in profile mode | $1.00 / 1k |
mv-history-point | per market-value history point (opt-in: includeMarketValueHistory) | $0.50 / 1k |
You only pay for data you actually pull. Failed/blocked pages are never charged.
Technical notes
- Transport: server-rendered HTML plus two clean Transfermarkt
ceapiJSON endpoints for market-value peak/history and transfer history. Works reliably from Apify cloud IPs for standard volumes. - Resilient parsing: structural selectors (
data-header__,info-table__contentlabel/value alternation,table.items) — not brittle class names.parse_confidenceflags silent structure drift. - Self-healing dual-source market value (fallback plan): the current market value is read from the HTML header and cross-checked against the
ceapivaluation JSON. If the HTML layout drifts, the scraper falls back to the JSON value automatically (market_value_source: "ceapi") so your data pipeline keeps flowing. Disagreements are flagged inwarnings, never silently merged. - Anti-bot wall detection: every HTML response is checked for consent/Cloudflare interstitials and truncated bodies. A blocked page is retried (with proxy rotation when enabled) and, if it can't be recovered, the record is dropped — you are never charged for an empty or garbage record.
- Rate limit: ~1.5s inter-request pacing + automatic backoff on 429/403/503 (3 retries: 10/20/40s).
- Proxy: optional Apify RESIDENTIAL proxy via
proxyConfigurationfor high-volume runs, billed to the run owner. No external proxy account needed.
Frequently asked questions
Do I need a Transfermarkt account or API key? No. The actor reads the same public pages and JSON endpoints the Transfermarkt website itself uses. No authentication is required.
Can I scrape a whole squad at once? Yes — pass a club URL or ID in clubUrls; every squad player becomes one record.
Can I scrape a whole league at once? Yes — pass a competition code (e.g. GB1) or league URL in leagueCodes. The scraper walks every club in the league and returns their full squads, capped by Max Results.
Am I charged if a run returns nothing? No. Pricing is per player record pushed, with no actor-start fee. Blocked or empty pages are dropped without billing.
What is market_value_source? It tells you whether each current market value came from the page HTML (html), Transfermarkt's valuation JSON (ceapi), or both in agreement (html+ceapi). It's how the scraper stays reliable when the website's HTML changes.
Does it return peak market value? Yes. Profile mode pulls the all-time peak value and its date from Transfermarkt's market-value development data.
What about transfer history? Profile mode returns the full transfer history list (from club, to club, fee, date) for each player.
Does it work without a proxy? Yes for standard volumes. For large runs, enable Apify RESIDENTIAL proxy to avoid 429 rate limits.
What does parse_confidence mean? 1.0 = all critical fields present. Below 0.5 means the page structure likely changed; check warnings for affected fields.
parse_confidence trust score
Dual-source market value — HTML header + ceapi JSON cross-check. The market_value_source field tells you exactly which path each value used (html, ceapi, or html+ceapi). Silent drift becomes loud. Use cases include fantasy football data pipelines, sports betting models, and club M&A research.
Use with AI agents (MCP)
AI agents (Claude, GPT-4o) can query Transfermarkt player values and transfer history directly via MCP.
Config: https://mcp.apify.com/?tools=bovi/transfermarkt-scraper
Integrations
Built for football-analytics firms, fantasy-sports platforms, and betting modelers tracking player valuations and transfer history — the JSON/dataset output drops into the tools you already run, no glue code:
- n8n / Make / Zapier — trigger a run or pipe every new dataset item into 500+ apps (Google Sheets, Airtable, Slack, HubSpot, your database) with no code: n8n, Make, Zapier.
- Webhooks — fire your own endpoint the moment a run finishes, to push results straight into your pipeline (docs).
- MCP server — expose this actor as a tool to Claude, Cursor, or any MCP client so an AI agent can pull this data mid-conversation (guide).
- API & SDKs — fetch the dataset as JSON, CSV, or Excel through the Apify REST API or the Python / JS SDKs.
See all Apify integrations.
Disclaimer
Transfermarkt is a public website. This Transfermarkt scraper accesses publicly available player, club, and market-value pages. No authentication is required and no private data is collected.