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?
Can I build a HYROX leaderboard, athlete profile or race simulator with this?
Does it cover every HYROX season and race?
How fast is the API?
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?
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?
Do I still get athlete splits on the cheaper plans?
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?
How quickly is a race available after it finishes?
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?
429 Too Many Requests with a
Retry-After header. Check your current limit at
GET /api/user.
Can I cancel or change plans anytime?
What happens to my integration if I cancel?
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?
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?
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.