Skip to content
⌘K
Marketplace API

Marketplace data

Listings across venues

Read live NFT listings from every Sui venue in one shape, understand the all-in price, and check that a listing is still buyable.

rare.market indexes live listings from every venue that sells Sui NFTs and returns them in one shape. Every listing carries an all-in price: what a buyer actually pays, so you can compare venues directly.

Venues

venueWhat it isExample source
marketRare Marketplace contracts. See Marketplace contracts for their status.market/v1
tradeportTradeport.tradeport/simple, tradeport/kiosk
dripDrip.drip/v2
kioskPlain Sui kiosk listings (0x2::kiosk) made outside any marketplace.kiosk/native

source names the contract or store inside a venue that holds the listing. Treat it as an opaque label: use it to group or display listings, not to branch logic on. New sources can appear.

The all-in price

Text
allInMist = priceMist + feeMist + royalty
PartFieldMeaning
PricepriceMistThe price as the venue records it.
Venue feefeeMistThe marketplace fee the buyer pays on top of the price. 0 when the venue charges none on the path rare.market buys through.
Royaltyextra.royaltyMistThe creator royalty from the collection's transfer policy: its rate on the price less any commissionMist, at least the policy's minimum. 0 when the collection has no royalty policy or the listing hands over the NFT without a transfer request.

Every grid, floor, price filter and price sort in the API uses allInMist, never the bare priceMist. Gas is not included.

A real example, from a listing with a legacy commission:

MISTSUI
priceMist103000000000103
feeMist00
royalty: 4% of (103 minus 3 commission)40000000004
allInMist107000000000107

Venue notes

  • Drip v2 listings are bought straight from the seller's kiosk, so feeMist is 0. Drip's own fee is in extra.venueFeeMist; a buyer pays it only if the direct path fails and the purchase goes through Drip's contract.
  • Kiosk listings carry no marketplace fee. Their seller is an empty string, because a plain kiosk listing does not record one; item cards show the kiosk's holder as owner. Their orderKey is {kioskId}:{itemId}.
  • commissionMist is a legacy cut some older listings take out of the price. The seller pays it, so it is not added to allInMist. It does lower the base the royalty is computed on.
  • extra.feeBps is the venue's fee rate in basis points, when the venue publishes one.

List listings

GET/orders

Returns every live SUI listing for a collection or a seller, cheapest all-in first. Unlike item grids, an item listed on two venues appears twice, once per listing. Each row is a listing plus itemId.

ParamValuesDefaultNotes
collectionslug or Move typeOne of collection or maker is required.
makeraddressListings by this seller.
venuemarket, tradeport, drip, kioskOne venue. Other values are ignored.
sortprice_asc, listed_descprice_ascprice_asc sorts by allInMist. listed_desc puts the newest listings first, unknown listing times last.
limit1 to 20050
cursornextCursor from the last pageSee Pagination.
curl "https://rare.market/api/v1/orders?collection=pawtato-heroes&venue=drip&limit=1"
Response
{
  "data": [
    {
      "venue": "drip",
      "source": "drip/v2",
      "orderKey": "0x1489ee378fe80bbf25e57aef5fda710fa24fb3eaa290e3d663d8992303de1118",
      "objectId": null,
      "priceMist": "7000000000",
      "allInMist": "7490000000",
      "feeMist": "0",
      "commissionMist": "0",
      "seller": "0xe97ff0c26dc10ef603f3bd24ec105d2b4d5292ed67a1879c2b73a872e481cae7",
      "listedAt": "2026-10-21T19:36:34.145Z",
      "kioskId": "0xb8616d874d01a0a8b858433e5205d881cf672e066aa8b305c89f11a866baae1b",
      "nftType": "0xe0fa7b75a3dc8137b38bceb0c0c21c10e0f57c408fe9068694f58fd21e071925::pawtato_heroes::HERO",
      "extra": {
        "feeBps": 200,
        "venueFeeMist": "140000000",
        "royaltyMist": "490000000",
        "policyId": "0xe703c7734b847fe72519558e30b42370ca479d8966065dbfca177d3ece817a0a"
      },
      "itemId": "0x1489ee378fe80bbf25e57aef5fda710fa24fb3eaa290e3d663d8992303de1118"
    }
  ],
  "nextCursor": "WyI3NDkwMDAwMDAwIiwiZHJpcCIsIjB4MTQ4OWVlMzc4ZmU4MGJiZjI1ZTU3YWVmNWZkYTcxMGZhMjRmYjNlYWEyOTBlM2Q2NjNkODk5MjMwM2RlMTExOCJd"
}

Listing fields

FieldMeaning
venue, sourceWhere the listing lives. See Venues.
orderKeyThe listing's key, unique within its venue. (venue, orderKey) identifies a listing.
objectIdThe listing object on chain, for venues that have one, else null.
priceMist, feeMist, allInMistSee The all-in price.
commissionMistLegacy cut taken out of the price.
sellerThe seller's address. Empty for plain kiosk listings.
listedAtWhen the item was last listed or relisted, or null when unknown.
kioskIdThe seller's kiosk, for kiosk-based listings.
nftTypeThe NFT's Move type.
extraVenue-specific details. royaltyMist and policyId (the transfer policy) are on every listing with a royalty policy; venueFeeMist on Drip v2; feeBps where the venue publishes a rate. Ignore keys you do not know.

Check one listing

GET/orders/{venue}/{orderKey}

Returns one listing, or 404 not_found once it is sold or delisted. URL-encode orderKey: kiosk keys contain a colon.

curl "https://rare.market/api/v1/orders/kiosk/0x4521a8c8ccf0cd6023abffef6d8ba29e292bc09fac25a5f36a15187daa95a4e4%3A0x23f72b63194f670db3708afee8fe34bbae76ad9a1013140b17a8fff35422cbbf"
Response
{
  "venue": "kiosk",
  "source": "kiosk/native",
  "orderKey": "0x4521a8c8ccf0cd6023abffef6d8ba29e292bc09fac25a5f36a15187daa95a4e4:0x23f72b63194f670db3708afee8fe34bbae76ad9a1013140b17a8fff35422cbbf",
  "objectId": null,
  "priceMist": "74000000000",
  "allInMist": "77700000000",
  "feeMist": "0",
  "commissionMist": "0",
  "seller": "",
  "listedAt": "2026-10-12T16:28:26.039Z",
  "kioskId": "0x4521a8c8ccf0cd6023abffef6d8ba29e292bc09fac25a5f36a15187daa95a4e4",
  "nftType": "0xb908f3c6fea6865d32e2048c520cdfe3b5c5bbcebb658117c41bad70f52b7ccc::popkins_nft::Popkins",
  "extra": {
    "royaltyMist": "3700000000",
    "policyId": "0x5f5c322c20a465b6853b6151d816bb875e910bd069e8deb1cd7c6fb59ed19ce3"
  }
}

Read a buyable listing

  1. Find the listing

    Take listing from an item card (the cheapest across venues) or a row from GET /orders. Keep venue, orderKey and the item id.

  2. Show the all-in price

    Show allInMist as the price. If you break it down, show priceMist, feeMist and extra.royaltyMist.

  3. Revalidate before checkout

    Listings change every few seconds. Call GET /orders/{venue}/{orderKey} for one listing, POST /items:lookup for a cart, or ask for a quote (below).

  4. Send the buyer to rare.market

    Purchases happen on chain, in a transaction the buyer signs. Link the buyer to the item on rare.market to complete it.

Quote a purchase

POST/quotes/buy

Prices a cart of up to 50 listings and reports which are still available. The body is { "items": [{ "itemId", "venue", "orderKey" }] }. Quotes are advisory: the transaction enforces the real amounts on chain.

curl -X POST "https://rare.market/api/v1/quotes/buy" \
  -H "content-type: application/json" \
  -d '{"items":[{"itemId":"0x1489ee378fe80bbf25e57aef5fda710fa24fb3eaa290e3d663d8992303de1118","venue":"drip","orderKey":"0x1489ee378fe80bbf25e57aef5fda710fa24fb3eaa290e3d663d8992303de1118"}]}'
Response
{
  "lines": [
    {
      "itemId": "0x1489ee378fe80bbf25e57aef5fda710fa24fb3eaa290e3d663d8992303de1118",
      "venue": "drip",
      "orderKey": "0x1489ee378fe80bbf25e57aef5fda710fa24fb3eaa290e3d663d8992303de1118",
      "priceMist": "7000000000",
      "available": true
    }
  ],
  "subtotalMist": "7000000000",
  "fees": [
    { "label": "Creator royalty", "kind": "royalty", "amountMist": "490000000" },
    { "label": "Network fee", "kind": "network", "amountMist": "4700000" }
  ],
  "totalMist": "7494700000"
}
FieldMeaning
lines[].availablefalse when the listing is gone or does not belong to itemId. Unavailable lines add nothing to the totals.
subtotalMistSum of the available lines' priceMist.
feesOne venue line per venue that charges a fee (only when it is not zero), one royalty line, and a network line.
totalMistsubtotalMist plus every fee line.

The network line is a rough gas estimate; the wallet shows the real figure. Quotes may also carry savingsMist, savingsVs and savings (what the same cart costs on other venues) when savings analytics are available. The response is never cached.

Gotchas

  • Compare allInMist, not priceMist. Two listings with the same priceMist on different venues can cost the buyer different amounts.
  • maker misses plain kiosk listings. They record no seller, so GET /orders?maker= cannot find them. Use the wallet endpoints in Wallets and portfolio to see what an address holds.
  • SUI only. Listings priced in other coins are not returned.
  • /orders needs a filter. Without collection or maker it returns 404 not_found with the message Pass collection or maker.
  • /orders with an unknown venue ignores the filter instead of returning an error.
--
TPS:--