# How to Get Skinport Listing Volume and Sale Statistics

> The Skinport object on `GET /v1/prices/latest` combines current `ask_volume` with rolling 24h, 7d, 30d, and 90d completed-sale statistics.

Listing inventory and sale volume are different populations. `ask_volume` counts items currently offered for sale, while a window's `volume` counts completed sales inside that moving period.

## Available listing and sale fields

Current Skinport listing data includes `ask`, `ask_volume`, `max_ask`, `mean_ask`, and `median_ask`.

Each `24h_history`, `7d_history`, `30d_history`, and `90d_history` object can include:

| Field | Meaning |
| --- | --- |
| `price` | Last sale in the window |
| `max_price` | Highest sale price |
| `mean_price` | Arithmetic mean sale price |
| `median_price` | Median sale price |
| `volume` | Completed-sale count |

A window is null when Skinport has no recent sale summary for the item.

## Read inventory beside sales

Fetch `GET /v1/prices/latest`, locate the exact `market_hash_name`, and read its `skinport` object. Report `ask_volume` as current listings. Choose one rolling window whose horizon matches the analysis and report its `volume` and price statistic.

Dividing a window's sale count by its number of days can describe average observed sales per day. It is not an estimated sale time. For that, `GET /v1/liquidity/items` returns a daily sale-data-based `estimated_sale_time` under a different model.

Use `POST /v1/prices/history` when a fixed-bucket listing count and ask series is required. It does not convert the current rolling sale windows into history.

## Applicable endpoints

| Endpoint | Returns | Plans |
| --- | --- | --- |
| `GET /v1/prices/latest` | Current listings and rolling sale windows | All plans |
| `POST /v1/prices/history` | Ask OHLC and last listing count per bucket | Scale, Enterprise |
| `GET /v1/liquidity/items` | Liquidity bucket and estimated sale time | Scale, Enterprise |

## Window rules

- The four sale windows overlap. Never sum their `volume` values.
- A null window means no returned summary. It does not make the current ask or listing count invalid.
- `ask_volume` divided by historical sales per day is an inventory multiple, not a forecast.
- Mean and maximum sale prices can be moved by unusual float, seed, or sticker premiums. Keep `volume` and median beside them.
- Repeating the request later produces newly shifted windows, not the next point in a fixed series.

The [Skinport source schema](/docs/api-reference/prices-latest#latest-price-source-data) lists all current and window fields.
