# How to Get the Complete CS2 Item Schema

> `GET /v1/schema` returns the complete cs2.sh CS2 item catalog, keyed by exact
> `market_hash_name`, with metadata, wears, float ranges, variants,
> marketplace IDs, collections, containers, and images.

The catalog is designed for cs2.sh market workflows. It provides the exact
names accepted by price endpoints rather than requiring clients to reconstruct
stars, wear suffixes, StatTrak, Souvenir, or variant labels.

## What the CS2 item schema contains

The schema has about 47,500 items and about 110 collections. Its top-level
objects include:

| Object | Coverage |
| --- | --- |
| `items` | Catalog records keyed by exact `market_hash_name` |
| `collections` | Collection metadata keyed by collection name |
| `rarities` | Stable rarity keys, labels, tiers, and colors |
| `counts` | Current totals, including counts by category |

Item fields include `category`, `image`, `is_tradable`, `rarity`,
`collections`, `containers`, marketplace `ids`, `def_index`, `paint_index`,
`weapon`, `finish`, `wears`, `float_range`, StatTrak and Souvenir flags, and
variant relationships. Fields that do not apply are omitted.

Marketplace `ids` cover BUFF, Youpin, and C5Game where known. A missing ID does
not make the canonical item invalid.

Supported Doppler, Gamma Doppler, and Case Hardened base items list their
children under `variants`. Variant rows also appear in `items` and link back to
their base through `variant`. Each phase or tier has its own full
`market_hash_name`, image, and paint index where applicable.

## Use and cache the catalog

Fetch the schema with API authorization and gzip, then use the top-level item
key unchanged in current and history requests. The
[current-price guide](/resources/how-to-get-current-cs2-item-prices) covers the
matching price shape.

`schema_version` identifies the response contract. `generation_id` identifies
the immutable catalog generation, and `generated_at` records when it was
built. Successful responses also provide an ETag and one-hour public cache
headers.

Send `If-None-Match` with the last ETag. An unchanged generation returns
`304 Not Modified`; a changed catalog returns a new complete generation. The
automatic pipeline checks Valve manifests every 30 minutes and publishes only
when semantic inputs change.

## Applicable endpoint

| Endpoint | Returns | Plans |
| --- | --- | --- |
| `GET /v1/schema` | Full market-oriented CS2 item catalog | All plans |

## Schema boundaries

- This catalog is not Valve's raw game schema. It is a compact market catalog
  aligned with cs2.sh item and variant identities.
- Doppler and Gamma Doppler base rows can omit `paint_index`; each phase row
  carries its own paint index.
- `steam_image` is optional, while the cs2.sh-owned `image` is required for
  every item and nested variant.
- About 47,500 is an approximate count. Use the response `counts` and
  generation fields instead of hard-coding a catalog size.
