Every time the best price of a token changes (i.e. the 'floor ask'), an event is generated. This API is designed to be polled at high frequency, in order to keep an external system in sync with accurate prices for any token.
There are multiple event types, which describe what caused the change in price:
-
new-order
> new listing at a lower price -
expiry
> the previous best listing expired -
sale
> the previous best listing was filled -
cancel
> the previous best listing was cancelled -
balance-change
> the best listing was invalidated due to no longer owning the NFT -
approval-change
> the best listing was invalidated due to revoked approval -
revalidation
> manual revalidation of orders (e.g. after a bug fixed) -
reprice
> price update for dynamic orders (e.g. dutch auctions) -
bootstrap
> initial loading of data, so that all tokens have a price associated
Some considerations to keep in mind
-
Due to the complex nature of monitoring off-chain liquidity across multiple marketplaces, including dealing with block re-orgs, events should be considered 'relative' to the perspective of the indexer, ie when they were discovered, rather than when they happened. A more deterministic historical record of price changes is in development, but in the meantime, this method is sufficent for keeping an external system in sync with the best available prices.
-
Events are only generated if the best price changes. So if a new order or sale happens without changing the best price, no event is generated. This is more common with 1155 tokens, which have multiple owners and more depth. For this reason, if you need sales data, use the Sales API.