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 Marathon —
results.baa.org - Berlin Marathon —
results.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:
- Listing pages — iterates the finisher list at
?pid=list&page=N(25 runners per page, sequential pagination) - 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_kmfield 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
maxItemsto cap output during testing.