⚽ Use this free tool as an API for the Transfermarkt website. Scrape and extract data from competition, club or player pages, or almost any Transfermarkt page. Download your data as HTML table, JSON, CSV, Excel, XML, and RSS feed.
Using the Transfermarkt scraper, you can extract data from all transfermarkt.com pages and domains. It works best with competition, club or player pages, but supports other page types as well.
Transfermarkt Scraper requires only the start page URL. The page type will be determined automatically, and the scraper will extract all the sports data accordingly. It is fairly simple to use as it only has 3 other input parameters to work with, other than the start page URL.
How to use the extracted Transfermarkt statistics data:
Using our basic plan, the scraper's run will cost you around 2.5 USD credits per 1000 scraped results. For more details about the plans we offer, platform credits and usage, see the platform pricing page.
If you're not sure how much credit you've got on your plan and whether you might need to upgrade, you can always check your limits in the Settings -> Usage and Billing tab in your Console. The easiest way to know how many credits your actor will need is to perform a test run.
For a more detailed explanation on how to scrape Transfermarkt, read the Transfermarkt scraper tutorial on our blog. For more ideas on how to use web scraping data, check out our industries pages for ways web scraping results are already being used across the projects and businesses of various scale and direction.
The Transfermarkt Scraper accepts following parameters:
1{ 2 "startUrls": [ 3 { 4 "url": "https://www.transfermarkt.com/lionel-messi/profil/spieler/28003" 5 } 6 ], 7 "proxyConfig": { 8 "useApifyProxy": true 9 }, 10 "crawlDepth": 1, 11 "pageDepth": 1 12};
The output from Transfermarkt Scraper is stored in the Apify Dataset. After the run is finished, you can choose to present and download the contents of the dataset in different data formats (JSON, XML, RSS, HTML Table...)
Here's an example output of the scraper when run with the input parameters from the previous example.
1{ 2 "id": "28003", 3 "url": "https://www.transfermarkt.com/lionel-messi/profil/spieler/28003", 4 "type": "player", 5 "Name in home country": "Lionel Andrés Messi Cuccitini", 6 "Date of birth/Age": "Jun 24, 1987 (37)", 7 "Place of birth": "Rosario", 8 "Height": "1,70 m", 9 "Citizenship": [ 10 "Argentina", 11 "Spain" 12 ], 13 "Position": "Attack - Right Winger", 14 "Foot": "left", 15 "Player agent": "Relatives", 16 "Current club": "Inter Miami CF", 17 "Joined": "Jul 15, 2023", 18 "Contract expires": "Dec 31, 2025", 19 "Outfitter": "adidas", 20 "Social-Media": "", 21 "transfers": [ 22 { 23 "Season": "23/24", 24 "Date": "Jul 15, 2023", 25 "Left": "Paris SG", 26 "Joined": "Miami", 27 "MV": "€35.00m", 28 "Fee": "free transfer", 29 "_i": null 30 }, 31 { 32 "Season": "21/22", 33 "Date": "Aug 10, 2021", 34 "Left": "Barcelona", 35 "Joined": "Paris SG", 36 "MV": "€80.00m", 37 "Fee": "free transfer", 38 "_i": null 39 }, 40 { 41 "Season": "05/06", 42 "Date": "Jul 1, 2005", 43 "Left": "Barcelona B", 44 "Joined": "Barcelona", 45 "MV": "€3.00m", 46 "Fee": null, 47 "_i": null 48 }, 49 { 50 "Season": "03/04", 51 "Date": "Mar 5, 2004", 52 "Left": "Barcelona C", 53 "Joined": "Barcelona B", 54 "MV": null, 55 "Fee": null, 56 "_i": null 57 }, 58 { 59 "Season": "03/04", 60 "Date": "Nov 28, 2003", 61 "Left": "Barça U19", 62 "Joined": "Barcelona C", 63 "MV": null, 64 "Fee": null, 65 "_i": null 66 }, 67 { 68 "Season": "03/04", 69 "Date": "Sep 13, 2003", 70 "Left": "Barça U16", 71 "Joined": "Barça U19", 72 "MV": null, 73 "Fee": null, 74 "_i": null 75 }, 76 { 77 "Season": "02/03", 78 "Date": "Jul 1, 2002", 79 "Left": "Barça Youth", 80 "Joined": "Barça U16", 81 "MV": null, 82 "Fee": null, 83 "_i": null 84 }, 85 { 86 "Season": "00/01", 87 "Date": "Jul 1, 2000", 88 "Left": "Newell's Youth", 89 "Joined": "Barça Youth", 90 "MV": null, 91 "Fee": "free transfer", 92 "_i": null 93 } 94 ], 95 "careerStats": [ 96 { 97 "Competition": "MLS", 98 "Appearances": "12", 99 "Goals": "12", 100 "Assists": "9", 101 "Minutes per goal": "87'", 102 "Minutes": "1,035'" 103 }, 104 { 105 "Competition": "Copa América 2024", 106 "Appearances": "2", 107 "Goals": null, 108 "Assists": "1", 109 "Minutes per goal": null, 110 "Minutes": "180'" 111 }, 112 { 113 "Competition": "CONCACAF Champions Cup", 114 "Appearances": "3", 115 "Goals": "2", 116 "Assists": "2", 117 "Minutes per goal": "115'", 118 "Minutes": "230'" 119 } 120 ] 121}
We have other sport-related scrapers in stock for you; for instance, see this Soccer Stats Scraper.
We're always working on improving the performance of our actors. So if you've got any feedback about the work of our Transfermarkt API, do not hesitate to drop us a line in support@apify.com
. If you do so much as to find a bug, please create an issue on the Github page and we'll get to it.
Yes, if you're scraping publicly available data for personal or internal use. Always review Websute's Terms of Service before large-scale use or redistribution.
No. This is a no-code tool — just enter a job title, location, and run the scraper directly from your dashboard or Apify actor page.
It extracts job titles, companies, salaries (if available), descriptions, locations, and post dates. You can export all of it to Excel or JSON.
Yes, you can scrape multiple pages and refine by job title, location, keyword, or more depending on the input settings you use.
You can use the Try Now button on this page to go to the scraper. You’ll be guided to input a search term and get structured results. No setup needed!