HealthSave Pro syncs your Apple Health data to a self-hosted time-series database you own, TimescaleDB (PostgreSQL), which is the native destination. If your stack is specifically InfluxDB, this guide is honest about the path: TimescaleDB is what you get out of the box, and you forward into InfluxDB from there with the REST API or Telegraf.
The honest answer first
Most people searching for "Apple Health to InfluxDB" don't actually need InfluxDB specifically, they want their Apple Health data in a self-hosted time-series database they control, so they can chart it in Grafana and keep a long record. HealthSave gives you exactly that, as TimescaleDB (PostgreSQL with time-series extensions). If that's you, you're done after Step 1. If you have an existing InfluxDB you genuinely want to feed, keep reading, it's a short forward.
The pipeline
iPhone (Apple Health)
└─ HealthSave Pro ──(background sync, ~1–5 min)──▶ Observatory (FastAPI + TimescaleDB)
├─▶ Grafana (SQL) — done for most people
└─▶ forwarder ──▶ InfluxDB (if you need it)
Step 1, Get Apple Health onto your own server
Stand up the open-core HealthSave Observatory (the datahub project, FastAPI + TimescaleDB via Docker), buy HealthSave Pro, and set Settings → Server Sync → Server URL to your server, then enable background sync. Within a few minutes your HealthKit samples are rows in your own TimescaleDB. This is the hard part, and it's now solved.
Step 2, Decide if you really need InfluxDB
You now own a time-series database. TimescaleDB does retention, continuous aggregates, and downsampling, and Grafana speaks to it natively. If your only goal was "Apple Health in a TSDB with Grafana," InfluxDB adds a second system for no benefit. Add it only if it's already part of your stack.
Step 3, Forward into InfluxDB (if you want it)
Two clean options:
- A small forwarder. Read recent samples from the Observatory's REST API and write them as InfluxDB line protocol, one measurement per metric, tags for source and unit, on a cron or a loop.
- Telegraf. Use a query input against the TimescaleDB hypertables (or the REST API) and Telegraf's InfluxDB output to mirror the data continuously.
Step 4, Point your dashboards at it
Configure Grafana's InfluxDB data source and confirm the measurements arrive. You can keep both databases, TimescaleDB as the system of record and InfluxDB for any panels that expect it.
TimescaleDB vs InfluxDB for health data
| TimescaleDB (what you get) | InfluxDB (forward to it) | |
|---|---|---|
| Query language | SQL (joins, window functions) | Flux / InfluxQL |
| Grafana support | Native | Native |
| Second system to run | No | Yes |
| Best when | You want one store and SQL | InfluxDB is already in your stack |
What's free vs Pro
| Capability | Tier |
|---|---|
| On-device dashboard, CSV/JSON export | Free |
| Background sync to your server (TimescaleDB) | Pro |
| REST API (for the InfluxDB forwarder) | Pro |
Pro is a one-time $24.99 (US price, varies by region), Family Sharing included, no subscription.
Honest limits
- No native InfluxDB output. The forward is your code (a script or Telegraf); HealthSave delivers to TimescaleDB.
- You run it all, the database, the forwarder, and InfluxDB. No hosted option.
- Best-effort ~1–5 min sync, this is history and trends, not real-time monitoring.
- iOS only; reads Apple Health, so data must already be in HealthKit.
- Accuracy is your wearable's.
Related
- Store Apple Health in your own database, the TimescaleDB destination in detail.
- Apple Health to Grafana, dashboards over your history.
- Build a custom REST API over your Apple Health data, the read side your forwarder uses.
- Apple Health data in your homelab.
FAQ
Does HealthSave write to InfluxDB directly?
No. The native destination is TimescaleDB (PostgreSQL), which the Observatory brings up for you. To land data in InfluxDB specifically, you forward it from the Observatory's REST API or database, for example with a small script or Telegraf.
Then why use HealthSave for an InfluxDB setup?
HealthSave solves the hard part, getting HealthKit off the iPhone and onto a server you own, reliably and in the background. Forwarding rows from there into InfluxDB is a few lines; getting Apple Health out of the phone is not.
Is TimescaleDB a fine alternative to InfluxDB here?
For personal health history, usually yes. TimescaleDB is PostgreSQL with time-series superpowers, so you get SQL, joins, and Grafana support without a second database. Many people searching for "Apple Health to InfluxDB" really just want a self-hosted time-series store, which you already have.
Can Grafana read both?
Yes. Grafana has first-class data sources for both TimescaleDB/PostgreSQL and InfluxDB, so your dashboards work either way.
Is there a hosted version?
No. You run the Observatory, the database, and any forwarder yourself. There is no hosted backend.
HealthSave is not a medical device. It is for informational purposes only and does not diagnose, treat, cure, or prevent any disease or condition. The accuracy of any health data depends on your wearable device and its sensors. Privacy claims of zero data collection apply to the iOS app; self-host sync sends your data to your own server.
Get HealthSave
Download free, try the export, then unlock background sync to your own server with a one-time Pro purchase, and forward to InfluxDB from there if your stack needs it.
Download HealthSave on the App Store