# GET /v1/prices/latest

Current prices for all items across every supported marketplace.

Returns the latest prices for all items across supported marketplaces (BUFF, Youpin, CSFloat, Skinport, Steam, and C5Game).

Most prices update about every 5 minutes, depending on the marketplace. Every source object includes its own `updated_at` and `collected_at` timestamps.

## Access

Available on all plans.

## Supported sources

| Source | Fields |
| --- | --- |
| `buff` | `ask`, `bid`, `ask_volume`, `bid_volume` |
| `youpin` | `ask`, `bid`, `ask_volume`, `bid_volume` |
| `csfloat` | `ask`, `bid`, `ask_volume` |
| `skinport` | `ask`, `ask_volume`, `max_ask`, `mean_ask`, `median_ask`, `24h_history`, `7d_history`, `30d_history`, `90d_history` |
| `steam` | `ask`, `bid`, `ask_volume`, `bid_volume` |
| `c5game` | `ask`, `bid`, `ask_volume` |

Items with Doppler, Gamma Doppler, or Case Hardened prices can include `variants`; see [Variants](/docs/using-the-api#variants).

## Request

`GET https://api.cs2.sh/v1/prices/latest`

**curl**

```bash
curl https://api.cs2.sh/v1/prices/latest \
  -H "Authorization: Bearer <<YOUR_API_KEY>>" \
  -H "Accept-Encoding: gzip" --compressed
```

**Python**

```python
import requests

headers = {
    "Authorization": "Bearer <<YOUR_API_KEY>>",
    "Accept-Encoding": "gzip",
}

response = requests.get(
    "https://api.cs2.sh/v1/prices/latest",
    headers=headers,
)

response.raise_for_status()
data = response.json()
```

**Node**

```javascript
const headers = {
  "Authorization": "Bearer <<YOUR_API_KEY>>",
  "Accept-Encoding": "gzip",
};

const response = await fetch("https://api.cs2.sh/v1/prices/latest", { headers });

if (!response.ok) throw new Error(`HTTP ${response.status}`);
const data = await response.json();
```

**Go**

```go
package main

import (
    "compress/gzip"
    "encoding/json"
    "fmt"
    "io"
    "net/http"
)

func main() {
    req, _ := http.NewRequest("GET", "https://api.cs2.sh/v1/prices/latest", nil)
    req.Header.Set("Authorization", "Bearer <<YOUR_API_KEY>>")
    req.Header.Set("Accept-Encoding", "gzip")

    resp, err := http.DefaultClient.Do(req)
    if err != nil { panic(err) }
    defer resp.Body.Close()

    if resp.StatusCode < 200 || resp.StatusCode >= 300 {
        body, _ := io.ReadAll(resp.Body)
        panic(fmt.Sprintf("HTTP %d: %s", resp.StatusCode, body))
    }

    var reader io.Reader = resp.Body
    if resp.Header.Get("Content-Encoding") == "gzip" {
        gz, err := gzip.NewReader(resp.Body)
        if err != nil { panic(err) }
        defer gz.Close()
        reader = gz
    }

    var data any
    if err := json.NewDecoder(reader).Decode(&data); err != nil { panic(err) }
    fmt.Printf("%#v\n", data)
}
```

**R**

```r
library(httr2)

resp <- request("https://api.cs2.sh/v1/prices/latest") |>
  req_headers(
    Authorization = "Bearer <<YOUR_API_KEY>>",
    `Accept-Encoding` = "gzip"
  ) |>
  req_perform()

data <- resp_body_json(resp)
```

## Response

```json
{
  "response_time": "2026-07-26T18:54:04.041256216Z",
  "currency": "USD",
  "items": {
    "USP-S | Printstream (Factory New)": {
      "market_hash_name": "USP-S | Printstream (Factory New)",
      "buff": {
        "updated_at": "2026-07-26T18:50:53Z",
        "collected_at": "2026-07-26T18:53:10.67Z",
        "ask": 109.72,
        "ask_volume": 463,
        "bid": 106.17,
        "bid_volume": 41
      },
      "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
      },
      "csfloat": {
        "updated_at": "2026-07-26T18:53:05.094Z",
        "collected_at": "2026-07-26T18:53:05.134Z",
        "ask": 107.99,
        "ask_volume": 227,
        "bid": 105
      },
      "skinport": {
        "updated_at": "2026-07-26T18:53:09.397Z",
        "collected_at": "2026-07-26T18:53:15.672Z",
        "ask": 115.95,
        "ask_volume": 39,
        "max_ask": 575.78,
        "mean_ask": 181.61,
        "median_ask": 156.61,
        "24h_history": {
          "price": 113.78,
          "max_price": 116.48,
          "mean_price": 115.13,
          "median_price": 115.13,
          "volume": 2
        },
        "7d_history": {
          "price": 102.41,
          "max_price": 147.72,
          "mean_price": 118.31,
          "median_price": 113.79,
          "volume": 7
        },
        "30d_history": {
          "price": 102.41,
          "max_price": 147.72,
          "mean_price": 119.16,
          "median_price": 118.57,
          "volume": 44
        },
        "90d_history": {
          "price": 96.72,
          "max_price": 210.73,
          "mean_price": 123.13,
          "median_price": 119.33,
          "volume": 149
        }
      },
      "steam": {
        "updated_at": "2026-07-26T18:52:21.42Z",
        "collected_at": "2026-07-26T18:52:54.624Z",
        "ask": 169.14,
        "ask_volume": 70,
        "bid": 155.05,
        "bid_volume": 2951
      },
      "c5game": {
        "updated_at": "2026-07-26T18:49:05.186Z",
        "collected_at": "2026-07-26T18:49:07.9Z",
        "ask": 113.56,
        "ask_volume": 141,
        "bid": 221.65
      }
    }
  }
}
```

## Response fields

[LatestPricesGetResponse](/docs/objects#latestpricesgetresponse) fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `response_time` | `string (date-time)` | Yes | When the response was generated |
| `currency` | `string` | Yes | Currency code (always `USD`) |
| `items` | [`Record<string, Item>`](/docs/objects#item) | Yes | Map of `market_hash_name` to item price data. |

## Item data

| Field | Description |
| --- | --- |
| `items.<name>.<source>` | Latest `ask`/`bid` prices and volumes on that marketplace, with `updated_at` and `collected_at`. |
| `items.<name>.variants` | The same per-source shape for Doppler and Case Hardened variants. |

- Base item source objects are dense: `buff`, `youpin`, `csfloat`, `skinport`, `steam`, and `c5game` are present once any source has data for the item.
- Unavailable source fields are `null`.
- Variant source objects are sparse and appear only when that source has variant data.

Full schemas: [Item](/docs/objects#item), [Variant](/docs/objects#variant), [SkinportPriceWindow](/docs/objects#skinportpricewindow), and the per-source types under [Latest Price Source Data](/docs/objects#latest-price-source-data).

### Item

Price data for an item across all sources.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `market_hash_name` | `string` | Yes | Steam market hash name (the canonical item identifier). |
| `buff` | [BUFFSourceData](/docs/objects#buffsourcedata) | Yes | Price data from BUFF. |
| `youpin` | [YoupinSourceData](/docs/objects#youpinsourcedata) | Yes | Price data from Youpin898. |
| `csfloat` | [CsfloatSourceData](/docs/objects#csfloatsourcedata) | Yes | Current CSFloat listing and buy-order prices. |
| `skinport` | [SkinportSourceData](/docs/objects#skinportsourcedata) | Yes | Price data from Skinport, including Skinport-supplied rolling history windows. |
| `c5game` | [C5GameSourceData](/docs/objects#c5gamesourcedata) | Yes | Price data from C5Game. Ask and bid come from independent collection passes, so timestamps may differ for the same item. |
| `steam` | [SteamSourceData](/docs/objects#steamsourcedata) | Yes | Price data from the Steam Community Market. |
| `variants` | [`Record<string, Variant>`](/docs/objects#variant) | No | Per-variant price data for items with Doppler / Gamma Doppler phases or Case Hardened tiers. Keyed by display name. |

### Variant

A variant of an item (Doppler / Gamma Doppler phase or Case Hardened tier). `youpin` includes `ask`, `bid`, and `bid_volume` on every Doppler and Gamma Doppler phase, with `ask_volume` on most items.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `market_hash_name` | `string` | Yes | Base item `market_hash_name`. Full variant name: `name`. |
| `name` | `string` | Yes | The variant's full `market_hash_name`, e.g. `★ Karambit \| Doppler (Factory New) \| Phase 1`. |
| `display_name` | `string` | Yes | Human-readable variant label (e.g. `Phase 1`, `Ruby`, `Tier 1`, `Blue Gem`). |
| `version` | `string` | Yes | Allowed: `p1`, `p2`, `p3`, `p4`, `ruby`, `sapphire`, `blackpearl`, `emerald`, `t1`, `t2`, `t3`, `t4`, `singleblue`. Stable variant code. Switch on this in client code. |
| `buff` | [BUFFSourceData](/docs/objects#buffsourcedata) | No | Price data from BUFF. |
| `youpin` | [YoupinSourceData](/docs/objects#youpinsourcedata) | No | Price data from Youpin898. |
| `csfloat` | [CsfloatSourceData](/docs/objects#csfloatsourcedata) | No | Current CSFloat listing and buy-order prices. |
| `skinport` | [SkinportSourceData](/docs/objects#skinportsourcedata) | No | Price data from Skinport, including Skinport-supplied rolling history windows. |
| `c5game` | [C5GameSourceData](/docs/objects#c5gamesourcedata) | No | Price data from C5Game. Ask and bid come from independent collection passes, so timestamps may differ for the same item. |
| `steam` | [SteamSourceData](/docs/objects#steamsourcedata) | No | Price data from the Steam Community Market. |

## Latest Price Source Data

### BUFFSourceData

Price data from BUFF.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `updated_at` | `string (date-time) \| null` | Yes | When BUFF last updated this price |
| `collected_at` | `string (date-time) \| null` | Yes | When cs2.sh fetched this data |
| `ask` | `number \| null` | Yes | Lowest ask price (USD) |
| `ask_volume` | `integer \| null` | Yes | Number of items listed for sale |
| `bid` | `number \| null` | Yes | Highest buy-order price (USD) |
| `bid_volume` | `integer \| null` | Yes | Number of active buy orders |

### YoupinSourceData

Price data from Youpin898.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `updated_at` | `string (date-time) \| null` | Yes | When Youpin last updated this price |
| `collected_at` | `string (date-time) \| null` | Yes | When cs2.sh fetched this data |
| `ask` | `number \| null` | Yes | Lowest ask price (USD) |
| `ask_volume` | `integer \| null` | Yes | Number of items listed for sale |
| `bid` | `number \| null` | Yes | Highest buy-order price (USD) |
| `bid_volume` | `integer \| null` | Yes | Number of active buy orders |

### CsfloatSourceData

Current CSFloat listing and buy-order prices.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `updated_at` | `string (date-time) \| null` | Yes | When CSFloat last updated this price |
| `collected_at` | `string (date-time) \| null` | Yes | When cs2.sh fetched this data |
| `ask` | `number \| null` | Yes | Lowest ask price (USD) |
| `ask_volume` | `integer \| null` | Yes | Number of items listed for sale |
| `bid` | `number \| null` | Yes | Highest buy-order price (USD) |

### SkinportSourceData

Price data from Skinport, including Skinport-supplied rolling history windows.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `updated_at` | `string (date-time) \| null` | Yes | When Skinport last updated this price |
| `collected_at` | `string (date-time) \| null` | Yes | When cs2.sh fetched this data |
| `ask` | `number \| null` | Yes | Lowest ask price (USD) |
| `ask_volume` | `integer \| null` | Yes | Number of items listed for sale |
| `max_ask` | `number \| null` | Yes | Highest listing price (USD) |
| `mean_ask` | `number \| null` | Yes | Average listing price (USD) |
| `median_ask` | `number \| null` | Yes | Median listing price (USD) |
| `24h_history` | [SkinportPriceWindow](/docs/objects#skinportpricewindow) \| `null` | Yes | - |
| `7d_history` | [SkinportPriceWindow](/docs/objects#skinportpricewindow) \| `null` | Yes | - |
| `30d_history` | [SkinportPriceWindow](/docs/objects#skinportpricewindow) \| `null` | Yes | - |
| `90d_history` | [SkinportPriceWindow](/docs/objects#skinportpricewindow) \| `null` | Yes | - |

### SteamSourceData

Price data from the Steam Community Market.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `updated_at` | `string (date-time) \| null` | Yes | When the upstream price was last updated |
| `collected_at` | `string (date-time) \| null` | Yes | When cs2.sh fetched this data |
| `ask` | `number \| null` | Yes | Lowest ask price (USD) |
| `ask_volume` | `integer \| null` | Yes | Number of items listed for sale |
| `bid` | `number \| null` | Yes | Highest buy-order price (USD) |
| `bid_volume` | `integer \| null` | Yes | Number of active buy orders |

### C5GameSourceData

Price data from C5Game. Ask and bid come from independent collection passes, so timestamps may differ for the same item.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `updated_at` | `string (date-time) \| null` | Yes | When C5Game last updated this price |
| `collected_at` | `string (date-time) \| null` | Yes | When cs2.sh fetched this data |
| `ask` | `number \| null` | Yes | Lowest ask price (USD) |
| `ask_volume` | `integer \| null` | Yes | Number of items listed for sale |
| `bid` | `number \| null` | Yes | Highest buy-order price (USD) |

### SkinportPriceWindow

Skinport-supplied rolling price window. Object is `null` when Skinport has no recent sales for the item.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `price` | `number` | Yes | Last sale price (USD) within the window |
| `max_price` | `number` | Yes | Highest sale price (USD) within the window |
| `mean_price` | `number` | Yes | Average sale price (USD) within the window |
| `median_price` | `number` | Yes | Median sale price (USD) within the window |
| `volume` | `integer` | Yes | Number of sales within the window |

## Errors

`503 service_unavailable` means the latest snapshot is not ready. See [Request errors](/docs/using-the-api#request-errors) for errors shared by all endpoints.

## POST /v1/prices/latest

Returns the same latest-price data as GET /v1/prices/latest, filtered to up to 100 requested items.

Most prices update about every 5 minutes, depending on the marketplace. Items with Doppler, Gamma Doppler, or Case Hardened prices can include `variants`.

### Request

`POST https://api.cs2.sh/v1/prices/latest`

**curl**

```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)",
    "★ Karambit | Doppler (Factory New)"
  ]
}'
```

**Python**

```python
import requests

headers = {
    "Authorization": "Bearer <<YOUR_API_KEY>>",
    "Accept-Encoding": "gzip",
    "Content-Type": "application/json",
}

payload = {
    "items": ["USP-S | Printstream (Factory New)", "★ Karambit | Doppler (Factory New)"],
}

response = requests.post(
    "https://api.cs2.sh/v1/prices/latest",
    headers=headers,
    json=payload,
)

response.raise_for_status()
data = response.json()
```

**Node**

```javascript
const headers = {
  "Authorization": "Bearer <<YOUR_API_KEY>>",
  "Accept-Encoding": "gzip",
  "Content-Type": "application/json",
};

const response = await fetch("https://api.cs2.sh/v1/prices/latest", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "items": [
      "USP-S | Printstream (Factory New)",
      "★ Karambit | Doppler (Factory New)"
    ]
  }),
});

if (!response.ok) throw new Error(`HTTP ${response.status}`);
const data = await response.json();
```

**Go**

```go
package main

import (
    "bytes"
    "compress/gzip"
    "encoding/json"
    "fmt"
    "io"
    "net/http"
)

func main() {
    payload := map[string]any{
        "items": []any{
            "USP-S | Printstream (Factory New)",
            "★ Karambit | Doppler (Factory New)",
        },
    }
    body, _ := json.Marshal(payload)
    req, _ := http.NewRequest("POST", "https://api.cs2.sh/v1/prices/latest", bytes.NewReader(body))
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("Authorization", "Bearer <<YOUR_API_KEY>>")
    req.Header.Set("Accept-Encoding", "gzip")

    resp, err := http.DefaultClient.Do(req)
    if err != nil { panic(err) }
    defer resp.Body.Close()

    if resp.StatusCode < 200 || resp.StatusCode >= 300 {
        body, _ := io.ReadAll(resp.Body)
        panic(fmt.Sprintf("HTTP %d: %s", resp.StatusCode, body))
    }

    var reader io.Reader = resp.Body
    if resp.Header.Get("Content-Encoding") == "gzip" {
        gz, err := gzip.NewReader(resp.Body)
        if err != nil { panic(err) }
        defer gz.Close()
        reader = gz
    }

    var data any
    if err := json.NewDecoder(reader).Decode(&data); err != nil { panic(err) }
    fmt.Printf("%#v\n", data)
}
```

**R**

```r
library(httr2)

payload <- list(
  items = list(
    "USP-S | Printstream (Factory New)",
    "★ Karambit | Doppler (Factory New)"
  )
)

resp <- request("https://api.cs2.sh/v1/prices/latest") |>
  req_headers(
    Authorization = "Bearer <<YOUR_API_KEY>>",
    `Accept-Encoding` = "gzip"
  ) |>
  req_body_json(payload) |>
  req_perform()

data <- resp_body_json(resp)
```

### Parameters

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `items` | `string[]` | Yes | List of market_hash_name values (max 100) |

### Response

```json
{
  "response_time": "2026-08-16T02:40:27.537385456Z",
  "currency": "USD",
  "items": {
    "USP-S | Printstream (Factory New)": {
      "market_hash_name": "USP-S | Printstream (Factory New)",
      "buff": {
        "updated_at": "2026-08-16T02:36:51Z",
        "collected_at": "2026-08-16T02:39:08.389Z",
        "ask": 98.72,
        "ask_volume": 509,
        "bid": 97.61,
        "bid_volume": 38
      },
      "youpin": {
        "updated_at": "2026-08-16T02:34:11.218Z",
        "collected_at": "2026-08-16T02:34:19.719Z",
        "ask": 101.61,
        "ask_volume": 540,
        "bid": 99.39,
        "bid_volume": 64
      },
      "csfloat": {
        "updated_at": "2026-08-16T02:39:06.114Z",
        "collected_at": "2026-08-16T02:39:06.156Z",
        "ask": 98.84,
        "ask_volume": 244,
        "bid": 97
      },
      "skinport": {
        "updated_at": "2026-08-16T02:39:10.489Z",
        "collected_at": "2026-08-16T02:39:17.102Z",
        "ask": 106.28,
        "ask_volume": 62,
        "max_ask": 586,
        "mean_ask": 165.9,
        "median_ask": 141.66,
        "24h_history": {
          "price": 106.08,
          "max_price": 106.08,
          "mean_price": 106.08,
          "median_price": 106.08,
          "volume": 1
        },
        "7d_history": {
          "price": 103.44,
          "max_price": 163.45,
          "mean_price": 112.27,
          "median_price": 106.42,
          "volume": 10
        },
        "30d_history": {
          "price": 103.44,
          "max_price": 190.96,
          "mean_price": 118.68,
          "median_price": 115.8,
          "volume": 34
        },
        "90d_history": {
          "price": 98.44,
          "max_price": 214.47,
          "mean_price": 120.23,
          "median_price": 118.11,
          "volume": 139
        }
      },
      "steam": {
        "updated_at": "2026-08-16T02:38:15.395Z",
        "collected_at": "2026-08-16T02:38:15.765Z",
        "ask": 154.58,
        "ask_volume": 64,
        "bid": 148.73,
        "bid_volume": 2847
      },
      "c5game": {
        "updated_at": "2026-08-16T02:39:16.373Z",
        "collected_at": "2026-08-16T02:39:17.181Z",
        "ask": 103.25,
        "ask_volume": 231,
        "bid": 203.82
      }
    },
    "★ Karambit | Doppler (Factory New)": {
      "market_hash_name": "★ Karambit | Doppler (Factory New)",
      "buff": {
        "updated_at": "2026-08-16T02:36:29Z",
        "collected_at": "2026-08-16T02:39:08.389Z",
        "ask": 1320.24,
        "ask_volume": 1592,
        "bid": 1265.35,
        "bid_volume": 73
      },
      "youpin": {
        "updated_at": "2026-08-16T02:39:15.117Z",
        "collected_at": "2026-08-16T02:39:30.793Z",
        "ask": 1275.36,
        "ask_volume": 1654,
        "bid": 1257.94,
        "bid_volume": 24
      },
      "csfloat": {
        "updated_at": "2026-08-16T02:39:06.114Z",
        "collected_at": "2026-08-16T02:39:06.156Z",
        "ask": 1262,
        "ask_volume": 958,
        "bid": null
      },
      "skinport": {
        "updated_at": null,
        "collected_at": null,
        "ask": null,
        "ask_volume": null,
        "max_ask": null,
        "mean_ask": null,
        "median_ask": null,
        "24h_history": null,
        "7d_history": null,
        "30d_history": null,
        "90d_history": null
      },
      "steam": {
        "updated_at": "2026-08-16T02:38:51.747Z",
        "collected_at": "2026-08-16T02:38:52.055Z",
        "ask": 1932.57,
        "ask_volume": 1,
        "bid": 1790.09,
        "bid_volume": 6564
      },
      "c5game": {
        "updated_at": "2026-08-16T02:39:00.4Z",
        "collected_at": "2026-08-16T02:39:01.15Z",
        "ask": 1304.49,
        "ask_volume": 315,
        "bid": 1253.49
      },
      "variants": {
        "Phase 2": {
          "market_hash_name": "★ Karambit | Doppler (Factory New)",
          "name": "★ Karambit | Doppler (Factory New) | Phase 2",
          "display_name": "Phase 2",
          "version": "p2",
          "buff": {
            "updated_at": "2026-08-16T02:36:29Z",
            "collected_at": "2026-08-16T02:39:08.389Z",
            "ask": 1876.52,
            "ask_volume": null,
            "bid": 1802.35,
            "bid_volume": null
          },
          "youpin": {
            "updated_at": "2026-08-16T02:38:00.447Z",
            "collected_at": "2026-08-16T02:38:27.248Z",
            "ask": 1824.06,
            "ask_volume": 445,
            "bid": 1794.93,
            "bid_volume": 39
          },
          "csfloat": {
            "updated_at": "2026-08-16T02:33:30.519Z",
            "collected_at": "2026-08-16T02:33:30.541Z",
            "ask": 1851.86,
            "ask_volume": null,
            "bid": 1800
          },
          "c5game": {
            "updated_at": "2026-08-16T02:35:44.486Z",
            "collected_at": "2026-08-16T02:36:52.69Z",
            "ask": 1868.55,
            "ask_volume": 67,
            "bid": 1794.93
          }
        },
        "Ruby": {
          "market_hash_name": "★ Karambit | Doppler (Factory New)",
          "name": "★ Karambit | Doppler (Factory New) | Ruby",
          "display_name": "Ruby",
          "version": "ruby",
          "buff": {
            "updated_at": "2026-08-16T02:36:29Z",
            "collected_at": "2026-08-16T02:39:08.389Z",
            "ask": 7713.76,
            "ask_volume": null,
            "bid": 7053.64,
            "bid_volume": null
          },
          "youpin": {
            "updated_at": "2026-08-16T02:38:00.447Z",
            "collected_at": "2026-08-16T02:38:27.248Z",
            "ask": 7680.03,
            "ask_volume": 69,
            "bid": 7250.93,
            "bid_volume": 36
          },
          "csfloat": {
            "updated_at": "2026-08-16T02:37:08.797Z",
            "collected_at": "2026-08-16T02:37:37.562Z",
            "ask": 7723,
            "ask_volume": null,
            "bid": 7220
          },
          "c5game": {
            "updated_at": "2026-08-16T02:35:45.934Z",
            "collected_at": "2026-08-16T02:36:52.69Z",
            "ask": 8156.36,
            "ask_volume": 12,
            "bid": 6230.34
          }
        }
      }
    }
  }
}
```

### Response fields

[LatestPricesPostResponse](/docs/objects#latestpricespostresponse) fields:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `response_time` | `string (date-time)` | Yes | When the response was generated |
| `currency` | `string` | Yes | Currency code (always `USD`) |
| `items` | [`Record<string, Item>`](/docs/objects#item) | Yes | Map of `market_hash_name` to item price data, filtered to the requested items. |
| `errors` | [ItemError[]](/docs/objects#itemerror) | No | Per-item failures alongside successful results (partial success). |

### Errors

`404 not_found` means none of the requested valid items are present in the latest snapshot. `503 service_unavailable` means the snapshot is not ready.

When only some items fail, the endpoint returns `200` with the successful items and an `errors[]` entry for each failure. Possible item codes are `unknown_item`, `invalid_format`, and `not_in_cache`. See [Partial success](/docs/using-the-api#partial-success) and [Request errors](/docs/using-the-api#request-errors).
