Skip to main content
Before you start building with CS2Cap, it helps to understand a few core concepts that apply across every endpoint. This page explains the data model, clarifies terminology you’ll encounter in API responses, and highlights the mistakes that most commonly trip up new integrations.

Terminology

Data semantics

Prices use minor units

All price fields are returned as integers in the smallest unit of the requested currency — not decimal amounts.
  • For USD: the unit is cents. A value of 2550 means $25.50.
  • For EUR: the unit is euro cents.
This applies consistently to lowest_ask, highest_bid, price, and any other monetary field in the API.
Do not treat price integers as full currency amounts. Divide by 100 to convert to the standard decimal representation (e.g., 2550 / 100 = 25.50).

Prices and bids are cached data

/prices and /bids return cached market data that is refreshed every 5–10 minutes. They do not query marketplaces in real time per request.
  • Responses are fast and consistent.
  • If the data source is temporarily unavailable, the API returns 503 with PRICES_INDEX_UNAVAILABLE or BIDS_INDEX_UNAVAILABLE. Retry after a short delay — there is no alternative fallback path for these endpoints.
Treat PRICES_INDEX_UNAVAILABLE and BIDS_INDEX_UNAVAILABLE as transient errors and implement exponential backoff with retry logic.

Provider keys, not display names

When a request parameter expects a provider, use the provider key — the lowercase machine identifier. Do not use display names or human-readable labels in API parameters. You can query the full list from GET /providers or visit the Supported Marketplaces page.

Item identity

Most item lookup endpoints accept two ways to identify an item:
  • item_id — a stable numeric identifier assigned by CS2Cap. Use this for production integrations.
  • market_hash_name — the human-readable Steam item name (e.g., AK-47 | Redline (Field-Tested)). Use this for initial lookups or debugging.
Once your application has resolved an item_id for an item, prefer using it in subsequent requests. market_hash_name lookups are convenient but slightly less precise for items that have phase or wear variants.

Optional item attributes

Some metadata fields only apply to certain items. The following fields may be null when they are not relevant to a particular item:
  • phase — only present on Doppler and Gamma Doppler knives
  • wear_name — only present on items with float-based wear conditions
  • min_float / max_float — only present on floatable items
A null value means the field does not apply to that item — it is not an error.

Common pitfalls

Price fields like lowest_ask and highest_bid are in minor units (e.g., cents for USD). A value of 5000 means 50.00,not50.00, not 5000. Always divide by 100 before displaying prices to users.
The providers parameter expects machine-readable keys like steam or csfloat, not display names like “Steam” or “CS.Float”. Passing a display name will result in no data being returned for that provider, or a validation error.
The phase field is only populated for Doppler and Gamma Doppler knives. For all other items it is null. Do not use null to infer that an item is a knife — check the item_id or category metadata instead.
A 503 on /prices or /bids means the data source is temporarily unavailable, not that the item doesn’t exist. Retry after a short delay rather than switching to a different endpoint. Implement retry logic and surface the outage to your users if it persists.
Last modified on July 12, 2026