CrossFit Open API
CrossFit Open API
Every CrossFit Open season from 2011, with divisions, workouts and full leaderboards through one endpoint shape.
Plans from $15 a month.
Why the Open is the hard one
The Open is by far the largest dataset in the sport. A single division of a single recent season runs past 120,000 competitors, and there are more than twenty divisions, each with Rx, Scaled and Foundations variants. Reading one season directly is thousands of paginated requests.
It is also the least consistent. The number of workouts has ranged from three to six depending on the year. Early seasons publish no country, no height and no weight. The score field is a plain rep count in 2011 and a packed integer later. The modern one encodes reps and the time remaining against a cap the source keeps to itself.
We decode it, store it, and serve the raw value alongside so you can check our work.
Endpoints
| Method | Path | What it returns |
|---|---|---|
| GET | /v1/open | Every season we hold, with coverage |
| GET | /v1/open/{year}/leaderboard | Filter by division, scaled, country, gym |
| GET | /v1/open/{year}/divisions | Canonical division keys for that season |
| GET | /v1/open/{year}/workouts | Workouts, with derived time caps |
Example
Request
curl "https://api.crossfitapi.com/v1/open/2026/leaderboard?division=men&country=BE&limit=2" \
-H "Authorization: Bearer cfapi_live_..."Response
{
"data": [
{
"rank": 214,
"scaled": "rx",
"athlete": { "name": "...", "slug": "..." },
"gym": { "id": "gym_...", "name": "CrossFit Brussels" },
"country": { "code": "BE" },
"region": { "name": "Europe", "scheme": "continental" },
"source": { "name": "CrossFit Leaderboard", "source_url": "..." }
}
],
"pagination": { "next_cursor": "eyJrIjoyMTQs...", "has_more": true }
}What is covered
- Open seasons 2011 to the current year.
- All divisions per season, keyed so one query works across years.
- Rx, Scaled and Foundations as an axis on the result, defaulting to Rx.
- Time caps derived from the score encoding, and labelled as calculated.
- No country before roughly 2012 and no affiliate id before roughly 2013, served as nulls.
Coverage grows as each season finishes importing . A season appears there once it is imported and reconciled.
What people build with it
Open trackers
Follow a gym, a country or a friend through a live season.
Percentile tools
Tell someone where a score actually places them.
Participation analysis
Entry counts by division, country and year.
Have a look at the data first
The docs and the live explorer are open, so you can see what comes back before you pay for anything.