# How to Get Current Youpin Prices for CS2 Items

> The `youpin` source in `GET` or `POST /v1/prices/latest` carries `ask`, `bid`, `ask_volume`, and `bid_volume` for 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

```bash
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)"]}'
```

```json
"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](/docs/prices-latest). Youpin sale history: [POST /v1/archive/youpin](/docs/archive-youpin). Refresh rates: [data coverage](/docs/data-coverage).
