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.
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. Null when no market exposes a bid.
spreadBpsintegernullable
bestAsk − bestBid in basis points. Null when a side is missing.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–1 confidence from coverage, freshness, and agreement.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 its market's freshness window.PricingResponseFull cross-market snapshot: per-market quotes + an aggregate.
canonicalItemIdstring
SkinPricer's canonical item id.namestring
The item's market hash name.aggregateAggregate
Summary statistics across all contributing markets.marketsMarketQuote[]
One entry per market with a live ask.buyOrdersBuyOrder[]
Standing buy orders, by market.Cross-market best ask.
Cross-market best bid.
spreadBpsintegernullable
Best-ask − best-bid in basis points.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.
minPriceinteger
Lowest ask across markets.maxPriceinteger
Highest ask across markets.avgPriceinteger
Mean ask.medianPriceinteger
Median ask.stdDevinteger
Standard deviation of asks.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 market's freshness window.BuyOrderA standing buy-order level on a market.
marketstring
Market id.priceinteger
Bid price in USD cents.totalQuantityinteger
Quantity wanted at this price.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
Total quantity (null until volume ingest lands).volumeintegernullable
Traded notional in cents (null for now).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_priceinteger
Recommended price in USD cents.strategystring
How it was derived, e.g. midpoint.confidencenumber
0–1 confidence in the suggestion.liquidity_scorenumber
0–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
full | partial | none.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.
listingIdstring
Marketplace listing id.marketstring
Market id.priceinteger
Listing price in USD cents.currencystring
Always USD.floatValuenumbernullable
Wear value; null when the market doesn't expose it.paintSeedintegernullable
Paint seed; 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–50).marketCountinteger
Markets contributing.asksDepthLevel[]
Ranked ask levels, best first.bidsDepthLevel[]
Ranked bid levels, best first.spreadBpsintegernullable
Top-of-book spread in bps.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).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.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 }; variant names a phase/gem like Phase2.askCentsintegernullable
Lowest ask 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 }; variant names a phase/gem like Phase2.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.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
Listings available at or above this 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. Prices in cents.
marketstring
Market id.current_askintegernullable
Current best ask.current_bidintegernullable
Current best bid.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.sell_min_priceintegernullable
Min sell price over the window.sell_max_priceintegernullable
Max sell price over the window.sell_avg_listing_countnumbernullable
Average sell listing count over the window.buy_avg_pricenumbernullable
Average buy price over the window.buy_max_priceintegernullable
Max buy price over the window.buy_avg_order_countnumbernullable
Average buy-order count over the window.buy_avg_total_quantitynumbernullable
Average total buy quantity over the window.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
Buy orders 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 (cs2.sh-compatible); UNTRADED maps to unknown.estimatedSaleTimestring
Human time-to-sell, e.g. 2 - 6 hours.confidencestring
HIGH | MEDIUM | LOW | CRITICAL.scoreintegernullable
0–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
Monotonic snapshot version (ms epoch). Also the ETag.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, cs2.sh-compatible).
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–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
Snapshot version (also the ETag).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–1).slo_breach_ratenumber
Fraction breaching the latency SLO (0–1).FreshnessResponsePer-market ingest freshness + an overall roll-up. snake_case.
marketsMarketFreshness[]
One row per ingested market.overall_statusstring
Roll-up: healthy | degraded | ….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 | ….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-bucket recent-health series (most recent last).