skinstrack logo

API guide

CS2 Skin Price API: Complete Guide to Real-Time Market Data Integration

Every CS2 price tool you have ever used was stitched together from scrapers. This guide shows how to replace that pipeline with one API call that returns normalized prices from 27 marketplaces, with code in curl, JavaScript and Python.

Updated /9 min read/API reference inside

Why a Unified Price API Beats Scraping

Scraping 27 marketplaces sounds like a fun weekend project until the third Buff163 layout change in a month breaks production. A unified API removes that whole class of work.

One Response, Every Market

A single request returns prices from Buff163, CSFloat, Skinport, DMarket, WaxPeer, Steam and 21 more marketplaces. No scrapers to maintain, no per-provider rate limit juggling.

Normalized Schema

Every marketplace returns the same shape: provider, price, count, volume, updated_at. You write integration logic once and it works against all of them.

Production-Ready From Day One

No HTML parsing, no flaky session cookies, no IP bans. Authentication is a single header. The same endpoint that powers Skinstrack itself is what your code calls.

Cheaper Than Building It Yourself

Building and maintaining 27 scrapers costs more than any API tier on /api-pricing. You stop paying engineering time and start paying for data.

What the Skinstrack API Returns

27 Marketplaces

Steam, Buff163, CSFloat, Skinport, DMarket, WaxPeer, Gamerpay, CSGOEmpire, BitSkins and 18 more, all reachable through one endpoint.

Liquidity Score Built In

Every item ships with a 0-100 liquidity score. Useful for filtering out items that will be hard to sell, especially when building bots or alerts.

Time-Window Averages

Pass avg=true and median=true to receive 7d, 14d, 30d, 60d and 90d average and median price stats inline with the live offers.

Getting Started in Four Steps

1

Pick a tier and grab your key

The Free tier gives you 50 Steam-only requests per month, which is enough to evaluate the response shape. The Standard and Growth tiers unlock the full /paid endpoints across all 27 marketplaces.

2

Make your first call

Pass your key as X-API-KEY. The base URL is https://api.skinstrack.com/v1. Endpoints accept either the official market hash name or the URL-friendly slug.

3

Iterate on the response

Every offer in prices is one marketplace listing. Sort by price for the cheapest offer, sort by volume for liquidity, or filter by provider when you only care about a subset.

4

Move from polling to alerts

Once your prototype works, replace polling with price alerts. You set a target price per item once and Skinstrack pushes when a marketplace crosses it. No missed windows.

Grab your key on the API pricing page and continue with the first call below.

Your First Call: Single Item Lookup

The simplest endpoint is GET /paid/item/{itemName}. Pass the market hash name URL-encoded, and you get back the item plus every active marketplace offer.

curl -H "X-API-KEY: $SKINSTRACK_KEY" \
  "https://api.skinstrack.com/v1/paid/item/AK-47%20%7C%20Redline%20(Field-Tested)"

Full request and response details live in the API docs.

Reading the Response

Every response is one object per item with a prices array. Each element is a single marketplace offer.

Example response
{
  "market_hash_name": "AK-47 | Redline (Field-Tested)",
  "slug": "ak-47-redline-field-tested",
  "wear_name": "Field-Tested",
  "rarity_name": "Classified",
  "liquidity": 85,
  "quantity": 15000,
  "prices": [
    { "provider": "csfloat",  "price": 12.50, "count": 150, "volume": 500, "updated_at": "..." },
    { "provider": "buff",     "price": 11.92, "count": 482, "volume": 920, "updated_at": "..." },
    { "provider": "skinport", "price": 13.10, "count":  44, "volume": 110, "updated_at": "..." }
  ]
}

liquidity

A 0-100 score describing how easily the item trades. Filter on this before showing opportunities to users or buying inventory.

prices[].count

Number of listings available at the lowest price on that marketplace. A high count means the price is stable; a low count means it can disappear in seconds.

prices[].volume

Recent trading volume for that marketplace. Use it to weight which markets to trust when prices disagree.

prices[].updated_at

Per-offer ISO timestamp. Always check it before acting on a price, especially for low-liquidity items where stale data is more common.

Bulk Fetch With Filters

When you need many items at once, use GET /paid/items. Filter by provider, by market hash names, and opt into 7d/14d/30d/60d/90d average and median stats.

curl -H "X-API-KEY: $SKINSTRACK_KEY" \
  "https://api.skinstrack.com/v1/paid/items?providers=csfloat,buff,skinport&avg=true"

When avg=true and median=true are worth it

Skip them for live dashboards where you only care about the current best price. Turn them on when you are calculating fair value, generating buy/sell signals, or showing a historical anchor next to the live offer.

Polling vs Price Alerts

Polling works for prototypes and dashboards. For production trading or notification flows, alerts are cheaper and faster: you set a target price per item once, and Skinstrack pushes when a marketplace crosses it.

Poll when

You are building a dashboard, doing one-off analysis, or your watchlist changes every few seconds. Cache aggressively and respect rate limits.

Use alerts when

You have a fixed watchlist and want to react the instant the price hits a target. No polling, no missed windows, no wasted quota.

Rate Limits and Tier Choice

Free

50 requests / month, Steam prices only. Use it to evaluate the response shape.

Standard

5,000 requests / month, full marketplace coverage, 50 price alerts.

Growth

15,000 requests / month, full coverage, 200 price alerts, priority support.

Full feature comparison and current prices are on the API pricing page.

Error Handling and Retries

The API uses standard HTTP status codes. The two you will see most often are 401 (missing or invalid key) and 429 (quota or burst limit). Always back off on 429 instead of hammering the endpoint.

curl -i -H "X-API-KEY: $SKINSTRACK_KEY" \
  "https://api.skinstrack.com/v1/paid/item/Karambit%20%7C%20Doppler"
# HTTP/1.1 429 Too Many Requests
# {"error":"API call limit reached for your plan."}

Start building with the CS2 skin price API

Pick a tier, copy your X-API-KEY, and ship a working integration today.

View API pricing

Frequently Asked Questions

What is the CS2 skin price API base URL?

The production base URL is https://api.skinstrack.com/v1. Authenticate every request by passing your API key in the X-API-KEY header. The same key works across all paid endpoints.

How many marketplaces does the Skinstrack CS2 skin price API cover?

27 marketplaces are normalized into one response, including Steam, Buff163, CSFloat, Skinport, DMarket, WaxPeer, Gamerpay, CSGOEmpire and BitSkins. The free tier returns Steam prices only. Paid tiers return all 27.

How fresh is the price data?

Every offer carries an updated_at timestamp from the marketplace it was scraped from. Most providers refresh within a few minutes. If your use case needs a specific freshness budget, filter prices by updated_at on your side before acting on them.

Do I need to handle rate limits?

Yes. A 429 response means you hit your monthly quota or burst limit. Back off with exponential delays and pick a higher tier if your workload consistently exceeds your plan. The error body always includes a human-readable reason.

Can I look up items by slug instead of market hash name?

Yes. Both /paid/item/{name} and the market_hash_names query parameter on /paid/items accept either the official market hash name or the URL-friendly slug. Slugs are easier to use in URLs and database keys.

How do I cross-reference items between marketplaces?

Call /paid/marketplace-ids to receive a mapping of slugs to per-marketplace internal IDs (steam_id, buff_id, uuyp_id and so on). Use it when you need to deep-link directly into a marketplace listing.

Related Guides