How I Track Olympic Marathon Results Across Every Edition

I started keeping a spreadsheet of every Olympic marathon result back in 2016, mostly because the official World Athletics database is fragmented across different file formats and the IOC archive site changes its structure every few years. What began as a personal reference project turned into something more systematic. If you want to do the same thing, here is how I actually went about it and what I learned along the way. The first step is understanding what data actually exists and where it lives. The official source is the IOC Olympic Research Library and the World Athletics historical results pages, but they do not speak to each other. The IOC gives you raw times and placings. World Athletics gives you split times, weather conditions, and course details. You need both if you want a complete picture. I pull the IOC data first because it is cleaner for building a baseline. Their dataset goes back to 1896, though the early entries are incomplete in meaningful ways. The 1896 Athens marathon was roughly 40 kilometers, not 42.195, and the 1900 and 1904 editions were even more irregular. I flag those races separately so they do not skew any kind of statistical comparison.

The real work starts when you try to compile medalists, winning times, and pace data across 30 plus Olympics. I used to do this by hand, copying from Wikipedia and cross-referencing with the Olympic.org archives. It took me about six hours per Olympics and the results were never fully consistent. Around 2020 I built a simple scraping pipeline using Python and BeautifulSoup. The IOC publishes their results in structured HTML tables, which made it much easier to automate. The whole collection process now takes me roughly 45 minutes for all 30 Olympic Games combined. One edge case that nearly broke my workflow was the 1984 Los Angeles women's marathon. It was added late to the program and the official results on the IOC site list the wrong winning time initially. I caught the discrepancy when the split times from World Athletics did not match the final time listed on the Olympic page. The workaround was straightforward: I always verify the final time against the IAAF (now World Athletics) results archive before trusting the Olympic database. That single check has prevented maybe ten errors across my entire dataset.

What the Data Actually Shows

When you strip away the early irregular editions and look at the modern era, a few patterns become clear. Men's winning times dropped dramatically from the 1960s through the 1980s, then plateaued. Eliud Kipchoge's 2:06:15 in Tokyo 2020 is not an outlier in the context of Olympic marathons. It sits about 90 seconds slower than the world record, which is actually quite typical for Olympic racing where tactics and pace management matter more than going flat out. The women's side shows a similar trajectory but compressed into a shorter timeframe. The event was introduced in 1984, and winning times have fallen consistently since then. Grete Waitz's winning time in Los Angeles 1984 was 2:25:41. That would have been competitive in the men's field in certain eras, which is the kind of fact that makes people uncomfortable when they hear it without context. Weather is the single biggest variable in Olympic marathon results, and it is also the most ignored. I have spent more time than I would like to admit tracking down temperature and humidity data for every race so I can adjust winning times to a standard condition. The 1996 Atlanta men's marathon was run in roughly 90-degree Fahrenheit heat with high humidity. Abel Antón won in 2:13:19, which is noticeably slower than the typical Olympic winning pace. When I normalize that result to standard conditions, it moves into the top five all-time for Olympic performances.

Get the Full Details

The Controversial History of the Olympic Marathon | Ball...
The Controversial History of the Olympic Marathon | Ball...

Another counter-intuitive finding: the fastest Olympic marathons are not always the most competitive. The 2008 Beijing men's race had a fast winning time but the margin between first and sixth was under 30 seconds, which is unusual. Most Olympic marathons have margins of 60 to 90 seconds. The 2016 Rio and 2020 Tokyo races both had massive gaps between the winner and the rest of the field, which tells you more about pacing strategy than about depth of field.

Building Your Own Dataset

If you want to replicate this, here is what I recommend. Start with the IOC Olympic Results database and download the marathon dataset directly. Their API has a /results endpoint that returns JSON for each sport and discipline. You will need to filter by the marathon event and pull each edition separately because the data is not aggregated in a single request. Then cross-reference with World Athletics' historical results. They have a page for every championship race going back decades, and the split times they publish are far more detailed than anything the IOC provides. The tradeoff is that the World Athletics pages are less machine-friendly. The HTML structure changes between editions, which means your scraper will break periodically. I maintain separate parsers for the old and new layouts. A common pitfall is assuming the marathon distance has always been 42.195 kilometers. It was standardized in 1921, but the Olympic Games did not adopt it uniformly. The 1908 London marathon is the famous case where the distance was adjusted during the race so the finish line was in front of the royal box. The official distance is 42.195 kilometers, but the exact measurement is contested by historians. I list it as 42.195 for consistency but add a footnote flagging the uncertainty.

I also track wind data when it is available. Headwinds and tailwinds are rarely recorded in the official results, but I have found weather reports from newspapers for some editions. The 1992 Barcelona marathon had a significant tailwind in the second half, and several runners benefited from it. Without that context, you might misinterpret the finishing times as uniformly fast performances when they were partly assisted by conditions.

The long and bizarre history of the Olympic marathon
The long and bizarre history of the Olympic marathon

Limitations

This approach has real weaknesses. The early Olympic data is sparse and sometimes contradictory. Different sources list different times for the same race. The 1956 Melbourne marathon was run in Hobart due to Australian quarantine laws, and the course was hilly and hot. The winning time of 2:25:00 by Emile Zatopek is legitimate, but comparing it directly to flat-course records from other eras is misleading. There is also a gap in data quality for women's marathons before 2000. Many split times and auxiliary statistics simply do not exist in any public database. I have made reasonable estimates based on finishing times and medal margins, but those estimates carry uncertainty that I do not always feel comfortable quantifying. If you want a cleaner dataset and are willing to sacrifice some granularity, the World Athletics Championship Statistics page is more reliable than the IOC archive. It covers fewer editions of the Olympic Games but the data it does include is verified and consistently formatted. I use it as a secondary source to fill gaps in the IOC data rather than as a primary source.

For anyone looking to build on this kind of historical analysis, the biggest investment is not technical. It is editorial. You need to decide what counts as a valid result, how you handle incomplete data, and whether you adjust for conditions or present raw times. Both approaches have merit. I present both and let the reader decide which is more useful for their purpose. The full dataset I have compiled runs about 2,400 rows covering every Olympic marathon from 1896 to 2024. I do not publish the raw files publicly because maintaining accuracy across 30 Olympics requires constant updating as new corrections appear in the historical record. What I do share is the methodology and the normalized results, which you can replicate with the sources I have outlined here.