Skip to content
⌘K
Marketplace API

Marketplace data

Items

Browse a collection's items with status, venue, price and trait filters, read one item's details, look up many items at once and chart an item's sale history.

An item is one NFT, addressed by its object id (0x plus 64 hex characters). Use these endpoints to build item grids, item pages, carts and price charts.

Item grids return item cards. A listed card carries its cheapest live SUI listing across every venue, priced all-in (price plus venue fee plus creator royalty). See Listings across venues for the listing fields.

Browse a collection's items

GET/collections/{slug}/items

Returns a page of item cards. total is the number of items that match your filters.

ParamValuesDefaultNotes
statuslisted, alllistedall adds unlisted items after every listed one.
venuecomma list of market, tradeport, drip, kioskOnly items whose cheapest listing is on one of these venues.
minMist, maxMistinteger MIST stringsAll-in price range, inclusive.
traitscomma list of type:valueSee Trait filters.
qtextMatches the item name. A whole number also matches the item number exactly. A leading # is ignored.
sortprice_asc, price_desc, listed_desc, rarity_asc, rarity_desc, dealsprice_ascUnknown values use price_asc.
limit1 to 20050
cursornextCursor from the last pageSee Pagination.

Sorts

SortOrder
price_ascCheapest all-in price first.
price_descMost expensive all-in price first.
listed_descMost recently listed first.
rarity_ascRarest first (rank 1 first). Unranked items last.
rarity_descMost common first. Unranked items last.
dealsListings flagged as deals first, by deal score, then the rest by price. Needs deal analytics; without them it sorts as price_asc. See Analytics.

All sorts break ties by item id, so pages are stable.

Trait filters

traits takes type:value pairs separated by commas. Values of the same type are ORed, different types are ANDed:

Text
traits=Background:Aqua,Background:White,Fur:Ice

This matches items whose Background is Aqua or White, and whose Fur is Ice. Types and values are exact, case-sensitive strings, as returned by GET /collections/{slug}/traits. URL-encode the whole parameter: spaces, & and # in values break the query string otherwise.

A value can contain commas. A piece with no colon is joined back onto the previous pair, so traits=Pose:Base, Back, Belly reads as one value Base, Back, Belly. The type is everything before the first colon, so a type cannot contain a colon.

Example

curl -G "https://rare.market/api/v1/collections/mystic-yetis/items" \
  --data-urlencode "traits=Background:Aqua,Background:White,Fur:Ice" \
  --data-urlencode "sort=price_asc" \
  --data-urlencode "limit=1"
Response
{
  "data": [
    {
      "id": "0xc7aff9b02ad10044c65b588bbff8508b61ad0ccfb3358a619f1d648e5b8d3665",
      "name": "Mystic Yeti #131",
      "type": "0xb07b09b016d28f989b6adda8069096da0c0a0ff6490f6e0866858c023b061bee::mystic_yeti::MysticYeti",
      "kioskId": "0xcec3f81640976a61c0002c80523230845bd58b4b5e87cb01848a5a7664f85ee4",
      "imageUrl": "https://mysticyetinft.wal.app/images/131.png",
      "collection": {
        "slug": "mystic-yetis",
        "name": "Mystic Yetis",
        "imageUrl": "https://indexer.mypinata.cloud/ipfs/bafkreid6owvnhp2v2muf4yrk4v3hjonhposfgsnd5zirfzgbyutxoasxay",
        "verified": true
      },
      "rarity": { "rank": 4734, "tier": "common" },
      "listing": {
        "venue": "tradeport",
        "source": "tradeport/kiosk",
        "orderKey": "0xc7aff9b02ad10044c65b588bbff8508b61ad0ccfb3358a619f1d648e5b8d3665",
        "objectId": "0xf17ad0a2b3c833decf32dcc2e2c7b116a33f57cf318fa3c9f94a793dfcfb2085",
        "priceMist": "103000000000",
        "allInMist": "107000000000",
        "feeMist": "0",
        "commissionMist": "3000000000",
        "seller": "0x26ad0fc03de36cb621b5724410bf5b06ddc8a47a4b7491170f8a7728f95ab9b6",
        "listedAt": "2025-05-30T17:54:12.377Z",
        "kioskId": "0xcec3f81640976a61c0002c80523230845bd58b4b5e87cb01848a5a7664f85ee4",
        "nftType": "0xb07b09b016d28f989b6adda8069096da0c0a0ff6490f6e0866858c023b061bee::mystic_yeti::MysticYeti",
        "extra": {
          "royaltyMist": "4000000000",
          "policyId": "0x8ee55eb5f623a11fcb63da6f5b1bf5fa066c4d3d32d455bad7e0ce4928ba3a5d"
        }
      },
      "lastSaleMist": "32960000000",
      "lastSaleAt": "2025-04-25T04:51:44.495Z",
      "topOfferMist": "15350000000",
      "owner": "0x26ad0fc03de36cb621b5724410bf5b06ddc8a47a4b7491170f8a7728f95ab9b6",
      "deal": null
    }
  ],
  "nextCursor": "eyJwIjoibCIsImlkIjoiMHhjN2FmZjliMDJhZDEwMDQ0YzY1YjU4OGJiZmY4NTA4YjYxYWQwY2NmYjMzNThhNjE5ZjFkNjQ4ZTViOGQzNjY1IiwiaSI6MX0",
  "total": 3
}

Item card fields

FieldMeaning
idThe NFT's object id.
typeThe NFT's Move type.
kioskIdThe kiosk that holds it, or null for an item held directly in a wallet.
rarity{ rank, tier }, or null when the collection or item has no rank. See Traits and rarity.
listingThe cheapest live SUI listing across venues, or null when unlisted.
lastSaleMist, lastSaleAtThe item's last sale, or null.
topOfferMistThe higher of the best offer on this item and the best collection offer.
ownerThe seller for a listed item, otherwise the current holder. Can be an empty string when unknown.
estimate, estMist, estLowMist, estHighMist, confidence, discountPctModel value estimate. Present only when an estimate is shown for this item.
dealWhy a listing is a deal, or null. Present only when deal analytics are available.

The estimate and deal fields are described in Analytics.

Get one item

GET/items/{id}

Returns the item card plus its description, media, attributes with trait facts, custody, the collection floor and royalty. An id that is not an address, or that the API cannot find, returns 404 not_found.

curl "https://rare.market/api/v1/items/0x55cd9b4a5678ba56ab93f57b22928eb57d2066361d059eaee6c7a75339880c68"
Response
{
  "id": "0x55cd9b4a5678ba56ab93f57b22928eb57d2066361d059eaee6c7a75339880c68",
  "name": "Mystic Yeti #5465",
  "type": "0xb07b09b016d28f989b6adda8069096da0c0a0ff6490f6e0866858c023b061bee::mystic_yeti::MysticYeti",
  "kioskId": "0xf2fea93cdec48f65d670cf4d7b298839216d6aab1160ac78bd69e8ecb418fe6b",
  "imageUrl": "https://mysticyetinft.wal.app/images/5465.png",
  "collection": {
    "slug": "mystic-yetis",
    "name": "Mystic Yetis",
    "imageUrl": "https://indexer.mypinata.cloud/ipfs/bafkreid6owvnhp2v2muf4yrk4v3hjonhposfgsnd5zirfzgbyutxoasxay",
    "verified": true
  },
  "rarity": { "rank": 2221, "tier": "uncommon" },
  "listing": {
    "venue": "tradeport",
    "source": "tradeport/simple",
    "orderKey": "0x55cd9b4a5678ba56ab93f57b22928eb57d2066361d059eaee6c7a75339880c68",
    "priceMist": "24999000000",
    "allInMist": "26748930000",
    "feeMist": "749970000"
  },
  "lastSaleMist": "13100100000",
  "lastSaleAt": "2026-10-24T10:55:19.879Z",
  "topOfferMist": "15300000000",
  "owner": "0x78bec6a7a9e6c1e24894719fc461edea2ce57a09b3251d093e34a807c5a31dbe",
  "deal": null,
  "description": "Mystic Yetis is a unique collection of hand-crafted digital art that captures the spirit of ancient yetis in the Lofi universe.",
  "media": [
    { "url": "https://mysticyetinft.wal.app/images/5465.png", "kind": "image" }
  ],
  "attributes": [
    {
      "type": "Accessories",
      "value": "Lab Coat",
      "pct": 5.53,
      "floorMist": "26748930000",
      "floorPriceMist": "25120000000",
      "sales90d": 32,
      "median90dMist": "18000000000",
      "lastSaleMist": "23000000000",
      "lastSaleAt": "2026-10-24T15:09:05.052Z",
      "premium": 1.015
    }
  ],
  "custody": "kiosk",
  "floorMist": "26748930000",
  "royaltyBps": 400,
  "royaltyEnforced": true
}

The listing object above is trimmed; it has every field shown in the grid example.

FieldMeaning
mediaOne entry. kind is video when the URL ends in .mp4, .webm or .mov, otherwise image.
attributesEach trait with pct (share of the collection with that value) and floorMist (cheapest all-in listing with that value). The other fields are trait facts, explained in Traits and rarity.
custodykiosk when the item sits in a kiosk, wallet when it is owned directly.
floorMistThe collection's all-in floor, for comparison.
royaltyBps, royaltyEnforcedThe collection's royalty and whether its transfer policy enforces it.

Look up many items

POST/items:lookup

Returns cards for up to 100 item ids in one call. Use it to refresh a cart or a saved list: each card carries the item's current cheapest listing, or listing: null when it is no longer listed.

The body is { "ids": ["0x...", ...] }. Ids past the first 100, ids that are not addresses, duplicates and items the API cannot resolve are dropped without an error, so match results by id, not by position. The response is { data: ItemCard[] } with no cursor.

curl -X POST "https://rare.market/api/v1/items:lookup" \
  -H "content-type: application/json" \
  -d '{"ids":["0x55cd9b4a5678ba56ab93f57b22928eb57d2066361d059eaee6c7a75339880c68","0x55e01829b2689856ed606e345fe36641b48a04603753b5e8989f3e58d941d92d"]}'
Response
{
  "data": [
    {
      "id": "0x55cd9b4a5678ba56ab93f57b22928eb57d2066361d059eaee6c7a75339880c68",
      "name": "Mystic Yeti #5465",
      "rarity": { "rank": 2221, "tier": "uncommon" },
      "listing": { "venue": "tradeport", "orderKey": "0x55cd9b4a5678ba56ab93f57b22928eb57d2066361d059eaee6c7a75339880c68", "allInMist": "26748930000" },
      "lastSaleMist": "13100100000",
      "topOfferMist": "15300000000"
    }
  ]
}

The card above is trimmed; lookup returns the same card shape as the grid.

Price history

GET/items/{id}/price-history

Returns the item's SUI sales and accepted offers, oldest first, up to 500 points, plus their average.

ParamValuesDefault
range1h, 6h, 24h, 7d, 30d, allall
curl "https://rare.market/api/v1/items/0x55cd9b4a5678ba56ab93f57b22928eb57d2066361d059eaee6c7a75339880c68/price-history?range=30d"
Response
{
  "avgMist": "14245050000",
  "points": [
    { "t": "2026-10-21T19:34:32.799Z", "priceMist": "15390000000" },
    { "t": "2026-10-24T10:55:19.879Z", "priceMist": "13100100000" }
  ]
}

avgMist is the mean of the returned points, rounded down, or null when there are none.

Gotchas

  • One card per item. An item listed on two venues appears once, with its cheapest all-in listing. To see every listing, use GET /orders.
  • Listed before unlisted. With status=all, every listed item comes first in your sort, then unlisted items. Unlisted items are ordered by rarity rank for the rarity sorts (when the collection has ranks), otherwise by item number.
  • Price and venue filters drop unlisted items. venue, minMist and maxMist only apply to listings, so with any of them set, status=all returns listed items only.
  • Prices are all-in. minMist, maxMist and the price sorts use allInMist, not priceMist.
  • Number search is loose. q=575 matches item number 575 and any item whose name contains 575, such as #5751.
  • SUI only. Listings priced in other coins are not shown.
  • Grids are cached for a few seconds. A listing can sell between your read and a buy. Revalidate with POST /items:lookup or GET /orders/{venue}/{orderKey} before you show a final price.
--
TPS:--