BYTETOOLS

wger Workout Manager API

Free wger fitness API with no key for public data: exercise database with muscles worked, equipment, categories, images and nutrition information. Tested.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-19

What is the wger Workout Manager API?

The wger API is a free, key-free API for the open-source workout manager, providing an exercise database with muscle groups, required equipment, categories, instructional images and a nutrition database.

wger is open-source fitness tracking software, and its public API exposes the underlying exercise and nutrition databases. The exercise records include which muscles are primary and secondary, what equipment is needed, and translations into several languages.

Reading public data needs no authentication at all. Only user-specific features — logging workouts, tracking weight — require a token, which makes the exercise database freely usable as a reference in any fitness app.

Quick facts

Base URL
https://wger.de/api/v2
Authentication
Public exercise and nutrition data needs no auth. User data requires a token.
Rate limit
No published limit for public reads.
Pricing
Free and open source, AGPL licensed. Exercise data is CC-BY-SA.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the wger Workout Manager API

Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.

1. Fetch exercises from the database

GET https://wger.de/api/v2/exercise/?format=json&limit=1

curl
curl 'https://wger.de/api/v2/exercise/?format=json&limit=1'
JavaScript (fetch)
const res = await fetch("https://wger.de/api/v2/exercise/?format=json&limit=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://wger.de/api/v2/exercise/?format=json&limit=1", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "count": 860,
  "next": "https://wger.de/api/v2/exercise/?format=json&limit=1&offset=1",
  "previous": null,
  "results": [
    {
      "id": 9,
      "uuid": "1b020b3a-3732-4c7e-92fd-a0cec90ed69b",
      "created": "2023-08-06T10:17:17.422900+02:00",
      "last_update": "2026-07-23T12:24:53.482746+02:00",
      "category": 10,
      "muscles": [
        11,
        8
      ],
      "muscles_secondary": [
        10,
        6
      ],
      "equipment": [
        10
      ],
      "variation_group": "a30b1f92-7b73-477e-abb0-e91993c5fb05",
      "license_author": "deusinvictus"
    }
  ]
}

Parameters

ParameterTypeRequiredDescription
formatstringRequiredSet to `json`; the API defaults to a browsable HTML view. json
limit / offsetintegerOptionalPagination controls. 20
languageintegerOptionalLanguage id for translated exercise names. 2
categoryintegerOptionalExercise category id. 10
musclesintegerOptionalFilter by primary muscle worked. 4

Response fields

countinteger
Total records available.
next / previousstring
Pagination URLs.
results[].idinteger
Exercise identifier.
results[].categoryobject
Exercise category such as Arms or Legs.
results[].muscles / muscles_secondaryarray
Primary and secondary muscles worked.
results[].equipmentarray
Equipment required.
results[].imagesarray
Instructional image URLs where available.

What you can build with the wger Workout Manager API

  • Build a workout planner with a real exercise database
  • Filter exercises by available equipment or target muscle
  • Create a fitness reference or exercise encyclopaedia
  • Add nutrition lookup to a health tracking app

Common errors and how to fix them

HTML instead of JSON

The `format=json` parameter was omitted.

Fix: wger serves a browsable API by default; always append ?format=json.

Exercise names missing

Names live in translations, not on the base record.

Fix: Use the exerciseinfo endpoints or specify a language to get translated names.

Empty images array

Not every exercise has illustrations.

Fix: Handle the missing case; image coverage is partial and community-contributed.

wger Workout Manager API — frequently asked questions

Is the wger API free?

Yes, public exercise and nutrition data requires no authentication. Only user-specific features like workout logging need a token.

Why am I getting HTML instead of JSON?

wger serves a browsable HTML API view by default. Append ?format=json to every request.

Does it say which muscles an exercise works?

Yes, each exercise lists primary and secondary muscle groups, plus the equipment required — which is what makes it useful for building workout planners.

Can I self-host it?

Yes, wger is open source under the AGPL. Self-hosting is a good option if you need the workout tracking features rather than just the exercise database.

Tools that pair with this API

wger Workout Manager is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.