How to Get C5Game Intraday Price History
Updated
cs2.sh's
POST /v1/prices/historywithsources: ["c5game"]returns C5Game ask and bid OHLC from December 24, 2025 at5m,30m,1h, or1d. For prices before that date,POST /v1/archive/historycarries C5Game back to 2023 at hourly or daily buckets.
C5Game has no public developer API. Two cs2.sh series cover it, and they are different datasets rather than one continuous history: knowing where the handoff sits is the whole job.
What cs2.sh provides for C5Game
| Intraday history | Long-term archive | |
|---|---|---|
| Endpoint | POST /v1/prices/history |
POST /v1/archive/history |
| Coverage | From December 24, 2025 | From 2023 |
| Intervals | 5m, 30m, 1h, 1d |
1h, 1d |
| Fields | ask and bid OHLC, ask_volume |
Last-observed ask, bid, ask_volume, bid_volume |
| Update cadence | Continuously, from the same snapshots as current prices | About 1-2x per day |
| Items per request | 100 | 100 |
| Access | Scale or Enterprise | Scale or Enterprise |
C5Game reports no bid_volume in current prices and intraday history, matching CSFloat. The archive series does carry bid_volume for the platforms it covers.
Request intraday candles
curl -X POST https://api.cs2.sh/v1/prices/history \
-H "Authorization: Bearer <<YOUR_API_KEY>>" \
-H "Accept-Encoding: gzip" --compressed \
-H "Content-Type: application/json" \
-d '{
"items": ["USP-S | Printstream (Factory New)"],
"start": "2026-07-20",
"sources": ["c5game"],
"interval": "30m"
}'| Interval | Maximum request range |
|---|---|
5m |
14 days |
30m |
90 days |
1h |
365 days |
1d |
Unlimited |
Each bucket's c5game object carries open_ask, high_ask, low_ask, close_ask, ask_volume, the matching bid OHLC, sample_count, open_time, and close_time.
Request the long-term archive
POST /v1/archive/history defaults to the aggregate source only, so C5Game must be named explicitly:
curl -X POST https://api.cs2.sh/v1/archive/history \
-H "Authorization: Bearer <<YOUR_API_KEY>>" \
-H "Accept-Encoding: gzip" --compressed \
-H "Content-Type: application/json" \
-d '{
"items": ["USP-S | Printstream (Factory New)"],
"start": "2023-01-01",
"sources": ["c5game"],
"interval": "1d"
}'"c5game": {
"time": "2026-04-27T23:57:07Z",
"ask": 132.21,
"ask_volume": 139,
"bid": 213.58,
"bid_volume": 24,
"sample_count": 24
}Archive values are the last observed price in the bucket, not an OHLC aggregation. time is when that observation happened and sample_count is how many readings the bucket contained.
Reading the data correctly
The two series have different collection and aggregation behaviour, so a chart that spans December 24, 2025 is showing a handoff between datasets. Mark it. An OHLC close and a last-observed value are not the same statistic, and a chart that implies otherwise will show a step that is an artefact rather than a market move.
Archive history updates about 1-2x per day. Hourly buckets do not mean hourly collection: the interval describes the bucket width, not how often data arrived.
Intraday bucket is the aligned boundary while open_time and close_time are the real observation window. On a thin item those sit far apart, and sample_count shows how much evidence the candle carries.
Everything in both series is an active order. Neither reports completed sales. For approximate sale activity, the aggregate source in the archive carries hourly_volume, an estimate rather than a marketplace-reported count.
When items fail
Item-level failures arrive in errors[] beside successful results: unknown_item, invalid_format, unsupported_source where an item has no C5Game identity, and not_in_archive on archive requests for a valid item with no rows.
Request-level failures carry error, message, and a request_id. Correct 400, 401, 403, and 404 before retrying; retry 429 and temporary 5xx with a bounded delay.
Worked example: a multi-year C5Game chart
Request archive 1d buckets from 2023 to December 24, 2025 with sources: ["c5game"], then request prices/history 1d candles from December 24, 2025 forward. Store both with a column recording which series each row came from.
Plot them as one line only if you label the handoff, and prefer close_ask from the intraday side against ask from the archive side, since both describe the sell listing at the end of the period. Keep sample_count from both so sparse early buckets are visible as sparse.
Full request and response reference: POST /v1/prices/history and POST /v1/archive/history. Both need a Scale or Enterprise key.