Qsearch: Fitness Wearable Data Aggregation API
Aggregated, anonymized fitness metrics for dashboards and analytics.
Endpoints
- /api/fitness - overview
- /api/fitness/daily-summary - single summary object
- /api/fitness/activity-breakdown?aspect= - aspects: timepercent, timeminutes, distancepercent
- /api/fitness/weekly-trends?metric=&day= - metric by weekday
- /api/fitness/top-percentiles?metric= - top percentile metrics
Examples
cURL
curl -H "x-api-key: YOUR_KEY" "https://wwww.qsearch.dev/api/fitness/daily-summary"
JavaScript (fetch)
const BASE = 'https://wwww.qsearch.dev'
const res = await fetch(BASE + '/api/fitness/weekly-trends?metric=steps&day=Monday', { headers: { 'x-api-key': 'YOUR_KEY' } })
const json = await res.json()
console.log(json)Auth
Provide api key x-api-key
Schema (simplified OpenAPI 3.0)
Quick reference for endpoints and response shapes.
openapi: 3.0.0
info:
title: Qsearch Fitness API (simplified)
version: "1.0"
servers:
- url: https://wwww.qsearch.dev
paths:
/api/fitness/daily-summary:
get:
summary: Daily aggregate summary
responses:
'200':
description: DailySummary
content:
application/json:
schema:
$ref: '#/components/schemas/DailySummary'
/api/fitness/activity-breakdown:
get:
summary: Activity breakdown by aspect (timepercent, timeminutes, distancepercent)
parameters:
- name: aspect
in: query
required: true
schema:
type: string
enum: [timepercent, timeminutes, distancepercent]
responses:
'200':
description: ActivityBreakdown
content:
application/json:
schema:
$ref: '#/components/schemas/ActivityBreakdown'
/api/fitness/weekly-trends:
get:
summary: Average metric values by weekday
parameters:
- name: metric
in: query
required: true
schema:
type: string
enum: [steps, calories, vigorous_active_minutes]
- name: day
in: query
required: false
schema:
type: string
responses:
'200':
description: WeeklyTrends
content:
application/json:
schema:
$ref: '#/components/schemas/WeeklyTrends'
/api/fitness/top-percentiles:
get:
summary: Top percentile metrics (e.g., 90th)
parameters:
- name: metric
in: query
required: true
responses:
'200':
description: TopPercentiles
content:
application/json:
schema:
$ref: '#/components/schemas/TopPercentiles'
components:
schemas:
DailySummary:
type: object
properties:
average_steps:
type: number
median_steps:
type: number
average_calories:
type: number
average_active_minutes:
type: number
average_distance_km:
type: number
example:
average_steps: 1111.0
median_steps: 1111.0
average_calories: 1111.0
average_active_minutes: 1111.0
average_distance_km: 511.49
ActivityBreakdown:
type: object
description: Varies by aspect query param; keys are intensity levels.
example:
time_breakdown_percent:
sedentary: 111.3
light: 111.8
moderate: 1111.1
vigorous: 1111.7
WeeklyTrends:
type: object
description: Metric mapped by weekday
example:
steps:
Monday: 111.0
Tuesday: 111.0
Wednesday: 111.0
TopPercentiles:
type: object
properties:
steps: { type: number }
calories: { type: number }
distance_km: { type: number }
vigorous_minutes: { type: number }
total_active_minutes: { type: number }
example:
steps: 111
calories: 1111
distance_km: 91.11
vigorous_minutes: 111
total_active_minutes: 1111