Hyrox Result API

Simple, transparent pricing

Every plan includes the catalogue, finisher lists, per-event stats, individual athlete splits and global division benchmarks. Plans differ by request rate and by one thing in the data: advanced split data. Cancel anytime.

Included on every plan

  • Seasons, events and divisions
  • Full finisher lists
  • Athlete search and individual splits
  • Per-event stats by division, gender and age group
  • Global division benchmarks
  • OpenAPI spec and bearer tokens

Starter

For side projects and early integrations.

€7.99/month

30 requests / minute

  • Seasons, events, divisions and full finisher lists
  • Event stats by division, gender and age group
  • Individual athlete splits
  • Global per-station division benchmarks
  • Bearer tokens + OpenAPI docs

Most popular

Pro

For production apps and growing data pipelines.

€19.99/month

100 requests / minute

Everything in Starter

  • Seasons, events, divisions and full finisher lists
  • Event stats by division, gender and age group
  • Individual athlete splits
  • Global per-station division benchmarks
  • Bearer tokens + OpenAPI docs

Plus

  • More than 3x the throughput of Starter
  • Priority for new data sources

Scale

For high-volume platforms and bulk analytics.

€49.99/month

1,000 requests / minute

Everything in Pro

  • Seasons, events, divisions and full finisher lists
  • Event stats by division, gender and age group
  • Individual athlete splits
  • Global per-station division benchmarks
  • Bearer tokens + OpenAPI docs
  • More than 3x the throughput of Starter
  • Priority for new data sources

Plus

  • Per-station field medians for any race
  • Full split distribution by division, gender and age group
  • On-demand split harvesting per race
  • 10x the throughput of Pro

Advanced split data

Median, average and count per station for a whole race field, split by division, gender and age group.

Already have an account? Log in

Secure Stripe checkout · Manage, upgrade, or cancel anytime from your account

What each plan gets you

Two kinds of benchmark are easy to mix up. Division benchmarks are station averages across every race we hold, on all plans. Advanced split data is the median for one specific race, broken down by division, gender and age group.

Feature Starter Pro Scale
Data
Seasons, events and divisions Included Included Included
Full finisher lists per division Every finisher with rank, age group and total time Included Included Included
Event stats by division, gender and age group Counts, medians and percentiles for one race Included Included Included
Individual athlete splits All 8 runs and 8 stations for one athlete Included Included Included
Global per-station division benchmarks Station averages across every race, by division code Included Included Included
Ingest status per event Tells you when a race is complete, so you stop polling blind Included Included Included
OpenAPI spec and bearer tokens Included Included Included
Advanced split data Median, average and count per station for a whole race field, split by division, gender and age group Not included Not included Included
Limits
Requests per minute 30 100 1,000

Every row above is read from the live tier configuration, so this table cannot drift from what the API actually enforces.

Common questions

What HYROX data does the API give me?
Every season, every race, and every finisher in them — over 2,500 races and more than 1.3 million results. Per athlete you get the full race history plus station splits: all eight runs and all eight stations, individually timed. Per race you get the complete finisher list with rank, division, gender, age group and total time, and precomputed statistics by division, gender and age group. It arrives as versioned JSON with an OpenAPI contract, not as a scrape you have to maintain.
Can I build a HYROX leaderboard, athlete profile or race simulator with this?
Those are the three things most people build first, and each is a handful of requests. An athlete profile is search by name, then race history, then splits. A leaderboard is one call for a division's full finisher list, cursor-paged so the deepest page stays fast. A simulator is the benchmark endpoints: percentile targets per division so an athlete can set realistic station times before race day. Commercial products are welcome — several are already live on it.
Does it cover every HYROX season and race?
The catalogue spans every season, with the current one kept continuously up to date and finisher lists normally in within a day or two of a race finishing. Station-split coverage is deepest for recent seasons, because older races were never crawled at that depth. Every event exposes its own ingest status, so you can always tell what is complete rather than guessing.
How fast is the API?
Reads are typically served in 10–40 ms of application time. Results are immutable once a race is over, so responses carry long shared-cache headers and an ETag, and repeat reads are answered from a CDN edge close to your users rather than travelling to the origin at all.
What is the difference between division benchmarks and advanced split data?
Per-division benchmarks are station averages pooled across every race in the catalogue, requested by division code (for example HYROX_MEN). They answer "how does this time compare to HYROX men generally". They are on every plan. Advanced split data are the median, average and count per station for one specific race, broken down by division, gender and age group. They answer "how did this athlete compare to the people who actually stood next to them". Those are on the Scale plan.
Which plan do I need?
If you are building athlete profiles, leaderboards, search or race history, Starter covers the data and you are choosing on request rate. If you compare an athlete against the field of their own race, station by station, you need Scale for the advanced split data.
Do I still get athlete splits on the cheaper plans?
Yes. Individual athlete splits, all eight runs and eight stations, are on every plan via GET /api/v1/athletes/{id}/splits. What Scale adds is the aggregated field: the median for every division, gender and age group bucket in a race, which is expensive to produce because it means reading every finisher in that race.
Is there anything stopping me downloading the whole dataset?
Yes. Alongside the per-minute rate limit there are protections against bulk extraction, and they are tuned so that applications serving real users never encounter them — reading the same athlete a thousand times counts once. If a request is ever blocked, the response explains exactly what happened and who to contact; there is nothing to plan around up front.
How quickly is a race available after it finishes?
Finisher lists are normally in within a day or two of a race finishing, and the gender and age group breakdowns land at the same time. Advanced split data are harvested automatically the following night, so they are usually there the next morning. Every event exposes GET /api/v1/events/{slug}/ingest-status so you can check exactly where a race is instead of polling and guessing.
What about rate limits?
Each plan has its own per minute request limit, applied per account. Exceeding it returns 429 Too Many Requests with a Retry-After header. Check your current limit at GET /api/user.
Can I cancel or change plans anytime?
Yes. Use the billing section in your dashboard to open the customer portal and upgrade, downgrade or end your subscription. Plan changes are prorated by Stripe.
What happens to my integration if I cancel?
Your account and tokens stay exactly as they are, but protected endpoints start returning 402 Payment Required instead of data. Nothing is deleted, so resubscribing later puts the same tokens straight back to work.
Can I cache responses in my own application?
Please do — it is the intended pattern, and every read tells you how long it stays valid. Responses carry Cache-Control and an ETag, and a finished race's rankings are marked cacheable for a week because they never change again. Send the ETag back as If-None-Match and you get a 304 with no body. Caching to serve your own users is expected; mirroring the catalogue to redistribute it is not.
Can I filter events by country or date?
Yes. GET /api/v1/events takes season, country, from and to, and pages up to 100 at a time. So "every Belgian race this season" is one request, not a scan of the catalogue.
Do I need a card to explore the docs?
No. The human readable docs and the OpenAPI file are on the website. Calling protected API routes requires an account, an active subscription and a bearer token.
Where does the data come from, and how far back does it go?
Results are ingested from the official HYROX results platform and enriched with race dates and locations. The catalogue covers every season, with the current season kept continuously up to date. Coverage of station splits is deepest for recent seasons, since older races were never crawled at that depth.