OrbTop

Mikatiming Marathon Results Scraper

SPORTSEDUCATION

Independent tool. Trademarks referenced on this page are the property of their respective owners and are used only to identify the public website this tool reads. No affiliation or endorsement.

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

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.