The five inputs
| # | Input | Source on CSPriceAPI |
|---|---|---|
| 1 | Current listing asks | POST /v1/prices/latest across cash markets |
| 2 | Buy-side / exit bids | GET /v1/prices/youpin/buyorder (full book) |
| 3 | Wear / float tier | GET /v2/prices/float-ranged for bucket premiums (YouPin) |
| 4 | Completed sales | GET /v1/market-sales/search |
| 5 | Liquidity | count fields + sales frequency |
Core formula (listing fair value)
For commodity skins (no special float/sticker):
fair_listing = median(cash_market_asks) # trim top/bottom outlier if N≥5
fair_exit = best_credible_bid_after_fees
fair_conservative = min(fair_listing, fair_exit) adjusted for thin count
Cash markets (withdrawable): YouPin, BUFF, Skinport, SkinBaron, CSFloat, DMarket, Waxpeer, … — see data coverage.
Exclude Steam from cash median unless you explicitly model wallet value separately.
Quick start — one item, all markets
curl -s -X POST "https://api.cspriceapi.com/v1/prices/latest" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"items": ["AK-47 | Redline (Field-Tested)"],
"markets": ["youpin", "buff163", "skinport", "skinbaron", "csfloat", "dmarket"]
}'
Buy-order exit (YouPin):
curl -s "https://api.cspriceapi.com/v1/prices/youpin/buyorder" \
-H "x-api-key: YOUR_API_KEY"Doppler & Gamma — phase is mandatory
Fair value for ★ Butterfly Knife | Doppler (Factory New) without phase is meaningless.
{"market_hash_name": "★ Butterfly Knife | Doppler (Factory New) (Sapphire)", "phase": "Sapphire", "price": "5668.00"}
{"market_hash_name": "★ Butterfly Knife | Doppler (Factory New) (Phase 3)", "phase": "Phase 3", "price": "1774.00"}
Illustrative rows: prices are the EUR medians from the 26 Sep 2026 snapshot in the Doppler guide. Filter to the exact phase before any median. See Doppler guide.
Float-ranged fair value
When float drives price (low FN AK, rank-relevant knives), use the YouPin float buckets:
curl -s "https://api.cspriceapi.com/v2/prices/float-ranged" \
-H "x-api-key: YOUR_API_KEY"
Match the item's float to the bucket's float_range. Bucket median beats global median for wear-sensitive items.
FX and market roles
| Region | Markets | Role in fair value |
|---|---|---|
| China wholesale | YouPin, BUFF, C5Game, EcoSteam | Anchor — CNY reference |
| Western retail | Skinport, SkinBaron, CSFloat | Retail premium/discount vs CN |
| Steam | Steam | Reference only — wallet trap |
Example: YouPin ¥1,000 ≈ $139 at 7.2 CNY/USD. A Skinport ask for the same item is in EUR and must be converted with your EUR/USD rate before it enters the same median. For "global fair listing," use median in one currency after conversion, or report regional bands.
Detecting manipulation
Red flags:
- One market 40%+ below all others with
count == 1 - No recent sales at any price near the outlier
- Sudden 24h drop on single market only
Mitigation:
- Use median, not minimum
- Require
count >= 5per market used - Cross-check sales search
Worked example
Item: M4A1-S | Printstream (Field-Tested)
| Market | Ask | Currency |
|---|---|---|
| YouPin | ¥980 | CNY |
| BUFF | ¥975 | CNY |
| Skinport | €118 | EUR |
| CSFloat | $128 | USD |
CN median ≈ ¥977.5 → ~$135 USD at 7.2. Western asks ~$128–130 USD. Fair listing band: $128–135 USD equivalent depending on FX.
YouPin buyorder top bid ¥920 → ~$128 exit. Conservative fair ≈ $128 (bid-limited).
When fair value is not enough
Sticker crafts, Blue Gem seeds (#661), and souvenir combos need individual comps from recent sales with float, pattern and stickers (on every Market Hub item page) — generic API rows describe the base skin, not the craft premium.