NFT API
NFT API is an Advanced API's collection of methods that comes as a unique feature along with other extensive capabilities provided to our Premium Plan users.
NFT API serves to request NFT-related data (owners, listings for particular wallet addresses, collections, time it's been minted, transaction history, and other metadata) across multiple EVM-compatible chains.
NFT API empowers the Web3 projects integrating NFTs (virtual worlds, decentralized games, galleries, marketplaces) to instantly fetch all the necessary information across multiple blockchains in a single request.
NFT API implements the JSON-RPC 2.0 specification (opens in a new tab) for interaction.
NFT API Methods
NFT API consists of the following methods to request NFT-related data across multiple chains:
ankr_getNFTsByOwner
— retrieves account-associated NFTs.ankr_getNFTMetadata
— retrieves metadata of a particular NFT.ankr_getNFTHolders
— retrieves holders of a particular NFT.ankr_getNftTransfers
— retrieves NFT transfers info of a particular address.
Prefer interactive docs? See our OpenAPI specification (opens in a new tab) for NFT API methods.
ankr_getNFTsByOwner
Retrieves the account's NFT data.
Retrieves a list of NFTs (ERC721/ERC1155/ENS/POAP) that belong to the particular account specified.
Request
Build your request using the parameters below.
Parameters
id
(int64; required): a request ID (example: 1).jsonrpc
(string; required): a JSON RPC spec used (example: 2.0).method
(string; required): a method used for the request.params
(object): the data object containing request body parameters:walletAddress
(string; required): an account address to query for NFTs; supports the Ethereum Name Service (ENS).blockchain
(string): a chain or a combination of chains to query:- Single chain:
arbitrum
,avalanche
,base
,bsc
,eth
,fantom
,flare
,gnosis
,linea
,optimism
,polygon
,polygon_zkevm
,rollux
,scroll
,stellar
,syscoin
,telos
,xai
,xlayer
,avalanche_fuji
,base_sepolia
,eth_holesky
,eth_sepolia
,optimism_testnet
,polygon_amoy
. - Chains combination:
[arbitrum, avalanche, base, bsc, eth, fantom, flare, gnosis, linea, optimism, polygon, polygon_zkevm, rollux, scroll, stellar, syscoin, telos, xai, xlayer, avalanche_fuji, base_sepolia, eth_holesky, eth_sepolia, optimism_testnet, polygon_amoy]
. - All chains: leave the value empty to query all the chains available.
- Single chain:
pageSize
(int32): a number of page results you'd like to get (default=10, max=50).pageToken
(string): a token is provided at the end of the response body and can be referenced in the request to fetch the next page.filter
(key-value): Filters your request by either of the following:- Smart contract address (
"0xd8682bfa6918b0174f287b888e765b9a1b4dc9c3": []
) — retrieves all NFTs from the address. - Smart contract address and NFT ID (
"0xd8682bfa6918b0174f287b888e765b9a1b4dc9c3": ["8937"]
) — retrieves a particular NFT specified.
- Smart contract address (
{
"id": 1,
"jsonrpc": "2.0",
"method": "ankr_getNFTsByOwner",
"params": {
"blockchain": [
"string"
],
"filter": [
{
"additionalProp1": [
"string"
],
"additionalProp2": [
"string"
],
"additionalProp3": [
"string"
]
}
],
"pageSize": 0,
"pageToken": "string",
"walletAddress": "string"
}
}
Response
Returns all the NFTs that belong to the account address specified by request body parameters.
Parameters
A successful response contains the following parameters:
id
(int64; required):jsonrpc
(string; required):result
(object): the data object containing a list of NFT assets and their metadata:blockchain
(string; required): one of the supported chains (arbitrum
,avalanche
,base
,bsc
,eth
,fantom
,flare
,gnosis
,linea
,optimism
,polygon
,polygon_zkevm
,rollux
,scroll
,stellar
,syscoin
,telos
,xai
,xlayer
,avalanche_fuji
,base_sepolia
,eth_holesky
,eth_sepolia
,optimism_testnet
,polygon_amoy
).collectionName
(string): a collection name the NFT asset belongs to.contractAddress
(string): an NFT collection's EVM-compatible contract address.contractType
(int32): a type of the contract — either ERC721 or ERC1155.name
(string): a name of the NFT asset.tokenId
(string): an ID of the NFT asset.imageUrl
(string): a URL that points to the actual digital file, usually an IPFS link.symbol
(string): a symbol of the NFT asset.traits
(array): an attribute of the NFT asset.trait_type
(string): a trait's descriptive name.value
(string): a value description.
Code Examples
Request
curl --location --request POST 'https://rpc.ankr.com/multichain' \
--header 'Content-Type: application/json' \
--data-raw '{
"jsonrpc": "2.0",
"method": "ankr_getNFTsByOwner",
"params": {
"blockchain": ["eth"],
"walletAddress": "0x0E11A192d574b342C51be9e306694C41547185DD",
"pageSize": 2,
"pageToken": "",
"filter": [
{
"0x700b4b9f39bb1faf5d0d16a20488f2733550bff4": []
},
{
"0xd8682bfa6918b0174f287b888e765b9a1b4dc9c3": ["8937"]
}
]
},
"id": 1
}'
Response
Code: 200 OK
{
"error": {},
"id": 1,
"jsonrpc": "2.0",
"result": {
"assets": [
{
"blockchain": "string",
"collectionName": "string",
"contractAddress": "string",
"contractType": 0,
"imageUrl": "string",
"name": "string",
"quantity": "string",
"symbol": "string",
"tokenId": "string",
"tokenUrl": "string",
"traits": [
{
"bunny_id": "string",
"count": 0,
"display_type": "string",
"frequency": "string",
"mp_score": "string",
"rarity": "string",
"trait_type": "string",
"value": "string"
}
]
}
],
"nextPageToken": "string",
"owner": "string"
}
}
ankr_getNFTMetadata
Retrieves the NFT's metadata.
Retrieves the metadata that belongs to a particular NFT (ERC721/ERC1155/ENS/POAP).
Request
Build your request using the parameters below.
Parameters
-
id
(int64; required): a request ID (example: 1). -
jsonrpc
(string; required): a JSON RPC spec used (example: 2.0). -
method
(string; required): a method used for the request. -
params
(object): the data object containing request body parameters.blockchain
(string; required): either of the supported chains (arbitrum
,avalanche
,base
,bsc
,eth
,fantom
,flare
,gnosis
,linea
,optimism
,polygon
,polygon_zkevm
,rollux
,scroll
,stellar
,syscoin
,telos
,xai
,xlayer
,avalanche_fuji
,base_sepolia
,eth_holesky
,eth_sepolia
,optimism_testnet
,polygon_amoy
).contractAddress
(string): an address of the NFT contract the metadata belongs to; supports the Ethereum Name Service (ENS).forceFetch
(boolean): source of NFT metadata —true
the contract,false
the database.skipSyncCheck
(boolean): if set totrue
, the info will be returned regardless of indexer health.tokenId
(integer): a token ID of the NFT the metadata belongs to. Created by the contract when minting the NFT.
{
"id": 1,
"jsonrpc": "2.0",
"method": "ankr_getNFTMetadata",
"params": {
"contractAddress": "0x8d01c8ee82e581e55c02117a676b5bbd4734fabb",
"forceFetch": true,
"skipSyncCheck": true,
"tokenId": "23240",
"blockchain": "avalanche"
},
}
Response
A successful request returns, along with the general parameters, the result
object containing metadata info on the NFT specified by request parameters.
Parameters
-
id
(int64; required): a request ID (example: 1). -
jsonrpc
(string; required): a JSON RPC spec used (example: 2.0). -
result
(object): the data object containing the NFT metadata and NFT attributes:-
metadata
(object): the data object containing the NFT metadata:blockchain
(string; required): one of the supported chains (arbitrum
,avalanche
,base
,bsc
,eth
,fantom
,flare
,gnosis
,linea
,optimism
,polygon
,polygon_zkevm
,rollux
,scroll
,stellar
,syscoin
,telos
,xai
,xlayer
,avalanche_fuji
,base_sepolia
,eth_holesky
,eth_sepolia
,optimism_testnet
,polygon_amoy
).contractAddress
(string): a contract address of the NFT Collection; supports the Ethereum Name Service (ENS).contractType
(string): a contract type of the NFT the metadata belongs to (example: ERC721, ERC1155).tokenId
(string): a token ID of the NFT the metadata belongs to (example: 7822).
-
attributes
: an object containing additional information on the NFT:contractType
(string): a contract type of the NFT the metadata belongs to (example: ERC721, ERC1155).tokenUrl
(string): a URL that points to the place storing an NFT's metadata (example: https://live---metadata-5covpqijaa-uc.a.run.app/metadata/7822 (opens in a new tab))imageUrl
(string): a URL that points to the actual digital file, usually an IPFS link (example: https://live---metadata-5covpqijaa-uc.a.run.app/images/7822 (opens in a new tab))name
(string): a name of the token (example: Rock 23240).description
(string): a description of the NFT (example: A very angry NFT bird).traits
: an array of pre-defined NFT traits:trait_type
(string): a specific type of traits (example: Eyes).value
(string): a specific value of traits (example: Angry).
-
Code Examples
Request
curl --location --request POST 'https://rpc.ankr.com/multichain' \
--header 'Content-Type: application/json' \
--data-raw '{
"jsonrpc": "2.0",
"method": "ankr_getNFTMetadata",
"params": {
"blockchain": "avalanche",
"contractAddress": "0x8d01c8ee82e581e55c02117a676b5bbd4734fabb",
"tokenId": "23240"
},
"id": 1
}'
Response
Code: 200 OK
{
"error": {},
"id": 1,
"jsonrpc": "2.0",
"result": {
"attributes": {
"contractType": 0,
"description": "string",
"imageUrl": "string",
"name": "string",
"tokenUrl": "string",
"traits": [
{
"bunny_id": "string",
"count": 0,
"display_type": "string",
"frequency": "string",
"mp_score": "string",
"rarity": "string",
"trait_type": "string",
"value": "string"
}
]
},
"metadata": {
"blockchain": "string",
"collectionName": "string",
"collectionSymbol": "string",
"contractAddress": "string",
"contractType": 0,
"tokenId": "string"
}
}
}
ankr_getNFTHolders
Retrieves the NFT's holders data.
Retrieves a list of holders (wallet addresses) of the NFT specified.
Request
Build your request using the parameters below.
Parameters
-
id
(int64; required): a request ID (example: 1). -
jsonrpc
(string; required): a JSON RPC spec used (example: 2.0). -
method
(string; required): a method used for the request. -
params
(object): the data object containing request body parameters.blockchain
(string; required): either of the supported blockchains (arbitrum
,avalanche
,base
,bsc
,eth
,fantom
,flare
,gnosis
,linea
,optimism
,polygon
,polygon_zkevm
,rollux
,scroll
,stellar
,syscoin
,telos
,xai
,xlayer
,avalanche_fuji
,base_sepolia
,eth_holesky
,eth_sepolia
,optimism_testnet
,polygon_amoy
).contractAddress
(string): a contract address of the NFT collection; supports the Ethereum Name Service (ENS).pageSize
(integer): a number of results you'd like to get (max:10000
, default:1000
).pageToken
(string): a current page token provided at the end of the response body; can be referenced in the request to fetch the next page.
{
"id": 1,
"jsonrpc": "2.0",
"method": "ankr_getNFTHolders",
"params": {
"blockchain": "string",
"contractAddress": "string",
"pageSize": 0,
"pageToken": "string"
}
}
Response
A successful request returns a list of holders for the NFT specified.
Parameters
id
(int64; required): a request ID (example: 1).jsonrpc
(string; required): a JSON RPC spec used (example: 2.0).result
(object): the data object containing a holder of the NFT specified by request parameters:holder
(string): a list of holders.nextPageToken
(string): a token is provided at the end of the response body and can be referenced in the request to fetch the next page.
Code Examples
Request
curl --location --request POST 'https://rpc.ankr.com/multichain' \
--header 'Content-Type: application/json' \
--data-raw '{
"jsonrpc": "2.0",
"method": "ankr_getNFTHolders",
"params": {
"blockchain": "arbitrum",
"contractAddress": "0xc36442b4a4522e871399cd717abdd847ab11fe88",
"pageSize": 10,
"pageToken": ""
},
"id": 1
}'
Response
Code: 200 OK
{
"error": {},
"id": 1,
"jsonrpc": "2.0",
"result": {
"holders": [
"string"
],
"nextPageToken": "string"
}
}
ankr_getNftTransfers
Retrieves info on NFT transfers.
Retrieves info on NFT transfers for an address specified.
Request
Build your request using the parameters below.
Parameters
-
id
(int64; required): a request ID (example: 1). -
jsonrpc
(string; required): a JSON RPC spec used (example: 2.0). -
method
(string; required): a method used for the request. -
params
(object): the data object containing request body parameters.address
(array of strings; required): an address (or list of addresses) to search for transactions.blockchain
(array of strings): either of the supported blockchains (arbitrum
,avalanche
,base
,bsc
,eth
,fantom
,flare
,gnosis
,linea
,optimism
,polygon
,polygon_zkevm
,rollux
,scroll
,stellar
,syscoin
,telos
,xai
,xlayer
,avalanche_fuji
,base_sepolia
,eth_holesky
,eth_sepolia
,optimism_testnet
,polygon_amoy
).descOrder
(boolean): choose data order, either descending (iftrue
) or ascending (iffalse
).fromBlock
(integer): narrow your search indicating the block number to start from (inclusive;>= 0
).toBlock
(integer): narrow your search indicating the block number to end with (inclusive;>= 0
).fromTimestamp
(integer): narrow your search indicating the timestamp to start from (inclusive;>= 0
).toTimestamp
(integer): narrow your search indicating the timestamp to end with (inclusive;>=0
).pageSize
(integer): a number of result pages you'd like to get (max:10000
, default:100
).pageToken
(string): a current page token provided at the end of the response body; can be referenced in the request to fetch the next page.
{
"id": 1,
"jsonrpc": "2.0",
"method": "ankr_getNftTransfers",
"params": {
"address": "string",
"blockchain": ["string"],
"fromTimestamp": 0,
"pageSize": 0,
"toTimestamp": 0
}
}
Response
A successful request returns information on transfers for an address specified.
Code Examples
Request
curl --location --request POST 'https://rpc.ankr.com/multichain' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": 1,
"jsonrpc": "2.0",
"method": "ankr_getNftTransfers",
"params": {
"address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
"blockchain": [
"bsc"
],
"fromTimestamp": 1655197483,
"pageSize": 2,
"toTimestamp": 1671974699
}
}'
Response
Code: 200 OK
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"transfers": [
{
"blockHeight": 19116577,
"blockchain": "bsc",
"collectionName": "",
"collectionSymbol": "",
"contractAddress": "0x36f8f51f65fe200311f709b797baf4e193dd0b0d",
"fromAddress": "0x186ea56f0a40c5593a697b3e804968b8c5920ff3",
"imageUrl": "",
"name": "",
"timestamp": 1656519782,
"toAddress": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
"tokenId": "12",
"transactionHash": "0x95ae64003124fe4c3e8702364136d25c3d0f2fdbbf953bd815785f06d5cb6025",
"type": "ERC1155",
"value": "1"
},
{
"blockHeight": 19357744,
"blockchain": "bsc",
"collectionName": "CheersBio Capsule",
"collectionSymbol": "CBC",
"contractAddress": "0x999017cb5652caf5f324a8e44f813903ba3c46eb",
"fromAddress": "0x0000000000000000000000000000000000000000",
"imageUrl": "https://ipfs.io/ipfs/QmZCS7HtmQZtUPLTR1LaLhCwW5W22c1jCociw7Pvi3Autg",
"name": "RSS3 Chain Friends #36957",
"timestamp": 1657244377,
"toAddress": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
"tokenId": "36957",
"transactionHash": "0xac2d856630eb80270a3b75538977832ac6d7c19100f41b804d3c100958bcb3ab",
"type": "ERC721",
"value": "1"
}
]
}
}