Aggregated Min Prices
Batch lookup of the lowest ask per market for up to 100 items at once. Pass market hash names (or canonical item ids); each item comes back with its minimum price on every requested market. Response is snake_case. Prices are integer USD cents.
A batch helper: hand it up to 100 market hash names (or canonical item ids) and get each item's lowest ask on every requested market in one round-trip, instead of calling /v1/nbbo per item. Response is snake_case. Items with no data (or names that aren't tracked) are silently dropped. There's no notFound[], so diff the returned items against what you asked for. You only get a 400 when none of the requested items resolve.
offers is the total listings tracked for that item on that market (the quote size), not a count conditioned on price; is_stale flags a quote past its freshness window (still returned as a fallback). The bid-side mirror, max-orders, is the same shape with orders[] instead of prices[].
Parameters
ids.marketHashNames.skinport,csfloat,buff163.Response fields
Nested and shared shapes link to the API Objects reference.
Errors
marketHashNames nor ids supplied, more than 100 items, or none of the requested items resolve to a tracked item.Authorization header, unsupported scheme, or a key that is unknown, inactive, expired, or revoked.Companion endpoints
The bid-side mirror: highest buy order per market for the same ids. Same envelope, but each item carries orders[] (with price = highest bid, plus a total_quantity) instead of prices[].
Guides using this endpoint
export SKINPRICER_API_KEY="sp_live_•••"
curl -G "https://pricing.skinpricer.com/v1/aggregations/min-prices" \
--data-urlencode "marketHashNames=AK-47 | Redline (Field-Tested),AWP | Asiimov (Field-Tested)" \
-H "Authorization: ApiKey $SKINPRICER_API_KEY"// npm i @skinpricer/sdk
import { SkinpricerClient } from "@skinpricer/sdk";
const client = new SkinpricerClient({
apiKey: process.env.SKINPRICER_API_KEY!,
authScheme: "ApiKey",
});
const { items } = await client.aggregations.minPrices({
marketHashNames: ["AK-47 | Redline (Field-Tested)", "AWP | Asiimov (Field-Tested)"],
});
for (const it of items) console.log(it.market_hash_name, it.prices.length, "markets");import os
import requests
res = requests.get(
"https://pricing.skinpricer.com/v1/aggregations/min-prices",
params={"marketHashNames": "AK-47 | Redline (Field-Tested),AWP | Asiimov (Field-Tested)"},
headers={"Authorization": f"ApiKey {os.environ['SKINPRICER_API_KEY']}"},
timeout=10,
)
res.raise_for_status()
print(res.json())Authenticated endpoint: call it with your API key from your own client (see the code sample).
{
"items": [
{
"canonical_item_id": "cmlofca920lka01yozajhixt3",
"market_hash_name": "Glock-18 | Water Elemental (Factory New)",
"prices": [
{
"market_name": "csfloat",
"offers": 132,
"price": 6500,
"updated_at": "2026-06-23T21:52:27.427Z",
"is_stale": false,
"ingested_at": "2026-06-23T21:55:56.923Z",
"ingest_latency_ms": 209496
},
{
"market_name": "skinport",
"offers": 40,
"price": 6516,
"updated_at": "2026-06-23T21:51:53.531Z",
"is_stale": false,
"ingested_at": "2026-06-23T21:54:30.775Z",
"ingest_latency_ms": 157244
}
]
}
]
}