NFTs API

Many NFT collections: what each is, its floor price, its size

Up to 25 NFT collections on one chain in one request: each one's identity (verified or flagged as possible spam), cheapest current listing, NFT, holder and transfer counts, and last sale.

POST/api/external/nft-analysis/nft-collection-batch/{chain}

What it returns

The nft-collection answer — name, symbol, whether the collection is verified or flagged as possible spam, its cheapest current listing, how many NFTs, holders and transfers it has, and its last sale in the past 90 days — for many collections on one chain in one request. Each result is exactly what nft-collection answers for that collection, with the same caveats on every field. An address that holds no contract is not_found, where nft-collection answers 404. POST, because the list is the subject: it can run past what a URL comfortably holds, and a body keeps a watch list out of every proxy log between the caller and this service.

Chains

  • BNB Chain BNB
  • Ethereum ETH
  • Base BASE

Request

Send your key in the x-dex-data-key header. Replace each <placeholder> with a real value.

curl -X POST -H "x-dex-data-key: $DEXDATA_API_KEY" \
  -H "content-type: application/json" \
  -d '{"subjects":["<subjects>"]}' \
  "https://api.dexdata.io/api/external/nft-analysis/nft-collection-batch/BNB"
Parameters
ParameterDescription
chain

path · string · required

The chain every collection in the batch lives on. BNB, ETH and BASE only, as on nft-collection; SOL, STABLE, RHC and ARC return 400. CELO, ARB, OP and SCROLL return 400 here.
subjects

body · string[] · optional

NFT collection contract addresses (NOT one specific NFT within a collection). Between 1 and 25, each sent once.

Response fields

A JSON response. Every field is always present; null means the value could not be established, never zero.

Response fields of Many NFT collections: what each is, its floor price, its size
FieldTypeDescription
resultsobject[]One entry per requested subject, in the order they were sent.
results[].subjectstringThe subject exactly as it was sent.
results[].resultobject | nullWhat the single-subject endpoint answers for this subject. null only when error is set.
results[].result.namestring | nullThe collection's name. null when the source has none on file.
results[].result.symbolstring | nullThe collection's on-chain symbol.
results[].result.contractTypestring | null"ERC721" or "ERC1155" — the source's own classifier. null when undetermined.
results[].result.verifiedboolean | nulltrue when the source has independently verified this as a real, catalogued collection; null otherwise. Never false — the source does not publish a negative verification, only "verified" or "not looked at".
results[].result.possibleSpamboolean | nulltrue when the source flags this contract as likely spam; null when it has not flagged either way.
results[].result.floorPricenumber | nullThe lowest current listing price, in floorPriceCurrency units. null when nothing is currently listed.
results[].result.floorPriceUsdnumber | nullThe same floor price converted to USD. null when nothing is currently listed.
results[].result.floorPriceCurrencystring | nullThe currency floorPrice is denominated in, e.g. "ETH". null when nothing is currently listed.
results[].result.floorPriceMarketplacestring | nullThe marketplace the floor price was observed on, e.g. "opensea" — a downstream venue this collection trades on, not a data source. null when nothing is currently listed.
results[].result.itemCountinteger | nullHow many NFTs the collection holds. A real 0 (a contract with no NFT minted) stays 0; null means the source stated no count.
results[].result.ownerCountinteger | nullHow many addresses hold one of this collection today — the same figure nft-collection-holders publishes, from the same count, not a second opinion on it. null means the source stated no count.
results[].result.transferCountinteger | nullHow many transfers the collection has seen in its lifetime, mints included. null means the source stated no count.
results[].result.lastSalePricenumber | nullWhat the most recent sale in the last 90 days paid, in lastSaleCurrency units. null when the collection had no sale in that window — the window does not reach further back.
results[].result.lastSalePriceUsdnumber | nullThe same sale in USD at the time it happened. null when there was no sale in the last 90 days.
results[].result.lastSaleCurrencystring | nullThe token the last sale was paid in, e.g. "ETH". null when there was no sale in the last 90 days.
results[].result.lastSaleAtstring | nullWhen the last sale happened (its block time), ISO 8601 UTC. null when there was no sale in the last 90 days.
results[].errorstring | nullnull, or unavailable when no source could be reached for this subject — retry it. not_found when the address holds no contract on this chain — where nft-collection answers 404. A contract that exists is never not_found: one with nothing on file is a result with its fields null. A subject nobody has data for is NOT an error: its result says so.

Start building with DexData today

Sign in, create a key and make your first call in a minute. Free credits every month, and you only pay for calls that succeed.

Get a free API key