curl --request GET \
--url 'https://api.coinstats.app/v1/wallet/nft/collections?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045' \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.coinstats.app/v1/wallet/nft/collections?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
headers = {"X-API-KEY": "<api-key>"}
response = requests.request("GET", url, headers=headers)
print(response.json())const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.coinstats.app/v1/wallet/nft/collections?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', options)
.then((response) => response.json())
.then((response) => console.log(response))
.catch((err) => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.coinstats.app/v1/wallet/nft/collections?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"io"
"net/http"
)
func main() {
url := "https://api.coinstats.app/v1/wallet/nft/collections?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.coinstats.app/v1/wallet/nft/collections?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.coinstats.app/v1/wallet/nft/collections")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"name": "Bored Ape Yacht Club",
"logo": "https://static.coinstats.app/nft/collection/6490c15716994ae311b3dc0639e74f8f/main/lg.webp",
"address": "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D",
"totalFloorPrice": 25.5,
"totalLastSalePrice": null,
"id": "bored-ape-yacht-club",
"assetsCount": 3,
"assets": [
{
"previewImg": "https://img.reservoir.tools/images/v2/mainnet/7%2FrdF%2Fe%2F0iXY8HduhRCoIehkmFeXPeOQQFbbmIPfjCapsp4%2FAy3ieiFtEgUupjcSDNwowUAEEu0iXnzjMChv7QLdfH4N6qlInFDYjc7W9u3WgHVXXnOM%2B0pLtMsEcKf11gd0znBhF6Fou78mk2S5CA%3D%3D"
}
],
"floorPrice": 8.5,
"isSpam": false,
"verified": true,
"blockchain": "ethereum",
"floorPriceCurrency": "ethereum",
"value": 13150.86,
"currency": "USD"
}
],
"meta": {
"page": 2,
"limit": 20,
"itemCount": 150,
"pageCount": 8,
"hasPreviousPage": true,
"hasNextPage": true
},
"failedBlockchains": []
}{
"statusCode": 400,
"message": "Bad Request",
"requestId": "11111111-2222-3333-4444-555555555555",
"path": "<requested-endpoint>"
}{
"statusCode": 401,
"message": "Unauthorized",
"requestId": "11111111-2222-3333-4444-555555555555",
"path": "<requested-endpoint>"
}{
"statusCode": 403,
"message": "Forbidden",
"requestId": "11111111-2222-3333-4444-555555555555",
"path": "<requested-endpoint>"
}{
"statusCode": 404,
"message": "Not Found",
"requestId": "11111111-2222-3333-4444-555555555555",
"path": "<requested-endpoint>"
}{
"statusCode": 409,
"message": "Transactions not synced",
"requestId": "11111111-2222-3333-4444-555555555555",
"path": "<requested-endpoint>"
}{
"statusCode": 429,
"message": "Rate limit exceeded",
"requestId": "11111111-2222-3333-4444-555555555555",
"path": "<requested-endpoint>"
}{
"statusCode": 503,
"message": "Service Unavailable. Please Contact Support"
}Get Wallet NFT Collections
Get the NFT collections a wallet holds, one row per collection, on one chain or across chains.
curl --request GET \
--url 'https://api.coinstats.app/v1/wallet/nft/collections?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045' \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.coinstats.app/v1/wallet/nft/collections?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
headers = {"X-API-KEY": "<api-key>"}
response = requests.request("GET", url, headers=headers)
print(response.json())const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.coinstats.app/v1/wallet/nft/collections?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', options)
.then((response) => response.json())
.then((response) => console.log(response))
.catch((err) => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.coinstats.app/v1/wallet/nft/collections?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"io"
"net/http"
)
func main() {
url := "https://api.coinstats.app/v1/wallet/nft/collections?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.coinstats.app/v1/wallet/nft/collections?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.coinstats.app/v1/wallet/nft/collections")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"name": "Bored Ape Yacht Club",
"logo": "https://static.coinstats.app/nft/collection/6490c15716994ae311b3dc0639e74f8f/main/lg.webp",
"address": "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D",
"totalFloorPrice": 25.5,
"totalLastSalePrice": null,
"id": "bored-ape-yacht-club",
"assetsCount": 3,
"assets": [
{
"previewImg": "https://img.reservoir.tools/images/v2/mainnet/7%2FrdF%2Fe%2F0iXY8HduhRCoIehkmFeXPeOQQFbbmIPfjCapsp4%2FAy3ieiFtEgUupjcSDNwowUAEEu0iXnzjMChv7QLdfH4N6qlInFDYjc7W9u3WgHVXXnOM%2B0pLtMsEcKf11gd0znBhF6Fou78mk2S5CA%3D%3D"
}
],
"floorPrice": 8.5,
"isSpam": false,
"verified": true,
"blockchain": "ethereum",
"floorPriceCurrency": "ethereum",
"value": 13150.86,
"currency": "USD"
}
],
"meta": {
"page": 2,
"limit": 20,
"itemCount": 150,
"pageCount": 8,
"hasPreviousPage": true,
"hasNextPage": true
},
"failedBlockchains": []
}{
"statusCode": 400,
"message": "Bad Request",
"requestId": "11111111-2222-3333-4444-555555555555",
"path": "<requested-endpoint>"
}{
"statusCode": 401,
"message": "Unauthorized",
"requestId": "11111111-2222-3333-4444-555555555555",
"path": "<requested-endpoint>"
}{
"statusCode": 403,
"message": "Forbidden",
"requestId": "11111111-2222-3333-4444-555555555555",
"path": "<requested-endpoint>"
}{
"statusCode": 404,
"message": "Not Found",
"requestId": "11111111-2222-3333-4444-555555555555",
"path": "<requested-endpoint>"
}{
"statusCode": 409,
"message": "Transactions not synced",
"requestId": "11111111-2222-3333-4444-555555555555",
"path": "<requested-endpoint>"
}{
"statusCode": 429,
"message": "Rate limit exceeded",
"requestId": "11111111-2222-3333-4444-555555555555",
"path": "<requested-endpoint>"
}{
"statusCode": 503,
"message": "Service Unavailable. Please Contact Support"
}You will get
You will get
- One entry per collection: name, logo, number of NFTs held and one preview image
- Collection floor price and the holding’s total floor value, in the chain’s native token and in your currency
Required
Required
- address: Query parameter. Wallet address (ENS names work when reading ethereum alone).
Optional
Optional
- page & limit: Control pagination. Pages list collections; limit is capped at 100.
- blockchain: Chain to read, a comma-separated list, or “all”. Defaults to ethereum.
- currency: Fiat currency for value. Defaults to USD.
- sortBy: floorValue lists the most valuable collections first.
- spam: exclude (default), include or only.
Authorizations
API key required to access the endpoints. Generate one from your dashboard at https://openapi.coinstats.app and pass it in the X-API-KEY request header. Never expose your key in client-side code.
Query Parameters
Page number to retrieve (1-based indexing)
1
Number of items to return per page
20
The blockchain network identifier from /wallet/blockchains call response (its chain field). NFT data is available on: ethereum, polygon-pos, base, arbitrum-one, optimistic-ethereum, zksync, blast, linea, scroll, zora, abstract, apechain, avalanche, binance_smart, unichain, soneium, berachain, world-chain, celo, xdai, monad. Comma-separate several, or pass "all". Defaults to ethereum.
"ethereum,base"
Fiat currency for values, e.g. USD, EUR. Defaults to USD.
"USD"
default keeps upstream order; floorValue lists the most valuable collections first (reads up to 1,000 collections).
default, floorValue exclude (default) hides spam collections, include returns everything, only returns spam alone.
exclude, include, only Wallet address (0x…), or an ENS name when reading ethereum alone.
"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
Was this page helpful?