Quickstart
Make your first request to the CompostIQ open API in about five minutes. You don't need an account or a key.
- Base URL
- https://api.compostiq.win
- Format
- JSON, times in UTC
- Rate limit
- 60 requests a minute per IP
Check the API is up
Ask for the headline numbers. If this works, everything else will too.
$ curl https://api.compostiq.win/public/stats
{
"bins": 3,
"countries": 1,
"methods": 3,
"active_devices": 3,
"readings_total": 568,
"readings_24h": 4,
"first_reading_at": "2026-08-18T00:00:00Z",
"last_reading_at": "2026-10-06T20:00:00Z",
"updated_at": "2026-10-06T20:00:00Z"
}
Fetch some readings
Readings come one row per bin per hour, oldest first. Filter them with query parameters; these three are the ones you'll use most.
$ curl -G https://api.compostiq.win/research/readings \
-d method=takakura \
-d from=2026-08-18T00:00:00Z \
-d limit=100
methodtakakura, bokashi or aerated_static_pilefromEarliest hour to include, ISO 8601 in UTClimitRows per page. Default 500, maximum 5000Every filter is in the API reference.
Load them into pandas
The items array drops straight into a DataFrame.
import pandas as pd import requests resp = requests.get( "https://api.compostiq.win/research/readings", params={"method": "takakura", "limit": 1000}, timeout=30, ) resp.raise_for_status() df = pd.DataFrame(resp.json()["items"]) df["recorded_at"] = pd.to_datetime(df["recorded_at"]) print(df[["recorded_at", "temperature_c", "stage_name"]].head())
Page through everything
When there are more rows, the response carries a next_cursor. Send it back as cursor until it comes back null.
url = "https://api.compostiq.win/research/readings" params = {"limit": 5000} rows = [] while True: page = requests.get(url, params=params, timeout=30).json() rows += page["items"] if not page["next_cursor"]: break params["cursor"] = page["next_cursor"]
Pulling the whole dataset? The bulk file below is faster and doesn't count against your rate limit.
Or download a file
A snapshot of the whole dataset as CSV and JSON, with the same fields as the API. For now it holds the simulated preview data.
Cite the data
The data is free to use with credit. The open data page has the licence and a ready-made citation.