Get NFTs by traits
curl --request POST \
--url https://deep-index.moralis.io/api/v2.2/nft/{address}/nfts-by-traits \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"traits": {
"Legendary": "Astronaut"
}
}
'import requests
url = "https://deep-index.moralis.io/api/v2.2/nft/{address}/nfts-by-traits"
payload = { "traits": { "Legendary": "Astronaut" } }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({traits: {Legendary: 'Astronaut'}})
};
fetch('https://deep-index.moralis.io/api/v2.2/nft/{address}/nfts-by-traits', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://deep-index.moralis.io/api/v2.2/nft/{address}/nfts-by-traits",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'traits' => [
'Legendary' => 'Astronaut'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://deep-index.moralis.io/api/v2.2/nft/{address}/nfts-by-traits"
payload := strings.NewReader("{\n \"traits\": {\n \"Legendary\": \"Astronaut\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://deep-index.moralis.io/api/v2.2/nft/{address}/nfts-by-traits")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"traits\": {\n \"Legendary\": \"Astronaut\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://deep-index.moralis.io/api/v2.2/nft/{address}/nfts-by-traits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"traits\": {\n \"Legendary\": \"Astronaut\"\n }\n}"
response = http.request(request)
puts response.read_body{
"result": [
{
"token_address": "0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB",
"token_id": "15",
"contract_type": "ERC721",
"name": "CryptoKitties",
"symbol": "RARI",
"possible_spam": "false",
"owner_of": "0x9c83ff0f1c8924da96cb2fcb7e093f78eb2e316b",
"token_hash": "502cee781b0fb40ea02508b21d319ced",
"block_number": "88256",
"block_number_minted": "88256",
"token_uri": "<string>",
"metadata": "<string>",
"normalized_metadata": {
"name": "Moralis Mug",
"description": "Moralis Coffee nug 3D Asset that can be used in 3D worldspaces. This NFT is presented as a flat PNG, a Unity3D Prefab and a standard fbx.",
"image": "https://arw2wxg84h6b.moralishost.com:2053/server/files/tNJatzsHirx4V2VAep6sc923OYGxvkpBeJttR7Ks/de504bbadadcbe30c86278342fcf2560_moralismug.png",
"external_link": "https://giphy.com/gifs/loop-recursion-ting-aaODAv1iuQdgI",
"external_url": "https://giphy.com/gifs/loop-recursion-ting-aaODAv1iuQdgI",
"animation_url": "https://giphy.com/gifs/food-design-donuts-o9ngTPVYW4qo8",
"attributes": [
{
"trait_type": "Eye Color",
"value": "hazel",
"display_type": "string",
"max_value": 100,
"trait_count": 7,
"order": 1
}
]
},
"media": {
"mimetype": "<string>",
"original_media_url": "<string>",
"updatedAt": "<string>",
"parent_hash": "<string>",
"media_collection": {
"low": {
"width": 123,
"height": 123,
"url": "<string>"
},
"medium": {
"width": 123,
"height": 123,
"url": "<string>"
},
"high": {
"width": 123,
"height": 123,
"url": "<string>"
}
}
},
"minter_address": "0x9c83ff0f1c8924da96cb2fcb7e093f78eb2e316b",
"last_token_uri_sync": "<string>",
"last_metadata_sync": "<string>",
"amount": "1",
"verified_collection": "false",
"rarity_rank": 21669,
"rarity_percentage": 98,
"rarity_label": "Top 98%",
"last_sale": {
"transaction_hash": "0x19e14f34b8f120c980f7ba05338d64c00384857fb9c561e2c56d0f575424a95c",
"block_timestamp": "2023-04-04T15:59:11.000Z",
"buyer_address": "0xcb1c1fde09f811b294172696404e88e658659905",
"seller_address": "0x497a7dee2f13db161eb2fec060fa783cb041419f",
"price": "7300000000000000",
"price_formatted": "0.0073",
"payment_token": {
"token_name": "Ether",
"token_symbol": "ETH",
"token_logo": "https://cdn.moralis.io/eth/0x.png",
"token_decimals": "18",
"token_address": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
},
"usd_price_at_sale": "13.61",
"current_usd_value": "15.53",
"token_address": "0xe8778996e096b39705c6a0a937eb587a1ebbda17",
"token_id": "170"
},
"list_price": {
"listed": true,
"price": "27008",
"price_currency": "eth",
"price_usd": "13.61",
"marketplace": "opensea"
},
"floor_price": "12345",
"floor_price_usd": "12345.4899",
"floor_price_currency": "eth"
}
],
"page": "2",
"page_size": "100",
"cursor": "<string>"
}Traits & Rarity
NFTs by Traits
Find NFTs in a contract matching specific traits, perfect for attribute-based searches.
POST
/
nft
/
{address}
/
nfts-by-traits
Get NFTs by traits
curl --request POST \
--url https://deep-index.moralis.io/api/v2.2/nft/{address}/nfts-by-traits \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"traits": {
"Legendary": "Astronaut"
}
}
'import requests
url = "https://deep-index.moralis.io/api/v2.2/nft/{address}/nfts-by-traits"
payload = { "traits": { "Legendary": "Astronaut" } }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({traits: {Legendary: 'Astronaut'}})
};
fetch('https://deep-index.moralis.io/api/v2.2/nft/{address}/nfts-by-traits', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://deep-index.moralis.io/api/v2.2/nft/{address}/nfts-by-traits",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'traits' => [
'Legendary' => 'Astronaut'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://deep-index.moralis.io/api/v2.2/nft/{address}/nfts-by-traits"
payload := strings.NewReader("{\n \"traits\": {\n \"Legendary\": \"Astronaut\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://deep-index.moralis.io/api/v2.2/nft/{address}/nfts-by-traits")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"traits\": {\n \"Legendary\": \"Astronaut\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://deep-index.moralis.io/api/v2.2/nft/{address}/nfts-by-traits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"traits\": {\n \"Legendary\": \"Astronaut\"\n }\n}"
response = http.request(request)
puts response.read_body{
"result": [
{
"token_address": "0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB",
"token_id": "15",
"contract_type": "ERC721",
"name": "CryptoKitties",
"symbol": "RARI",
"possible_spam": "false",
"owner_of": "0x9c83ff0f1c8924da96cb2fcb7e093f78eb2e316b",
"token_hash": "502cee781b0fb40ea02508b21d319ced",
"block_number": "88256",
"block_number_minted": "88256",
"token_uri": "<string>",
"metadata": "<string>",
"normalized_metadata": {
"name": "Moralis Mug",
"description": "Moralis Coffee nug 3D Asset that can be used in 3D worldspaces. This NFT is presented as a flat PNG, a Unity3D Prefab and a standard fbx.",
"image": "https://arw2wxg84h6b.moralishost.com:2053/server/files/tNJatzsHirx4V2VAep6sc923OYGxvkpBeJttR7Ks/de504bbadadcbe30c86278342fcf2560_moralismug.png",
"external_link": "https://giphy.com/gifs/loop-recursion-ting-aaODAv1iuQdgI",
"external_url": "https://giphy.com/gifs/loop-recursion-ting-aaODAv1iuQdgI",
"animation_url": "https://giphy.com/gifs/food-design-donuts-o9ngTPVYW4qo8",
"attributes": [
{
"trait_type": "Eye Color",
"value": "hazel",
"display_type": "string",
"max_value": 100,
"trait_count": 7,
"order": 1
}
]
},
"media": {
"mimetype": "<string>",
"original_media_url": "<string>",
"updatedAt": "<string>",
"parent_hash": "<string>",
"media_collection": {
"low": {
"width": 123,
"height": 123,
"url": "<string>"
},
"medium": {
"width": 123,
"height": 123,
"url": "<string>"
},
"high": {
"width": 123,
"height": 123,
"url": "<string>"
}
}
},
"minter_address": "0x9c83ff0f1c8924da96cb2fcb7e093f78eb2e316b",
"last_token_uri_sync": "<string>",
"last_metadata_sync": "<string>",
"amount": "1",
"verified_collection": "false",
"rarity_rank": 21669,
"rarity_percentage": 98,
"rarity_label": "Top 98%",
"last_sale": {
"transaction_hash": "0x19e14f34b8f120c980f7ba05338d64c00384857fb9c561e2c56d0f575424a95c",
"block_timestamp": "2023-04-04T15:59:11.000Z",
"buyer_address": "0xcb1c1fde09f811b294172696404e88e658659905",
"seller_address": "0x497a7dee2f13db161eb2fec060fa783cb041419f",
"price": "7300000000000000",
"price_formatted": "0.0073",
"payment_token": {
"token_name": "Ether",
"token_symbol": "ETH",
"token_logo": "https://cdn.moralis.io/eth/0x.png",
"token_decimals": "18",
"token_address": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
},
"usd_price_at_sale": "13.61",
"current_usd_value": "15.53",
"token_address": "0xe8778996e096b39705c6a0a937eb587a1ebbda17",
"token_id": "170"
},
"list_price": {
"listed": true,
"price": "27008",
"price_currency": "eth",
"price_usd": "13.61",
"marketplace": "opensea"
},
"floor_price": "12345",
"floor_price_usd": "12345.4899",
"floor_price_currency": "eth"
}
],
"page": "2",
"page_size": "100",
"cursor": "<string>"
}Authorizations
Path Parameters
The address of the NFT contract
Example:
"0x524cab2ec69124574082676e6f654a18df49a048"
Query Parameters
The chain to query
Available options:
eth, 0x1, sepolia, 0xaa36a7, polygon, 0x89, bsc, 0x38, bsc testnet, 0x61, avalanche, 0xa86a, cronos, 0x19, arbitrum, 0xa4b1, chiliz, 0x15b38, gnosis, 0x64, base, 0x2105, base sepolia, 0x14a34, optimism, 0xa, polygon amoy, 0x13882, linea, 0xe708, moonbeam, 0x504, moonriver, 0x505, flow, 0x2eb, flow-testnet, 0x221, ronin, 0x7e4, ronin-testnet, 0x31769, lisk, 0x46f, pulse, 0x171, sei-testnet, 0x530, sei, 0x531, monad, 0x8f Example:
"eth"
The desired page size of the result.
Required range:
x >= 1The cursor returned in the previous response (used for getting the next page).
The format of the token ID
Available options:
decimal, hex Example:
"decimal"
Should normalized metadata be returned?
Should preview media data be returned?
Body
application/json
Body
⌘I

