Aggregated Supply
What is this endpoint for?
This endpoint receives aggregated information on the supply of each asset, including circulating supply, market capitalisation and total supply. The timeframe of the aggregation can be set arbitrarily.
Endpoint
https://us.market-api.kaiko.io/v2/data/supply.v2/aggregated/{asset}Parameters
start_time
No
Starting time in ISO 8601 (inclusive).
2023-01-25T00:00:00.000Z
end_time
No
Ending time in ISO 8601 (exclusive).
2023-01-26T00:00:00.000Z
interval
No
The interval parameter is suffixed with m, h or d to specify minutes, hours or days, respectively.
Any arbitrary value between five minutes and 30 day can be used.
Default: 1h.
4h
Fields
timestamp
Timestamp at which the interval begins.
1760918400
asset
Asset.
btc
circulating_supply
Circulating supply.
1.99373e+07
market_cap
Market capitalisation.
2.2094e+12
total_supply
Total supply.
1.99373e+07
Request examples
curl --compressed -H 'Accept: application/json' -H 'X-Api-Key: <client-api-key>' \
'https://us.market-api.kaiko.io/v2/data/supply.v2/btc?start_time=2025-10-20T00:00:00.000Z&end_time=2025-10-21T00:00:00.000Z&page_size=100&interval=1d'import http.client
import json
# Enter your Kaiko API Key
api_key = "KAIKO_API_KEY"
api_host = "us.market-api.kaiko.io"
api_base_endpoint = "/v2/data/supply.v2/btc/aggregated"
# Start of mandatory parameter configuration
mandatory_params = {
'start_time':'2025-10-20T00:00:00.000Z',
'end_time':'2025-10-21T00:00:00.000Z',
'page_size':100,
'interval':'1d'
}
# End of mandatory parameter configuration
# Start of optional parameter configuration
optional_params = {
}
# End of optional parameter configuration
conn = http.client.HTTPSConnection(api_host)
headers = {
"X-Api-Key": api_key,
"Accept": "application/json"
}
all_params = {**mandatory_params, **optional_params}
url_params = []
for param, value in all_params.items():
url_params.append(f"{param}={value}")
url_params = '&'.join(url_params)
endpoint_with_params = f"{api_base_endpoint}?{url_params}"
# Pagination for next pages
all_data = []
next_url = endpoint_with_params
while next_url:
conn.request("GET", next_url, headers=headers)
response = conn.getresponse()
data = json.loads(response.read().decode("utf-8"))
all_data.extend(data.get("data", []))
print(f"Fetched {len(data.get('data', []))} datapoints. Total: {len(all_data)}")
next_url = data.get("next_url", "").replace("https://us.market-api.kaiko.io", "")
if not next_url:
break
conn.close()
print(f" datapoints fetched: {(all_data)}")Response example
{
"query":
{
"start_time": "2025-10-20T00:00:00.000Z",
"end_time": "2025-10-21T00:00:00.000Z",
"page_size": 100,
"asset": "btc",
"interval": "1d",
"sort": "asc",
"request_time": "2025-11-12T14:18:27.226Z",
"start_timestamp": 1760918400000,
"end_timestamp": 1761004800000
},
"time": "2025-11-12T14:18:27.253Z",
"timestamp": 1762957107253,
"data":
[
{
"timestamp": 1760918400,
"asset": "btc",
"circulating_supply": 19937318.75,
"market_cap": 2209402368348.39,
"total_supply": 19937318.75
}
/** Results **/
],
"result": "success",
"continuation_token": "xxx",
"next_url": "https://us.market-api.kaiko.io/v2/data/supply.v2/btc/aggregated?continuation_token=xxx",
"access":
{
"access_range":
{
"start_timestamp": 1073001600000,
"end_timestamp": "None"
},
"data_range":
{
"start_timestamp": "None",
"end_timestamp": "None"
}
}
}Last updated
Was this helpful?
