Mikatiming Marathon Results Scraper
Pricing
Pay per event
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 for pacing analysis and coaching tools.
Pricing
Pay per event
Rating
0.0
(0)
Developer
BowTiedRaccoon
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Share
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.