# How to Get C5Game Doppler Prices by Phase

> `GET /v1/prices/latest` exposes current C5Game asks, bids, and active listing
> counts for Doppler Phase 1 through Phase 4, Ruby, Sapphire, and Black Pearl
> under the base item's `variants` object.

C5Game asks and bids come from independent collection passes. A phase can have
an ask with no bid, and a mismatched pair can show a bid above the ask. The
phase ask remains useful, but the crossed pair is not a valid spread.

## Current C5Game Doppler fields

Each variant has `display_name`, a full `name`, and a stable `version` code.
Use `p1` through `p4`, `ruby`, `sapphire`, and `blackpearl` to keep phase
identity consistent.

The C5Game source object can contain:

| Field | Meaning |
| --- | --- |
| `ask` | Lowest active C5Game listing in USD |
| `bid` | Highest collected C5Game buy order |
| `ask_volume` | Active listing count |
| `updated_at` | C5Game's source update time |
| `collected_at` | When cs2.sh fetched the source data |

C5Game does not provide `bid_volume`. A valid bid therefore has no public
buy-order count in this response.

## Select and screen a phase quote

Fetch the full current-price snapshot, select the base Doppler by exact
`market_hash_name`, and locate the required variant by `version`. Variant
source objects are sparse, so a C5Game object appears only when C5Game has
variant data for that phase.

Use the ask when it is positive. Use the bid in a combined quote only when it
is positive and no higher than the ask. If the bid is missing or crossed,
preserve the ask and mark the bid side unavailable.

Current marketplace prices refresh every ~5-10 minutes, depending on the
source. Read `collected_at` before using the result in an alert or a
[cross-marketplace comparison](/resources/compare-cs2-skin-prices-across-marketplaces).

## Applicable endpoint

| Endpoint | Returns | Plans |
| --- | --- | --- |
| `GET /v1/prices/latest` | Current C5Game variant asks, bids, and listing counts | All plans |

## C5Game phase limits

- A missing phase-specific bid cannot be replaced by the parent Doppler bid or
  another phase's bid. Those are different markets.
- Do not repair a crossed pair by swapping fields, clipping the bid, or taking
  an absolute spread. Keep the independent ask and reject the combined quote.
- `ask_volume` counts the phase's active listings. It does not count completed
  sales or state how many units sit at the lowest ask.
- Use [C5Game Doppler price history](/resources/how-to-get-c5game-doppler-price-history)
  to inspect whether phase coverage and bid quality persist through time.
