A Validated, Population-Scale Dataset of 2.7 Million IRONMAN® Triathlon Records with Separated Transition Times (2002–2026)
Companion repository (data-collection pipeline, notebooks, and figures) for the IRONMAN® triathlon dataset described in the accompanying manuscript (under review).
Aldo Seffrin¹, Pantelis Theodoros Nikolaidis², Marilia Santos Andrade³, Elias Villiger⁴, Daniel Ferreira¹, Beat Knechtle⁴ˌ⁵*
¹ Nova O2 Sports Science, São Paulo, Brazil ² School of Health and Caring Sciences, University of West Attica, Athens, Greece ³ Department of Physiology, Federal University of São Paulo (UNIFESP), São Paulo, Brazil ⁴ Institute of Primary Care, University of Zurich, Zurich, Switzerland ⁵ Medbase St. Gallen Am Vadianplatz, St. Gallen, Switzerland
* Corresponding author: beat.knechtle@hispeed.ch
| Metric | Value |
|---|---|
| Records | 2,706,922 |
| Races | >1,500 events |
| Years | 2002–2026 |
| Full-distance (IRONMAN®) | 1,340,799 (49.5%) |
| Half-distance (IRONMAN® 70.3) | 1,366,123 (50.5%) |
| Source: official | 2,041,743 (75.4%) |
| Source: supplement | 665,179 (24.6%) |
| T1/T2 coverage | 84.2% |
| Cross-source agreement | 99.7–99.9% |
The de-identified dataset (athlete names removed) is openly deposited on Zenodo under a Creative Commons Attribution 4.0 International (CC BY 4.0) license: https://doi.org/10.5281/zenodo.19284674. The data were derived from publicly available race results (the official IRONMAN® results platform and the CoachCox aggregator). The full dataset can also be reproduced from source with the collection scripts below.
All collection scripts are provided in data/collection/. See data/README.md for step-by-step instructions.
pip install -r requirements.txt
cd data/collection
python scrape_official.py # ~2-4h, official IRONMAN® platform
python combine_official.py # JSON to CSV
python scrape_coachcox.py # ~30min, supplementary source
python combine_coachcox.py # JSON to CSV
python merge_sources.py # Merge into unified datasetdata/
├── collection/
│ ├── scrape_official.py # Official IRONMAN® platform scraper
│ ├── scrape_coachcox.py # Supplementary source scraper
│ ├── combine_official.py # Official JSON to CSV consolidation
│ ├── combine_coachcox.py # Supplementary JSON to CSV consolidation
│ ├── merge_sources.py # Deterministic merge procedure
│ ├── event_uuids_full.csv # Event UUIDs (official platform)
│ ├── all_subevents.csv # Subevent index
│ └── race_metadata.csv # Supplementary race metadata
└── README.md # Reproduction instructions
notebooks/
├── 01_DESCRIPTIVES.ipynb # Dataset statistics and validation
└── 02_FIGURES.ipynb # Publication figures
figures/
├── Figure1.tiff # Dataset composition by source and race type
├── Figure2.tiff # Split time distributions
├── Figure3.tiff # Transition time (T1) coverage analysis
└── Figure4.tiff # Temporal trends in participation and performance
MIT — Copyright (c) 2026 Nova O2 Sports Science