Skip to content
CrossFitAPI.com

CrossFit leaderboard API

CrossFit leaderboard API

Leaderboards that stay fast at any depth, with filters that mean the same thing in every season.

Plans from $15 a month.

Pagination is the whole problem

A leaderboard endpoint is easy to write and hard to write well. The upstream serves at most a hundred rows per request and pages by number, so reading deep into a large division means thousands of round trips, and offset pagination slows down the deeper you go.

This API paginates by cursor, keyed on rank plus a tiebreaker id. Page two thousand costs what page one costs. The tiebreaker matters more than it sounds: athletes tie on rank constantly, and a partial ordering skips or repeats rows at a page boundary.

Filters are canonical, so `division=men-45-49` returns the right people in 2014 and in 2026 even though the underlying ids differ.

Endpoints

MethodPathWhat it returns
GET/v1/competitions/{id}/leaderboardAny competition, one shape
GET/v1/open/{year}/leaderboardConvenience view for the Open
GET/v1/workouts/{id}/leaderboardRanked on one workout alone

Example

Request

curl "https://api.crossfitapi.com/v1/open/2026/leaderboard?division=men&limit=50&cursor=eyJrIjo1MCwi..." \
  -H "Authorization: Bearer cfapi_live_..."

Response

{
  "data": [ { "rank": 51, "athlete": { "name": "..." } } ],
  "pagination": {
    "next_cursor": "eyJrIjoxMDAsImkiOiIwMWEw...",
    "has_more": true
  }
}

Run these against live data →

What is covered

  • Overall leaderboards for every imported competition.
  • Per-workout leaderboards, ranked on that workout alone.
  • Filters: division, scaled, country, gym.
  • Cursor pagination up to 200 rows a page.
  • An invalid cursor returns invalid_cursor, with the page you asked for left unserved.

Coverage grows as each season finishes importing . A season appears there once it is imported and reconciled.

What people build with it

Live boards

Render a division in a gym display without hammering anyone.

Gym dashboards

Filter a whole leaderboard down to one affiliate.

Country views

National standings from a single query parameter.

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.

Get API access