# How to Compare StatTrak and Normal CS2 Prices

> Use `GET /v1/schema` to resolve a normal skin and its valid StatTrak counterpart at the same wear, then compare their current source prices from `GET /v1/prices/latest`.

The `StatTrak™ ` prefix is part of the exact `market_hash_name`. Constructing a counterpart by text alone can produce a name for a combination that does not exist.

## Match like-for-like catalog rows

Schema records include `base_name`, `weapon`, `finish`, `wear`, `float_range`, `stattrak`, `has_stattrak`, `souvenir`, and rarity. Match the same finish, exterior, Souvenir state, and variant identity while changing only StatTrak status.

For Doppler, Gamma Doppler, or Case Hardened, match the same phase or tier. A Phase 2 StatTrak premium should compare with normal Phase 2, not a base row that combines variant prices.

## Calculate the current premium

For acquisition premium, compare positive `ask` values from the same marketplace or use a clearly labeled lowest-cash-source rule for each item. For an immediate-sale premium, compare `bid` values where both rows and both sources support them.

The percentage premium is the StatTrak price divided by the normal price minus one. Keep the source, side, `collected_at`, and available volume with each result. Same-source comparisons control for marketplace differences; cross-source minima can select a different source for each item.

## Applicable endpoints

| Endpoint | Returns | Plans |
| --- | --- | --- |
| `GET /v1/schema` | Valid normal and StatTrak catalog identities | All plans |
| `GET /v1/prices/latest` | Current asks and bids across six sources | All plans |

## Premium caveats

- Wear must match exactly. Different exteriors and float distributions can dominate the apparent StatTrak premium.
- A listing floor is one observed ask, while a bid is an immediate-sale quote. Do not mix the two sides in one premium.
- Skinport cannot support bid comparisons. CSFloat and C5Game bids have no bid-volume field.
- Missing pairs should remain missing. Falling back from a variant to its base item changes the item being compared.

Use [current item price fields](/resources/how-to-get-current-cs2-item-prices) to choose a consistent source and side.
