OrbTop

Mikatiming Marathon Results Scraper

SPORTSEDUCATION

Mikatiming Marathon Results Scraper

Scrape finisher results and split times from Boston Marathon and other mikatiming-powered races. Extracts placement, finish times, 5K–40K splits, and runner demographics — the full dataset used by pacing analytics and coaching tools.

What it scrapes

The mikatiming platform powers race results for several major marathons:

  • Boston Marathonresults.baa.org
  • Berlin Marathonresults.scc-events.com (same platform)
  • Tokyo Marathon and other Abbott WMM events using mikatiming infrastructure

For each finisher, the scraper collects:

Field Description
race_name Race name including year
race_year Integer year
bib Runner bib number
runner_name Full name (Last, First)
age_group Age division (e.g. 18-39, 40-44)
state Runner home state/province
club Running club or team
finisher_place_overall Overall finish placement
finisher_place_gender Placement within gender division
finisher_place_age_group Placement within age group division
net_time Chip time (HH:MM:SS)
gross_time Gun time (HH:MM:SS)
5k_split through 40k_split Cumulative split times at each checkpoint
half_split Half marathon split (21.1K)
pace_per_km Average pace (min/mile as reported by mikatiming)

Use cases

  • Pacing analytics — full 5K-through-40K split ladders for training plan modeling
  • Coaching SaaS — historical finishing data for runners by age group and event
  • Race research — compare performance across years, divisions, and events
  • Academic sports science — population-level marathon finishing data

Input

Parameter Type Description
baseUrl string Base URL of the mikatiming results site (e.g. https://results.baa.org/2024/)
eventId string Mikatiming event identifier from the URL's ?event= parameter (e.g. 2024_boston)
maxItems integer Maximum finisher records to scrape. Set 0 for all finishers. Default: 10

Boston Marathon example

{
  "baseUrl": "https://results.baa.org/2024/",
  "eventId": "2024_boston",
  "maxItems": 100
}

The eventId value appears in the site URL when you navigate to the results list: ?event=2024_boston.

How it works

The scraper uses a two-level hierarchical crawl:

  1. Listing pages — iterates the finisher list at ?pid=list&page=N (25 runners per page, sequential pagination)
  2. Detail pages — fetches each runner's ?content=detail&idp=<ID> page to extract the full dataset including all splits

The site is server-rendered HTML. No JavaScript execution required. Polite crawling at 2 concurrent requests with automatic rate-limit backoff.

Notes

  • The BAA results page does not expose gender, city, or country fields for all runners — these fields will be null for entries where the data is not published.
  • Split times are cumulative from gun start (standard marathon split convention).
  • The pace_per_km field actually reports min/mile (as labeled by mikatiming) — the field name reflects the spec; the values are min/mile.
  • Boston 2024 has approximately 25,500 finishers across 1,022 listing pages. Use maxItems to cap output during testing.