Step Count API
Steps & Daily Activity data from every wearable, in one schema
Step counts, distance, floors and active minutes — deduplicated across phone and watch.

6/8
providers connectable today
8
webhook event types
Canonical unit
count for steps, metres for distance, seconds for time buckets
What steps & daily activity looks like through one API
Step count looks like the simplest metric in connected health and causes more double-counting bugs than any other. The problem is not measurement — it is that a single user commonly has two or three devices counting simultaneously, and the platforms handle that overlap differently.
A phone in a pocket and a watch on a wrist both count the same walk. Apple Health and Health Connect apply their own deduplication before handing data to an app, and their rules differ. Cloud providers know nothing about the phone at all. Summing sources naively inflates daily totals by anywhere from 20% to nearly double for active users.
WearLink records the originating device on every sample and exposes both the provider-deduplicated daily summary and the underlying series, so you can implement a source-priority policy — prefer the watch, fall back to the phone — rather than adding numbers that were never meant to be added.
Where providers disagree
Platform deduplication is not consistent
Apple Health and Health Connect both deduplicate overlapping step sources, but with different rules and different results. Neither exposes a stable explanation of what it dropped. If your product reconciles a total against what a user sees in their native health app, expect small unexplained gaps.
Day boundaries follow device timezone
A daily step total is bounded by local midnight on the device, which moves when a user travels. Aggregating in UTC on the server produces split or doubled days around travel. Store the local date the provider attributed, not a UTC-derived one.
Backfill rewrites days you already read
A watch that has not synced for three days uploads all three at once, and the provider restates those daily totals. Anything you computed from the earlier, incomplete values — streaks, goal completion, a leaderboard position — is now wrong and nothing tells you to recompute it. This is the single most common cause of step counts that disagree with the user's own app. WearLink re-emits the affected day on the webhook when a provider restates it, so the correction arrives as an event rather than being something you have to poll for and diff yourself.
"Active minutes" is proprietary everywhere
Every vendor computes active or exercise minutes with its own intensity thresholds. These are not comparable and should not be summed across providers. Use the raw series if you need a definition you control.
Webhook events for steps & daily activity
Summary: steps.created
Series streams:
series.steps.createdseries.flights_climbed.createdseries.stand_time.createdseries.exercise_time.createdseries.distance_walking_running.createdseries.walking_speed.createdseries.walking_steadiness.created
The full catalogue is in the event catalogue.
FAQ
Steps & Daily Activity — frequently asked questions
How do I stop double-counting steps between a phone and a watch?
Can I get intraday step data rather than daily totals?
Why does my total differ from the number in the user's health app?
Get steps & daily activity from every device your users own
Free for up to 3 connected users. No credit card. Your first API key is issued the moment you sign up.