product
CS2 price API
Skintick is a REST API for Counter-Strike 2 skin prices. One endpoint returns the live price of any CS2 or CS:GO item across 16 marketplaces — P2P markets, aggregate feeds and instant-trade sites — normalized onto a single schema, in USD, keyed by Steam's canonical market_hash_name.
Every row carries explicit freshness, outlier and confidence metadata, so your code can tell a real ask from a sticker-inflated listing before it reaches your pricing logic. A free key takes seconds and needs no card.
Your first call
Sign up, copy your key, and ask for any item by name. No SDK required — it is plain HTTP and JSON in whatever language you already use.
curl "https://api.skintick.io/v1/items/AK-47%20%7C%20Redline%20(Field-Tested)" \ -H "Authorization: Bearer skt_your_key"
const res = await fetch(
"https://api.skintick.io/v1/prices/latest",
{
method: "POST",
headers: {
Authorization: "Bearer skt_your_key",
"Content-Type": "application/json",
},
body: JSON.stringify({
items: ["AK-47 | Redline (Field-Tested)", "Glove Case"],
}),
},
);
const { data } = await res.json();import requests
r = requests.post(
"https://api.skintick.io/v1/prices/latest",
headers={"Authorization": "Bearer skt_your_key"},
json={"items": ["AK-47 | Redline (Field-Tested)", "Glove Case"]},
timeout=15,
)
for item in r.json()["data"]:
cheapest = min(item["prices"], key=lambda p: float(p["price"]))
print(item["market_hash_name"], cheapest["market"], cheapest["price"])req, _ := http.NewRequest(
http.MethodGet,
"https://api.skintick.io/v1/items/"+url.PathEscape(name),
nil,
)
req.Header.Set("Authorization", "Bearer skt_your_key")
resp, err := http.DefaultClient.Do(req)What comes back
One row per marketplace. Prices are decimal strings so they never round-trip through a float, and the metadata is on the row itself rather than buried in a separate call.
{
"market_hash_name": "AK-47 | Redline (Field-Tested)",
"prices": [
{
"market": "waxpeer",
"market_type": "p2p",
"price_basis": "lowest_ask",
"price": "28.18",
"currency": "USD",
"listings_count": 1426,
"collected_at": "2026-08-24T09:41:22Z",
"staleness_seconds": 137,
"is_stale": false,
"is_outlier": false,
"confidence": "high"
},
{
"market": "tradeit",
"market_type": "instant_bot",
"price_basis": "lowest_ask",
"price": "50.25",
"currency": "USD",
"listings_count": 1,
"is_outlier": false,
"confidence": "low"
}
]
}One pricing contract
Every source returns the same row shape, keyed by Steam's canonical market_hash_name. Integrate once and every marketplace — 16 live today — arrives through the same JSON schema, prices as decimal strings in USD.
Freshness you can enforce
Every price row carries collected_at, source_updated_at, staleness seconds, and an is_stale flag. Your code decides what "fresh enough" means — the API never hides data age.
Outlier + confidence flags
Cross-market median consensus flags rows that deviate 3× from the pack (sticker-inflated listings, variant aliasing), and listing depth drives a per-row confidence tier — so bad prices never silently poison your spread math.
Honest market typing
Instant-trade bot inventories price convenience into their asks. Skintick labels every row with market_type and price_basis so bot premiums, aggregate minimums, and true lowest asks are never confused.
Endpoints
Common questions
Is there a free CS2 price API?
Yes. Skintick's free tier gives you a key with no card: 100 requests a day, every marketplace we track, live prices plus the last 7 days of history. It is meant for building and evaluating an integration, and it does not expire.
How do I get CS2 skin prices in JSON?
Request an item by its Steam market_hash_name and you get one JSON row per marketplace: GET /v1/items/AK-47%20%7C%20Redline%20(Field-Tested). For many items at once, POST up to 100 names to /v1/prices/latest and get them all back in a single response.
Which marketplaces does the API cover?
16 live marketplaces including Skinport, DMarket, Bitskins, Waxpeer, TM Market (market.csgo.com), Lis-Skins, White.market, Tradeit, Loot.farm, Skinout, Skins.com and Skinswap — P2P markets, aggregate feeds and instant-trade sites, all normalized to the same schema and currency.
Does it work for CS:GO item prices too?
Yes — CS:GO and CS2 are the same Steam app and the same items, so every price is keyed by the canonical Steam market_hash_name. Anything you looked up as a CS:GO skin resolves identically.
How current are the prices?
Fast sources refresh roughly every 5 minutes and the slowest on the hour. You never have to guess: every row carries collected_at, source_updated_at, a staleness figure in seconds, and an is_stale flag, so your own code decides what counts as fresh enough.
Can I get historical CS2 price data?
Yes. GET /v1/items/{name}/history returns daily closes per marketplace. Free keys can query the last 7 days; paid keys get the full depth we hold.
How is this different from checking prices on the marketplaces myself?
One integration instead of a dozen, one schema instead of a dozen shapes, one currency, and one set of flags telling you which prices to trust. Mispriced and sticker-inflated listings arrive already marked as outliers, and instant-trade sites are labelled so their convenience premium is never mistaken for spot price.
Ready to go live?
Free API key, no card. Full docs. First call in minutes.
Get a free API key