Skip to content
CrossFitAPI.com

CrossFit API

A CrossFit API for developers

One REST API over CrossFit athletes, competitions, results, workouts and affiliate gyms, normalized, historical and stable across seasons.

Plans from $15 a month.

Is there a CrossFit API?

There is public JSON behind the CrossFit Games leaderboard, and you can read it. People do. Access is the easy part. The shape is the problem: it was built to fill one website.

Division ids are not stable between seasons: the number that means “Men 45-49” in one year means something else in another. Scores are packed integers whose encoding changes by competition type and era. “Region” means an old competitive region before 2019 and a continent after it, under the same field name. Pre-2013 results carry no affiliate id at all. Each of those is a day of work and a permanent maintenance obligation.

This API does that work once, stores the result, and gives you a schema that does not move under you.

Endpoints

MethodPathWhat it returns
GET/v1/athletes/search?q=Athletes by name, with country and gym
GET/v1/athletes/{id}/careerEvery season and stage, chronologically
GET/v1/open/{year}/leaderboardA season's leaderboard, cursor-paginated
GET/v1/gyms?near=lat,lonAffiliate gyms within a radius
GET/v1/dataWhat is covered, counted from the database

Example

Request

curl "https://api.crossfitapi.com/v1/athletes/search?q=Jeffrey%20Adler" \
  -H "Authorization: Bearer cfapi_live_..."

Response

{
  "data": [
    {
      "id": "ath_06gc8qmytnv7segtzfefvh3nv4",
      "name": "Jeffrey Adler",
      "slug": "jeffrey-adler-469656",
      "country": { "code": "CA", "name": "Canada" },
      "gym": { "id": "gym_06gc...", "name": "CrossFit Wonderland" },
      "latest_season": 2026,
      "competitions": 9
    }
  ],
  "pagination": { "next_cursor": null, "has_more": false }
}

Run these against live data →

What is covered

  • CrossFit Open, every season from 2011 onward.
  • Athletes with canonical ids that do not change when the source reorganises.
  • Affiliate gyms with coordinates, searchable by radius.
  • Workout-level results as well as overall placings.
  • Provenance on every record: which source, which URL, when we fetched it.

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

What people build with it

Athlete apps

Complete profiles and competition histories without maintaining a scraper.

Analytics

Season-over-season comparisons that are actually comparable.

AI applications

Structured historical context for a fitness assistant.

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