DEV Community

Cover image for Free exercise data for your fitness app (JSON + images, EN/DE/ES)
sergei-argutin
sergei-argutin

Posted on

Free exercise data for your fitness app (JSON + images, EN/DE/ES)


For all vibecoders in here! If you've ever started building a fitness app, you hit the same wall I did: where do I get the exercise data? Names, target muscles, equipment, instructions, and — the hard part — consistent images.

I ended up building a curated dataset for this, and I've put a free slice of it on GitHub so you can drop it straight into a prototype.

What's in it

A free, ready-to-use sample — 21 exercises, each with:

  • Two image styles: classic (3D-render look on a transparent background, drops onto any UI) and flat (solid background). Start + peak pose for each.
  • Target muscles, equipment, MET, difficulty, force type, mechanic, tags.
  • Step-by-step instructions in English, German, and Spanish.
  • Delivered as plain JSON + CSV + WebP — no API, no key, no rate limit.

🔗 Repo: https://github.com/sergei-argutin/exercise-dataset
🔍 Browse it: https://sergei-argutin.github.io/exercise-dataset/

Use it in 5 lines

const data = await fetch(
  "https://raw.githubusercontent.com/sergei-argutin/exercise-dataset/main/exercises.json"
).then(r => r.json());

const ex = data.exercises[0];
console.log(ex.name_en, ex.body_part, ex.equipment);   // "Arnold Press" chest dumbbell
console.log(ex.images.classic.peak);                   // images/classic/arnold-press-peak.webp
Enter fullscreen mode Exit fullscreen mode
import json, urllib.request
url = "https://raw.githubusercontent.com/sergei-argutin/exercise-dataset/main/exercises.json"
data = json.load(urllib.request.urlopen(url))
for ex in data["exercises"]:
    print(ex["id"], "", ex["primary_muscles"])
Enter fullscreen mode Exit fullscreen mode

One thing worth checking before you ship: the license

This is the part most people skip. A few popular exercise datasets are genuinely public domain (e.g. free-exercise-db) and you can ship them commercially with a clear conscience. But two traps catch teams:

  1. Commercial APIs with a free tier often restrict redistributing/bundling the data offline — exactly what you do in an app. Read the ToS for "redistribute" and "cache".
  2. Scraped datasets can be "free" while the images inside were never licensed. The data being free ≠ the images being cleared.

So: verify the image license specifically, not just the dataset's. I wrote up the full breakdown here → Can you use a free exercise dataset commercially?

Disclosure

I'm the creator. The dataset above is a free 21-exercise sample under CC BY-NC 4.0 — use it for prototyping and non-commercial projects. There's also a full 400+ exercise version with a commercial license at repdb.co if you end up shipping something that earns money. Either way, the licensing checklist above applies — hopefully it saves you a headache.

Happy building 💪

Top comments (0)