# How to Get CS2 Doppler Phase Price Data

> cs2.sh prices Doppler Phase 1-4, Ruby, Sapphire, and Black Pearl separately per source under a structured `variants` object, with current quotes on all plans and OHLC history on Scale and Enterprise.

A parent Doppler price cannot represent every phase. Phase 2, Ruby, and Black Pearl each have separate supply, demand, and sale evidence.

## Doppler variant identities and fields

Request the base Doppler `market_hash_name`. Current-price results nest variants keyed by display name and include:

| Variant | Stable `version` |
| --- | --- |
| Phase 1-4 | `p1`, `p2`, `p3`, `p4` |
| Gems | `ruby`, `sapphire`, `blackpearl` |

Every variant can carry per-source ask, bid, and available volume fields. BUFF and Youpin include `bid_volume`; CSFloat and C5Game do not; Skinport is ask-only. Source coverage is sparse, so a variant may be present on some marketplaces and absent on others.

`GET /v1/schema` also lists variant family, phase name, paint index, and variant images. It links each full variant row back to its base item.

## Use current and historical phase data

Fetch `GET /v1/prices/latest` and select the base item in the all-items snapshot. Traverse `variants` and use `version` as the stable identifier. Compare only source objects that exist for that exact phase.

For historical movement, send the same base name to `POST /v1/prices/history`. Each phase has its own ask and, where supported, bid OHLC series. `5m` supports 14 days, `30m` 90 days, `1h` 365 days, and `1d` longer ranges. Ask history begins December 24, 2025; CSFloat bid history begins July 18, 2026.

CSFloat's daily completed-sale archive adds phase sale price and count from 2022 where rows exist. [Doppler phase sales](/resources/how-to-get-csfloat-doppler-sales-history) can validate whether sparse listing floors are clearing.

## Applicable endpoints

| Endpoint | Returns | Plans |
| --- | --- | --- |
| `GET /v1/prices/latest` | Current phase quotes per source | All plans |
| `POST /v1/prices/history` | Phase-level quote OHLC | Scale, Enterprise |
| `GET /v1/schema` | Variant identities and metadata | All plans |

## Boundaries to preserve

- Steam has a parent Community Market item but no separate phase market rows. Do not copy its parent price into variants.
- A source missing from one phase is unavailable, not a zero price or a reason to use another phase.
- Current asks are listing floors. They do not account for an exact float, seed, or sticker set.
- Use `version` for joins. Display labels are presentation values and can be localized or reformatted.

See [current variant prices](/docs/api-reference/prices-latest) and [history variants](/docs/api-reference/prices-history) for the response shapes.
