Developer API
A free, public price feed for CS2 (CS:GO) skins on SkinCash. Built for price-comparison sites, aggregators and browser extensions. No API key, no sign-up — just a simple GET request.
# sample response — press Run to hit the live API
{
"currency": "USD",
"updated_at": "2026-08-05T12:00:00.000Z",
"count": 25812,
"items": [
{
"market_hash_name": "AK-47 | Redline (Field-Tested)",
"price": 14.50,
"quantity": 12,
"item_page": "https://skincash.gg/en/market/item/ak-47-redline-field-tested"
}
], …
}At a glance
Quickstart
Fetch the entire live catalog in one request. Send Accept-Encoding: gzip (curl’s --compressed) — the full feed is a few MB uncompressed.
curl -s --compressed https://api.skincash.gg/v1/pricesYour language choice sticks across the whole page.
Authentication
The API is public — every endpoint is a plain GET, no sign-up, no OAuth. CORS is open, so you can call it straight from a browser. Just send the request:
Anonymous access is rate-limited per IP (see Rate limits). If you run an aggregator or extension and need more, we issue a free partner key that raises your limit — no other behaviour changes. Send it as an Authorization: Bearer header (or X-API-Key):
curl -s --compressed \
-H "Authorization: Bearer YOUR_API_KEY" \
https://api.skincash.gg/v1/pricesRequest a key at [email protected]. Keep it server-side; treat it like a password.
Endpoints
The full catalog — every item on sale, lowest buy price + live stock + deep link, sorted most-expensive first. Supports gzip and conditional requests. Try it live ↑
curl -s --compressed https://api.skincash.gg/v1/prices{
"currency": "USD",
"updated_at": "2026-08-05T12:00:00.000Z",
"count": 25812,
"items": [
{
"market_hash_name": "AK-47 | Redline (Field-Tested)",
"price": 14.50,
"quantity": 12,
"item_page": "https://skincash.gg/en/market/item/ak-47-redline-field-tested"
}
]
}One item by its exact Steam name (URL-encoded). Returns 404 if not currently on sale.
market_hash_namestring · requiredExact Steam market_hash_name, URL-encoded.curl -s --compressed \
"https://api.skincash.gg/v1/prices/AK-47%20%7C%20Redline%20(Field-Tested)"{
"currency": "USD",
"updated_at": "2026-08-05T12:00:00.000Z",
"market_hash_name": "AK-47 | Redline (Field-Tested)",
"price": 14.50,
"quantity": 12,
"item_page": "https://skincash.gg/en/market/item/ak-47-redline-field-tested"
}Item metadata — image, type, rarity for every item on sale (no prices). Lets you render and join SkinCash listings without scraping. Same 5-min cache + conditional GET as /prices.
curl -s --compressed https://api.skincash.gg/v1/catalog{
"updated_at": "2026-08-05T12:00:00.000Z",
"count": 25812,
"items": [
{
"market_hash_name": "AK-47 | Redline (Field-Tested)",
"image": "https://cdn.skincash.gg/sc/economy/image/class/730/…",
"type": "Rifle",
"rarity": "Classified"
}
]
}Search items by (partial) name → buy price + canonical deep link. A compare-and-click-through surface for price-comparison tools and browser extensions. Exact/prefix matches rank first.
qstring · required2–200 chars, case-insensitive.limitinteger · optional1–100, default 50.curl -s "https://api.skincash.gg/v1/search?q=redline&limit=5"{
"currency": "USD",
"updated_at": "2026-08-05T12:00:00.000Z",
"query": "redline",
"count": 1,
"items": [
{
"market_hash_name": "AK-47 | Redline (Field-Tested)",
"price": 14.50,
"quantity": 12,
"item_page": "https://skincash.gg/en/market/item/ak-47-redline-field-tested"
}
]
}Machine-readable OpenAPI 3.1 specification for the whole API — the first stop for code generators, API clients and LLMs.
curl -s https://api.skincash.gg/v1/openapi.jsonResponse schema
Feed-level updated_at is the freshness of every row: all prices refresh together each cycle (~5 min). Prices are the buy price a customer pays.
Efficient polling (ETag / 304)
Every response carries an ETag and Last-Modified. Send them back on your next poll to get a cheap 304 Not Modified (no body) when nothing changed — poll as often as you like without re-downloading the catalog.
# Save the ETag from the first response, then:
curl -s -o /dev/null -w "%{http_code}\n" \
-H 'If-None-Match: "your-saved-etag"' \
https://api.skincash.gg/v1/prices
# -> 304 when unchanged, 200 (with body) when refreshedRate limits
Full dumps — /prices, /catalog
Light reads — /prices/{name}, /search
Limits are per-IP and split by payload weight. The feed is cached, so with conditional requests a 5-minute poll never comes close. Exceeding a limit returns 429 RATE_LIMITED with a Retry-After header. Need higher limits for a high-traffic integration? Ask us about a partner key.
Versioning & stability
The API is versioned in the path (/v1). Within a version we only add fields — an existing field is never renamed, removed or retyped, so your parser won’t break. Breaking changes ship as a new version, with notice.
Errors
Errors always share one consistent body shape:
{
"success": false,
"error": {
"error_code": "NOT_FOUND",
"message": "No live price for this item."
}
}Run an aggregator or extension?
List SkinCash as a source — the feed above is ready to consume today. We’re happy to match your ingestion spec, add fields, or set up a partner arrangement. Reach out and we’ll move fast.
[email protected]