Skip to main content
Returns the native and ERC-20 transfers in and out of one wallet across the requested chains, newest first. Each row carries the token’s metadata, the counterparty, and the USD value at transfer time. Use it to send “You received 50 USDC” notifications, match inbound transfers against the deposits you expect, or export a wallet’s history for tax tools.

Parameters

This endpoint accepts the shared parameters, plus the following.
string
native, erc20, or both, comma-separated. Defaults to both. NFT transfer types (erc721, erc1155) are not supported yet and return 400.
string
in for transfers the wallet received, out for transfers it sent. Defaults to both.
string
Only return transfers at or after this time, as an RFC 3339 timestamp such as 2026-09-01T00:00:00Z.
string
Only return transfers at or before this time, as an RFC 3339 timestamp. Must not be earlier than from.
integer
Only return transfers at or after this block. Needs exactly one chain in chains, because block numbers mean different things on different chains. Without it, the request returns 422 CONFLICTING_FILTERS.
integer
Only return transfers at or before this block. Needs exactly one chain in chains, and must not be lower than from_block.
By default, transfers of tokens Goldsky has no price source for are left out. If you match deposits in less common tokens, set include_unknown_price=true so none are missed.

Response

object[]
One entry per transfer, newest first by block_timestamp.
object

How the data behaves

  • Transfers have no ID. One transaction can contain several identical transfers, so deduplicating on (chain, transaction_hash, from_address, to_address, token_address, amount_raw) can drop real ones.
  • Reorgs remove rows without notice. There is no removed flag. A transfer reversed by a chain reorganization stops appearing in responses. If its transaction lands again, it can have a different block_number and block_timestamp, so don’t build keys from block fields.
  • USD values can change. The API prices each transfer when you request it, so price_usd and amount_usd for an old transfer can change as Goldsky’s price history fills in.
  • Chains are merged by time. Rows from different chains are interleaved by block_timestamp. Two transfers on different chains with the same timestamp can have happened in either order.

Example

This request gets the most recent transfer into a wallet on Base: