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.
/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"| Parameter | Description |
|---|---|
chainpath · 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. |
subjectsbody · 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.
| Field | Type | Description |
|---|---|---|
results | object[] | One entry per requested subject, in the order they were sent. |
results[].subject | string | The subject exactly as it was sent. |
results[].result | object | null | What the single-subject endpoint answers for this subject. null only when error is set. |
results[].result.name | string | null | The collection's name. null when the source has none on file. |
results[].result.symbol | string | null | The collection's on-chain symbol. |
results[].result.contractType | string | null | "ERC721" or "ERC1155" — the source's own classifier. null when undetermined. |
results[].result.verified | boolean | null | true 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.possibleSpam | boolean | null | true when the source flags this contract as likely spam; null when it has not flagged either way. |
results[].result.floorPrice | number | null | The lowest current listing price, in floorPriceCurrency units. null when nothing is currently listed. |
results[].result.floorPriceUsd | number | null | The same floor price converted to USD. null when nothing is currently listed. |
results[].result.floorPriceCurrency | string | null | The currency floorPrice is denominated in, e.g. "ETH". null when nothing is currently listed. |
results[].result.floorPriceMarketplace | string | null | The 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.itemCount | integer | null | How 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.ownerCount | integer | null | How 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.transferCount | integer | null | How many transfers the collection has seen in its lifetime, mints included. null means the source stated no count. |
results[].result.lastSalePrice | number | null | What 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.lastSalePriceUsd | number | null | The same sale in USD at the time it happened. null when there was no sale in the last 90 days. |
results[].result.lastSaleCurrency | string | null | The token the last sale was paid in, e.g. "ETH". null when there was no sale in the last 90 days. |
results[].result.lastSaleAt | string | null | When the last sale happened (its block time), ISO 8601 UTC. null when there was no sale in the last 90 days. |
results[].error | string | null | null, 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