How to Download and Cache All Current CS2 Prices
Updated
API reference: GET /v1/prices/latest
GET /v1/prices/latestreturns one current snapshot containing every tracked item and all six marketplaces, which can be stored as a local read cache.
The response is large and Accept-Encoding: gzip is required. The saved representation should keep the response envelope and source objects intact so freshness and missing-data rules can be changed later.
What the snapshot contains
response_time,currency, and anitemsmap keyed by exactmarket_hash_name.- Source objects for BUFF, Youpin, CSFloat, Skinport, Steam, and C5Game, with unsupported or unavailable fields represented as null.
- Per-source
updated_atandcollected_attimestamps. - Supported Doppler, Gamma Doppler, and Case Hardened records nested under
variants.
Live prices generally refresh every ~5-10 minutes, with source-specific differences. A newly generated response can contain source rows collected at different times.
Cache update model
Fetch the snapshot from a server process with bearer authentication and gzip enabled. Validate that the response has currency: USD, a parseable response_time, and an items map before making it visible to readers.
Write a complete new local representation and replace the prior cache only after validation. Updating individual item rows in place can leave a mixed snapshot if the update stops partway through. If the application keeps last-known values for missing rows, store them separately with their original collected_at rather than merging them into the current cache.
Index the cached items map locally for selected-item reads. This gives every lookup the same snapshot response_time and avoids repeated downloads during one application cycle.
Applicable endpoint
| Endpoint | Returns | Plans |
|---|---|---|
GET /v1/prices/latest |
Complete current item and source snapshot | All plans |
Cache caveats
response_timesays when the API response was generated. Use each source'scollected_atto decide whether that quote is fresh enough.- An absent item or null source field is not a zero price. Keep the API's missing-data semantics in the cache.
- The snapshot contains current listing and bid observations, not a historical change log. Use OHLC history when the application needs prior values.
- The current-price reference does not document conditional ETag revalidation. Do not make cache correctness depend on an undocumented validator.
See current item prices for source-field selection after the snapshot is cached.