Skip to main content

Bodybuilding Data API

Query the bodybuilding database through a free REST API. Retrieve athlete profiles, competition results, Mr. Olympia and Arnold Classic history, IFBB Pro division data, GOAT rankings, and more.

The API returns JSON and follows standard REST conventions. All endpoints use GET requests. No login is required, but requests are rate-limited per IP (60/min, or 600/min with an optional API key sent as the X-API-Key header).

110,447 athletes
349,823 results
6,783 contests
14 division types
Start here

Try one safe request first

Copy this request before reading the full endpoint catalog. It returns the first matching Ronnie Coleman record and proves your HTTP client, base URL, and JSON parsing are working.

  • No login required; an optional API key (X-API-Key header) raises the rate limit from 60 to 600 requests per minute.
  • Expected response: a paginated object with data, total, page, per_page, and pages; each athlete uses canonical_name and primary_division.
  • Common mistake: do not append a second `/wp-json/` if your client already uses the full Base URL below.
curl "https://fitnessvolt.com/wp-json/bodybuilding/v1/athletes?search=Ronnie%20Coleman&per_page=1"

Base URL

https://fitnessvolt.com/wp-json/bodybuilding/v1

Authentication

Read endpoints are public, no login required. A valid API key raises your rate limit when sent in the X-API-Key request header. Keys are not accepted in query strings.

Rate Limiting

Enforced per IP: 60 requests per minute without a key, 600 per minute with a valid API key. Exceeding the limit returns HTTP 429 with a Retry-After header. Cache responses and stay within the limit rather than retrying tightly.

Cross-Origin Requests

Anonymous browser GET requests are public: responses to requests with an Origin header include Access-Control-Allow-Origin: *. Do not send cookies.

Keyed browser requests are not currently available because preflight responses do not allow X-API-Key; use a server-side client for keyed requests.

GET

Machine-Readable Specification

/openapi

The OpenAPI 3.0 specification is available as JSON for client generators, API explorers, and validation tools.

Specification URL

"https://fitnessvolt.com/wp-json/bodybuilding/v1/openapi"
MCP

MCP Server for AI Assistants

A Model Context Protocol (MCP) server lets AI assistants and agents query this database directly as tools.

It is a thin adapter over the public REST API above, so there is no separate data path, and its tool definitions are generated from the OpenAPI specification, so they always match the live endpoints.

The source ships with the plugin under bodybuilding/mcp/ (plain Node, no build step).

Run it (Node 18+)

cd bodybuilding/mcp && npm install && BB_API_BASE="https://fitnessvolt.com/wp-json/bodybuilding/v1" node index.js

The bundled adapter currently makes anonymous API requests. Use the REST API directly for keyed requests. To register the server with a desktop AI client, add an entry like this to its MCP configuration:

claude_desktop_config.json

{
  "mcpServers": {
    "bodybuilding-database": {
      "command": "node",
      "args": ["/absolute/path/to/bodybuilding/mcp/index.js"],
      "env": { "BB_API_BASE": "https://fitnessvolt.com/wp-json/bodybuilding/v1" }
    }
  }
}

The server exposes tools for search, athletes, contests, divisions, rankings, GOAT, head-to-head compare, on this day, records, and Mr. Olympia. Every response carries the same attribution requirement described below.

GET

Complete Endpoint Catalog

This catalog is generated from the registered WordPress REST routes in the bodybuilding/v1 namespace. It lists public read endpoints only.

GET

Arnold

/arnold

Retrieve arnold data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
year integer optional Year (default: 0)
division string optional Division (default: )
GET

Arnold Year

/arnold/{year}

Retrieve arnold year data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
year integer required Year
division string optional Division (default: )
GET

Arnold Csv

/arnold/{year}/csv

Retrieve arnold csv data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
year integer required Year
division string optional Division (default: )
GET

Athletes

/athletes

Retrieve athletes data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
search string optional Search (default: )
division string optional Division (default: )
country string optional Country (default: )
gender string optional Gender (default: )
active string optional Active (default: )
sort string optional Sort (default: )
order string optional Order (default: )
per_page integer optional Per Page (default: 20)
page integer optional Page (default: 1)
GET

Athlete

/athletes/{id}

Retrieve athlete data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
id string required Id
GET

Athlete Career Arc

/athletes/{id}/career-arc

Retrieve athlete career arc data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
id string required Id
GET

Best By Decade

/best

Retrieve best by decade data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
division string required Division
decade integer required Decade
per_page integer optional Per Page (default: 10)
GET

Compare

/compare

Retrieve compare data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
athlete1 string required Athlete1
athlete2 string required Athlete2
GET

Compare Csv

/compare/csv

Retrieve compare csv data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
a string optional A (default: )
b string optional B (default: )
athlete1 string optional Athlete1 (default: )
athlete2 string optional Athlete2 (default: )
GET

Contests

/contests

Retrieve contests data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
year integer optional Year (default: 0)
event_tier string optional Event Tier (default: )
search string optional Search (default: )
per_page integer optional Per Page (default: 20)
page integer optional Page (default: 1)
upcoming boolean optional Upcoming (default: )
order string optional Order (default: )
GET

Contest

/contests/{id}

Retrieve contest data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
id string required Id
GET

Contest By Slug

/contests/{slug}

Retrieve contest by slug data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
slug string required Slug
GET

Contest Csv

/contests/{slug}/csv

Retrieve contest csv data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
slug string required Slug
GET

Countries

/countries

Retrieve countries data from the Bodybuilding Database API.

Key Parameters

None.

GET

Country Olympia Titles

/countries/olympia-titles

Retrieve country olympia titles data from the Bodybuilding Database API.

Key Parameters

None.

GET

Country

/countries/{name}

Retrieve country data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
name string required Name
GET

Division Analytics

/division-analytics

Retrieve division analytics data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
division string optional Division (default: mens-open)
GET

Division Migration

/division-migration

Retrieve division migration data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
athlete string required Athlete
GET

Division Migrations

/division-migrations

Retrieve division migrations data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
per_page integer optional Per Page (default: 25)
GET

Divisions

/divisions

Retrieve divisions data from the Bodybuilding Database API.

Key Parameters

None.

GET

Division

/divisions/{id}

Retrieve division data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
id string required Id
GET

Division Csv

/divisions/{id}/csv

Retrieve division csv data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
id string required Id
GET

Feed

/feed

Retrieve feed data from the Bodybuilding Database API.

Key Parameters

None.

GET

Goat

/goat

Retrieve goat data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
division string optional Division (default: )
gender string optional Gender (default: )
per_page integer optional Per Page (default: 50)
mode string optional Mode (default: base)
GET

Goat Csv

/goat/csv

Retrieve goat csv data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
division string optional Division (default: )
gender string optional Gender (default: )
per_page integer optional Per Page (default: 100)
mode string optional Mode (default: base)
GET

Olympia

/olympia

Retrieve olympia data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
year integer optional Year (default: 0)
division string optional Division (default: )
GET

Olympia Qualified

/olympia-qualified

Retrieve olympia qualified data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
year integer optional Year (default: 0)
GET

Olympia Winners

/olympia-winners

Retrieve olympia winners data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
division string required Division
GET

Olympia Year

/olympia/{year}

Retrieve olympia year data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
year integer required Year
division string optional Division (default: )
GET

Olympia Csv

/olympia/{year}/csv

Retrieve olympia csv data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
year integer required Year
division string optional Division (default: )
GET

On This Day

/on-this-day

Retrieve on this day data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
month integer optional Month (default: 8)
day integer optional Day (default: 12)
GET

Peak Window

/peak-window

Retrieve peak window data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
athlete string required Athlete
GET

Predictions

/predictions

Retrieve predictions data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
contest string optional Contest (default: olympia)
year integer optional Year (default: 0)
division string optional Division (default: mens-open)
GET

Predictions Csv

/predictions/csv

Retrieve predictions csv data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
contest string optional Contest (default: olympia)
year integer optional Year (default: 0)
division string optional Division (default: mens-open)
GET

Prime Vs Prime

/prime-vs-prime

Retrieve prime vs prime data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
a string required A
b string required B
GET

Pseo Index

/pseo-index

Retrieve pseo index data from the Bodybuilding Database API.

Key Parameters

None.

GET

Rankings

/rankings

Retrieve rankings data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
type string optional Type (default: olympia_wins)
division string optional Division (default: )
gender string optional Gender (default: )
per_page integer optional Per Page (default: 50)
page integer optional Page (default: 1)
GET

Rankings Csv

/rankings/csv

Retrieve rankings csv data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
type string optional Type (default: olympia_wins)
division string optional Division (default: )
gender string optional Gender (default: )
per_page integer optional Per Page (default: 200)
GET

Records

/records/{category}

Retrieve records data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
category string required Category
GET

Results

/results

Retrieve results data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
athlete_id integer optional Athlete Id (default: 0)
contest_id integer optional Contest Id (default: 0)
per_page integer optional Per Page (default: 50)
page integer optional Page (default: 1)
GET

Road To Olympia

/road-to-olympia

Retrieve road to olympia data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
division string optional Division (default: )
year integer optional Year (default: 0)
per_page integer optional Per Page (default: 50)
page integer optional Page (default: 1)
GET

Seasons

/seasons

Retrieve seasons data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
year integer optional Year (default: 0)
GET

Season Year

/seasons/{year}

Retrieve season year data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
year integer required Year
GET

Season Csv

/seasons/{year}/csv

Retrieve season csv data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
year integer required Year
GET

Stats

/stats

Retrieve stats data from the Bodybuilding Database API.

Key Parameters

None.

GET

Top Lists

/top-lists

Retrieve top lists data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
category string optional Category (default: most_wins)
division string optional Division (default: )
per_page integer optional Per Page (default: 25)
GET

Top List Detail

/top-lists/{slug}

Retrieve top list detail data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
slug string required Slug
division string optional Division (default: )
per_page integer optional Per Page (default: 25)
GET

Top List Csv

/top-lists/{slug}/csv

Retrieve top list csv data from the Bodybuilding Database API.

Key Parameters

NameTypeRequiredDescription
slug string required Slug
division string optional Division (default: )
per_page integer optional Per Page (default: 100)

Odds board pages use generated snapshots and prediction data. No separate public REST /odds route is registered; use /predictions for prediction payloads.

GET

List Athletes

/athletes

Retrieve a paginated list of bodybuilding athletes. Supports filtering by division, country, gender, and active status, plus text search.

Parameters

NameTypeRequiredDescription
searchstringoptionalFilter by athlete name
divisionstringoptionalFilter by division slug (e.g. mens-open, womens-bikini)
countrystringoptionalFilter by country name
genderstringoptionalFilter by gender (M or F)
activestringoptionalFilter active athletes (1 for active only)
sortstringoptionalSort field (e.g. name, total_wins)
orderstringoptionalSort direction: asc or desc
per_pageintegeroptionalResults per page (default: 20)
pageintegeroptionalPage number (default: 1)

Example Request

curl "https://fitnessvolt.com/wp-json/bodybuilding/v1/athletes?search=Ronnie%20Coleman&per_page=1"

Example Response

{ "data": [ { "id": 1391, "canonical_name": "Ronnie Coleman", "slug": "ronnie-coleman", "country": "United States", "primary_division": "Men's Open Bodybuilding", "division": "mens-open", "total_wins": 27, "olympia_titles": 8 } ], "total": 2, "page": 1, "per_page": 1, "pages": 2 }
GET

Get Athlete

/athletes/{id}

Retrieve detailed information for a single athlete, including career statistics and full competition result history.

Parameters

NameTypeRequiredDescription
idstringrequiredAthlete numeric ID or slug (e.g. ronnie-coleman)

Example Request

curl "https://fitnessvolt.com/wp-json/bodybuilding/v1/athletes/ronnie-coleman"

Example Response

{ "id": 1391, "canonical_name": "Ronnie Coleman", "slug": "ronnie-coleman", "country": "United States", "primary_division": "Men's Open Bodybuilding", "height_display": "5'11\" (180 cm)", "weight_display": "287 lb (130 kg)", "birthdate": "1964-05-13", "total_wins": 27, "olympia_wins": 8, "arnold_wins": null, "results": [ { "result_id": "108214", "placement": "4", "contest_name": "Mr. Olympia", "contest_year": "2007", "division_slug": "mens-open" } ] }
GET

List Contests

/contests

Retrieve a paginated list of bodybuilding contests. Filter by year, tier, or search by name.

Parameters

NameTypeRequiredDescription
yearintegeroptionalFilter by contest year
event_tierstringoptionalFilter by event tier
searchstringoptionalSearch contest names
per_pageintegeroptionalResults per page (default: 20)
pageintegeroptionalPage number (default: 1)

Example Request

curl "https://fitnessvolt.com/wp-json/bodybuilding/v1/contests?year=2025&search=Arnold%20Classic&per_page=1"

Example Response

{ "data": [ { "id": 6177, "name": "Arnold Classic", "slug": "arnold-classic-2025", "year": 2025, "location": "Columbus, OH, USA", "event_tier": "major", "start_date": "2025-03-01", "result_count": 71 } ], "total": 1, "page": 1, "per_page": 1, "pages": 1 }
GET

Get Contest

/contests/{id}

Retrieve full details for a single contest, including all division results and placings.

Parameters

NameTypeRequiredDescription
idintegerrequiredContest ID

Example Request

curl "https://fitnessvolt.com/wp-json/bodybuilding/v1/contests/6177"
GET

List Divisions

/divisions

Retrieve all 13 canonical IFBB Pro divisions with athlete counts and metadata.

Example Request

curl "https://fitnessvolt.com/wp-json/bodybuilding/v1/divisions"

Example Response

[ { "slug": "mens-open", "name": "Men's Open Bodybuilding", "gender": "M", "is_ifbb_pro": true, "year_introduced": 1965, "result_count": 163208, "athlete_count": 56790 } ]
GET

Get Division

/divisions/{id}

Retrieve detailed information for a single division, including top athletes and historical data.

Parameters

NameTypeRequiredDescription
idstringrequiredDivision slug (e.g. mens-open, classic-physique)

Example Request

curl "https://fitnessvolt.com/wp-json/bodybuilding/v1/divisions/classic-physique"
GET

Rankings

/rankings

Retrieve athlete rankings by total wins, Olympia wins, Arnold wins, and other statistical categories. Filterable by division.

Parameters

NameTypeRequiredDescription
typestringoptionalRanking type (default: olympia_wins)
divisionstringoptionalFilter by division slug
genderstringoptionalFilter by gender (M or F)
per_pageintegeroptionalResults per page (default: 50)
pageintegeroptionalPage number (default: 1)

Example Request

curl "https://fitnessvolt.com/wp-json/bodybuilding/v1/rankings?type=total_wins&division=mens-open&per_page=10"
GET

GOAT Rankings

/goat

Retrieve the Greatest of All Time composite rankings, factoring in Olympia titles, total wins, longevity, and dominance.

Parameters

NameTypeRequiredDescription
divisionstringoptionalFilter by division slug
genderstringoptionalFilter by gender (M or F)
per_pageintegeroptionalResults per page (default: 50)
modestringoptionalScoring mode (default: base)

Example Request

curl "https://fitnessvolt.com/wp-json/bodybuilding/v1/goat?division=mens-open&per_page=1"

Example Response

{ "division": "mens-open", "mode": "base", "male": [ { "id": 1391, "canonical_name": "Ronnie Coleman", "slug": "ronnie-coleman", "country": "United States", "total_wins": 27, "olympia_wins": 8, "goat_score": 79.79, "rank": 1 } ], "female": [] }
GET

Mr. Olympia

/olympia

Retrieve Mr. Olympia results. Returns all years by default, or filter by year and division.

Parameters

NameTypeRequiredDescription
yearintegeroptionalFilter by year (e.g. 2024)
divisionstringoptionalFilter by division slug

Example Request

curl "https://fitnessvolt.com/wp-json/bodybuilding/v1/olympia?year=2024"
GET

Arnold Classic

/arnold

Retrieve Arnold Classic results. Returns all years by default, or filter by year and division.

Parameters

NameTypeRequiredDescription
yearintegeroptionalFilter by year (e.g. 2024)
divisionstringoptionalFilter by division slug

Example Request

curl "https://fitnessvolt.com/wp-json/bodybuilding/v1/arnold?year=2025"
GET

Countries

/countries

Retrieve countries with codes, athlete counts, win totals, and active-athlete counts.

Example Request

curl "https://fitnessvolt.com/wp-json/bodybuilding/v1/countries"

Example Response

[ { "country": "United States", "country_code": "US", "athlete_count": 82471, "total_wins": 40450, "active_athletes": 4743 } ]
GET

Database Statistics

/stats

Retrieve aggregate database statistics: total athletes, contests, results, division types, provenance, and year coverage.

Example Request

curl "https://fitnessvolt.com/wp-json/bodybuilding/v1/stats"

Example Response

{ "total_athletes": 110447, "total_contests": 6783, "total_results": 349823, "total_division_types": 14, "total_countries": 147, "earliest_year": 1934, "latest_year": 2026, "active_athletes": 8482, "provenance": { "dataset_version": "2026-08-11", "dateModified": "2026-08-11", "confidence": { "athlete_tiers": { "unrated": 1226, "high": 74317, "medium": 34903, "review": 1, "verified": 0 }, "athletes": 110447 }, "agreement": { "results_total": 349823, "results_sourced": 334866, "results_multi": 179121 }, "temporal_coverage": "1934/2026", "citation": "Fitness Volt Bodybuilding Database, v2026-08-11", "tables": { "athlete_sources": { "record_count": 375797, "distinct_linked_entity_count": 109460, "distinct_named_source_count": 42 }, "contest_sources": { "record_count": 10308, "distinct_linked_entity_count": 6716, "distinct_named_source_count": 22 }, "result_sources": { "record_count": 514080, "distinct_linked_entity_count": 334866, "distinct_named_source_count": 11 } } } }
GET

On This Day

/on-this-day

Retrieve bodybuilding events that happened on a given date in history. Defaults to today's date.

Parameters

NameTypeRequiredDescription
monthintegeroptionalMonth number 1-12 (default: current month)
dayintegeroptionalDay number 1-31 (default: current day)

Example Request

curl "https://fitnessvolt.com/wp-json/bodybuilding/v1/on-this-day?month=9&day=15"
GET

Predictions

/predictions

Retrieve data-driven contest predictions based on recent form, historical performance, and win momentum.

Parameters

NameTypeRequiredDescription
conteststringoptionalContest type: olympia or arnold (default: olympia)
yearintegeroptionalPrediction year (default: current year)
divisionstringoptionalDivision slug (default: mens-open)

Example Request

curl "https://fitnessvolt.com/wp-json/bodybuilding/v1/predictions?contest=olympia&year=2026&division=mens-open"

Attribution and Fair Use

The Bodybuilding Database API is free for non-commercial use with attribution required. Requests are rate-limited per IP (60 per minute; 600 with an optional API key).

Cache responses, stay within the limit, and link back to the source when publishing data, charts, widgets, or derived research.

Copy-Paste Attribution

Data by Fitness Volt Bodybuilding Database (https://fitnessvolt.com/bodybuilding). Used under CC-BY-NC-4.0 attribution.

Prefer not to write code? The embeddable widgets render the same data as a drop-in block.

Bodybuilding Data API

The Bodybuilding Data API provides programmatic access to 110,447 athlete profiles, 349,823 competition results, and 6,783 contests.

Public read endpoints return JSON without a login. Requests are limited to 60 per minute per IP, or 600 per minute with a valid API key sent in the X-API-Key header.