# Pagination (https://docs-dmpho5eos-ton-core-docs.vercel.app/llms/ecosystem/api/toncenter/v3-pagination/content.md)



The v3 API uses offset-based pagination. Each paginated endpoint accepts `limit` and `offset` parameters. `limit` controls how many results to return per request, and `offset` skips a number of rows from the beginning of the result set. To retrieve the next page, increment `offset` by the value of `limit`.

The following endpoints support pagination:

| Endpoint                                                                                                              | Default limit | Max limit | Sortable |
| --------------------------------------------------------------------------------------------------------------------- | :-----------: | :-------: | :------: |
| [`transactions`](/llms/ecosystem/api/toncenter/v3/blockchain-data/get-transactions/content.md)                                        |       10      |    1000   |    Yes   |
| [`actions`](/llms/ecosystem/api/toncenter/v3/actions-and-traces/get-actions/content.md)                                               |       10      |    1000   |    Yes   |
| [`blocks`](/llms/ecosystem/api/toncenter/v3/blockchain-data/get-blocks/content.md)                                                    |       10      |    1000   |    Yes   |
| [`messages`](/llms/ecosystem/api/toncenter/v3/blockchain-data/get-messages/content.md)                                                |       10      |    1000   |    Yes   |
| [`traces`](/llms/ecosystem/api/toncenter/v3/actions-and-traces/get-traces/content.md)                                                 |       10      |    1000   |    Yes   |
| [`jetton/burns`](/llms/ecosystem/api/toncenter/v3/jettons/get-jetton-burns/content.md)                                                |       10      |    1000   |    Yes   |
| [`jetton/transfers`](/llms/ecosystem/api/toncenter/v3/jettons/get-jetton-transfers/content.md)                                        |       10      |    1000   |    Yes   |
| [`jetton/wallets`](/llms/ecosystem/api/toncenter/v3/jettons/get-jetton-wallets/content.md)                                            |       10      |    1000   |    Yes   |
| [`nft/items`](/llms/ecosystem/api/toncenter/v3/nfts/get-nft-items/content.md)                                                         |       10      |    1000   |    Yes   |
| [`nft/transfers`](/llms/ecosystem/api/toncenter/v3/nfts/get-nft-transfers/content.md)                                                 |       10      |    1000   |    Yes   |
| [`multisig/orders`](/llms/ecosystem/api/toncenter/v3/multisig/get-multisig-orders/content.md)                                         |       10      |    1000   |    Yes   |
| [`multisig/wallets`](/llms/ecosystem/api/toncenter/v3/multisig/get-multisig-wallets/content.md)                                       |       10      |    1000   |    Yes   |
| [`transactionsByMasterchainBlock`](/llms/ecosystem/api/toncenter/v3/blockchain-data/get-transactions-by-masterchain-block/content.md) |       10      |    1000   |    Yes   |
| [`jetton/masters`](/llms/ecosystem/api/toncenter/v3/jettons/get-jetton-masters/content.md)                                            |       10      |    1000   |    No    |
| [`nft/collections`](/llms/ecosystem/api/toncenter/v3/nfts/get-nft-collections/content.md)                                             |       10      |    1000   |    No    |
| [`dns/records`](/llms/ecosystem/api/toncenter/v3/dns/get-dns-records/content.md)                                                      |      100      |    1000   |    No    |
| [`masterchainBlockShards`](/llms/ecosystem/api/toncenter/v3/blockchain-data/get-masterchain-block-shard-state-1/content.md)           |       10      |    1000   |    No    |
| [`topAccountsByBalance`](/llms/ecosystem/api/toncenter/v3/stats/get-top-accounts-by-balance/content.md)                               |       10      |    1024   |    No    |
| [`transactionsByMessage`](/llms/ecosystem/api/toncenter/v3/blockchain-data/get-transactions-by-message/content.md)                    |       10      |    1000   |    No    |
| [`vesting`](/llms/ecosystem/api/toncenter/v3/vesting/get-vesting-contracts/content.md)                                                |       10      |    1000   |    No    |

All other v3 endpoints return single objects or fixed results and do not support pagination.

## Parameters [#parameters]

These parameters are shared across all paginated endpoints.

| Parameter | Type    | Description                                                                                               |
| --------- | ------- | --------------------------------------------------------------------------------------------------------- |
| `limit`   | integer | Maximum number of rows to return. Defaults vary by endpoint; see table above.                             |
| `offset`  | integer | Number of rows to skip from the beginning of the result set. Default is `0`.                              |
| `sort`    | string  | Sort order: `desc` (default, newest first) or `asc` (oldest first). Available only on sortable endpoints. |

## Pagination example [#pagination-example]

This example uses the `transactions` endpoint, but the same `limit` and `offset` pattern applies to all paginated endpoints.

<Steps>
  <Step>
    ### Fetch the first page [#fetch-the-first-page]

    Send a request with `account` and `limit`. `offset` defaults to `0` for the first page.

    ```bash
    curl "https://toncenter.com/api/v3/transactions?account=EQDtFpEwcFAEcRe5mLVh2N6C0x-_hJEM7W61_JLnSF74p4q2&limit=3"
    ```

    Response (abbreviated):

    ```json
    {
      "transactions": [
        {
          "account": "0:ED1691307050047117B998B561D8DE82D31FBF84910CED6EB5FC92E7485EF8A7",
          "hash": "KkpVTX9RwiZcug8KQuOFUF8+eNoxuHVuIFpGQqufCWU=",
          "lt": "67064337000004",
          "now": 1771410670
        },
        {
          "account": "0:ED1691307050047117B998B561D8DE82D31FBF84910CED6EB5FC92E7485EF8A7",
          "hash": "b5fhFby+j8gg936W+XEsAEhboQW0zPcOHOHgyqXkTwI=",
          "lt": "67011337000003",
          "now": 1771286044
        },
        {
          "account": "0:ED1691307050047117B998B561D8DE82D31FBF84910CED6EB5FC92E7485EF8A7",
          "hash": "lT/wWTiJIdEF8A2Rox9CRdQRzlUgnIDGeUfEHQ8jGZQ=",
          "lt": "66986300000006",
          "now": 1771226782
        }
      ],
      "address_book": { ... }
    }
    ```

    Three transactions returned, sorted by logical time in descending order (newest first).
  </Step>

  <Step>
    ### Fetch the next page [#fetch-the-next-page]

    Set `offset=3` to skip the first 3 results and get the next batch.

    ```bash
    curl "https://toncenter.com/api/v3/transactions?account=EQDtFpEwcFAEcRe5mLVh2N6C0x-_hJEM7W61_JLnSF74p4q2&limit=3&offset=3"
    ```

    Response (abbreviated):

    ```json
    {
      "transactions": [
        {
          "account": "0:ED1691307050047117B998B561D8DE82D31FBF84910CED6EB5FC92E7485EF8A7",
          "hash": "07QaeBRRA62+RJPgetgSraYLH5i9G5QhC2dUvKAsAiI=",
          "lt": "66927779000007",
          "now": 1771088713
        },
        {
          "account": "0:ED1691307050047117B998B561D8DE82D31FBF84910CED6EB5FC92E7485EF8A7",
          "hash": "8d7sSor1NqbGNdX1JEGl1d4rX3lb7CeC3DZjhe7V7z4=",
          "lt": "66927779000003",
          "now": 1771088713
        },
        {
          "account": "0:ED1691307050047117B998B561D8DE82D31FBF84910CED6EB5FC92E7485EF8A7",
          "hash": "szM1I5/MU1uJGgeScS7uxNF6V/FsLkokCpul88ZEau8=",
          "lt": "66926353000007",
          "now": 1771085323
        }
      ],
      "address_book": { ... }
    }
    ```

    No overlap with the previous page. Offset pagination does not produce duplicates.
  </Step>

  <Step>
    ### Repeat until the last page [#repeat-until-the-last-page]

    Continue incrementing `offset` by the `limit` value on each request (`offset=6`, `offset=9`, ...). When the response returns fewer transactions than the `limit`, all results have been retrieved.
  </Step>
</Steps>

<Accordions>
  <Accordion title="Full pagination script">
    ```javascript
    const address = "EQDtFpEwcFAEcRe5mLVh2N6C0x-_hJEM7W61_JLnSF74p4q2";

    async function main() {
      let allTransactions = [];
      let offset = 0;
      const limit = 3;
      let page = 0;

      while (true) {
        page++;
        const params = new URLSearchParams({
          account: address,
          limit: String(limit),
          offset: String(offset),
        });

        const res = await fetch(
          `https://toncenter.com/api/v3/transactions?${params}`
        );
        const data = await res.json();
        const transactions = data.transactions || [];

        console.log(`\n--- Page ${page} (offset=${offset}) ---`);

        for (const tx of transactions) {
          console.log(`  lt: ${tx.lt}  hash: ${tx.hash}`);
        }

        allTransactions.push(...transactions);

        if (transactions.length < limit) break;

        offset += limit;
      }

      console.log(`\nTotal transactions: ${allTransactions.length}`);
    }

    main();
    ```

    Output:

    ```bash
    --- Page 1 (offset=0) ---
      lt: 67064337000004  hash: KkpVTX9RwiZcug8KQuOFUF8+eNoxuHVuIFpGQqufCWU=
      lt: 67011337000003  hash: b5fhFby+j8gg936W+XEsAEhboQW0zPcOHOHgyqXkTwI=
      lt: 66986300000006  hash: lT/wWTiJIdEF8A2Rox9CRdQRzlUgnIDGeUfEHQ8jGZQ=

    --- Page 2 (offset=3) ---
      lt: 66927779000007  hash: 07QaeBRRA62+RJPgetgSraYLH5i9G5QhC2dUvKAsAiI=
      lt: 66927779000003  hash: 8d7sSor1NqbGNdX1JEGl1d4rX3lb7CeC3DZjhe7V7z4=
      lt: 66926353000007  hash: szM1I5/MU1uJGgeScS7uxNF6V/FsLkokCpul88ZEau8=

    --- Page 3 (offset=6) ---

    Total transactions: 6
    ```
  </Accordion>
</Accordions>

## Sorting options [#sorting-options]

Sortable endpoints accept a `sort` parameter with two values:

* `desc` (default): newest results first, sorted by logical time (or UTC timestamp for `blocks`).
* `asc`: oldest results first.

```bash
curl "https://toncenter.com/api/v3/transactions?account=EQDtFpEwcFAEcRe5mLVh2N6C0x-_hJEM7W61_JLnSF74p4q2&limit=3&sort=asc"
```

Response (abbreviated):

```json
{
  "transactions": [
    {
      "hash": "3ziyP0yvGklMTNWWXDplmlBcPH0P7MJtusoVthNu8e0=",
      "lt": "39547833000003",
      "now": 1690204554
    },
    {
      "hash": "lYXDtLL53JkKa35vP05gbwTyd6Lq4335TwlZeUebxZ8=",
      "lt": "39547876000003",
      "now": 1690204686
    },
    {
      "hash": "DSz0P/wmE0EkdfaxFl2R36Eie+Lw4paLa1sAHHUliJA=",
      "lt": "39548648000003",
      "now": 1690207175
    }
  ],
  "address_book": { ... }
}
```

With `sort=asc`, the earliest transactions are returned first, starting from 2023-07 for this account.

<Callout type="caution" title="Sorting with jetton/wallets">
  The `jetton/wallets` endpoint sorts results by balance instead of logical time. When balances change between requests, using `limit` and `offset` can skip or repeat wallets because the sort order changes between pages.
</Callout>
