token
" categorytoken
" categoryfromAddress
is an internal (smart contract) address. (ex: a smart contract calling another smart contract or smart contract calling another external address).delegatecall
because although they have a _value _associated with them they do not actually transfer that value (see Appendix H of the Ethereum Yellow Paper if you're curious). We also do not include miner rewards as an internal transfer.alchemy_getAssetTransfers
(Ethereum Mainnet)alchemy_getAssetTransfers
on Ethereum Mainnet and Ethereum Goerli. For documentation on Ethereum Ropsten, Rinkeby, and Kovan and Polygon (Mainnet and Mumbai), see alchemy_getAssetTransfers (Testnets and Layer 2s). fromBlock
: [optional] inclusive from block (hex string, int, or latest
)"0x0"
toBlock
: [optional] inclusive to block (hex string, int, or latest
)latest
fromAddress
: [optional] from address (hex string)toAddress
: [optional] to address (hex string)contractAddresses
: [optional] list of contract addresses (hex strings) to filter for - only applies to "token
", "erc20
", "erc721
", "erc1155
" transferscategory
: (required) array of categories, can be any of the following: "external
", "internal
", "erc20
", "erc721
", "erc1155
"withMetadata
: [optional] whether or not to include additional metadata about each transfer event.false
excludeZeroValue:
[optional] aBoolean
to exclude transfers with zero value. Zero value is not the same as null
valuetrue
maxCount
: [optional] max hex string number of results to return per call1000
or 0x3e8
pageKey
: [optional] uuid
for pagination. If more results are available, a uuid pageKey will be returned in the response. Pass that uuid into pageKey
to fetch the next 1000 or maxCount.
fromAddress
and toAddress
are AND
ed together when filtering.contractAddresses
are OR
ed together. This filter will then be AND
ed with fromAddress
and toAddress
.id
: json-rpc idjsonrpc
: json-rpc versionresult
: an object with the following fieldspageKey
: uuid of next page of results (if exists, else blank).transfers:
array of objects (defined below) - sorted in ascending order by block number, ties broken by category (external
, internal
, token transfers
)category
: "external
", "internal
", "token
", "erc20
", "erc721
", "erc1155
" - label for the transfertoken
" includes "erc20
" and "erc721
" transfersblockNum
: the block where the transfer occurred (hex string).from
: from address of transfer (hex string).to
: to address of transfer (hex string). null
if contract creation.value
: converted asset transfer value as a number (raw value divided by contract decimal). null
if ERC721 transfer or contract decimal not available.erc721TokenId
: raw ERC721 token id (hex string). null
if not an ERC721 token transfererc1155Metadata
: A list of objects containing the ERC1155 tokenId
(hex string) and value
(hex string). null
if not an ERC1155 transfertokenId
: token ID for ERC721 (or other NFT) tokensasset
: ETH
or the token's symbol. null
if not defined in the contract and not available from other sources.hash
: transaction hash (hex string).rawContract
value
: raw transfer value (hex string). null
if ERC721 or ERC1155 transferaddress
: contract address (hex string). null
if external
or internal
transferdecimal
: contract decimal (hex string). null
if not defined in the contract and not available from other sources.metadata
: Additional metadata about each transfer event. (included if withMetadata=true
)blockTimestamp
: Timestamp of the block from which the transaction event originated (ISO-formatted timestamp).id
: json-rpc idjsonrpc
: json-rpc versionresult
: an object with the following fieldspageKey
: uuid of next page of results (if exists, else blank).transfers:
array of objects (defined below) - sorted in ascending order by block number, ties broken by category (external
, internal
, token transfers
)category
: "external
", "internal
", "token
", "erc20
", "erc721
", "erc1155
" - label for the transfertoken
" includes "erc20
" and "erc721
" transfersblockNum
: the block where the transfer occurred (hex string).from
: from address of transfer (hex string).to
: to address of transfer (hex string). null
if contract creation.value
: converted asset transfer value as a number (raw value divided by contract decimal). null
if ERC721 transfer or contract decimal not available.erc721TokenId
: raw ERC721 token id (hex string). null
if not an ERC721 token transfererc1155Metadata
: A list of objects containing the ERC1155 tokenId
(hex string) and value
(hex string). null
if not an ERC1155 transfertokenId
: token ID for ERC721 (or other NFT) tokensasset
: ETH
or the token's symbol. null
if not defined in the contract and not available from other sources.hash
: transaction hash (hex string).rawContract
value
: raw transfer value (hex string). null
if ERC721 or ERC1155 transferaddress
: contract address (hex string). null
if external
or internal
transferdecimal
: contract decimal (hex string). null
if not defined in the contract and not available from other sources.alchemy_getAssetTransfers
(Testnets and Layer 2s)alchemy_getAssetTransfers
on Ethereum Testnets (Rinkeby, Ropsten, Kovan) and Polygon (Mainnet and Mumbai). For documentation on Ethereum Mainnet and Goerli, see above.alchemy_getAssetTransfers
on Ethereum Kovan, Rinkeby, Ropsetn and Polygon Mainnet and Mumbai only supports external
,token
, ERC20
, ERC721
, and ERC1155
transfers, notinternal
transfers. fromBlock
: [optional] inclusive from block (hex string, int, or latest
)"0x0"
toBlock
: [optional] inclusive to block (hex string, int, or latest
)latest
fromAddress
: [optional] from address (hex string)toAddress
: [optional] to address (hex string)contractAddresses
: [optional] list of contract addresses (hex strings) to filter for - only applies to "token
", "erc20
", "erc721
", "erc1155
" transferscategory
: (required) array of categories, can be any of the following: "external
", "erc20
", "erc721
", "erc1155
"withMetadata
: [optional] whether or not to include additional metadata about each transfer event.false
excludeZeroValue:
[optional] aBoolean
to exclude transfers with zero valuetrue
maxCount
: [optional] max hex string number of results to return per call1000
or 0x3e8
pageKey
: [optional] uuid
for pagination. If more results are available, a uuid pageKey will be returned in the response. Pass that uuid into pageKey
to fetch the next 1000 or maxCount.
fromAddress
and toAddress
are AND
ed together when filtering.contractAddresses
are OR
ed together. This filter will then be AND
ed with fromAddress
and toAddress
.id
: json-rpc idjsonrpc
: json-rpc versionresult
: an object with the following fields:pageKey
: uuid of next page of results (if exists, else blank).transfers:
array of objects (defined below) - sorted in ascending order by block number, ties broken by category (external
, internal
, token
)category
: "token
", "erc20
", "erc721
", "erc1155
" - label for the transfertoken
" includes "erc20
" and "erc721
" transfersblockNum
: the block where the transfer occurred (hex string).from
: from address of transfer (hex string).to
: to address of transfer (hex string). null
if contract creation.value
: converted asset transfer value as a number (raw value divided by contract decimal). null
if ERC721 transfer or contract decimal not available.erc721TokenId
: raw ERC721 token id (hex string). null
if not an ERC721 token transfererc1155Metadata
: A list of objects containing the ERC1155 tokenId
(hex string) and value
(hex string). null
if not an ERC1155 transfertokenId
: token ID for ERC721 (or other NFT) tokensasset
: ETH
or the token's symbol. null
if not defined in the contract and not available from other sources.hash
: transaction hash (hex string).rawContract
value
: raw transfer value (hex string). null
if ERC721 or ERC1155 transferaddress
: contract address (hex string). null
if external
or internal
transferdecimal
: contract decimal (hex string). null
if not defined in the contract and not available from other sources.metadata
: Additional metadata about each transfer event. (included if withMetadata=true
)blockTimestamp
: Timestamp of the block from which the transaction event originated (ISO-formatted timestamp).id
: json-rpc idjsonrpc
: json-rpc versionresult
: an object with the following fields:pageKey
: uuid of next page of results (if exists, else blank).transfers:
array of objects (defined below) - sorted in ascending order by block number, ties broken by category (external
, internal
, token
)category
: "token
", "erc20
", "erc721
", "erc1155
" - label for the transfertoken
" includes "erc20
" and "erc721
" transfersblockNum
: the block where the transfer occurred (hex string).from
: from address of transfer (hex string).to
: to address of transfer (hex string). null
if contract creation.value
: converted asset transfer value as a number (raw value divided by contract decimal). null
if ERC721 transfer or contract decimal not available.erc721TokenId
: raw ERC721 token id (hex string). null
if not an ERC721 token transfererc1155Metadata
: A list of objects containing the ERC1155 tokenId
(hex string) and value
(hex string). null
if not an ERC1155 transfertokenId
: token ID for ERC721 (or other NFT) tokensasset
: ETH
or the token's symbol. null
if not defined in the contract and not available from other sources.hash
: transaction hash (hex string).rawContract
value
: raw transfer value (hex string). null
if ERC721 or ERC1155 transferaddress
: contract address (hex string). null
if external
or internal
transferdecimal
: contract decimal (hex string). null
if not defined in the contract and not available from other sources.maxCount
parameter in your request to specify the number of responses you wish to receive. If there are more results than specified in maxCount
, you will receive a value for pageKey
in your result which you should use to fetch the next response load by putting the returned pageKey
value in the pageKey
parameter of your next request. Continue to do so until a pageKey
is no longer returned (meaning you've fetched all the results).pageKey
in the response, which you should use to fetch the next 1000 (or however many is left) by putting the returned pageKey
value in the pageKey
parameter of your next request.pageKey
value you must send the next request (with the pageKey
) within the 10 minute window, otherwise you will have to restart the entire request cycle.blockNum
result and making a call to eth_getBlockByNumber
. Here is an example request.