DevelopersAPI operational
openapi.jsonGet listed
SkinCash Developer Platform

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.

v1No authJSON + gzipCORS open
skincash — curl
$ curl -s --compressed https://api.skincash.gg/v1/prices
# 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

Base URL
https://api.skincash.gg/v1
Auth
Public · optional key
Format
JSON · gzip · CORS-open
Currency
USD (2-decimal)
Updates
Every ~5 minutes
Rate limit
30–300 / min / IP
01

Quickstart

Fetch the entire live catalog in one request. Send Accept-Encoding: gzip (curl’s --compressed) — the full feed is a few MB uncompressed.

Request
curl -s --compressed https://api.skincash.gg/v1/prices

Your language choice sticks across the whole page.

02

Authentication

None needed.

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:

Public by defaultGET onlyCORS open
Optional: partner API keyhigher limits

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):

Request
curl -s --compressed \
  -H "Authorization: Bearer YOUR_API_KEY" \
  https://api.skincash.gg/v1/prices

Request a key at [email protected]. Keep it server-side; treat it like a password.

03

Endpoints

GET/api/v1/prices#

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 ↑

Request
curl -s --compressed https://api.skincash.gg/v1/prices
Response · 200 OK
{
  "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"
    }
  ]
}
GET/api/v1/prices/{market_hash_name}#

One item by its exact Steam name (URL-encoded). Returns 404 if not currently on sale.

Path parammarket_hash_namestring · requiredExact Steam market_hash_name, URL-encoded.
Request
curl -s --compressed \
  "https://api.skincash.gg/v1/prices/AK-47%20%7C%20Redline%20(Field-Tested)"
Response · 200 OK
{
  "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"
}
GET/api/v1/catalog#

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.

Request
curl -s --compressed https://api.skincash.gg/v1/catalog
Response · 200 OK
{
  "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"
    }
  ]
}
GET/api/v1/openapi.json#

Machine-readable OpenAPI 3.1 specification for the whole API — the first stop for code generators, API clients and LLMs.

Request
curl -s https://api.skincash.gg/v1/openapi.json
04

Response schema

FieldTypeDescription
market_hash_namestringExact Steam market_hash_name — the canonical join key.
pricenumberLowest buy price in USD dollars, 2-decimal (e.g. 14.50).
quantityintegerUnits available at or above that price (always ≥ 1).
item_pagestring (url)Canonical SkinCash item page for the skin.

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.

05

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.

200 + ETagIf-None-Match304 · no body
Request
# 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 refreshed
06

Rate limits

30/ min / IP

Full dumps — /prices, /catalog

300/ min / IP

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.

07

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.

Additive-onlyNo silent breakageNew versions announced
08

Errors

Errors always share one consistent body shape:

Response · 4xx
{
  "success": false,
  "error": {
    "error_code": "NOT_FOUND",
    "message": "No live price for this item."
  }
}
Statuserror_codeWhen
400BAD_NAMEmarket_hash_name is empty or longer than 200 characters.
404NOT_FOUNDItem is not currently on sale.
429RATE_LIMITEDPer-minute limit exceeded.

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]
© 2026 SkinCash · Price data is provided as-is for comparison and informational use. Attribution appreciated.Reading this as an LLM? Start at /llms.txt or openapi.json