Body Composition API: Weight, Body Fat, and Lean Mass Data
Updated July 24, 2026
Body composition means weight, body fat percentage, BMI, and lean (fat-free) mass. The single most important thing to know before you build: most fitness wearables do not measure any of this. A wrist band or watch cannot read body fat, lean mass, or BMI — those come from a smart scale (bioimpedance), a body scanner, or the user typing values in. Weight itself is almost always scale-measured or entered by hand, and BMI is computed from weight and height, not sensed. You read the results from the on-device stores (Apple HealthKit bodyMass, bodyFatPercentage, bodyMassIndex, leanBodyMass; Android Health Connect WeightRecord, BodyFatRecord) or from a scale vendor's cloud API (Withings, Garmin) via OAuth. Best pick: integrate a smart-scale source like Withings for a full breakdown, or read whatever a paired scale wrote into HealthKit or Health Connect for a hardware-agnostic path. If you only need weight and BMI, the on-device store plus manual entry is enough.
Where you can get body-composition data
This is the sharpest "the phone can't do it" case in health data. Neither a phone nor a typical wrist wearable produces body fat or lean mass — you need dedicated hardware or manual entry. Field names, units, and record types change; treat everything below as "as of 2026, verify" against each provider's live data dictionary.
| Source | How you access it | Notes |
|---|---|---|
| Apple HealthKit (iOS) | On-device read, per-type permission | bodyMass (weight), bodyFatPercentage, bodyMassIndex, leanBodyMass, plus height and waistCircumference — all HKQuantityType. No cloud pull; you read in-app whatever a scale app or the user wrote. See the HealthKit setup guide. |
| Android Health Connect | On-device read, per-record permission | WeightRecord, BodyFatRecord, plus related body records (lean body mass, height). On-device datastore other apps write into; no cloud endpoint. Verify exact record names in the Health Connect data-type index. |
| Withings API | Cloud OAuth 2.0 | Smart-scale data: weight, body fat, muscle mass, bone mass, water, visceral fat, and more from BIA / multi-frequency-BIA scales. Common pick for a rich field set — verify current fields and units in Withings' developer docs. |
| Garmin Health API | Cloud OAuth 2.0 | Lists body composition among its metrics for compatible Garmin scales. Coverage is device-dependent; verify field names. |
| Aggregators (Terra, Junction, Rook) | One cloud OAuth + normalized schema | Normalize weight and body-composition measurements across scale vendors. Useful if you want one integration across many scales — see health data aggregator APIs and wearable data APIs. |
Measured or estimated?
Body composition is a mix of measured, computed, and estimated values, and being explicit about which is which matters here:
- Weight: measured (on a scale) or manually entered. This is the reliable part.
- BMI: computed, not measured — it is weight divided by height squared. Treat it as a derived number, not a reading.
- Body fat percentage and lean mass: estimated via bioelectrical impedance analysis (BIA). A scale sends a small current through the body and infers fat versus fat-free mass from the resistance. BIA is sensitive to hydration, recent food or exercise, time of day, and whether the electrodes are foot-to-foot or hand-to-foot. It is an estimate, not a lab-grade measurement — DEXA and hydrostatic weighing are the reference methods. Never quote a body-fat accuracy percentage; none is sourced, and the numbers move with conditions.
Frame these as general wellness signals for your users, not clinical body-composition results. A single BIA reading can swing simply because someone drank water or worked out beforehand, so trends over consistent conditions are more useful than any one value.
Which should you pick?
- Full body-composition breakdown (fat, muscle, water, bone): integrate a smart-scale source. Withings is the common pick for a rich bioimpedance field set — verify current fields and units in its docs.
- Hardware-agnostic path: read whatever a paired scale wrote into HealthKit (
bodyFatPercentage,leanBodyMass) or Health Connect (BodyFatRecord). You inherit the scale's data without integrating each vendor, and on-device keeps values on the user's phone until you upload them. - Weight and BMI only: the on-device store plus manual entry is enough — you do not need a cloud scale integration at all.
- Many scale brands at once: an aggregator so you get one normalized schema instead of N vendor integrations.
Before you ship
Re-verify each provider's current field names, units, and OAuth scopes against its live data dictionary — do not hardcode scale models or field lists that were not taken from the vendor's own docs. Keep the framing honest with users: weight is measured, BMI is computed, and body fat and lean mass are BIA estimates affected by hydration and timing. Above all, set expectations up front that a wearable alone cannot produce these numbers — a smart scale or manual entry is required.
Frequently asked questions
- Can a fitness watch or band measure body fat?
- No. A typical wrist wearable does not measure body fat, lean mass, or BMI. Those come from a smart scale using bioelectrical impedance, a body scanner, or the user entering values manually. This is the sharpest case in health data where a phone or watch alone cannot produce the metric.
- Is body fat percentage from a smart scale accurate?
- It is an estimate, not a lab measurement. Consumer scales use bioelectrical impedance analysis (BIA), which infers fat versus fat-free mass from electrical resistance. BIA is sensitive to hydration, recent food or exercise, time of day, and electrode placement. DEXA and hydrostatic weighing are the reference methods. Treat scale body fat as a wellness signal and track trends under consistent conditions rather than any single reading.
- How do I get weight and body fat data from HealthKit and Health Connect?
- Apple HealthKit exposes bodyMass, bodyFatPercentage, bodyMassIndex, and leanBodyMass as on-device quantity types you read with per-type permission. Android Health Connect exposes WeightRecord and BodyFatRecord, plus related body records, read with per-record permission. Both are on-device only, so you read whatever a paired scale app or the user wrote; there is no cloud pull. Verify exact record and field names in each platform's live data dictionary.
- Is BMI measured or calculated?
- BMI is calculated, not measured. It is weight divided by height squared, so it is only as good as the weight and height behind it. HealthKit exposes it as bodyMassIndex, but treat it as a derived value rather than a sensor reading.
- Which API is best for body composition?
- For a full breakdown of fat, muscle, water, and bone, integrate a smart-scale source; Withings is the common pick for a rich bioimpedance field set. For a hardware-agnostic path, read what a paired scale wrote into HealthKit or Health Connect. If you only need weight and BMI, the on-device store plus manual entry is enough. To combine many scale brands, use an aggregator like Terra or Junction. Verify current fields and units in each provider's docs.
Keep reading
Independent comparison, last reviewed July 24, 2026. Pricing, rate limits, and feature availability change often — confirm current details in each provider’s official documentation before you commit. Product and company names are trademarks of their respective owners; AIFitnessAPI is not affiliated with, endorsed by, or sponsored by any product listed here.
← All health data · by AIFitnessAPI