Where our information comes from and how we check it.
Last updated
This page explains where our information comes from and how we check it.
Articles
Every news story and report lists its sources at the end. When a story uses numbers, the article keeps a copy of them as they were when it was published, so you can see what the writer saw.
Market numbers
Market numbers come from public blockchain data that we collect ourselves, chain by chain, and from the marketplaces' own data services. We count every sale at its dollar value when it happened, so sales on different chains add up fairly. Amounts in a chain's own coin are added up only within that chain, and a sale we cannot price is left out of the volumes and counted apart.
Next to every number we show its source and when it was last updated. If a number is late, we say so instead of passing off an old figure as current. A chain we do not read yet says so and never shows zero; the list at the end of this page shows what we have for each chain.
Mistakes
If you think a number or a fact is wrong, tell us through the contact page. We fix mistakes in the open and list every correction on the corrections page.
Coverage by chain
We add up amounts from different chains only in dollars, each sale at its dollar value when it happened. A chain without figures is left out of the By chain table on the market page instead of showing zero.
We read sales straight from the blockchain, from the marketplaces below, and keep the sales of the collections we track. Sales on other marketplaces, and NFTs that change hands outside a marketplace, are not counted.
Solana
Magic Eden and Tensor
Ethereum
OpenSea, Blur, Other Seaport sites and CryptoPunks Market
Base
OpenSea, Other Seaport sites and Beezie
Polygon
OpenSea, Other Seaport sites and Courtyard
Robinhood Chain
OpenSea and Other Seaport sites
Immutable
Immutable Orderbook and Other Seaport sites
Seaport. On Ethereum, Base, Polygon and Robinhood Chain, OpenSea and many other sites sell through the same contract, Seaport 1.6. We tell OpenSea and Beezie sales apart by the order’s zone, a field that names the site that took the order, or by the fee the order pays OpenSea; the rest count as Other Seaport sites.
Robinhood Chain. On Robinhood Chain, OpenSea and other Seaport sites are read through Seaport 1.6, as on the other Seaport chains. We count sales paid in ETH, WETH or USDG. WETH is priced as ether, and USDG, a dollar coin, with its own dollar rate.
Immutable. On Immutable, games and marketplaces share one orderbook, Immutable’s, whose orders are filled on its own Seaport contract. We read that contract and count the orders signed by the orderbook’s zones as Immutable Orderbook sales. Many game items there are sold for GODS or other game tokens we have no dollar rate for; we skip those sales, so Immutable’s figures are lower than its full trade.
Blur. On Ethereum we also read Blur’s own contract, bids paid from Blur Pool included.
CryptoPunks. CryptoPunks are older than today’s NFT standard and trade on their own contract on Ethereum, which we read too. When a bid is accepted there, the contract’s record of the sale leaves out the price, so we take the bid the contract held in the block before.
Courtyard. Its marketplace on Polygon, paid in USDC, with no fee on-chain. Trades by Courtyard’s treasury (0x66db…e642) and its buybacks are left out: they are the platform buying back at its own price. The outlier rule does not apply to card collections. Block times come from each block’s header.
Magic Eden and Tensor. On Solana we find Magic Eden’s sales through the four accounts its marketplace fees are paid to, and read every transaction of Tensor’s marketplace programs (TComp and AMM), all from Helius. Our own parser reads each sale. Six times a day we read ten random minutes of Magic Eden’s own programs (M2 and MMM) in full and check that every sale in them was also found through the fee accounts. That check is a sample, not a guarantee. The price is what the buyer paid for the NFT, royalties and marketplace fees included, and it is checked against the money the transaction moved.
Free transfers. An NFT given away, or moved between wallets without a payment, is not a sale.
Sales we skip. We leave out an order that sells several different NFTs at once, a sale paid in more than one coin, and a sale paid in a coin we have no dollar rate for. On Solana we also leave out sales of compressed NFTs, and sales paid in anything other than SOL or USDC.
How the ranking works
Clean volume first. Collections are ranked by the dollar value of their clean sales in the period you pick, the biggest first. Sales our checks mark as suspect are left out.
At least 5 sales. A collection needs 5 clean sales in the period to be ranked. The others are listed under “Not ranked”, each with its reason.
Only what we read. A collection on a chain whose sales we do not read yet, or whose history we are still reading, has no figures and is not ranked.
Labels
A sale is suspect when it looks like trading with oneself rather than a real sale: a wallet buying from itself, an NFT going back and forth between the same two wallets within 7 days, an NFT passed around 3 or more times among at most 3 wallets, one wallet paying the fees of both sides, an NFT that sells into the seller’s own pool, or a price more than 10 times the collection’s usual sale. The price check does not apply to card collections, whose prices range from a few dollars to thousands. Suspect sales stay in our records but are left out of the figures.
Suspect volume. A collection gets this label when 20% or more of its volume over the last 7 days comes from suspect sales, or when it had at least 20 clean sales and the two pairs of wallets that traded most with each other made more than 40% of that volume.
Thin market. Fewer than 5 clean sales in 7 days. A few sales can move the figures a lot, so we do not show their change.
Liquid market. 20 clean sales or more in 7 days.
Floor prices
Ethereum, Base, Polygon and Robinhood Chain. The floor is the one CoinGecko reports. We ask CoinGecko about the biggest collections only, and never show a floor more than 24 hours old.
Immutable. CoinGecko lists no NFT collections on Immutable, so its collections show no floor.
Solana. The floor comes live from Magic Eden, for the collections it lists.
When we hold a floor back. We do not show a floor quoted in an unexpected coin, a floor that is not a valid number, or a floor more than 3 times the median of the collection’s clean sales over 30 days when it had at least 3 of them. The page then says why there is no floor.
History
A collection shows a figure only for days whose sales we have fully read. Its first figures, for 24 hours and 7 days, appear once we have read 7 days of its sales; until then its page says we are still reading its history, and it is not ranked. Each other figure is shown once its days are read: the 7-day change after 14 days, the 30-day figures and the median sale after 30, and the 30-day change after 60. Until then the figure shows a dash with the days it needs, never a smaller number. Totals for the market, a chain or a marketplace count a collection once its 60 days are read. A collection we started tracking recently shows figures from the day our data starts, and its charts say so.
Which collections we track
We track a list of collections we chose by hand. On Ethereum, Base, Polygon, Immutable, Robinhood Chain and Solana we also add every collection that passes the rules below. A program checks them once a day, on the OpenSea and Blur sales of the last 30 days, the Immutable orderbook sales on Immutable, and the Magic Eden and Tensor sales on Solana; no person picks them. On Solana the rules start once we have read 7 days of sales, and apply to the days read until there are 30.
Real trading. A collection needs at least $10K of sales in 30 days on Ethereum and $2,000 on Base, Polygon, Immutable, Robinhood Chain and Solana. Each sale is priced with the dollar rate at the time of the sale.
Many buyers. At least 25 different buyers, and no single buyer paying more than 50% of the volume whose buyer we can see.
Few self-trades. Fewer than 5% of its sales may be a wallet buying from itself, or from its own pool.
A collection, not something else. The contract, or on Solana the collection, has to give itself a name. Liquidity positions and vote locks are left out, and so is OpenSea's shared storefront, which holds many unrelated items.
A steady pace. At most 15 new collections a day on Ethereum and 5 on each other chain, the biggest first. While a collection added more than 3 days ago still waits for its sales history, nothing new is added on its chain. On Solana one read of the sales history serves every collection, so this pause does not apply there.
Checked again. A new collection gets figures only after we have read at least 7 days of its sales and checked the rules again on its confirmed sales, without the ones we flag as suspect. Until 30 days are read, the volume it needs is scaled to the days read, out of 30. If it fails the rules early, it waits without figures and is checked again as more days are read. We check it once more once all 60 days of its sales are read; if it fails them then, we stop tracking it and look at it again after 30 days.
Taken out by hand. Our team can stop tracking a collection that passes the rules but should not be here, for example a copy of a known collection. Such a collection is never added again by the rules.
The page of a collection added this way says “Added automatically by our rules” with the date, and shows its contract address so you can check it.
Dollar rates
Dollar prices of NFT sales, and the coin prices at the top of the page, come from Chainlink price feeds, which we read every few minutes and store. A sale gets the last rate of its coin at or before the moment it happened. Chainlink rates are reference prices, not the price on one exchange, so dollar amounts are approximate.
How long each coin’s rate can price a sale
Coin
Feed on
Valid for
ETH
Ethereum
66 minutes
BTC
Ethereum
66 minutes
IMX
Ethereum
26 hours 24 minutes
USDC
Ethereum
25 hours 18 minutes
USDT
Ethereum
26 hours 24 minutes
USDG
Ethereum
26 hours 24 minutes
SOL
Polygon
5 minutes 27 seconds
POL
Polygon
5 minutes 27 seconds
BNB
BNB Chain
5 minutes 27 seconds
Too old. A rate is valid for the longest gap Chainlink promises between two updates of its feed, plus 10% and at least 5 minutes. A sale with no valid rate has no dollar price yet and stays out of dollar figures. When a rate arrives, the sale is priced and the figures for its day are counted again.
Stablecoins. USDC and USDT sales use their own Chainlink rate, not a fixed $1.
FLOW. There is no Chainlink feed for FLOW yet, so sales in FLOW have no dollar price.
Figures wait for rates. We publish figures only up to the moment we have both the sales and the rates for. A late rate shows as “Delayed”, never as a drop.
Coin prices. The ETH, BTC and SOL prices on the homepage and the market page are the latest rates we stored. A price more than 2 hours old shows as a dash.
Top sales
The Top sales carousel on the homepage and on each chain page lists the highest NFT sales of the last 24 hours, at most 10 sales, from the collections we track.
What counts. A clean sale, priced in dollars, from a collection without the suspect volume label. Clean means our suspect sale rules did not flag the sale. They catch the usual cases, not every one. Sales we could not price never count. A sale of several copies of one NFT in one go is left out too, because its price pays for all of them.
One card per NFT. Each NFT shows once, with its highest sale, and there are at most 3 cards per collection, so one busy collection cannot fill the list.
The median line. A card can say “2.4× the 7-day median”. It compares the price with the median of the collection’s clean single-copy sales over the last 7 days. It shows only when the collection had at least 10 such sales and the price is at least 1.5× the median. We use the median, not the average, because one huge sale cannot skew it.
Times. The 24 hours end at the last update of our sales data, and the carousel shows that time, in UTC. It also says how many sales in them were over $1,000, and it says “Delayed” when that end time is more than 30 minutes old.
Images. We copy NFT images to our own server and never load them from other sites. We show them only for collections our team has checked, and we keep the address each image came from. Otherwise the card shows the collection’s logo. Images belong to their creators: to ask us to remove one, write to us through the contact page.
Hidden NFTs. Our staff can hide an NFT, for an unsuitable image or at the request of its owner. It stays hidden when it sells again.
The carousel shows only when at least 3 sales remain after these rules, and not at all once its end time is more than 48 hours old.