CrossFit gym & affiliate API
CrossFit gym and affiliate API
Thousands of affiliate locations with coordinates, searchable by name, city, country or radius, and linked to the athletes who competed for them.
Plans from $15 a month.
From directory to dataset
The public affiliate directory is a single large GeoJSON file. Downloading it is easy; keeping it useful is not. You need it parsed, indexed, searchable by distance and joined to results. When a gym moves or renames, that belongs in its history, so the old row stays.
Coordinates come in GeoJSON order, longitude first. Getting that backwards is the classic geographic bug and it fails quietly: every American gym ends up in central Asia and nothing errors. Our API takes and returns latitude first, which is what a person copies out of a map, and the conversion happens in one place with a test pinning a known gym to the right continent.
Fields the directory leaves out stay out. It publishes no website, phone number or opening status, so the API omits those keys: a null there would read as “this gym has no website”.
Endpoints
| Method | Path | What it returns |
|---|---|---|
| GET | /v1/gyms?q= | By name, city or country |
| GET | /v1/gyms?near=lat,lon&radius_km= | Great-circle radius, kilometres |
| GET | /v1/gyms/{id} | One gym with its location and provenance |
| GET | /v1/gyms/{id}/athletes | Athletes who competed for it |
Example
Request
curl "https://api.crossfitapi.com/v1/gyms?near=50.85,4.35&radius_km=10&limit=2" \
-H "Authorization: Bearer cfapi_live_..."Response
{
"data": [
{ "name": "CrossFit Dansaert Athletics", "city": "Brussels",
"country": { "code": "BE" },
"latitude": 50.85215, "longitude": 4.34132,
"distance_km": 0.7,
"source": { "name": "CrossFit Affiliate Directory" } },
{ "name": "White Bull CrossFit", "city": "Ixelles",
"distance_km": 2.1 }
]
}What is covered
- Affiliate locations across more than a hundred countries, all with coordinates.
- Name, address, city, state, country and region: every field the directory publishes.
- Gym-to-athlete links for seasons where the source publishes an affiliate id.
- Change history when a gym renames or moves.
- No website, phone or status fields, because the source does not publish them.
Coverage grows as each season finishes importing . A season appears there once it is imported and reconciled.
What people build with it
Gym finders
Nearest affiliates to a postcode or a map pin.
Affiliate dashboards
How a gym's members placed, season by season.
Gym software
Location and competition context inside an existing product.
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.