Wallets API
Which NFTs a wallet bought or sold
A wallet's NFT marketplace trades: what it bought or sold, at what price, on which marketplace, and when. Not what it currently holds. ETH only.
GET
/api/external/wallet-analysis/wallet-nft-trades/{chain}/{address}Chains
- Ethereum ETH
Request
Send your key in the x-dex-data-key header. Replace each <placeholder> with a real value.
curl -H "x-dex-data-key: $DEXDATA_API_KEY" \ "https://api.dexdata.io/api/external/wallet-analysis/wallet-nft-trades/ETH/<address>"
| Parameter | Description |
|---|---|
chainpath · string · required | ETH only; every other chain returns 400. One chain has been measured for this question, and the others are not claimed on an untested assumption. |
addresspath · string · required | The wallet address. |
Response fields
A JSON response. Every field is always present; null means the value could not be established, never zero.
| Field | Type | Description |
|---|---|---|
trades | object[] | Every NFT marketplace trade this wallet was a party to. An EMPTY list means the source returned no rows — it does not mean the wallet has never traded an NFT, because a wallet with no trades and one the source has not indexed are indistinguishable here. |
trades[].side | string | null | buy when this wallet is the buyer, sell when it is the seller, null when it is neither — reported rather than guessed. KNOWN LIMIT OF THE EVIDENCE: every trade in the sample this endpoint was built and verified against was a BUY, so the sell branch is derived from the same address comparison but has never been produced against a real upstream response. Treat a sell as sound reasoning rather than as an observed case until one is reported. |
trades[].collectionName | string | null | |
trades[].contractAddress | string | null | The NFT contract. |
trades[].tokenIds | string[] | null | The token ids in this trade, as STRINGS — a uint256 id can exceed a safe JSON integer. |
trades[].marketplace | string | null | |
trades[].price | string | null | The price as a decimal STRING in priceCurrency, never a number: parsing a wei-scale amount to a JSON number rounds it. |
trades[].priceCurrency | string | null | The token the price is denominated in, e.g. WETH. |
trades[].priceUsdNow | number | null | The sale price valued in USD at the payment token's CURRENT rate, when this response was produced. This is NOT the USD value at the time of the sale: it moves with the token's price, and the same 2025 sale read 78.91 and then 78.90 an hour apart. For the value at the time of the sale, price price in priceCurrency at the time in at. |
trades[].at | string | null | Block timestamp, ISO-8601. |
trades[].txHash | string | null |
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