# Get Stats History

Returns historical network totals for token supply, staking, accounts, subnets and chain activity.

_Source: https://beta.taostats.io/docs/api-reference/stats/get-stats-history_

_Last reviewed: 2026-09-18_

```http
GET https://api.taostats.io/api/stats/history/v1
```

Requires an API key in the `Authorization` header.

Returns historical network totals for token supply, staking, accounts, subnets and chain activity. Records include free and staked balances, extrinsic and transfer counts, and subnet registration costs.

## Try it

Try this request in the browser on the HTML version of this page, or use the code samples below.

### Examples

Get the history of network-wide stats over time

```text
https://api.taostats.io/api/stats/history/v1?limit=100
```

### Code samples

**cURL**

```bash
curl -H "Authorization: <YOUR_API_KEY>" \
  "https://api.taostats.io/api/stats/history/v1?limit=100"
```

**JavaScript**

```js
const response = await fetch('https://api.taostats.io/api/stats/history/v1?limit=100', {
  headers: {
    Authorization: '<YOUR_API_KEY>',
  },
});
const data = await response.json();
```

**Python**

```python
import requests

response = requests.get(
    "https://api.taostats.io/api/stats/history/v1?limit=100",
    headers={"Authorization": "<YOUR_API_KEY>"},
)
data = response.json()
```

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `block_start` | query | `integer (int32)` |  | Start of block range (inclusive) |
| `block_end` | query | `integer (int32)` |  | End of block range (inclusive) |
| `timestamp_start` | query | `integer (int64)` |  | Start of timestamp range in Unix timestamp (seconds since 1970-01-01) (inclusive) |
| `timestamp_end` | query | `integer (int64)` |  | End of timestamp range in Unix timestamp (seconds since 1970-01-01) (inclusive) |
| `page` | query | `integer (int32)` |  | The page number of the response. |
| `limit` | query | `integer (int32)` |  | The number of responses. max is 200, |
| `order` | query | `string` |  | One of `block_number_asc`, `block_number_desc`, `timestamp_asc`, `timestamp_desc`. |

## Responses

### `200` — Stats history retrieved successfully

| Field | Type | Required |
| --- | --- | --- |
| `data` | `array` | Yes |
| `data[].accounts` | `integer (int32)` | Yes |
| `data[].balance_holders` | `integer (int32)` | Yes |
| `data[].block_number` | `integer (int32)` | Yes |
| `data[].extrinsics` | `integer (int32)` | Yes |
| `data[].free` | `string` | Yes |
| `data[].issued` | `string` | Yes |
| `data[].staked` | `string` | Yes |
| `data[].staked_alpha` | `string, nullable` |  |
| `data[].staked_root` | `string, nullable` |  |
| `data[].staked_root_on_delegate` | `string, nullable` |  |
| `data[].staked_root_on_keep` | `string, nullable` |  |
| `data[].staked_root_on_partial_keep` | `string, nullable` |  |
| `data[].staked_root_on_swap` | `string, nullable` |  |
| `data[].subnet_locked` | `string` | Yes |
| `data[].subnet_registration_cost` | `string` | Yes |
| `data[].subnets` | `integer (int32)` | Yes |
| `data[].timestamp` | `string (date-time)` | Yes |
| `data[].transfers` | `integer (int32)` | Yes |
| `pagination` | `object` | Yes |
| `pagination.current_page` | `integer (int32)` | Yes |
| `pagination.next_page` | `integer (int32), nullable` |  |
| `pagination.per_page` | `integer (int32)` | Yes |
| `pagination.prev_page` | `integer (int32), nullable` |  |
| `pagination.total_items` | `integer (int32)` | Yes |
| `pagination.total_pages` | `integer (int32)` | Yes |

**Example response**

```json
{
  "data": [
    {
      "accounts": 137331,
      "active_accounts": 115008,
      "active_balance_holders": 80427,
      "balance_holders": 102750,
      "block_number": 4106956,
      "extrinsics": 97783649,
      "issued": "7662539915127250",
      "staked": "5938450722857099",
      "subnet_registration_cost": "1242562048540",
      "subnets": 53,
      "timestamp": "2024-10-23T15:36:48.004Z",
      "transfers": 2680168
    },
    {
      "accounts": 136984,
      "active_accounts": 114668,
      "active_balance_holders": 80280,
      "balance_holders": 102596,
      "block_number": 4102273,
      "extrinsics": 97710170,
      "issued": "7658416679806250",
      "staked": "5937538348262362",
      "subnet_registration_cost": "1406549136847",
      "subnets": 53,
      "timestamp": "2024-10-22T23:59:48Z",
      "transfers": 2678226
    }
  ],
  "pagination": {
    "current_page": 1,
    "next_page": 2,
    "per_page": 5,
    "prev_page": null,
    "total_items": 584,
    "total_pages": 117
  }
}
```

**Response details**

```text
    {
      "block_number": 5446631,
      "timestamp": "2025-04-27T23:59:48Z",
      "issued": "8687103218584414", tao issued as rao
      "staked": "6268206630431947", tao staked as rao total
      "staked_alpha": "551990041323928",  tao staked as alpha
      "staked_root": "5716216589108019", tao staked to root
      "subnet_locked": "0",number of locked subnets
      "free": "2358319537825949", free tao (as rao)
      "accounts": 241470, number of accounts
      "balance_holders": 158728, number of accounts with balance
      "extrinsics": 128169176,total extrinsics
      "transfers": 3366463, transfers
      "subnets": 99,number of subnets
      "subnet_registration_cost": "328744911965" registration cost as rao
    }
```

### Other responses

| Status | Meaning |
| --- | --- |
| `400` | Bad request |
| `404` | Stats history not found |
| `500` | Internal server error |

Every request needs an `Authorization` header holding your API key — see [Getting started with the Taostats API](https://beta.taostats.io/docs/start-here/getting-started-with-taostats-api).
