BUFF sale history is now available - POST /v1/archive/buff returns sale prices and daily total supply since September 2024.

GET /v1/prices/latest

This is our main latest price endpoint! Returns the latest prices for all items across supported marketplaces (BUFF, Youpin, CSFloat, Skinport, Steam, and C5Game).

Doppler, Gamma Doppler, and Case Hardened variants are supported on all marketplaces. Almost all prices update about every 5 minutes (or less), depending on the marketplace. Every source object includes its own updated_at and collected_at timestamps.

Access#

Available on all plans.

Supported sources#

SourceFields
buffask, bid, ask_volume, bid_volume
youpinask, bid, ask_volume, bid_volume
csfloatask, bid, ask_volume
skinportask, ask_volume, max_ask, mean_ask, median_ask, 24h_history, 7d_history, 30d_history, 90d_history
steamask, bid, ask_volume, bid_volume
c5gameask, bid, ask_volume

Items with Doppler, Gamma Doppler, or Case Hardened prices can include variants; see Variants.

Query parameters#

ParameterDescription
sourcesComma-separated sources to return, e.g. ?sources=buff,youpin. Defaults to all sources.
currencyCurrency for every price, e.g. ?currency=CNY. Defaults to USD; see Currency.

Request#

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

Response#

{
  "response_time": "2026-08-23T21:59:56.831728619Z",
  "currency": "USD",
  "items": {
    "USP-S | Printstream (Factory New)": {
      "market_hash_name": "USP-S | Printstream (Factory New)",
      "buff": {
        "updated_at": "2026-08-23T21:56:49Z",
        "collected_at": "2026-08-23T21:59:10.862Z",
        "ask": 101.95,
        "ask_volume": 491,
        "bid": 97.46,
        "bid_volume": 50
      },
      "youpin": {
        "updated_at": "2026-08-23T21:58:45.755Z",
        "collected_at": "2026-08-23T21:59:14.764Z",
        "ask": 98.5,
        "ask_volume": 510,
        "bid": 97.01,
        "bid_volume": 67
      },
      "csfloat": {
        "updated_at": "2026-08-23T21:59:27.65Z",
        "collected_at": "2026-08-23T21:59:27.697Z",
        "ask": 95,
        "ask_volume": 241,
        "bid": 92.6
      },
      "skinport": {
        "updated_at": "2026-08-23T21:59:10.493Z",
        "collected_at": "2026-08-23T21:59:18.889Z",
        "ask": 105.55,
        "ask_volume": 61,
        "max_ask": 590.65,
        "mean_ask": 166.33,
        "median_ask": 142.99,
        "24h_history": {
          "price": 105.06,
          "max_price": 127.24,
          "mean_price": 116.15,
          "median_price": 116.15,
          "volume": 2
        },
        "7d_history": {
          "price": 100.34,
          "max_price": 317.2,
          "mean_price": 127.22,
          "median_price": 105.84,
          "volume": 11
        },
        "30d_history": {
          "price": 100.34,
          "max_price": 317.2,
          "mean_price": 121.88,
          "median_price": 111.06,
          "volume": 36
        },
        "90d_history": {
          "price": 99.22,
          "max_price": 317.2,
          "mean_price": 121.33,
          "median_price": 117.56,
          "volume": 144
        }
      },
      "steam": {
        "updated_at": "2026-08-23T21:56:50.48Z",
        "collected_at": "2026-08-23T21:57:48.359Z",
        "ask": 144.99,
        "ask_volume": 75,
        "bid": 143.09,
        "bid_volume": 2537
      },
      "c5game": {
        "updated_at": "2026-08-23T21:59:19.245Z",
        "collected_at": "2026-08-23T21:59:20.273Z",
        "ask": 102.41,
        "ask_volume": 213,
        "bid": 173.93
      }
    }
  }
}

Response fields#

LatestPricesGetResponse fields:

FieldTypeRequiredDescription
response_timestring (date-time)YesWhen the response was generated.
currencystringYesCurrency code for every price in the response. Matches the requested currency; defaults to USD.
itemsRecord<string, Item>YesMap of market_hash_name to item price data.

Item data#

FieldDescription
items.<name>.<source>Latest ask/bid prices and volumes on that marketplace, with updated_at and collected_at.
items.<name>.variantsThe 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.
  • With sources, only the selected sources are returned, and items with no data in them are omitted.

Full schemas: Item, Variant, SkinportPriceWindow, and the per-source types under Latest Price Source Data.

Errors#

400 validation_error means an unknown or repeated query parameter, an invalid source, or an unsupported currency. 503 service_unavailable means the latest snapshot is not ready. See 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. sources and currency work the same as on GET, sent in the JSON body.

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

Request#

POSTapi.cs2.sh/v1/prices/latest
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)"
  ],
  "sources": [
    "buff",
    "youpin",
    "csfloat"
  ],
  "currency": "USD"
}'

Parameters#

FieldTypeRequiredDescription
itemsstring[]YesList of market_hash_name values (max 100).
sourcesstring[]NoReturn only these sources. Defaults to all sources.
currencystringNoDefault: USD. Allowed: AUD, CAD, CHF, CNY, EUR, GBP, JPY, NZD, SGD, USD. Currency for every price in the response.

Response#

{
  "response_time": "2026-09-22T23:22:27.021330934Z",
  "currency": "USD",
  "items": {
    "USP-S | Printstream (Factory New)": {
      "market_hash_name": "USP-S | Printstream (Factory New)",
      "buff": {
        "updated_at": "2026-09-22T23:18:50Z",
        "collected_at": "2026-09-22T23:21:09.233Z",
        "ask": 90.71,
        "ask_volume": 387,
        "bid": 90.12,
        "bid_volume": 43
      },
      "youpin": {
        "updated_at": "2026-09-22T23:19:34.492Z",
        "collected_at": "2026-09-22T23:19:59.576Z",
        "ask": 93.84,
        "ask_volume": 479,
        "bid": 92.2,
        "bid_volume": 46
      },
      "csfloat": {
        "updated_at": "2026-09-22T23:21:18.723Z",
        "collected_at": "2026-09-22T23:21:18.77Z",
        "ask": 93.1,
        "ask_volume": 239,
        "bid": 89
      }
    },
    "★ Karambit | Doppler (Factory New)": {
      "market_hash_name": "★ Karambit | Doppler (Factory New)",
      "buff": {
        "updated_at": "2026-09-22T23:18:28Z",
        "collected_at": "2026-09-22T23:21:09.233Z",
        "ask": 1226.38,
        "ask_volume": 1487,
        "bid": 1191.63,
        "bid_volume": 66
      },
      "youpin": {
        "updated_at": "2026-09-22T23:20:33.469Z",
        "collected_at": "2026-09-22T23:20:49.558Z",
        "ask": 1210.32,
        "ask_volume": 1725,
        "bid": 1188.65,
        "bid_volume": 25
      },
      "csfloat": {
        "updated_at": "2026-09-22T23:21:18.723Z",
        "collected_at": "2026-09-22T23:21:18.77Z",
        "ask": 1213.55,
        "ask_volume": 1059,
        "bid": 1160
      },
      "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-09-22T23:18:28Z",
            "collected_at": "2026-09-22T23:21:09.233Z",
            "ask": 1765.03,
            "ask_volume": null,
            "bid": 1689.13,
            "bid_volume": null
          },
          "youpin": {
            "updated_at": "2026-09-22T23:20:10.56Z",
            "collected_at": "2026-09-22T23:20:30.874Z",
            "ask": 1759.08,
            "ask_volume": null,
            "bid": 1717.43,
            "bid_volume": 39
          },
          "csfloat": {
            "updated_at": "2026-09-22T23:19:09.13Z",
            "collected_at": "2026-09-22T23:19:26.276Z",
            "ask": 1750,
            "ask_volume": null,
            "bid": 1700
          }
        },
        "Ruby": {
          "market_hash_name": "★ Karambit | Doppler (Factory New)",
          "name": "★ Karambit | Doppler (Factory New) | Ruby",
          "display_name": "Ruby",
          "version": "ruby",
          "buff": {
            "updated_at": "2026-09-22T23:18:28Z",
            "collected_at": "2026-09-22T23:21:09.233Z",
            "ask": 7497.5,
            "ask_volume": null,
            "bid": 5660.24,
            "bid_volume": null
          },
          "youpin": {
            "updated_at": "2026-09-22T23:21:04.858Z",
            "collected_at": "2026-09-22T23:21:30.542Z",
            "ask": 7409.35,
            "ask_volume": null,
            "bid": 7152.75,
            "bid_volume": 50
          },
          "csfloat": {
            "updated_at": "2026-09-22T23:21:08.307Z",
            "collected_at": "2026-09-22T23:21:30.912Z",
            "ask": 7222.22,
            "ask_volume": null,
            "bid": 7030
          }
        }
      }
    }
  }
}

Response fields#

LatestPricesPostResponse fields:

FieldTypeRequiredDescription
response_timestring (date-time)YesWhen the response was generated.
currencystringYesCurrency code for every price in the response. Matches the requested currency; defaults to USD.
itemsRecord<string, Item>YesMap of market_hash_name to item price data, filtered to the requested items.
errorsItemError[]NoPer-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 and Request errors.