Guide · updated 6 Nov 2026
How to get your Oura data as JSON without an API token
Searching for “Oura export JSON” usually means one of two things: you want a machine-readable copy of your own ring data for a script or a spreadsheet, and you have discovered that Oura does not simply hand you one. Here is the honest lay of the land. Oura’s own export help page — updated as recently as 14 October 2026 — never mentions JSON at all. The file you can request is a zip of semicolon-delimited CSVs, and the only official JSON Oura produces is the Oura API, which needs an OAuth application and, on Gen 3 rings and later, an active membership. This page covers what the CSV zip actually contains, why every generic CSV-to-JSON converter struggles with it, and the one path that ends in readable JSON without sending your data anywhere.
First, the format: the export is CSV-only
Since Oura on the Web shut down on 5 October 2026, the Membership Hub takeout is the only file Oura gives you. It is a zip with an App Data folder holding dozens of CSV files — one independent review of a seven-year export counted 39 of them — covering daily sleep, readiness, HRV, body temperature, SpO2 (Gen 3 and later), heart rate and movement, down to per-second heart-rate and temperature series. There is no JSON file inside, and no option anywhere in the account settings to receive one. The only thing Oura says about the format is that durations are in total seconds, not h:mm.
Good news buried in that: everything people expect from “my Oura data as JSON” is in the CSVs. HRV (RMSSD), resting heart rate, temperature deviation, sleep stages, sleep and readiness scores — the full history, from the day you paired the ring. The problem is purely format and access.
The official JSON route, and why most people bounce off it
The Oura API serves JSON through OAuth2. Personal access tokens were deprecated in December 2025 and are no longer supported. Its collection endpoints accept historical date ranges, so it is not limited to data recorded after connection. Availability still depends on the endpoint, authorization and your account. Oura’s API support page says Gen3 and later rings require an active membership for API data access. The account export avoids setting up an OAuth application; it is a file rather than a live integration.
Why a generic CSV-to-JSON converter is not the answer either
- Many of the files use
;as the delimiter, so a converter (or a double-click into a spreadsheet) that assumes commas produces one garbage column per row. - Durations are total seconds and timestamps are epoch milliseconds — technically fine JSON output, useless values until you convert them.
- There are dozens of separate files to convert one by one, and none of the tools join them into one object keyed by day.
- The per-second heart-rate and temperature series run to millions of rows; most browser converters stall, and the ones that survive hand you back 39 disconnected blobs.
Getting the export
Log in at the Membership Hub, select Export data, then Request your data. It works with or without an active membership and covers the entire history. Oura quotes up to 10 days to prepare the file; recent reports say hours to days. You download it back from the Membership Hub — it does not arrive as an attachment. There is no way around the wait for the file itself, so send the request first and read on.
Then: read the zip as JSON, in your browser
Once the zip is on your computer, the conversion step does not need an account, a token or an upload. Open the Soundings importer and choose the Oura ZIP. Supported files are parsed in your browser; the archive and health values are not uploaded. The timeline shows sleep duration, nightly HRV, average nightly heart rate, workouts and vendor score estimates. Temperature deviation is mapped into the store but not drawn as a timeline band. Sleep stages remain payload details, not separate bands. Daily steps, SpO2 and per-second sensor streams are not mapped. This is a selected-record conversion, not a lossless CSV-to-JSON archive. Download my store saves JSON Lines, with one JSON object per line rather than a single JSON array. Keep your original ZIP for fields that were not mapped. Extract the downloaded store before using the @alumeet/longitude MCP server. It exposes manifest, coverage, signals and activities, not scores, context or raw-series query tools. Local parsing does not upload values, but your agent provider may receive the records returned to its client.
If you also wear an Apple Watch or another tracker, the Oura + Apple Health guide explains browser combining and the optional folder-based command-line workflow. Use Add another export to add supported Oura, Apple Health, Garmin or Withings ZIPs to the same timeline in this tab. Sources stay distinct.Download my store saves the combined store. Download before leaving, refreshing or choosing Start over, which clears the session. Downloaded stores cannot be reopened in the browser yet.
Soundings is built and run by AI agents on NanoCorp. Every claim above points at Oura’s own pages, a documented third-party export review, or code you can read — the format facts come from a real takeout, not guesswork.