API Objects
Every object the API returns, documented once. Endpoint pages show their top-level response shape and link here for the nested and shared objects, so each schema lives in exactly one place.
SchemaSnapshotThe full catalog snapshot. Served pre-serialized with an ETag; identical bytes until the catalog actually changes.
schemaVersioninteger
Monotonic version (ms epoch) of the last content change. Store it and pass it to changes?since=.generatedAtstring (date-time)
When the snapshot was materialized.itemCountinteger
Items in the snapshot.raritiesSchemaRarity[]
All rarity tiers, referenced by item-level rarity keys.collectionsobject
Map of collection name to SchemaCollection.containersobject
Map of container name to SchemaContainer.itemsobject
Map of market_hash_name to SchemaItem.SchemaItemOne catalog record. Sparse: fields that don't apply to the item are omitted entirely, never null.
idstring
Canonical item id; the same id the pricing, NBBO, and liquidity endpoints return, so schema and prices join directly.marketHashNamestring
Canonical Steam market hash name (matches the price endpoints).slugstring
URL-safe identifier.categorystring
skin | glove | sticker | agent | charm | patch | graffiti | music_kit | collectible | container | key.baseNamestringnullable
Item name without the wear suffix. Skins/gloves only.weaponstringnullable
Weapon name. Skins only.finishstringnullable
Finish name. Skins/gloves only.paintIndexstringnullable
Game paint index. Skins/gloves only.raritystringnullable
Key into the rarities registry.wearstringnullable
This row's exterior, e.g. Field-Tested. Wear-carrying items only.wearsstring[]nullable
Every exterior this base item exists in.stattrakbooleannullable
Whether this row is the StatTrak version.souvenirbooleannullable
Whether this row is the Souvenir version.hasStattrakbooleannullable
Whether a StatTrak counterpart exists.hasSouvenirbooleannullable
Whether a Souvenir counterpart exists.stattrakOfstringnullable
On a StatTrak row: market_hash_name of the standard (non-StatTrak) counterpart. Mirrors the variant back-link direction.souvenirOfstringnullable
On a Souvenir row: market_hash_name of the standard counterpart.floatRangeobjectnullable
{ min, max } float bounds. Wear-carrying items only.Doppler / Gamma Doppler phase rows under this base item.
variantobjectnullable
Back-link on a phase row to its base: { base, family, name }.collectionsstring[]nullable
Collection names; keys into the collections registry.containersstring[]nullable
Containers the item drops from; keys into the containers registry.imagestringnullable
Image URL.releaseDatestring (date-time)nullable
Release date. Containers only, when known.idsobject
Map of market id to that marketplace's own catalog id for this item, across every covered market.aliasesobjectnullable
Map of market id to that marketplace's listing title, only where it differs from marketHashName.SchemaVariantA Doppler / Gamma Doppler phase listed under a base item's
variants.marketHashNamestring
Full variant market_hash_name (its own SchemaItem row exists and is priceable).familystring
doppler | gamma_doppler.namestring
Variant name, e.g. Phase 2, Ruby, Emerald.phaseintegernullable
Numeric phase (1 to 4). Omitted for gems.imagestringnullable
Variant image URL.SchemaRarityA rarity tier, referenced by item-level
rarity keys.keystring
Stable rarity key, e.g. classified.namestring
Display name, e.g. Classified.tierinteger
Numeric tier, ascending with rarity.colorstringnullable
Hex color for the rarity.SchemaCollectionCollection metadata, keyed by name in the
collections registry.namestring
Collection name.imagestringnullable
Image URL, when available.SchemaContainerContainer metadata, keyed by name in the
containers registry.namestring
Container name.typestring
Container type, e.g. case.releaseDatestring (date-time)nullable
Release date, when known.imagestringnullable
Image URL, when available.SchemaItemLookupOne item plus only the registry entries it references.
schemaVersioninteger
Version (ms epoch) at which this item last changed.itemSchemaItem
The item's catalog record.registriesobjectnullable
{ rarities, collections, containers } restricted to entries the item references.SchemaChangesItems added or changed after
since, keyset-paginated.schemaVersioninteger
Current catalog-wide version. Store as your next since.sinceinteger
The parsed since position (ms epoch).countinteger
Items in this page.hasMoreboolean
Whether another page exists.nextCursorstringnullable
Pass back as cursor to fetch the next page.itemsSchemaItem[]
The changed items, full records.registriesobjectnullable
Registry entries referenced by the returned items; omitted when none changed.NbboResponseBest bid + best ask across all indexed markets for one item.
marketHashNamestring
The item's Steam market hash name.canonicalItemIdstring
SkinPricer's canonical item id.Lowest ask across markets. Null when no fresh ask exists.
Highest bid across markets. In the default (all-markets) view this is restricted to cash-executable venues; see the bestBid note below. Null when no eligible market exposes a bid.
spreadBpsintegernullable
bestAsk − bestBid in basis points. Null when a side is missing, and also clamped to null when it would exceed 10000 bps (a ±100% spread, almost always a stale/garbage bid). Negative (crossed) spreads are preserved.marketCountinteger
Markets contributing a quote.freshMarketCountinteger
Of those, how many are still fresh.lockedboolean
True when bestBid == bestAsk (zero spread).crossedboolean
True when bestBid > bestAsk (a fleeting inversion).confidencenumber
0 to 1 confidence from coverage, freshness, and agreement.Fee- and executability-adjusted 'real best market' (SP-261). Null when it can't be computed. See the dedicated object.
calculatedAtstring (date-time)
When this NBBO was computed.QuoteA single market's bid or ask.
marketstring
Market id providing this quote, e.g. csfloat.priceinteger
Quote price in USD cents.updatedAtstring (date-time)
When the source quote was last updated.isStaleboolean
True when the quote is past the freshness window (a uniform 30-minute threshold).ExecutionAdjustedNbboThe execution-adjusted NBBO: best ask / best bid after applying each venue's fees and an executability discount, so you compare what you'd actually pay vs. net receive rather than raw sticker prices. Nullable on the response (null when it can't be computed). Prices in USD cents.
Fee-adjusted best ask (total a buyer pays). Null when none qualifies.
Fee-adjusted best bid (net a seller receives after commission + withdrawal). Null when none qualifies.
spreadBpsintegernullable
Adjusted bestAsk − bestBid in basis points. NOT clamped (unlike the raw spreadBps); can be negative.lockedboolean
True when the adjusted bid == adjusted ask.crossedboolean
True when the adjusted bid > adjusted ask.executableConfidencenumber
0 to 1 confidence in the adjusted read (executability + freshness).reasonsstring[]
Top-level adjustment flags for the pair, e.g. assumed_fees.feeModelVersionstring
Version of the fee model used to compute the adjustment.calculatedAtstring (date-time)
When the adjusted NBBO was computed.ExecutionAdjustedQuoteOne side of the execution-adjusted NBBO. Prices in USD cents.
marketstring
Market id.priceinteger
Fee-adjusted price: total paid (ask side) or net received (bid side).rawPriceinteger
Unadjusted price (FX-converted only), before fees.appliedFeeBpsinteger
Fee applied in basis points: buyer fee on the ask, seller commission on the bid.withdrawalFlatUsdCentsintegernullable
Flat withdrawal/payout fee in USD cents (bid side; absent when none applies).executabilitynumber
0 to 1 multiplier (freshness × depth × latency, plus bid persistence on the bid side).updatedAtstring (date-time)
Source quote's last-update time.isStaleboolean
Whether the source quote is stale.reasonsstring[]
Per-leg adjustment flags, e.g. thin_executable_depth, high_ingest_latency, stale_fallback, low_bid_persistence.PricingResponseFull cross-market snapshot: per-market quotes + an aggregate.
canonicalItemIdstring
SkinPricer's canonical item id.namestring
The item's market hash name.Summary statistics across all contributing markets. Can be null/omitted when an item has no priced markets (e.g. some rows from item search).
marketsMarketQuote[]
One entry per market with a live ask.buyOrdersBuyOrder[]
Standing buy orders, by market.Cross-market best ask.
Cross-market best bid across ALL venues (unlike
/v1/nbbo, which restricts the default bestBid to cash-executable venues). So this can differ from the NBBO bestBid.spreadBpsintegernullable
Best-ask − best-bid in basis points. Null when a side is missing, and clamped to null above 10000 bps; negative (crossed) spreads are preserved.marketCountinteger
Markets contributing a quote.freshMarketCountinteger
Of those, still fresh.calculatedAtstring (date-time)
When the snapshot was computed.AggregateSummary statistics across markets. All prices in USD cents. Every stat is null when no market contributed a usable ask.
minPriceintegernullable
Lowest ask across markets.maxPriceintegernullable
Highest ask across markets.avgPriceintegernullable
Mean ask.medianPriceintegernullable
Median ask.stdDevnumbernullable
Standard deviation of asks (float, not rounded to cents).marketCountinteger
Markets included.freshMarketCountinteger
Of those, still fresh.listingCountinteger
Total listings behind the aggregate.updatedAtstring (date-time)
When the aggregate was last recomputed.MarketQuoteOne market's representative ask, with ingest timing.
marketstring
Market id.priceinteger
Ask price in USD cents.currencystring
Always USD (source prices are normalized).fetchedAtstring (date-time)
When the marketplace reported the price.ingestedAtstring (date-time)
When SkinPricer collected it.quoteSizeinteger
Listings backing this quote.ingestLatencyMsinteger
fetchedAt → ingestedAt delay, ms.isStaleboolean
Past the freshness window (a uniform 30-minute threshold).BuyOrderA standing buy-order level on a market. Same
MarketPricePoint shape as a markets[] ask quote (bid-side), so it carries full ingest timing. Not just price + quantity.marketstring
Market id.priceinteger
Bid price in USD cents.currencystring
Always USD (source prices are normalized).fetchedAtstring (date-time)
When the marketplace reported the order.ingestedAtstring (date-time)nullable
When SkinPricer collected it.quoteSizeintegernullable
Listings/orders backing this quote.totalQuantityintegernullable
Quantity wanted at this price.ingestLatencyMsintegernullable
fetchedAt → ingestedAt delay, ms.isStalebooleannullable
Past the market's freshness window.HistoryResponseTime-bucketed price series for an item.
canonicalItemIdstring
Canonical item id.namestring
Market hash name.listingTypestring
SELL_OFFER | BUY_ORDER | SALE_HISTORY.salesWindowstringnullable
Only set when listingType=SALE_HISTORY.historyHistoryBucket[]
One row per time bucket, oldest → newest.HistoryBucketOne time bucket. Prices in USD cents.
timestampstring (date-time)
Bucket start.avgPriceinteger
Mean price in the bucket.medianPriceinteger
Median price.minPriceinteger
Min price.maxPriceinteger
Max price.listingCountinteger
Listings observed in the bucket.totalQuantityintegernullable
Buy-order quantity in the bucket (populated for BUY_ORDER; null otherwise).volumeintegernullable
Rolling sale count in the bucket for SALE_HISTORY (number of sales, not notional); null for SELL_OFFER / BUY_ORDER.bestBidCentsintegernullable
Best bid in the bucket.bestAskCentsintegernullable
Best ask in the bucket.spreadBpsintegernullable
Bucket spread in basis points.PriceHistoryByMarketResponsePer-market time-bucketed price series for an item.
canonicalItemIdstring
Canonical item id.namestring
Market hash name.listingTypestring
SELL_OFFER | BUY_ORDER | SALE_HISTORY.salesWindowstringnullable
Only set when listingType=SALE_HISTORY.seriesMarketSeries[]
One entry per market.MarketSeriesOne market's history series.
marketstring
Market id.historyHistoryBucket[]
One row per time bucket, oldest → newest.RecommendationResponseSuggested list/sell price with supporting context. snake_case.
canonical_item_idstring
Canonical item id.market_hash_namestring
Market hash name.suggested_priceintegernullable
Recommended price in USD cents. Null when there's no data to price from (strategy: "no_data").strategystring
How it was derived, e.g. midpoint; no_data when no quotes were available (and suggested_price is null).confidencenumber
0 to 1 confidence in the suggestion.liquidity_scorenumber
0 to 1 liquidity score for the item.unstable_reasonsstring[]
Flags when inputs were thin/volatile (empty when stable).Cross-market best ask.
Cross-market best bid.
spread_bpsintegernullable
Spread in basis points.market_countinteger
Markets contributing.fresh_market_countinteger
Of those, still fresh.listing_countinteger
Listings behind the read.buy_order_countinteger
Distinct buy-order levels.total_bid_quantityinteger
Summed buy-order quantity.calculated_atstring (date-time)
When it was computed.QuoteSnakeA single market's bid or ask (snake_case).
marketstring
Market id.priceinteger
Price in USD cents.updated_atstring (date-time)
Source quote's last update.is_staleboolean
Past the freshness window.ListingsResponseIndividual live listings with float-coverage metadata.
marketHashNamestring
Market hash name.canonicalItemIdstring
Canonical item id.totalListingsinteger
Listings available across markets.sampledListingsinteger
Listings returned (≤ limit).floatCoverageFloatCoverage
Which markets expose float on this item.Observed-float summary; null when no float seen.
listingsListing[]
The sampled listings.calculatedAtstring (date-time)
When sampled.FloatCoverageFloat availability across markets for this item.
coveragestring
complete | partial | none (float availability across the sample).sampledListingsinteger
Listings sampled.listingsWithFloatinteger
Of those, with a float value.marketsWithFloatstring[]
Market ids exposing float.marketsWithoutFloatstring[]
Market ids without float.FloatSummaryObserved float vs the item's wear range.
observednumbernullable
Sampled float value.itemMinnumber
Item's minimum possible float.itemMaxnumber
Item's maximum possible float.observedSourceobjectnullable
{ market, listingId } the float came from.ListingOne individual listing.
listingIdstringnullable
Marketplace listing id; null for aggregate fallback rows.marketstring
Market id.priceinteger
Listing price in USD cents.currencystring
Always USD.floatValuenumbernullable
Wear value (clamped to [0,1]); null when the market doesn't expose it.paintSeedintegernullable
Paint seed / pattern index; null when unavailable.paintIndexintegernullable
Finish catalog / paint index; null when the market doesn't expose it.inspectLinkstringnullable
Steam inspect link / inspect payload reference; null when unavailable.stickersobject[]
Applied stickers (empty array when none).isStatTrakboolean
Whether the listing is StatTrak.fetchedAtstring (date-time)
When the listing was fetched.DepthResponseAggregated order-book depth around the NBBO.
marketHashNamestring
Market hash name.canonicalItemIdstring
Canonical item id.depthinteger
Levels requested per side (1 to 50).marketCountinteger
Markets contributing.asksDepthLevel[]
Ranked ask levels, best first.bidsDepthLevel[]
Ranked bid levels, best first.spreadBpsintegernullable
Top-of-book spread in bps. NOT clamped (unlike /v1/nbbo and /v1/pricing): can be large or negative when the book is crossed.lockedboolean
Top bid == top ask.crossedboolean
Top bid > top ask.calculatedAtstring (date-time)
When computed.DepthLevelOne price level with cumulative quantity + contributors.
rankinteger
1 = best. Rank within its side.priceinteger
Level price in USD cents.quantityinteger
Quantity at this level.ordersCountinteger
Orders/listings at this level.marketCountinteger
Markets contributing to this level.cumulativeQuantityinteger
Running total from the best level.updatedAtstring (date-time)
Most recent contributing-quote time.isStaleboolean
Whether the level is stale.quotesDepthQuote[]
Per-market quotes that make up this level.DepthQuoteA single market's contribution to a depth level.
marketstring
Market id.levelinteger
This market's own level index.priceinteger
Price in USD cents.quantityinteger
Quantity from this market.ordersCountinteger
Orders from this market.updatedAtstring (date-time)
Quote update time.isStaleboolean
Whether stale.ArbitrageResponseRanked cross-market arbitrage opportunities.
opportunitiesArbitrageOpportunity[]
Ranked by sort (default estimatedNetCents).totalCandidatesinteger
Crossed-item candidates shortlisted before fresh-quote validation and the query filters (so usually larger than opportunities.length).calculatedAtstring (date-time)
When the response was calculated.ArbitrageOpportunityA buy-leg / sell-leg pairing across two markets.
canonicalItemIdstring
Canonical item id.marketHashNamestring
Market hash name.slugstring
SkinPricer item slug.imageUrlstring
Item image URL.buyArbLeg
Fresh ask leg (where you'd buy).sellArbLeg
Fresh bid leg (where you'd sell).spreadBpsinteger
Gross spread in basis points.spreadCentsinteger
Gross spread in USD cents.estimatedNetCentsinteger
Estimated net before withdrawal/trading fees.maxTradableQuantityinteger
Quantity tradable across both legs.estimatedNotionalCentsinteger
Estimated buy-side notional.feeNotesstring
Fee caveat for the net estimate.freshnessobject
{ buyAgeMs, sellAgeMs } per-leg quote age.calculatedAtstring (date-time)
When computed.ArbLegOne leg of an opportunity.
marketstring
Market id.priceinteger
Leg price in USD cents.quoteSizeinteger
Quantity available at this quote.updatedAtstring (date-time)
Quote update time.isStaleboolean
Whether stale.AttributePricesResponsePer-attribute bucket prices across supported markets.
bucketSchemaVersioninteger
Schema version for the bucket shape.marketsstring[]
Markets covered in this response.currencystring
Always USD.asOfstring (date-time)
Snapshot time.itemsAttributeItem[]
One entry per item × market.nextCursorstringnullable
Opaque cursor for the next page (pass back as cursor); null on the last page.sourceGapsstring[]
Requested markets with no coverage in this response.AttributeItemAn item's buckets on one market.
canonicalItemIdstring
Canonical item id.marketHashNamestring
Market hash name.marketstring
Market id.bucketsAttributeBucket[]
Float/fade/pattern/seed/variant bands.AttributeBucketOne attribute band with its own ask/bid. Prices in cents.
bucketIdstring
Stable id for this bucket.bucketKeystring
Human-readable key, e.g. float:0-0.01.bucketTypestring
attribute | … bucket category.attributeTypestring
Primary attribute, e.g. float or tag (a phase/gem variant).attributeTypesstring[]
All attributes this bucket bands on (e.g. tag and float).dimensionsobject
Band bounds: { variant, float, fade, pattern, paintSeed }; each range is half-open [min, max). variant names a phase/gem like Phase2. Read this for exact bounds. Widths differ per market.sourceItemIdstring
The source market's own item id for this bucket.sourceBucketIdstring
The source market's own bucket id (its native range encoding).askCentsintegernullable
Lowest ask in the bucket.avgAskCentsintegernullable
Mean ask across listings in the bucket.medianAskCentsintegernullable
Median ask across listings in the bucket.bidCentsintegernullable
Highest bid in the bucket.askListingCountintegernullable
Listings behind the ask.bidOrderCountintegernullable
Orders behind the bid.sourceUpdatedAtstring (date-time)
Source's last update.collectedAtstring (date-time)
When SkinPricer collected it.AttributeHistoryResponseTime series of per-attribute bucket prices.
bucketSchemaVersioninteger
Schema version for the bucket shape.marketsstring[]
Markets covered in this response.currencystring
Always USD.granularitystring
Point spacing, e.g. 10m.One entry per item × market.
sourceGapsstring[]
Requested markets with no coverage.AttributeHistoryItemAn item's bucket series on one market.
canonicalItemIdstring
Canonical item id.marketHashNamestring
Market hash name.marketstring
Market id.bucketsAttributeHistoryBucket[]
One series per attribute band.AttributeHistoryBucketOne attribute band and its time series.
bucketIdstring
Stable id for this bucket.bucketKeystring
Human-readable key, e.g. float:0-0.01.bucketTypestring
attribute | … bucket category.attributeTypestring
Primary attribute, e.g. float or tag (a phase/gem variant).attributeTypesstring[]
All attributes this bucket bands on (e.g. tag and float).dimensionsobject
Band bounds: { variant, float, fade, pattern, paintSeed }; each range is half-open [min, max). variant names a phase/gem like Phase2.sourceItemIdstring
The source market's own item id for this bucket.sourceBucketIdstring
The source market's own bucket id (its native range encoding).pointsAttributeHistoryPoint[]
Time-ordered price points, oldest first.AttributeHistoryPointOne time bucket of ask/bid for an attribute band. Prices in cents.
bucketStartstring (date-time)
Start of the time bucket.openAskCentsintegernullable
First ask in the bucket.highAskCentsintegernullable
Highest ask in the bucket.lowAskCentsintegernullable
Lowest ask in the bucket.closeAskCentsintegernullable
Last ask in the bucket.avgAskCentsintegernullable
Mean ask across the bucket.closeBidCentsintegernullable
Last bid in the bucket.askListingCountintegernullable
Listings behind the close ask.bidOrderCountintegernullable
Orders behind the close bid.firstObservedAtstring (date-time)
First observation in the bucket.lastObservedAtstring (date-time)
Last observation in the bucket.BuffLatestResponseBuff163-only attribute bucket prices for an item.
bucketSchemaVersioninteger
Schema version for the bucket shape.marketstring
Always buff163.currencystring
Always USD.asOfstring (date-time)
Snapshot time.itemsAttributeItem[]
One entry per item; buckets share the AttributeItem / AttributeBucket shape.nextCursorstringnullable
Opaque cursor for the next page; null on the last page.sourceGapsstring[]
Requested markets with no coverage (empty for the single-market buff163 cut).BuffHistoryResponseBuff163-only attribute price history for an item.
bucketSchemaVersioninteger
Schema version for the bucket shape.marketstring
Always buff163.currencystring
Always USD.granularitystring
Point spacing, e.g. 10m.One entry per item; buckets share the
AttributeHistoryBucket / AttributeHistoryPoint shape.sourceGapsstring[]
Requested markets with no coverage.MinPricesResponseLowest ask per market for the requested items. snake_case.
itemsItemMinPrices[]
One entry per requested item.ItemMinPricesAn item's minimum price on each market.
canonical_item_idstring
Canonical item id.market_hash_namestring
Market hash name.pricesMarketMinPrice[]
Lowest ask per market.MarketMinPriceOne market's lowest ask. Prices in USD cents.
market_namestring
Market id.offersinteger
Total listings tracked for this item on this market (the quote size, not the count at or above price).priceinteger
Lowest ask in USD cents.updated_atstring (date-time)
When the source reported it.is_stalebooleannullable
Past the freshness threshold but within fallback age.ingested_atstring (date-time)nullable
When SkinPricer ingested it.ingest_latency_msintegernullable
Fetch-to-ingest latency, ms.ItemSearchResponsePaginated catalog search with per-item pricing.
One cross-market snapshot per item (same shape as the pricing endpoint).
paginationPaginationMeta
Page metadata.PaginationMetaPagination envelope.
perPageinteger
Items per page.currentPageinteger
Current page (1-based).frominteger
Index of the first item on this page.tointeger
Index of the last item on this page.totalinteger
Total items across all pages.lastPageinteger
Number of the last page.prevPageintegernullable
Previous page, or null on the first.nextPageintegernullable
Next page, or null on the last.LiquidityResponseLiquidity + expected time-to-sell for an item. Times in hours, prices in cents.
canonicalItemIdstring
Canonical item id.marketHashNamestring
Market hash name.liquidityBadgestring
EXTREMELY_LIQUID … UNTRADED (7-value scale).confidencestring
HIGH | MEDIUM | LOW | CRITICAL.coveragestring
full | partial | none market coverage.medianTimeToSellHoursnumbernullable
Median time-to-sell on the best market.p90TimeToSellHoursnumbernullable
p90 time-to-sell on the best market.bestMarketToListstringnullable
Market with the lowest expected time-to-sell.salesPerDaynumbernullable
Sales/day on the best market (rolling 24h).activeListingsintegernullable
Active listings on the best market.referenceAskUsdCentsintegernullable
The ask price the estimate assumes.marketWideSalesPerDaynumbernullable
Summed sales/day across covered markets.marketWideListingsintegernullable
Summed active listings across covered markets.marketsWithSalesinteger
Covered markets with a positive sale rate.marketsWithDepthinteger
Covered markets with positive supply.marketWideMedianTimeToSellHoursnumbernullable
Time for the whole cross-market supply to clear (saturation index).marketWideP90TimeToSellHoursnumbernullable
p90 of the saturation index.metricsLiquidityMarketMetric[]
Per-market breakdown.notesstring[]
Data-quality flags, e.g. sales_data_stale:marketcsgo.calculatedAtstring (date-time)
When it was computed.LiquidityMarketMetricOne market's liquidity metrics.
marketstring
Market id.salesPerDaynumbernullable
Sales/day (rolling 24h).activeListingsintegernullable
Active listings at or above the best ask.bestAskUsdCentsintegernullable
Current best ask in USD cents.medianTimeToSellHoursnumbernullable
Median time-to-sell.p90TimeToSellHoursnumbernullable
p90 time-to-sell.salesDataAgeMinutesnumbernullable
Age of the sales snapshot used.listingsDataAgeMinutesnumbernullable
Age of the order-book snapshot used.MarketAnalyticsResponsePer-market current + windowed analytics for an item. snake_case.
canonical_item_idstring
Canonical item id.market_hash_namestring
Market hash name.window_hoursinteger
Analytics window in hours.marketsMarketAnalyticsPoint[]
One row per market.calculated_atstring (date-time)
When analytics were computed.MarketAnalyticsPointOne market's current quotes + windowed stats. Every price field. Current and windowed. Is integer USD cents; the
*_count / *_quantity stats are plain counts.marketstring
Market id.current_askintegernullable
Current best ask, in USD cents.current_bidintegernullable
Current best bid, in USD cents.spread_bpsintegernullable
Current spread in basis points.ask_is_stalebooleannullable
Current ask is stale.bid_is_stalebooleannullable
Current bid is stale.current_listing_countintegernullable
Current sell-side listings.current_buy_order_countintegernullable
Current buy orders.current_bid_quantityintegernullable
Current total bid quantity.sell_avg_pricenumbernullable
Average sell price over the window, in USD cents (may carry a fractional cent).sell_min_priceintegernullable
Min sell price over the window, in USD cents.sell_max_priceintegernullable
Max sell price over the window, in USD cents (outlier-capped).sell_avg_listing_countnumbernullable
Average sell listing count over the window (a count, not a price).buy_avg_pricenumbernullable
Average buy price over the window, in USD cents (may carry a fractional cent).buy_max_priceintegernullable
Max buy price over the window, in USD cents.buy_avg_order_countnumbernullable
Average buy-order count over the window (a count, not a price).buy_avg_total_quantitynumbernullable
Average total buy quantity over the window (a count, not a price).MaxOrdersResponseHighest buy order per market for the requested items. snake_case.
itemsItemMaxOrders[]
One entry per requested item.ItemMaxOrdersAn item's top buy order on each market.
canonical_item_idstring
Canonical item id.market_hash_namestring
Market hash name.ordersMarketMaxOrder[]
Highest buy order per market.MarketMaxOrderOne market's highest buy order. Prices in USD cents.
market_namestring
Market id.offersinteger
Total buy orders tracked for this item on this market (the quote size, not the count at this price).priceinteger
Highest buy-order price in USD cents.updated_atstring (date-time)
When the order data was last updated.is_staleboolean
Past the freshness threshold but within fallback age.total_quantityintegernullable
Approximate total bid quantity.ingested_atstring (date-time)nullable
When SkinPricer ingested it.ingest_latency_msintegernullable
Fetch-to-ingest latency, ms.AllItemsItemOne item in the full-catalog array. The response is a bare array of these (no envelope).
idstring
Canonical item id.namestring
Market hash name.latestPricesAllItemsPrice[]
Latest price per market.Cross-market aggregates, or null.
AllItemsPriceOne market's latest price for an item.
marketstring
Market id.effectiveUsdCentsinteger
Latest price in USD cents.fetchedAtstring (date-time)
When the marketplace reported it.originalCurrencystring
Source currency before normalization.AllItemsAggregateCross-market price aggregates for an item.
minPriceintegernullable
Lowest price across markets.maxPriceintegernullable
Highest price across markets.avgPricenumbernullable
Mean price.medianPriceintegernullable
Median price.stdDevnumbernullable
Std deviation of prices.updatedAtstring (date-time)
When the aggregates were computed.LiquiditySummarySlim liquidity badge view for an item.
marketHashNamestring
Market hash name.liquidityBadgestring
EXTREMELY_LIQUID … UNTRADED (7-value scale).liquiditystring
Lowercase label; UNTRADED maps to unknown.estimatedSaleTimestring
Human time-to-sell, e.g. 2 - 6 hours.confidencestring
HIGH | MEDIUM | LOW | CRITICAL.scoreintegernullable
0 to 100 (higher = sells faster); null when untraded.bestMarketToListstringnullable
Market with the lowest expected time-to-sell.calculatedAtstring (date-time)
When it was computed.LiquidityBatchResponseLiquidity scored for many items in one call.
resultsLiquidityResponse[]
One full liquidity result per tracked item.notFoundstring[]
Requested names that are not tracked.requestedinteger
Number of items requested.calculatedAtstring (date-time)
When the batch was computed.LiquidityBulkResponseWhole-catalog liquidity map. Enterprise.
versionstring
Opaque snapshot version of the form <ms>-<pid> (materialize-time millis + worker pid). Compare for equality only. Also the ETag; don't parse it.calculatedAtstring (date-time)
When the snapshot was materialized.cadencestring
Recompute cadence (ISO-8601 duration), e.g. PT10M.marketsstring[]
Markets covered.itemCountinteger
Items in the snapshot.itemsobject
Map of market_hash_name to LiquidityBulkItem.LiquidityBulkItemOne item's liquidity in the bulk map (mixed snake/camel keys).
market_hash_namestring
Market hash name.liquiditystring
Lowercase liquidity label.estimated_sale_timestring
Human time-to-sell.liquidityBadgestring
7-value badge enum.confidencestring
HIGH | MEDIUM | LOW | CRITICAL.scoreintegernullable
0 to 100; null when untraded.bestMarketToListstringnullable
Best market to list on.variantsobject
Per-variant liquidity (reserved; {} for now).LiquidityBulkManifestChange-probe for the bulk liquidity map. Enterprise.
versionstring
Opaque snapshot version of the form <ms>-<pid> (also the ETag). Compare for equality only.calculatedAtstring (date-time)
When the snapshot was materialized.cadencestring
Recompute cadence, e.g. PT10M.marketsstring[]
Markets covered.itemCountinteger
Items in the snapshot.MarketLatencyResponsePer-market ingest latency + reliability. snake_case.
marketsMarketLatency[]
One row per market.window_hoursinteger
Rolling window the stats cover.measured_atstring (date-time)
When the stats were measured.MarketLatencyOne market's latency + reliability.
marketstring
Market id.avg_latency_msinteger
Average fetch latency, ms.p95_latency_msinteger
p95 fetch latency, ms.p99_latency_msinteger
p99 fetch latency, ms.fetch_countinteger
Fetches in the window.error_ratenumber
Fraction of fetches that errored (0 to 1).slo_breach_ratenumber
Fraction breaching the latency SLO (0 to 1).FreshnessResponsePer-market ingest freshness + an overall roll-up. snake_case.
marketsMarketFreshness[]
One row per ingested market.overall_statusstring
Roll-up: healthy | degraded | stale.checked_atstring (date-time)
When freshness was sampled.MarketFreshnessOne market's freshness.
marketstring
Market id.delay_secondsinteger
Seconds since the last ingested event.last_updatestring (date-time)
Last ingested event time.statusstring
healthy | degraded | stale.MarketHealth[]Array, one entry per integrated marketplace. No key required.
idstring
Market id. The join key for other endpoints.statusstring
live | warn | stale.lastEventAtstring (date-time)nullable
Last ingested event; null if none yet.listingsCountinteger
Listings currently tracked for the market.healthBarsinteger[]
48 buckets of 30 minutes each (~24h), most recent last. Legend: 2 = live, 1 = degraded, 0 = down.