Skip to content
⌘K
Marketplace API

Marketplace data

Wallets and portfolio

Read a wallet's profile, items, collections, kiosks, portfolio value and P&L, its listings, and the offers it made or can accept.

Every wallet read is public and keyed by address. An address is 0x plus up to 64 hex characters; the API normalises it to the full 64-character lowercase form. An invalid address returns 404 not_found ("Account not found").

EndpointWhat it returns
GET /accounts/{address}Profile header: name, item and listing counts
GET /accounts/{address}/holdings-summaryItems and collections held, from holder data
GET /accounts/{address}/itemsItems held (wallet, kiosks and own escrow listings) as cards
GET /accounts/{address}/collectionsThe same items grouped by collection, with value at floor
GET /accounts/{address}/kiosksKiosks the address owns
GET /accounts/{address}/portfolioPortfolio value, cost and P&L
GET /accounts/{address}/pnlRealised round trips
GET /accounts/{address}/savingsFees saved against other venues
GET /orders?maker={address}Listings the address has live
GET /offers?maker={address}Offers the address made
GET /offers?receiver={address}Offers the address can accept with what it holds
GET /events?account={address}Wallet activity, see Activity feeds

Profile

GET/accounts/{address}
curl "https://rare.market/api/v1/accounts/0x16386f6d07a85631e419e8f83b1d99a13949515a6af7ba3f81f3cfb0ec7e5543"
Response
{
  "address": "0x16386f6d07a85631e419e8f83b1d99a13949515a6af7ba3f81f3cfb0ec7e5543",
  "name": null,
  "avatarUrl": null,
  "bannerSeed": "16386f6d",
  "totalItems": 719,
  "listedCount": 0,
  "classes": { "collectible": 719, "name": 0, "defi": 0, "system": 0, "spam": 0, "noImage": 0 }
}

name is the address's SuiNS name, or null. totalItems and listedCount count collectibles only. classes counts every item the wallet holds by type class (see Type classes).

Holdings summary

GET/accounts/{address}/holdings-summary
Response
{ "items": 719, "collections": 1, "names": 0, "asOf": "2026-10-27T01:59:24.709Z" }

items and collections count collectibles; names counts SuiNS-style names apart. This comes from the same chain holder data as Holders, so it includes staked items, and asOf says how current it is. Items with no usable image are left out unless their collection trades and has a floor.

Items

GET/accounts/{address}/items

Everything the address holds directly, in its kiosks, and in escrow listings it made, as ItemCard objects (the same cards as Items), each with typeClass and typeClassReason.

ParameterValuesNotes
classcomma list of collectible, name, defi, system, spam, noimage, hidden, allDefault collectible. hidden is defi, system, spam and noimage together.
statuslisted, unlisted, allDefault all.
collectionslug or Move typeOne collection.
qtextMatches item or collection name.
sortfloor_desc (default), listed_desc, price_asc, price_descPrice sorts use the all-in listing price; unlisted items sort last.
show, hidecomma lists of item ids (up to 500)Per-viewer overrides: show treats the items as collectibles, hide treats them as hidden.
limit1 to 200Default 60.
cursorthe previous page's nextCursorOpaque.

The response is a page plus classes, the per-class counts over the whole wallet after show and hide:

Response
{
  "data": [
    {
      "id": "0x0001bc22918a4e12049a9b0d6a13678e4db3fe2d15bbded22110f3d77d12b9ad",
      "name": "Popkins #16973",
      "type": "0xb908f3c6fea6865d32e2048c520cdfe3b5c5bbcebb658117c41bad70f52b7ccc::popkins_nft::Popkins",
      "kioskId": null,
      "imageUrl": "https://storage.claynosaurz.com/popkins/images/0x0001bc22918a4e12049a9b0d6a13678e4db3fe2d15bbded22110f3d77d12b9ad",
      "collection": {
        "slug": "popkins",
        "name": "Popkins",
        "imageUrl": "https://storage.claynosaurz.com/popkins/images/0x817dac94fff3a567b80e23a3b55fca2fd108641e0dd06fc614e5ecc0acbb4e03",
        "verified": true
      },
      "rarity": { "rank": 24678, "tier": "common" },
      "listing": null,
      "lastSaleMist": null,
      "lastSaleAt": null,
      "topOfferMist": "48000000000",
      "owner": "0x16386f6d07a85631e419e8f83b1d99a13949515a6af7ba3f81f3cfb0ec7e5543",
      "deal": null,
      "typeClass": "collectible",
      "typeClassReason": "Drip v1 curated"
    }
  ],
  "nextCursor": "eyJpZCI6IjB4MDAwMWJjMjI5MThhNGUxMjA0OWE5YjBkNmExMzY3OGU0ZGIzZmUyZDE1YmJkZWQyMjExMGYzZDc3ZDEyYjlhZCIsImkiOjF9",
  "total": 719,
  "classes": { "collectible": 719, "name": 0, "defi": 0, "system": 0, "spam": 0, "noImage": 0 }
}

A listing on a card only shows when the address is its seller. An item listed by someone else since it moved shows unlisted. Collectibles with no usable image carry noImage: true and sit in the noimage class.

Type classes

ClassMeaning
collectibleNFTs shown by default
nameSuiNS and similar names
defiPositions, obligations, receipts, locks, tickets
systemKiosk and other caps, Display and framework objects
spamSpam
noimageCollectibles with no usable image (count field noImage)

Collections per account

GET/accounts/{address}/collections

The same items as /items, grouped by collection and ordered by value (item count times the collection floor), largest first. It takes class, status, q, sort, show and hide with the same meaning; it does not page. The 60 largest collections each include their first 8 cards in /items order; the rest come with an empty items array, and you page those with /items?collection=.

curl "https://rare.market/api/v1/accounts/0x16386f6d07a85631e419e8f83b1d99a13949515a6af7ba3f81f3cfb0ec7e5543/collections"
Response
{
  "data": [
    {
      "slug": "popkins",
      "name": "Popkins",
      "imageUrl": "https://storage.claynosaurz.com/popkins/images/0x817dac94fff3a567b80e23a3b55fca2fd108641e0dd06fc614e5ecc0acbb4e03",
      "verified": true,
      "type": "0xb908f3c6fea6865d32e2048c520cdfe3b5c5bbcebb658117c41bad70f52b7ccc::popkins_nft::Popkins",
      "count": 719,
      "floorMist": "68040000000",
      "valueMist": "48920760000000",
      "items": []
    }
  ],
  "total": 719,
  "collections": 1,
  "classes": { "collectible": 719, "name": 0, "defi": 0, "system": 0, "spam": 0, "noImage": 0 }
}

floorMist and valueMist are null when the collection has no floor, and always for classes other than collectible. The eight cards in items are left out of this example.

Kiosks

GET/accounts/{address}/kiosks
Response
{
  "data": [
    {
      "kioskId": "0xd6aae53ea710303772de414631287f7ea64260d6a2769d8f1b141c991966e244",
      "ownerCapId": "0x060bca1abf77b092aa83b6254828d6a6f9dbe8cbad47c8f811af6ceca1b602cd",
      "personalCapId": null,
      "isPersonal": false,
      "itemsCount": 0
    }
  ]
}

Use this when you build kiosk transactions for the address: you need the owner cap (or the personal kiosk cap) to list, delist or take items.

Portfolio

GET/accounts/{address}/portfolio

Value, cost and profit for what the wallet holds now. Each item is valued at its model estimate when one is published for it, otherwise at its collection's floor (valueSource says which). Cost is what the wallet paid when the purchase is on record.

ParameterNotes
collectionLimit the data page to one collection (totals stay wallet-wide).
limit, cursorPages data, highest value first. Default limit 50.
curl "https://rare.market/api/v1/accounts/0x16386f6d07a85631e419e8f83b1d99a13949515a6af7ba3f81f3cfb0ec7e5543/portfolio?limit=1"
Response
{
  "address": "0x16386f6d07a85631e419e8f83b1d99a13949515a6af7ba3f81f3cfb0ec7e5543",
  "asOf": "2026-10-26T02:04:16.141Z",
  "valueMist": "66836631303942",
  "costMist": "0",
  "unrealizedPnlMist": "0",
  "realizedPnlMist": "0",
  "pnlPct": null,
  "items": 719,
  "itemsWithCost": 0,
  "collections": [
    {
      "collection": {
        "slug": "popkins",
        "name": "Popkins",
        "imageUrl": "https://storage.claynosaurz.com/popkins/images/0x817dac94fff3a567b80e23a3b55fca2fd108641e0dd06fc614e5ecc0acbb4e03",
        "verified": true
      },
      "items": 719,
      "valueMist": "66836631303942",
      "costMist": "0",
      "unrealizedPnlMist": "0",
      "realizedPnlMist": "0",
      "roundTrips": 0
    }
  ],
  "data": [
    {
      "item": { "id": "0x0830653b3115414c7213e5dc4682cc059af6930ef3fe0042036b74533d686968", "name": "Popkins #23771" },
      "itemId": "0x0830653b3115414c7213e5dc4682cc059af6930ef3fe0042036b74533d686968",
      "valueMist": "205393951611",
      "valueSource": "estimate",
      "costMist": null,
      "boughtAt": null,
      "unrealizedPnlMist": null
    }
  ],
  "nextCursor": "WyIyMDUzOTM5NTE2MTEiLCIweDA4MzA2NTNiMzExNTQxNGM3MjEzZTVkYzQ2ODJjYzA1OWFmNjkzMGVmM2ZlMDA0MjAzNmI3NDUzM2Q2ODY5NjgiXQ"
}

data[].item is a full ItemCard, shortened here to its id and name. Notes on the totals:

  • costMist and unrealizedPnlMist cover only the itemsWithCost items whose purchase is known. pnlPct is null when no cost is known.
  • realizedPnlMist is all realised profit from round trips (bought, then sold) across collections, including collections the wallet no longer holds.
  • Value counts collectibles, plus names only where the model has an estimate. DeFi objects and spam are never counted.
  • asOf is the time of the newest data behind the analytics tables.

Realised P&L

GET/accounts/{address}/pnl

Realised round trips, newest sale first. Takes collection, limit and cursor.

Response
{
  "asOf": "2026-10-26T02:04:16.141Z",
  "data": [
    {
      "item": {
        "id": "0x68a40dc22bda2d928f86931510117ab41fc7132c23e299f505357d4c752539fb",
        "name": "Popkins #8430",
        "imageUrl": "https://storage.claynosaurz.com/popkins/images/0x68a40dc22bda2d928f86931510117ab41fc7132c23e299f505357d4c752539fb"
      },
      "collection": {
        "slug": "popkins",
        "name": "Popkins",
        "imageUrl": "https://storage.claynosaurz.com/popkins/images/0x817dac94fff3a567b80e23a3b55fca2fd108641e0dd06fc614e5ecc0acbb4e03",
        "verified": true
      },
      "boughtAt": "2025-09-18T17:41:48.683Z",
      "costMist": "42120000000",
      "soldAt": "2026-07-18T03:10:08.974Z",
      "proceedsMist": "360000000000",
      "realizedPnlMist": "317880000000"
    }
  ],
  "nextCursor": "WyIyOTk4OTA1MzkiLCI1NTQ1NzYzODk0Iiw1XQ"
}

costMist, boughtAt and realizedPnlMist are null when the purchase is unknown.

Fee savings

GET/accounts/{address}/savings

Marketplace fees the wallet paid on other venues, against what the same trades would have cost on Rare Marketplace. window is 30d, 90d, 365d or all (default).

Response
{
  "address": "0x16386f6d07a85631e419e8f83b1d99a13949515a6af7ba3f81f3cfb0ec7e5543",
  "asOf": "2026-10-26T02:04:16.141Z",
  "window": "all",
  "savedMist": "0",
  "trades": 0,
  "rates": {
    "tradeportBuyerBps": 300,
    "tradeportSource": "chain",
    "dripBuyerBps": 200,
    "dripSource": "chain",
    "rareListingBps": 10
  },
  "breakdown": []
}

Each breakdown row is { venue, side, trades, volumeMist, feesPaidMist, rareFeesMist, savedMist }.

Portfolio, P&L and savings are analytics reads. An analytics group that is switched off answers 404 not_found, so treat a 404 from these three as "not available" rather than "no such wallet".

Listings

GET/orders

Pass maker for the address's live listings across every venue. Each row is a Listing (see Listings) plus itemId.

ParameterNotes
makerThe seller's address. /orders needs maker or collection, otherwise 404.
collectionSlug or Move type.
venuemarket, tradeport, drip or kiosk.
sortAll-in price ascending (default) or listed_desc.
limit, cursorDefault limit 50.
curl "https://rare.market/api/v1/orders?maker=0xa7b32af76de025a0080904a498071d64548581f15b20be3e1ec052dc4908cc13&sort=listed_desc"
Response
{
  "data": [
    {
      "venue": "tradeport",
      "source": "tradeport/simple",
      "orderKey": "0x1e7d09dbb0cf262f09174384df66669593cf51e2067dab9b18338775cbe3bb66",
      "objectId": "0x30c5894827f39cb7399865c853d9b2447a63785736b459d19534ab2d1bc378a3",
      "priceMist": "279900000",
      "allInMist": "302292000",
      "feeMist": "8397000",
      "commissionMist": "0",
      "seller": "0xa7b32af76de025a0080904a498071d64548581f15b20be3e1ec052dc4908cc13",
      "listedAt": "2026-10-22T02:32:58.256Z",
      "kioskId": "0x29ff67c8f83836fb02658f07e2c7f7320ba326ea3c8e7a0ab8a8bdea22115405",
      "nftType": "0xbdde946e259608ec41f29bf24bca40c7fa195bf618d6a4f95ca6b1328320831a::nonfungible::Nft<0xe2e57c78f72f922449461193339d36cc19cb9fb30ddca15b84b14c711fe598ca::suuuiplash_heroes::Hero>",
      "extra": { "feeBps": 300, "royaltyMist": "13995000" },
      "itemId": "0x1e7d09dbb0cf262f09174384df66669593cf51e2067dab9b18338775cbe3bb66"
    }
  ],
  "nextCursor": "WyIzMDIyOTIwMDAiLCJ0cmFkZXBvcnQiLCIweDFlN2QwOWRiYjBjZjI2MmYwOTE3NDM4NGRmNjY2Njk1OTNjZjUxZTIwNjdkYWI5YjE4MzM4Nzc1Y2JlM2JiNjYiXQ"
}

extra carries venue-specific fields and is shortened here.

Offers made and received

GET/offers
  • maker={address}: offers the address placed.
  • receiver={address}: offers the address can accept with what it holds now. That is item offers on items it holds or has listed, plus collection offers on collections it holds.

Both default to open offers (active, fillable, not expired); add status=all to include cancelled and expired ones. Results are sorted by price, highest first. Add kind=item or kind=collection to narrow, and venue for one venue. See Offers for the Offer fields.

curl "https://rare.market/api/v1/offers?receiver=0x16386f6d07a85631e419e8f83b1d99a13949515a6af7ba3f81f3cfb0ec7e5543&limit=5"
Response
{
  "data": [
    {
      "id": "0xe7eabe4b955dc6453b18685cb254c17da7635ae2e77e4cfa6358e40408731901",
      "venue": "tradeport",
      "source": "tradeport/bids",
      "nftType": "0xb908f3c6fea6865d32e2048c520cdfe3b5c5bbcebb658117c41bad70f52b7ccc::popkins_nft::Popkins",
      "feeMist": "2160000000",
      "royaltyMist": "3600000000",
      "commissionMist": "0",
      "poolId": "0x7d44815d8231f568e1a6ae7a7bf95ebb5edfd6023b2540c88f846485d854e38f",
      "fillable": true,
      "extra": {},
      "kind": "item",
      "collection": {
        "slug": "popkins",
        "name": "Popkins",
        "imageUrl": "https://storage.claynosaurz.com/popkins/images/0x817dac94fff3a567b80e23a3b55fca2fd108641e0dd06fc614e5ecc0acbb4e03",
        "verified": true
      },
      "item": {
        "id": "0x909c8f92d9556480466180c327f677fb69a9811ad8dd004d3b1c39bf3f09db5a",
        "name": "Popkins #4104",
        "imageUrl": "https://storage.claynosaurz.com/popkins/images/0x909c8f92d9556480466180c327f677fb69a9811ad8dd004d3b1c39bf3f09db5a"
      },
      "trait": null,
      "priceMist": "72000000000",
      "quantity": 1,
      "filled": 0,
      "bidder": "0x1e74849ee17df6746ca3911cfbfe7c80e4d2e85d4395c0ca06c2f56d8f4d1ea2",
      "destKioskId": null,
      "createdAt": "2026-10-27T00:49:22.545Z",
      "expiresAt": null,
      "status": "open"
    }
  ],
  "nextCursor": "WyI3MjAwMDAwMDAwMCIsInRyYWRlcG9ydCIsIjB4ZTdlYWJlNGI5NTVkYzY0NTNiMTg2ODVjYjI1NGMxN2RhNzYzNWFlMmU3N2U0Y2ZhNjM1OGU0MDQwODczMTkwMSJd"
}

To be told when a wallet sells, buys or receives an offer, subscribe to its notices instead of polling. See Real-time notifications.

--
TPS:--