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#
| Entry | Purpose |
|---|---|
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 / ClosedBids | Historical 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 = 2783itemId = 21seller = 0x6f5e2dee7182143c809c6606f5c50ffb0cc7f4ddprice = 500000000000000000000plancks (0.50 MYTH)fee = 70000000000000000000plancks (0.07 MYTH)expiration = 4102444800000escrow_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#
- Use
state_getKeysPagedwith the prefix fromapi.query.marketplace.asks.keyPrefix()to page through asks. - Hydrate each key via
api.query.marketplace.asks.at(blockHash, collectionId, itemId)if you need historical snapshots. - Optionally join
Marketplace::Bidsfor 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_subscribeStorageon theMarketplace::Asksprefix. - Always re-check the ask immediately before executing a purchase extrinsic to avoid stale pricing.