Transfermarkt Scraper
Pricing
Pay per event
Transfermarkt Scraper
Extract comprehensive football data from Transfermarkt: player profiles, market values, transfer history, career statistics, and club information. Perfect for sports analytics, scouting, fantasy football, and market research.
5.0 (1)
Pricing
Pay per event
0
2
1
Last modified
2 days ago
Transfermarkt Scraper - Professional Football Data Extractor
Extract comprehensive football data from Transfermarkt: Complete player profiles with historical market values, full transfer history with fees, achievements, agent information, and career statistics. Perfect for sports analytics, scouting, fantasy football, and football market research.
✨ Features
Complete Player Data
- Personal Information - Name, age, date of birth, nationality (primary + secondary), height, preferred foot, position
- Market Values - Current value, complete historical trends (25-49 data points), peak valuation with date
- Transfer History - Complete transfer records with actual fees (€222m Neymar deal!), dates, clubs, market value at transfer time
- Agent Information - Agent/agency name with profile links (Gestifute, Relatives, etc.)
- Achievements - Trophies, Ballon d'Or wins, World Cups, Champions League titles
- Contract Details - Current club with ID, joined date, contract expiry, contract options
- Social Media - Instagram profile URLs
Data Modes
- 🎯 Player Mode - Extract detailed player profiles
- 🏆 Competition Mode - Scrape league/competition data (coming soon)
- ⚽ Club Mode - Club profiles and squad data (coming soon)
- 🔍 Search Mode - Find players by keyword (coming soon)
Multi-Locale Support
- 🇺🇸 United States (.us)
- 🇩🇪 Germany (.de)
- 🇬🇧 United Kingdom (.co.uk)
- 🇪🇸 Spain (.es)
- 🇮🇹 Italy (.it)
- 🇫🇷 France (.fr)
🎯 Use Cases
Sports Analytics
- Track player market value trends over time
- Analyze transfer fee patterns
- Compare player valuations across leagues
- Monitor market inflation in football
Scout Reports
- Find undervalued players
- Track youth prospects' development
- Analyze career trajectories
- Compare players by position and stats
Fantasy Football
- Access current player stats
- Track form and performance data
- Monitor injuries and availability
- Analyze head-to-head matchups
Journalism & Research
- Football economics analysis
- Transfer market research
- Player career documentation
- Historical data analysis
Automation
- Feed data to n8n, Zapier, Make
- Export to Google Sheets
- Build custom dashboards
- Automate scouting workflows
📊 Output Data
Sample Player Record
{"playerId": "342229","playerName": "Kylian Mbappé","profileUrl": "https://www.transfermarkt.us/kylian-mbappe/profil/spieler/342229","fullName": "Kylian Sanmi Mbappé Lottin","dateOfBirth": "1998-12-20","age": 26,"placeOfBirth": "Paris, France","nationality": "France","secondNationality": "Cameroon","height": "1.78m","foot": "Right","position": "Centre-Forward","detailedPosition": "Centre-Forward","currentClub": "Real Madrid","currentClubId": "418","joinedDate": "2024-07-01","contractExpiry": "2029-06-30","contractOption": null,"marketValue": 180000000,"marketValueCurrency": "EUR","marketValueFormatted": "€180.00m","highestMarketValue": 180000000,"highestMarketValueDate": "2024-01-15","agent": "Fayza Lamari","agentUrl": "https://www.transfermarkt.us/fayza-lamari/beraterfirma/berater/5808","outfitter": "Nike","instagramUrl": "https://instagram.com/k.mbappe","transferHistory": [{"season": "24/25","date": "2024-07-01","clubFrom": "Paris Saint-Germain","clubFromId": "583","clubTo": "Real Madrid","clubToId": "418","marketValue": 180000000,"fee": "free transfer","feeNumeric": null},{"season": "17/18","date": "2017-08-31","clubFrom": "AS Monaco","clubFromId": "162","clubTo": "Paris Saint-Germain","clubToId": "583","marketValue": 90000000,"fee": "€180.00m","feeNumeric": 180000000}],"marketValueHistory": [{"date": "2016-03-15","age": 17,"club": "AS Monaco","clubId": "162","value": 5000000},{"date": "2018-12-20","age": 20,"club": "Paris Saint-Germain","clubId": "583","value": 150000000},{"date": "2024-01-15","age": 25,"club": "Paris Saint-Germain","clubId": "583","value": 180000000}],"careerStats": null,"achievements": [{"title": "World Cup winner","count": 1,"season": null,"club": null,"clubId": null,"competition": null,"competitionId": null}],"scrapedAt": "2025-10-28T10:30:00Z","scrapedBy": "transfermarkt-scraper"}
Dataset Views
- Overview - Key player info (name, age, position, club, market value)
- Market Value - Current and historical valuations
- Full Details - Complete dataset with all fields
🚀 Quick Start
Basic Player Scraping
{"mode": "player","urls": ["https://www.transfermarkt.us/kylian-mbappe/profil/spieler/342229","https://www.transfermarkt.us/erling-haaland/profil/spieler/418560"],"maxItems": 10}
Multiple Players with Historical Data
{"mode": "player","urls": ["https://www.transfermarkt.us/lionel-messi/profil/spieler/28003","https://www.transfermarkt.us/cristiano-ronaldo/profil/spieler/8198","https://www.transfermarkt.us/neymar/profil/spieler/68290"],"maxItems": 100}
Note: Transfer history, market value history, achievements, and all player data are extracted automatically for every player.
⚙️ Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | enum | "player" | Scraping mode: player (only mode currently implemented) |
urls | array | [Mbappé, Haaland] | List of Transfermarkt player profile URLs to scrape |
maxItems | integer | 100 | Maximum items to scrape (prevents runaway costs) |
locale | enum | "us" | Transfermarkt site: us, de, uk, es, it, fr |
delayBetweenRequests | integer | 1500 | Milliseconds between requests (rate limiting) |
useProxies | boolean | false | Enable Apify proxies (use if blocked) |
proxyGroups | array | ["SHADER"] | Proxy groups: SHADER (datacenter) or RESIDENTIAL |
Note: All available data is extracted automatically for every player (transfer history, market value history, achievements, agent info, social media, etc.). No need to configure individual data extraction options.
🔧 Technical Details
Scraping Method
- Playwright for browser automation (renders JavaScript-heavy pages)
- Cheerio for HTML parsing (efficient extraction from DOM)
- Axios for API calls to Transfermarkt's ceapi endpoints
- Smart selector fallbacks for robustness
Data Sources
- Profile Page HTML: Personal info, club details, contract, agent, achievements
- ceapi/transferHistory: Complete transfer history with fees and dates
- ceapi/marketValueDevelopment: Historical market values (25-49 data points per player)
Anti-Bot Strategy
- Standard Playwright first (no stealth needed yet)
- Configurable rate limiting (default: 1.5s delays)
- Optional proxy support (datacenter or residential)
- Automatic retry with exponential backoff
Performance
- ~2.5 seconds per player (without proxies)
- Concurrent scraping (2 browsers in parallel)
- Flat output schema (easy to use in spreadsheets, n8n, Zapier)
- NULL handling (no undefined fields)
Data Quality
- ✅ Verified Accurate: All data validated against live Transfermarkt pages
- ✅ Complete Historical Data: Transfer fees up to €222m (Neymar deal), 25-49 market value data points
- ✅ Realistic Career Trajectories: Market values follow logical progression (youth → peak → decline)
- ✅ Multiple Currencies: EUR, USD, GBP with proper parsing
💰 Pricing
Pay-Per-Event Model: $0.001 per player profile
Cost Examples:
- 100 players = $0.10
- 1,000 players = $1.00
- 10,000 players = $10.00
Plus: Apify platform costs (compute time + optional proxy bandwidth)
💡 Integration Examples
n8n - Weekly Scout Report
- Schedule Transfermarkt Scraper weekly
- Scrape top young players (URLs from watchlist)
- Filter players where
marketValue < 10000000(under €10m) - Send to Google Sheets for scouting database
- Alert on market value increases >20%
Zapier - Transfer News Automation
- Run Transfermarkt Scraper on trigger
- Extract player transfer history
- Filter for recent transfers (last 30 days)
- Post to Slack #transfers channel
- Save to Airtable transfer database
Make.com - Fantasy Football Stats
- Daily scrape of fantasy squad players
- Extract current season stats (goals, assists)
- Compare with previous week
- Generate lineup recommendations
- Email report to user
📋 Supported URLs
Player Profiles
https://www.transfermarkt.us/kylian-mbappe/profil/spieler/342229https://www.transfermarkt.de/erling-haaland/profil/spieler/418560https://www.transfermarkt.co.uk/harry-kane/profil/spieler/132098
Competitions (Coming Soon)
https://www.transfermarkt.us/premier-league/startseite/wettbewerb/GB1https://www.transfermarkt.de/bundesliga/startseite/wettbewerb/L1
Clubs (Coming Soon)
https://www.transfermarkt.us/real-madrid/startseite/verein/418https://www.transfermarkt.de/fc-bayern-munchen/startseite/verein/27
❓ FAQ
Do I need a Transfermarkt account?
No! The scraper works without authentication using publicly available data.
Can I scrape multiple players at once?
Yes, provide multiple URLs in the urls array. The scraper processes them sequentially with rate limiting.
What if I get blocked?
- Enable
useProxies: true - Try datacenter proxies first (
SHADER) - Use residential proxies if still blocked (
RESIDENTIAL) - Increase
delayBetweenRequeststo 2000-3000ms
How accurate is the market value data?
Market values are Transfermarkt's estimates (community-driven), not official transfer fees. They're widely used in football analytics and generally accurate within ±20%.
Can I export to Google Sheets?
Yes! The output is flat JSON, perfect for Google Sheets, Airtable, or any spreadsheet tool. Use n8n/Zapier/Make for automation.
How often can I run this?
As often as needed. Transfermarkt data updates regularly (daily for active players, weekly for others). Recommended: weekly for scouting, daily for high-priority players.
Will this work for retired players?
Yes! Historical player data is available. Some fields (like current market value) may be NULL for retired players.
Can I scrape entire leagues?
Competition mode (coming soon) will support league-wide scraping. For now, scrape individual player URLs.
🛠️ API Integration
Using Apify JavaScript Client
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('YOUR_USERNAME/transfermarkt-scraper').call({mode: 'player',urls: ['https://www.transfermarkt.us/kylian-mbappe/profil/spieler/342229','https://www.transfermarkt.us/erling-haaland/profil/spieler/418560'],maxItems: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Scraped ${items.length} players`);console.log(items[0].transferHistory); // Access transfer historyconsole.log(items[0].marketValueHistory); // Access market value data
Using Apify Python Client
from apify_client import ApifyClientclient = ApifyClient('YOUR_API_TOKEN')run = client.actor('YOUR_USERNAME/transfermarkt-scraper').call(run_input={'mode': 'player','urls': ['https://www.transfermarkt.us/kylian-mbappe/profil/spieler/342229','https://www.transfermarkt.us/erling-haaland/profil/spieler/418560'],'maxItems': 10,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(f"Scraped {len(items)} players")print(items[0]['transferHistory']) # Access transfer historyprint(items[0]['marketValueHistory']) # Access market value data
📝 Limitations
- Rate Limiting - 1.5s delays between requests (configurable)
- Historical Depth - Limited by Transfermarkt's data availability
- Real-time Data - Not live; scrapes current state
- Authentication - Cannot access private or restricted data
- Player Mode Only - Competition/club modes coming soon
🤝 Support & Contact
- Email: kontakt@barrierefix.de
- Issues: Report bugs or request features via GitHub Issues
- Documentation: This README + inline code comments
🔗 Explore More of Our Actors
⚽ Sports & Entertainment
| Actor | Description |
|---|---|
| Steam Workshop Scraper | Scrape Steam Workshop mods and community content |
🏢 Business Intelligence
| Actor | Description |
|---|---|
| Indeed Salary Analyzer | Get salary data for compensation benchmarking and HR analytics |
| Crunchbase Scraper | Extract company data and funding information for business intelligence |
| Northdata Scraper | Extract German company data from Northdata for business research |
| Shopify Store Intelligence | Analyze Shopify stores for competitive intelligence and market research |
| Apify Store Radar | Monitor Apify Store actors for market intelligence |
🏷️ SEO Keywords
Transfermarkt scraper, football data extraction, soccer player stats, market value tracking, transfer history scraper, player statistics, football analytics, scout report automation, fantasy football data, Transfermarkt API alternative, player market value, transfer fee analysis, football economics, sports data extraction, player career stats, n8n football integration, Zapier sports automation, Make.com football workflows
Built with ❤️ by Barrierefix | Powered by Apify
