# Get Blocks

Returns indexed Bittensor blocks with hashes, timestamps, validators and counts of calls, extrinsics and events.

_Source: https://beta.taostats.io/docs/api-reference/block/get-block_

_Last reviewed: 2026-10-12_

```http
GET https://api.taostats.io/api/block/v1
```

Requires an API key in the `Authorization` header.

> [!WARNING]
> **This API is retired on November 9, 2026**
>
> Every endpoint in this reference — every path that starts with `/api/` — stops working on **November 9, 2026**. The [new Taostats API](https://beta.taostats.io/docs/new) replaces it: same key, new paths under `https://api.taostats.io/v1/`. Move your integration to the [new API reference](https://beta.taostats.io/docs/new) before then.

Returns indexed Bittensor blocks with hashes, timestamps, validators and counts of calls, extrinsics and events. Filter by block number, block or time range, hash, network or runtime spec version.

## Try it

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

### Examples

Get the latest blocks

```text
https://api.taostats.io/api/block/v1?order=block_number_desc&limit=10
```

Look up a specific block by number

```text
https://api.taostats.io/api/block/v1?block_number=8600000
```

### Code samples

**cURL**

```bash
curl -H "Authorization: <YOUR_API_KEY>" \
  "https://api.taostats.io/api/block/v1?limit=10&order=block_number_desc"
```

**JavaScript**

```js
const response = await fetch('https://api.taostats.io/api/block/v1?limit=10&order=block_number_desc', {
  headers: {
    Authorization: '<YOUR_API_KEY>',
  },
});
const data = await response.json();
```

**Python**

```python
import requests

response = requests.get(
    "https://api.taostats.io/api/block/v1?limit=10&order=block_number_desc",
    headers={"Authorization": "<YOUR_API_KEY>"},
)
data = response.json()
```

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `network` | query | `string` |  | One of `finney`, `nakamoto`, `kusanagi`, `testnet`. |
| `block_number` | query | `integer (int32)` |  | Exact block number (as opposed to a range). |
| `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) |
| `hash` | query | `string` |  | Block hash number. |
| `spec_version` | query | `integer (int32)` |  |  |
| `validator` | query | `string` |  | not used |
| `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 `spec_version_asc`, `spec_version_desc`, `block_number_asc`, `block_number_desc`, `timestamp_asc`, `timestamp_desc`, `hash_asc`, `hash_desc`, `events_count_asc`, `events_count_desc`, `extrinsics_count_asc`, `extrinsics_count_desc`. |

## Responses

### `200` — Blocks retrieved successfully

| Field | Type | Required |
| --- | --- | --- |
| `data` | `array` | Yes |
| `data[].block_number` | `integer (int32)` | Yes |
| `data[].calls_count` | `integer (int32)` | Yes |
| `data[].events_count` | `integer (int32)` | Yes |
| `data[].extrinsics_count` | `integer (int32)` | Yes |
| `data[].extrinsics_root` | `string` | Yes |
| `data[].hash` | `string` | Yes |
| `data[].impl_name` | `string` | Yes |
| `data[].impl_version` | `integer (int32)` | Yes |
| `data[].parent_hash` | `string` | Yes |
| `data[].spec_name` | `string` | Yes |
| `data[].spec_version` | `integer (int32)` | Yes |
| `data[].state_root` | `string` | Yes |
| `data[].timestamp` | `string (date-time)` | Yes |
| `data[].validator` | `string, nullable` |  |
| `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": [
    {
      "block_number": 5012771,
      "calls_count": 17,
      "events_count": 50,
      "extrinsics_count": 17,
      "extrinsics_root": "0x5693b7ec443ed7e940ec6d16603c24b69286a8d6cf8c0bf57961a59cf985d8b2",
      "hash": "0xa8a178b7dd69db4137e36a5a111a9b1d1e6c3ec4120a8427d9ee20993b9097dc",
      "impl_name": "node-subtensor",
      "impl_version": 1,
      "parent_hash": "0xa7703c86d57e82e54edae7a3a26acc2745ce647112e7d55418ecf5c843a9b2e5",
      "spec_name": "node-subtensor",
      "spec_version": 244,
      "state_root": "0x6122a6e6ffbef31269e522a4cefed502920b311676ac4c8b7847f3b1711527f6",
      "timestamp": "2025-02-26T17:47:48Z",
      "validator": null
    },
    {
      "block_number": 5012770,
      "calls_count": 17,
      "events_count": 52,
      "extrinsics_count": 17,
      "extrinsics_root": "0x1dd23bfd4deb77849e7b31b1ddd542523a500d83d5d0d1ef273ab5b555b7fed0",
      "hash": "0xa7703c86d57e82e54edae7a3a26acc2745ce647112e7d55418ecf5c843a9b2e5",
      "impl_name": "node-subtensor",
      "impl_version": 1,
      "parent_hash": "0x81cf430f54397cd9d91f49061a0e39bd2ffd8c792322caba3345cade2141d6e4",
      "spec_name": "node-subtensor",
      "spec_version": 244,
      "state_root": "0x6869a835388a38be4a0ed026cff4d9cd53782526be12bf715ab63a5c8cfb4634",
      "timestamp": "2025-02-26T17:47:36Z",
      "validator": null
    }
  ],
  "pagination": {
    "current_page": 1,
    "next_page": 2,
    "per_page": 50,
    "prev_page": null,
    "total_items": 5012772,
    "total_pages": 100256
  }
}
```

**Response details**

```text
{
      "block_number": 5452222,
      "hash": "0xc46d4aaf06d2f111c81bf01694d68a96336af2f0c83edc2c4b19c3e281c21fab",
      "parent_hash": "0x3cb824ac79275e14d922ebc162c9cb932776d11a7b6353722fa9179fe30b072c",
      "state_root": "0xb99e3495f4f4902c1ec2f50e8b3d4c48c408a072993ded0ede4d9538a41a97b9",
      "extrinsics_root": "0x0e1c5107c5f5b140126f231a298526a380ae75d4e55736bb779a1d4997488d5a",
      "spec_name": "node-subtensor",
      "spec_version": 261,
      "impl_name": "node-subtensor",
      "impl_version": 1,
      "timestamp": "2025-04-28T18:38:00Z",
      "validator": null,
      "events_count": 67,
      "extrinsics_count": 19,
      "calls_count": 20
    },
```

### Other responses

| Status | Meaning |
| --- | --- |
| `400` | Bad request |
| `404` | Blocks 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).
