Real compost piles, measured every hour.
Anonymised readings from working compost bins: temperature, moisture, oxygen, CO₂ and ammonia, each labelled with its composting phase. Free to use. No account or key needed.
$ curl "https://api.compostiq.win/research/readings?method=takakura&limit=1" { "items": [{ "bin_ref": "b_1d0ca7", "country": "ID", "method": "takakura", "recorded_at": "2026-08-26T00:00:00Z", "temperature_c": 61.58, "moisture_pct": 52.46, "oxygen_pct": 3.26, "co2_pct": 8.61, "nh3_relative": 0.889, "stage_name": "Peak Decomposition" }], "next_cursor": "eyJ0IjoiMjAyNi0wOC0yNlQwMTowMFoifQ" }
Figures come from the CompostIQ API.
Bulk files (simulated preview data for now): CSV, 57.1 KB · JSON, 157.5 KB · Changelog
One row per bin, per hour.
Readings from a bin's sensors are averaged into hourly rows. The API and the bulk files return the same fields.
| Field | Type · unit | What it means |
|---|---|---|
bin_ref | string | A random reference for one bin. Stable across the dataset, never linked to an account. |
country | ISO 3166-1 alpha-2 | Where the bin is, at country level only. For example ID. |
method | enum | takakura, bokashi or aerated_static_pile. |
recorded_at | ISO 8601 · UTC | Start of the hour the row covers. |
temperature_c | number · °C | Core temperature of the pile. |
moisture_pct | number · % | Moisture content. null when the probe dropped out. |
oxygen_pct | number · % | Oxygen in the pile, 0 to 21. |
co2_pct | number · % | Carbon dioxide in the pile. |
nh3_relative | number · 0–1 | Relative ammonia intensity. Not a ppm value. |
mq135_composite_ppm | number · ppm | Raw MQ-135 gas sensor response. A composite signal, not clean CO₂. |
stage_id, stage_name | 0–4 · string | The composting phase the rule engine assigned to this hour. |
faults | array of codes | Conditions flagged in this hour, for example ANAEROBIC_RISK or MOISTURE_LOW. In the CSV they are joined with ;. |
Everything about the pile. Nothing about the person.
- Names and email addresses
- Bin names
- Addresses and coordinates
- Device MAC addresses and hardware IDs
- Account, bin and device database IDs
- Location becomes a country code
- Time becomes hourly averages, in UTC
- Several sensors in one bin become one row
- Each bin gets a random
bin_ref - The reference can't be turned back into an account or address
- Deleted accounts disappear from the next snapshot
Read this before you publish.
MQ-135 is not a CO₂ meter
It reacts to ammonia, CO₂ and other gases at once, and drifts from unit to unit. Treat mq135_composite_ppm as a composite signal.
Ammonia is relative
nh3_relative runs from 0 to 1. It shows when ammonia rises and falls, not how much is present.
A tropical baseline
The pilot site sits at 24–32 °C ambient, so piles start near 28 °C and cool back to it. Expect higher floors than temperate data.
Phases are rule-based
Stage labels come from temperature bands plus the 24-hour trend, not lab analysis. Use them as a guide, not ground truth.
The ranges behind every stage label.
Also returned by GET /research/stages, so your code can use the same numbers we do.
| Stage | Temperature | Moisture | Oxygen | CO₂ | Typical length |
|---|---|---|---|---|---|
| 0 Early mesophilic | 28–45 °C | 60–65 % | 8–15 % | 0.5–3 % | 1–3 days |
| 1 Active thermophilic | 45–60 °C | 55–60 % | 5–8 % | 3–6 % | 2–4 days |
| 2 Peak decomposition | 57–65 °C | 50–58 % | 2–5 % | 6–10 % | 4–7 days |
| 3 Cooling | 30–60 °C | 45–55 % | 5–12 % | 2–6 % | 5–10 days |
| 4 Maturation | 28–32 °C | 40–50 % | 12–20 % | 0.5–2 % | 24–36 days |
Free to use with credit.
The dataset is published under [LICENCE]. Please cite it like this:
CompostIQ ([YEAR]). CompostIQ open compost telemetry, release [VERSION]. https://compostiq.win/open-data/
Published something with it? Tell us at [CONTACT EMAIL] and we'll link to it.
Ready for your first request?
The quickstart takes about five minutes and ends with the data in a pandas DataFrame.