SteamAnalyst API
Cross-market pricing for CS2 and Dota 2 items, as JSON. The same numbers this site runs on.
Every price on steamanalyst.com comes from the same pipeline the API serves: Steam Community Market history, our manipulation checks, and live asks from 40+ third-party markets. The API is a REST service at api.steamanalyst.com, answers plain JSON, and has a free tier you can use in a minute with a Steam login.
What you get
A fair price, not a listing
Steam's own numbers are missing for thousands of items and wrong on rare knives. Our price compares the live markets and discounts manipulated ones.
71,000+ items, two games
41,000 CS2 items including knives, gloves, stickers, cases, agents and Doppler phases, and 30,000 Dota 2 items.
40+ markets compared
The lowest ask on BUFF, CSFloat, Skinport, DMarket, CS.MONEY, Tradeit, Bitskins, Skinbaron and sixteen more, refreshed every five minutes.
Built for polling
The catalogue regenerates every 30 minutes. ETag and 304 support means a poll that finds nothing new costs you no download.
Tiers
Free
$0 / month
One item at a time. Bots, spreadsheets, side projects.
- GET /v1/prices — one CS2 item per request
- Our manipulation-resistant fair price in USD
- Name suggestions when a lookup misses
- No credit card
30 requests / min · 100 / day
Get a free keyBasic
Most popular$100 / month
The full catalogue. Trading tools, inventory valuers, dashboards.
- GET /v2/{game} — every item, CS2 and Dota 2 (71k+)
- 7 / 30 / 60-day Steam averages, sales volume, manipulation flag
- Extended single-item record with per-wear averages
- GET /v1/prices/all — the 4 MB light dump
- ETag / 304 so polling costs nothing when nothing changed
120 requests / min · no daily cap
Upgrade to BasicEnterprise
$200 / month
The market comparison. Marketplaces, arbitrage, price engines.
- Everything in Basic
- GET /v3/markets — lowest ask on 40+ markets for every CS2 item
- BUFF, CSFloat, Skinport, DMarket, CS.MONEY, Tradeit, Bitskins and more
- Refreshed every 5 minutes
300 requests / min · no daily cap
Upgrade to EnterpriseUltimate
$300 / month
Order-book depth. Market makers and anyone pricing against real bids.
- Everything in Enterprise
- GET /v4/depth/{name} — best bid/ask with counts on 20+ venues, incl. Steam and the Chinese markets
- Daily sales volume, price history back to 2023 (OHLC), listing counts with deep links
- Market indices and BUFF float-range price bands
- Priority support
600 requests / min · no daily cap
Upgrade to UltimateEvery tier includes everything below it. Have a code? Enter it on the upgrade page and the tier is on your key immediately.
| Endpoint | What you get | Free | Basic | Enterprise | Ultimate |
|---|---|---|---|---|---|
GET /v1/prices?market_name= | One item, fair price in USD | ✓ | ✓ | ✓ | ✓ |
GET /v1/prices/all | Every CS2 item, 7-day Steam average (4 MB) | — | ✓ | ✓ | ✓ |
GET /v2/{game} | Full catalogue: averages, volume, Steam price, fair price | — | ✓ | ✓ | ✓ |
GET /v2/{game}/{market_name} | Extended record: identity, per-wear averages, BUFF and CSFloat asks | — | ✓ | ✓ | ✓ |
GET /v3/markets | Lowest ask on 40+ markets, every CS2 item | — | — | ✓ | ✓ |
GET /v4/depth/{market_name} | Best bid/ask + counts per venue | — | — | — | ✓ |
GET /v4/sales/{market_name} | Daily sold counts, CN trades and turnover | — | — | — | ✓ |
GET /v4/history/{market_name} | Fair price, BUFF, CN OHLC per day back to 2023 | — | — | — | ✓ |
GET /v4/listings/{market_name} | Price, quantity and deep link per market | — | — | — | ✓ |
GET /v4/depth · /v4/listings | Bulk, every item, ETag + 304 | — | — | — | ✓ |
GET /v4/index · /v4/float-bands/{market_name} | Market indices; BUFF float ladder | — | — | — | ✓ |
| Rate limit | per minute, per key | 30 | 120 | 300 | 600 |
| Daily cap | rolling 24 h | 100 | — | — | — |
Your first request
Sign in with Steam on the developer dashboard, generate a key, and send it as a bearer token. The free tier answers one item per request:
curl -G https://api.steamanalyst.com/v1/prices \
-H "Authorization: Bearer YOUR_API_KEY" \
--data-urlencode "market_name=AK-47 | Redline (Field-Tested)"
# { "success": true, "data": { "market_name": "AK-47 | Redline (Field-Tested)", "price": 28.93 } }The name has to match Steam's market hash name exactly, wear included. Leave the wear off and the 404 carries the wears of that skin as suggestions.
import requests
API = "https://api.steamanalyst.com"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
r = requests.get(f"{API}/v2/csgo", headers=headers)
items = r.json()["data"]["results"] # 41k items, ~4 MB gzipped
etag = r.headers["ETag"]
# Later: ask whether anything changed. 304 = nothing to download.
r = requests.get(f"{API}/v2/csgo", headers={**headers, "If-None-Match": etag})
if r.status_code == 200:
items = r.json()["data"]["results"]const res = await fetch("https://api.steamanalyst.com/v3/markets", {
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data } = await res.json();
const asks = data.markets_prices["AWP | Asiimov (Field-Tested)"];
// { buff: 10633, csfloat: 10465, skinport: 11183, dmarket: 10656, ... } integer cents, null = no listing
const cheapest = Object.entries(asks).filter(([, c]) => c).sort((a, b) => a[1] - b[1])[0];Documentation
The full reference lives with the API itself at api.steamanalyst.com/docs: every endpoint with a real sample response, the field list for each shape, the error codes, rate-limit headers and the caching contract. It is generated from the running service, so it cannot drift from what you get back.
Talk to us
Upgrades, questions, custom volumes
Upgrades are handled by email until self-serve billing lands: send your key prefix and the tier you want and we switch it the same day. Custom volumes, an SLA, or a field you need that is not in the catalogue yet are the same conversation.
Email: [email protected]
Twitter/X: @SteamAnalyst