---
title: "List ERC-20 token transfers involving one or more wallets"
method: POST
path: "/?ankr_getTokenTransfers"
tags: ["Token API"]
---

# List ERC-20 token transfers involving one or more wallets

`POST /?ankr_getTokenTransfers`

## Request

- Base URL: `https://rpc.ankr.com/multichain/569ca1f392f7d3d0bb1073a1173ecb649af1d9249231fe59fa95db19d5ae41fe`
- URL: `https://rpc.ankr.com/multichain/569ca1f392f7d3d0bb1073a1173ecb649af1d9249231fe59fa95db19d5ae41fe/?ankr_getTokenTransfers`
- Auth: none declared
- TypeScript: <https://skmtc.dev/ankr/apis/ankr-advanced-api/docs/%3Fankr_getTokenTransfers/post.ts> (a function with typed inputs; its response is checked against the schema)

Returns ERC-20 transfer events in which the specified wallet(s) appear as sender or recipient. Each entry includes contract address, token symbol, decimals, raw + normalized values, block height, and timestamp.

Pass an `address` array (single or multiple wallets). Scope by `blockchain`, block range (`fromBlock` / `toBlock`), or wall-clock range (`fromTimestamp` / `toTimestamp`). Paginate with `pageSize` (default `100`, max `10000`) and `pageToken`.

Part of the **Token API** product (700 compute units per call, $0.00007 at base rate).

## Request body

- object
  - `id` integer, required: Client-supplied request ID echoed in the response.
  - `jsonrpc` '2.0', required
  - `method` 'ankr_getTokenTransfers', required
  - `params` object, required
    - `address` string[]: Wallet address(es) to query. ENS accepted on Ethereum.
    - `blockchain` string[]: Chains to query. Omit or pass an empty array to query all supported chains.
    - `fromBlock` union: Start block (integer or `earliest`, or hex).
      - integer
      - string
    - `toBlock` union: End block (integer or `latest`, or hex).
      - integer
      - string
    - `fromTimestamp` integer: UNIX timestamp lower bound.
    - `toTimestamp` integer: UNIX timestamp upper bound.
    - `descOrder` boolean: Sort newest first when `true`.
    - `pageSize` integer: Entries per page. Default `100`, max `10000`.
    - `pageToken` string: Opaque page token from a prior response's `nextPageToken`.

## Response `200`

Success. JSON-RPC `result` envelope contains the `transfers` array and pagination cursor. JSON-RPC errors are returned with HTTP 200; check the response body for an `error` key.

- object
  - `id` integer, required
  - `jsonrpc` '2.0', required
  - `result` object, required
    - `nextPageToken` string
    - `transfers` object[], nullable, required
      - `blockHeight` integer, required
      - `blockchain` string, required
      - `contractAddress` string: Token contract address.
      - `direction` string: `in` or `out`.
      - `fromAddress` string
      - `thumbnail` string, required
      - `timestamp` integer, required
      - `toAddress` string
      - `tokenDecimals` integer, required
      - `tokenName` string
      - `tokenSymbol` string
      - `transactionHash` string, required
      - `value` string, required: Human-readable value transferred.
      - `valueRawInteger` string, required: Raw integer value (`value × 10^decimals`).

## Other responses

- `400`: Bad Request — malformed JSON-RPC envelope or invalid `params`. The gateway rejects before the JSON-RPC layer processes the call.
- `401`: Unauthorized — missing or invalid API key in the server URL path. Verify that `{API_KEY}` is set to a valid project key.
- `429`: Too Many Requests — the API key has exceeded its rate or quota limits. Back off and retry; consider upgrading the Premium tier for higher limits.
- `500`: Server error — unexpected condition. Retry with exponential backoff; if it persists, file a ticket at https://www.ankr.com/support/.

---

[API](https://skmtc.dev/ankr/apis/ankr-advanced-api.md) - [All operations](https://skmtc.dev/ankr/apis/ankr-advanced-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ankr/apis/ankr-advanced-api/revisions/77e494aeec1b?raw)
