Seasons, events, division results, athlete search, station splits, and precomputed stats.
One versioned JSON API with a clear OpenAPI contract and predictable responses.
Versioned REST API · OpenAPI 3 · Bearer authentication · Catalog and live resolution
SeasonsEventsDivisionsResultsSplitsStatsSimulator
Interactive sandbox · no account needed
See exactly what you get back
Pick an endpoint, press Send, and read the real response
shape your app will receive — then copy it as cURL, JavaScript, or Python.
These are recorded sample payloads, so nothing here needs a key.
Every event and division ships with precomputed statistics: counts, averages, medians, standard
deviation and percentiles (p10 to p90) for the finish and all eight stations. One request, no
crawling, no number crunching. Drag the slider to see how a goal time lands against a real field.
Personalised HYROX training plans & race simulator
A coaching platform that turns a 10-question intake into a personal weekly plan and a race simulator. It uses the API's division benchmarks and per-station statistics to tell athletes exactly how their projected splits compare to the real field.
Your HYROX race, printed. A 30x40 cm poster of your splits versus the field.
Splitprint turns a HYROX result into a physical print. Athletes search their name and get a poster of their 8 runs and 8 stations, each compared against the median of their own field (gender, division and age group). Printed on 200gsm, shipped flat across Europe.
Type a goal time, get a station-by-station pacing plan
Let athletes enter a target finish and instantly see the split each station demands, plus the percentile that time lands in for their division, sex and age group.
Live rankings for any HYROX race, filterable in seconds
A leaderboard that lists every finisher for an event, filterable by division, sex, age group and nation, with cursor pagination for smooth infinite scroll.
Precomputed stats by division, gender, and age group
GET
/v1/simulator/benchmarks
Race simulator benchmark data
How it works
1SubscribeCreate an account and activate your plan with secure checkout.
2Create a tokenIssue a personal access token from your dashboard.
3Call the APISend Authorization: Bearer … on each request.
4ShipIntegrate with your app using the OpenAPI contract.
Common questions
Is there an API for HYROX results?
This is it. Every season, every race and every finisher in them — over 2,500 races and more than 1.3 million results — served as versioned
JSON with an OpenAPI 3 contract and bearer authentication. No scraping to build, no HTML to parse, and
no chasing the source every time it changes shape.
Can I get HYROX station splits for an athlete?
Yes, on every plan. GET /api/v1/athletes/{id}/splits
returns all eight runs and all eight stations individually timed for a single race, so you can show
exactly where an athlete gained or lost time. Search by name to get the race id, then ask for its
splits — two requests from a name to a full station breakdown.
What can I build with it?
Athlete profiles with full race history, division leaderboards, race simulators and pacing tools,
and event dashboards comparing a field by division, gender and age group. The showcase on this page is
built from live products already running on the API, and commercial use is welcome.
What is the difference between division benchmarks and advanced split data?
Division benchmarks pool station averages across every race in the catalogue, requested by division
code such as HYROX_MEN. Advanced split data is
the median per station for one specific race, broken down by division, gender and age group, so an
athlete is compared against the people who actually raced alongside them. Division benchmarks are on
every plan; advanced split data is on the Scale plan.
Do I need a subscription to read the docs?
Documentation and the OpenAPI spec are free on the website. Calling protected API routes requires an
account, an active subscription and a bearer token.
How fresh is the data?
The catalogue is synced continuously across the HYROX calendar. Finisher lists are normally in within a
day or two of a race, with gender and age group breakdowns at the same time, and advanced split data
harvested the following night. Athlete search and detail can resolve live when needed, and every response
tells you the source in meta.data_source.
How do I know when a race is fully ingested?
Call GET /api/v1/events/{slug}/ingest-status. It
reports whether the rankings are still coming in, how many finishers are stored, and whether the field
splits are queued, running or done, so you never have to infer it from the shape of a stats payload.
A race weekend runs several days and each division races on one of them, so the response also carries
that division's own race day and whether its results are due yet — an empty ranking on the Saturday
is a Sunday division, not a stalled ingest.
What are the rate limits?
Each plan has a per minute request limit, applied per account. Exceeding it returns
429 with a
Retry-After header telling you exactly how long to
wait. Your current limit is on
GET /api/user. There are separate protections
against bulk extraction of the whole catalogue, set so that an application serving real users does not
meet them.
Can I use this for a commercial product?
Yes, and people do. The showcase on this page is built from live products running on the API. If you ship
something, tell us and we will happily feature it.
What happens if a race is missing or looks wrong?
Email us. Ingestion is monitored daily, but the source occasionally changes shape and some races genuinely
have no published results. Reports get looked at quickly, and a fix usually lands the same day.
How do I find one athlete's races?
Search by given name and surname with
GET /api/v1/athletes/search. Each hit carries a
race id for that one performance and a
person_ref that ties their performances together,
so you can go from a name to a full race history and then to station splits without guessing at ids.
Do I have to page through everything?
Only where it makes sense. The event catalogue is paged 50 at a time and takes
season,
country and date filters, so you ask for the
slice you want. Full finisher lists use a cursor, which stays fast on the deepest page of the biggest
race rather than degrading the further in you go.
Can I cache the responses?
Yes, and you should. Every read carries
Cache-Control and an
ETag; a finished race is marked cacheable for a
week because its results never change again. Send the ETag back as
If-None-Match for a
304 and no body.
Start building on HYROX data today
Subscribe in minutes. Cancel anytime from your account.