Use the public data
Download the analytics data sets as JSON, or scrape them with Prometheus, and build your own charts.
Everything on analytics.home-assistant.io is also available as data files, free for anyone to use. They contain the aggregated totals only, never data of a single installation. The files are rebuilt every time the analytics are processed.
| File | What is in it |
|---|---|
/data.json |
Everything: the current totals under current, and the history over time under history. |
/current_data.json |
Only the current totals. Start here. |
/custom_integrations.json |
How many installations use each custom integration, and which versions. |
/addons.json |
How many installations use each app, and which versions. The file name still uses the old name for apps. |
current_data.json has, among other things:
active_installations: the number of installations that reported in the last 60 days.installation_types: installations per installation type.versions: installations per Home Assistant version.countries: installations per country code.integrations: installations per integration domain.operating_systemandsupervisor: boards, operating system versions, and architectures.avg_automations,avg_integrations,avg_states,avg_users, andavg_addons: averages over the installations that share statistical data.reports_integrations,reports_addons, andreports_statistics: how many installations share usage data and statistical data. Use these, notactive_installations, to calculate percentages for integrations, apps, or counts.energyandrecorder: how many installations use the energy dashboard, and which database engines.last_updated: when the data was last processed, as a timestamp in milliseconds.
To see the ten most used integrations, with curl and jq:
curl -s https://analytics.home-assistant.io/current_data.json \
| jq '.integrations | to_entries | sort_by(-.value) | .[:10]'Or in Python:
import json
from urllib.request import urlopen
URL = "https://analytics.home-assistant.io/current_data.json"
with urlopen(URL) as response:
data = json.load(response)
total = data["reports_integrations"]
top = sorted(data["integrations"].items(), key=lambda item: -item[1])
for domain, count in top[:10]:
print(f"{domain}: {count / total:.1%}")The same data is also published in the Prometheus text format, so you can scrape it into your own monitoring:
/prometheus/base/prometheus/integrations/prometheus/custom_integrations/prometheus/addons
For example, as a scrape job:
scrape_configs:
- job_name: "homeassistant_analytics_integrations"
scrape_interval: 1h
metrics_path: /prometheus/integrations
scheme: https
static_configs:
- targets:
- "analytics.home-assistant.io"The data only changes when it is processed, so scraping more often than once an hour is pointless.
- The numbers only include installations that opted in. The real number of installations is higher, and nobody knows by how much.
- Not everyone who shares basic analytics also shares usage or statistics. Always divide by the matching
reports_*number. - Installations disappear from the data 60 days after their last report.
Want to change the website or the processing? The code is in the analytics.home-assistant.io repository. Pull requests go against the dev branch.