How to Get Current Youpin Prices for CS2 Items
Updated
The
youpinsource inGETorPOST /v1/prices/latestcarriesask,bid,ask_volume, andbid_volumefor every tracked CS2 item, converted to USD. Youpin is one of three sources that publish both order counts.
Youpin is a major Chinese CS2 marketplace with deep inventory on items that trade thinly elsewhere. It has no public developer API, so getting a price normally means operating a collector against a site that does not expect one. cs2.sh collects it continuously and returns it in the same shape as every other source.
What cs2.sh provides for Youpin
| Property | Value |
|---|---|
| Endpoints | GET /v1/prices/latest (all items), POST /v1/prices/latest (up to 100 named items) |
| Fields | ask, bid, ask_volume, bid_volume |
| Refresh | Items about every 5 minutes; Youpin variants about every 5-15 minutes |
| Variants | Doppler, Gamma Doppler, and Case Hardened |
| Sale history | POST /v1/archive/youpin, sampled sale prices at 1h, 4h, and 12h |
| Currency | Always USD |
| Access | Available on all plans |
Request the item
curl -X POST https://api.cs2.sh/v1/prices/latest \
-H "Authorization: Bearer <<YOUR_API_KEY>>" \
-H "Accept-Encoding: gzip" --compressed \
-H "Content-Type: application/json" \
-d '{"items": ["USP-S | Printstream (Factory New)"]}'"youpin": {
"updated_at": "2026-07-26T18:52:35.85Z",
"collected_at": "2026-07-26T18:52:41.584Z",
"ask": 108.24,
"ask_volume": 507,
"bid": 107.06,
"bid_volume": 63
}| Field | Type | Description |
|---|---|---|
ask |
number | null |
Lowest active sell listing, USD. |
bid |
number | null |
Highest generic buy order, USD. |
ask_volume |
integer | null |
Number of active sell listings. |
bid_volume |
integer | null |
Number of active buy orders. |
updated_at |
string (date-time) |
When Youpin last updated the price. |
collected_at |
string (date-time) |
When cs2.sh collected it. |
Reading the data correctly
Prices are converted to USD, so a Youpin figure sits on the same scale as BUFF, CSFloat, and Skinport in the same response. That comparability is the point of the source, but it does not erase the market difference: Youpin serves a different buyer base, and a gap against a Western marketplace is usually a real market fact rather than an error to correct.
Youpin publishes both order counts, so a bid here carries depth in a way a CSFloat bid does not. Use bid_volume to distinguish a single opportunistic buy order from genuine standing demand before treating the price as one a seller could rely on.
Variant prices refresh on a slower cycle than base items, about every 5 to 15 minutes against about every 5. In a single response, a variant's numbers and the base item's numbers may have been observed at noticeably different moments, so compare collected_at before differencing them.
Base item source objects are dense: youpin is present whenever any source has data for the item, with null in fields Youpin did not supply. Variant source objects are sparse and appear only where Youpin has data for that exact phase or tier.
Active orders are not sales. For what items actually sold for on Youpin, POST /v1/archive/youpin returns sampled sale prices, and it deliberately publishes no sale volume: Youpin exposes one sale per sampling bucket, so counting points measures samples rather than transactions.
When values are absent
ask or bid is null when Youpin has nothing listed or no standing buy order. Both are real market states rather than errors and should stay absent rather than becoming zero. On individual Doppler phases, absence is common.
When items and variants fail
Item-level failures arrive in errors[] beside successful results. Alongside unknown_item and invalid_format, two codes matter for Youpin specifically: unsupported_source means the item has no identity on Youpin, and unsupported_variant means the requested phase or tier is not mapped for it.
Neither is a retryable error. Both are coverage facts about that item, and requesting again returns the same result.
Worked example: checking a Western price against Youpin
Read youpin.ask and the same field from CSFloat, Skinport, or BUFF in the same response. Compare ask against ask only; a Youpin ask against a Western bid answers a different question and will suggest gaps that do not exist.
Confirm collected_at on both sides, then check ask_volume on the cheaper one. A price backed by four listings is a different proposition from one backed by five hundred. Fees, regional access, and transfer constraints live outside the API and belong in your own model alongside the raw figure.
Full field reference: GET /v1/prices/latest. Youpin sale history: POST /v1/archive/youpin. Refresh rates: data coverage.