Skip to main content

Reading prices: ask, bid & NBBO

How to interpret the price fields the API returns.

Ask vs bid

ask is the lowest current sell offer (what you'd pay to buy now); bid is the highest standing buy order (what you'd receive selling now). The spread is ask − bid.

NBBO

National Best Bid & Offer is the best ask and best bid taken across every indexed marketplace at once, not within a single market. bestAsk and bestBid each name their source market. spreadBps expresses the spread in basis points (100 bps = 1%).

In the default (all-markets) view, the NBBO bestBid is restricted to cash-executable venues (markets that actually pay out in cash). Steam wallet credit and trade-credit venues are excluded by default, since their bids are denominated in non-cash balances and would otherwise produce economically-false crossed books. Pass an explicit markets CSV to override this and consider every requested venue's bid verbatim. The same default applies to the bestBid on /v1/pricing, item search, and recommendations, so those reads agree with the NBBO unless you pass markets.

spreadBps and its null-clamp

spreadBps on /v1/nbbo and /v1/pricing is null when a side is missing, and also clamped to null when it would exceed 10000 bps (±100%), which almost always means a stale or garbage bid. The two differ on a crossed book (bid above ask): /v1/nbbo keeps the negative spread and sets its explicit crossed flag, while /v1/pricing, item search, and recommendations return spreadBps: null. Note the /v1/nbbo/depth spreadBps is NOT clamped and can be large or negative.

Execution-adjusted NBBO

Raw bestAsk / bestBid are sticker prices. The nullable executionAdjusted block on /v1/nbbo re-ranks venues by what you'd actually pay (ask + buyer fee) versus net receive (bid − commission − withdrawal), each scaled by an executability discount for freshness and depth, and exposes its own spreadBps plus an executableConfidence. Use the raw NBBO for a display spread; use executionAdjusted for a realistic execution spread.

Cents, not dollars

Every price field is an integer number of USD cents, so 1550 means $15.50. Divide by 100 only at display time to avoid floating-point drift.

locked & crossed

locked is true when the best bid equals the best ask (zero spread). crossed is true when the best bid, net of the selling venue's estimated commission, still exceeds the best ask: a cross-market inversion that usually means one leg went stale a beat before the other refreshed. A bid that only looks higher before fees does not set it, so the raw spreadBps can be negative while crossed is false. Both are flags so you can filter or discount those reads.

Guides using this endpoint

Usage & licensing

Access to the API and its data is governed by our Terms of Service. You may not resell or redistribute the data, use it to build a competing service, or exceed your plan’s rate limits, and you must attribute SkinPricer as the source wherever the Terms permit you to display it. Abuse may be throttled or suspended.