---
title: "Wallet Transfer History"
method: GET
path: "/gateway/v1/wallet/transfers"
tags: ["Wallet"]
---

# Wallet Transfer History

`GET /gateway/v1/wallet/transfers`

Returns ERC-20/SPL token transfers with token identity, USD value, and flow direction (in/out). Unlike `wallet-history` which shows all tx types in native value, this focuses on token-level transfer activity.

Pass the **wallet address** in `address` — returns all ERC-20/SPL token transfers where this wallet is the sender or receiver.

**Included fields:** token contract, token symbol, amount USD, counterparty, flow direction.

Filter by specific token or flow direction (in/out).

**Lookup:** `address` (wallet, raw 0x hex or base58 — ENS not supported). Filter by `chain` — supports `ethereum`, `base`, `bsc`, `arbitrum`, `tron`, `solana`.

**Data refresh:** ~24 hours · **Chains:** Ethereum, Base, BSC, Arbitrum, Tron (Solana uses a different source with no delay)

## Query parameters

- `address` string, required — Wallet address — must be a raw address (0x-prefixed hex for EVM, base58 for Solana). ENS names like `vitalik.eth` are not supported; resolve to a 0x address first.
- `chain` 'ethereum' | 'base' | 'solana' | 'tron' | 'bsc' | 'arbitrum' — Chain. Can be `ethereum`, `base`, `solana`, `tron`, `bsc`, or `arbitrum`.
- `flow` 'in' | 'out' — Filter by transfer direction relative to the queried wallet. `in` for incoming, `out` for outgoing. Omit for both directions.
- `token` string — Filter by token contract address. Use `0x0000000000000000000000000000000000000000` for native token transfers. Omit for all tokens.
- `limit` integer — Results per page. Default 20, max 100. NOTE: Solana (`chain=solana`) is hard-capped at 40 per call by the upstream Solscan API — values above 40 return at most 40 items. Check `meta.has_more` and paginate with `offset` to fetch beyond the first page.
- `offset` integer — Pagination offset. For Solana, this maps to Solscan's 1-indexed `page` parameter (page = offset/page_size + 1).
- `include` string — Comma-separated enrichments to attach to each transfer. Currently valid: `labels` — adds `from_label` and `to_label` fields with entity information for each counterparty address.

## Response `200`

OK

- DataResponseWalletTransferItem
  - `$schema` string, uri — A URL to the JSON Schema for this object.
  - `data` WalletTransferItem[], nullable, required
    - `activity_type` string — Transfer activity type (Solana only, e.g. ACTIVITY_SPL_TRANSFER)
    - `amount` string, required — Decimal-adjusted transfer amount as a string
    - `amount_usd` number, double — Transfer value in USD at the time of the transaction
    - `flow` string — Transfer direction relative to the queried wallet: `in` or `out`
    - `from_address` string, required — Sender wallet address
    - `from_label` WalletLabelItem
      - `address` string, required — Wallet address
      - `entity_name` string — Name of the associated entity like `Binance` or `Aave`
      - `entity_type` string — Type of entity like `exchange`, `fund`, or `whale`
      - `labels` WalletLabelInfo[], nullable, required — List of labels assigned to this address
        - `confidence` number, double — Confidence score 0.0-1.0
        - `label` string, required — Human-readable label for this address like `Binance Hot Wallet`
    - `timestamp` integer, required — Unix timestamp in seconds when the transfer occurred
    - `to_address` string, required — Recipient wallet address
    - `to_label` WalletLabelItem
      - `address` string, required — Wallet address
      - `entity_name` string — Name of the associated entity like `Binance` or `Aave`
      - `entity_type` string — Type of entity like `exchange`, `fund`, or `whale`
      - `labels` WalletLabelInfo[], nullable, required — List of labels assigned to this address
        - `confidence` number, double — Confidence score 0.0-1.0
        - `label` string, required — Human-readable label for this address like `Binance Hot Wallet`
    - `token_address` string — Token contract address (EVM) or SPL mint address (Solana)
    - `token_symbol` string — Token ticker symbol (available for EVM chains from on-chain data)
    - `tx_hash` string, required — Transaction hash (EVM) or transaction signature (Solana)
  - `meta` OffsetMeta, required
    - `cached` boolean, required — Whether this response was served from cache
    - `credits_used` integer, required — Credits deducted for this request
    - `empty_reason` string — Hint explaining why the data array is empty, when applicable
    - `has_more` boolean — Whether more items may exist beyond this response. For offset-paged endpoints, continue with a larger offset. For time-series endpoints without offset/cursor controls, true means the requested time range hit an upstream cap; narrow from/to to continue. Omitted when exhaustion cannot be proven.
    - `limit` integer, required — Maximum number of items returned in this response
    - `offset` integer, required — Number of items skipped (pagination offset)
    - `total` integer — Total number of matching items (before pagination). Omitted when total is unknown.
    - `watermark` integer — Warehouse watermark (Unix seconds) this response was computed at, on warehouse-backed endpoints (e.g. Hyperliquid /trades/aggregate) — rows up to this time come from the warehouse, newer rows from the live tail. Omitted elsewhere.

## Other responses

- `default` — Error

---

[API](https://skmtc.dev/asksurf/apis/asksurf-public-rest-api.md) · [All operations](https://skmtc.dev/asksurf/apis/asksurf-public-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/asksurf/asksurf-public-rest-api/revisions/4153a9cb5145/schema)
