Skip to main content

Read Mythos marketplace listings

Mythos marketplace data lives in pallet_marketplace and pallet_dmarket. Use state_getStorage or higher-level SDKs to pull current asks, bids, and settlement metadata. The examples below use block data from 3 Oct 2025.

Storage entries#

EntryPurpose
Marketplace::Asks(collectionId, itemId)Fixed-price listings (seller, price, fee, expiration, escrow agent)
Marketplace::Bids(collectionId, itemId)Active bids awaiting seller acceptance
Marketplace::Nonces(accountId)Monotonic nonce per seller (useful for off-chain signatures)
Dmarket::ClosedAsks / ClosedBidsHistorical fills for analytics

Fetching live asks#

curl https://api-mythos-archive.n.dwellir.com/YOUR_API_KEY   -H "Content-Type: application/json"   -d '{
"jsonrpc": "2.0",
"method": "state_getStorage",
"params": [
"0xb8f32c9f36429933d924999a1b87423f9be4002e98967383af7072a5f12bde48001352fa0fbf816218e34d69e86c8929df0a0000000000000000000000000000000000000000000000000000000000000af23d6fc2fce072a34ac19d2a5553b615000000000000000000000000000000"
],
"id": 31
}'

Response

{
"jsonrpc": "2.0",
"id": 31,
"result": "0x6f5e2dee7182143c809c6606f5c50ffb0cc7f4dd000050efe2d6e41a1b0000000000000000d8c32cbb030000000058c51ff571cb030000000000000001dbe1638c2063432d6923e30d2f4406e2e91e767f"
}

Decoded fields:

  • collectionId = 2783
  • itemId = 21
  • seller = 0x6f5e2dee7182143c809c6606f5c50ffb0cc7f4dd
  • price = 500000000000000000000 plancks (0.50 MYTH)
  • fee = 70000000000000000000 plancks (0.07 MYTH)
  • expiration = 4102444800000
  • escrow_agent = 0xdbe1638c2063432d6923e30d2f4406e2e91e767f

JavaScript helper#

const api = await ApiPromise.create({ provider: new WsProvider('wss://api-mythos-archive.n.dwellir.com/YOUR_API_KEY') });
const ask = await api.query.marketplace.asks(2783, 21);
if (ask.isSome) {
const details = ask.unwrap();
console.log({
seller: details.seller.toHex(),
price: details.price.toString(),
fee: details.fee.toString(),
expires: details.expiration.toNumber()
});
}

Enumerating all listings#

  1. Use state_getKeysPaged with the prefix from api.query.marketplace.asks.keyPrefix() to page through asks.
  2. Hydrate each key via api.query.marketplace.asks.at(blockHash, collectionId, itemId) if you need historical snapshots.
  3. Optionally join Marketplace::Bids for the same (collectionId, itemId) tuple to surface highest bids alongside asks.

Historical fills#

Dmarket::ClosedAsks and Dmarket::ClosedBids store settled trades. Iterate those maps to build price charts or compliance exports.

Operational tips#

  • Normalize planck values to MYTH by dividing by 1e18.
  • Large marketplaces should cache decoded asks and poll every few seconds, or subscribe to state_subscribeStorage on the Marketplace::Asks prefix.
  • Always re-check the ask immediately before executing a purchase extrinsic to avoid stale pricing.