Smart trainer database JSON and CSV API

Static files, CORS enabled, no key. Fields are read from the files we actually serve.

These are plain static files. There is no key, no sign-up and no rate limit beyond ordinary good manners: cache what you fetch and please do not poll more than once a day, because the files only change when we re-check the data.

  • Licence: CC BY 4.0. Credit SmartBikeWiki and link to https://smartbikewiki.com/database/.
  • CORS: every file under /data/ is served with Access-Control-Allow-Origin: *, so you can call it straight from browser JavaScript.
  • Update cadence: Rebuilt whenever a model is re-checked; each record carries its own checked date. Prices change often, so treat price fields as the value on the checked date.
  • Versioning: files are overwritten in place. The checked date below tells you which version you have.
  • Related: embeds, charts and downloads and the press and media kit.

Endpoints

GET /data/trainer-database.json

One object per model with claimed specs, store price in the store's own currency, connectivity, source links and the findings named independent reviewers published. We ran no tests; nothing here is a score.

Full URL: https://smartbikewiki.com/data/trainer-database.json. Format: application/json. 21 records. Last checked 2026-10-02. Described on https://smartbikewiki.com/database/.

const res = await fetch("https://smartbikewiki.com/data/trainer-database.json");
const data = await res.json();
console.log(Array.isArray(data) ? data.length : Object.keys(data));
Fields (26)
Top-level fields of /data/trainer-database.json, read from the served file
FieldTypeExampleFilled
idstringwahoo-kickr-v621 of 21
brandstringWahoo21 of 21
modelstringKICKR (2022, WiFi)21 of 21
typestringsmart-trainer21 of 21
statusstringcurrent21 of 21
claimedPowerAccuracystring (nullable)±1%18 of 21
maxPowerWnumber (nullable)220018 of 21
maxPowerNotestring (nullable)Stated as sprint stability up to 2,200 W7 of 21
maxSimulatedGradientPctnumber (nullable)2018 of 21
minSimulatedGradientPctnumber (nullable)-108 of 21
flywheelstring (nullable)16 lb (as stated by Wahoo)11 of 21
noiseClaimstring (nullable)59 dB at 20 mph (Saris)2 of 21
weightstring (nullable)47 lb / 22 kg13 of 21
maxRiderWeightstring (nullable)250 lb / 113 kg10 of 21
connectivitystring (nullable)ANT+, ANT+ FE-C, WiFi, Bluetooth, Direct Connect16 of 21
pricenumber (nullable)1049.9911 of 21
priceCurrencystring (nullable)USD16 of 21
priceNotestringUS list price $1,049.99 (Cyclingnews, Dec 2025 and Jul 20...21 of 21
specSourcestring (nullable)https://www.wahoofitness.com/devices/indoor-cycling/bike-...18 of 21
priceSourcestring (nullable)https://www.cyclingnews.com/bikes/save-usd200-on-the-waho...16 of 21
publishedFindingsarray[{"reviewer":"BikeRadar","reviewedModel":"Wahoo KICKR V6"...21 of 21
checkedstring2026-09-2921 of 21
sourcesarray["https://www.wahoofitness.com/devices/indoor-cycling/bik...21 of 21
priceLocalnumber (nullable)11254 of 21
priceStorestring (nullable)Zwift US store (us.zwift.com)1 of 21
priceTypestring (nullable)list1 of 21

Empty or null means the source did not state it, not that the answer is zero. Money is in the source's own currency and is never converted. Dates are ISO 8601.

GET /data/trainer-database.csv

The main spec and price columns as a flat file, plus a count of published findings per model.

Full URL: https://smartbikewiki.com/data/trainer-database.csv. Format: text/csv. 21 rows. Last checked 2026-10-02. Described on https://smartbikewiki.com/database/.

const res = await fetch("https://smartbikewiki.com/data/trainer-database.csv");
const rows = (await res.text()).trim().split(/
?
/);
console.log(rows.length - 1, "rows");
Columns (17)
CSV columns of /data/trainer-database.csv, read from the served file
Column
id
brand
model
type
claimedPowerAccuracy
maxPowerW
maxSimulatedGradientPct
weight
connectivity
price
priceCurrency
priceLocal
priceNote
specSource
priceSource
checked
publishedFindings

Empty or null means the source did not state it, not that the answer is zero. Money is in the source's own currency and is never converted. Dates are ISO 8601.

How to credit

A visible mention with a link is enough, for example: "Data: SmartBikeWiki (smartbikewiki.com), CC BY 4.0." The citation below is ready to copy.

Cite this

Data version 2026-10-02. Stable address: https://smartbikewiki.com/database/. Free to reuse under CC BY 4.0 with a link back.