Skip to main content
The Market Analytics API gives you programmatic access to CS2 market intelligence: scan for arbitrage across 40+ buy and sell providers, view category-level market cap indexes, compute technical indicators from composite OHLCV candles, and retrieve per-item analytics snapshots with full provider depth data.

GET /market/arbitrage

Scans buy-side and sell-side providers for cross-market arbitrage opportunities and ranks results by estimated net profit after fees. Tiers: Quant
min_spread_pct
number
default:"1.0"
Minimum gross spread percentage to include. Results below this threshold are excluded.
providers_buy
string[]
Buy-side provider keys. Repeat the parameter to pass more than one. Valid values: avanmarket, buff163, buffmarket, c5, csdeals, csfloat, csgo500, csgoempire, csmoney_m, csmoney_t, cstrade, dmarket, dupefi, ecosteam, gameboost, haloskins, itradegg, lisskins, lootfarm, mannco, marketcsgo, pirateswap, rapidskins, shadowpay, skinbaron, skinflow, skinland, skinout, skinplace, skinport, skinscom, skinsmonkey, skinswap, skinswap_t, skinvault, steam, swapgg, tradeit, waxpeer, whitemarket, youpin.
providers_sell
string[]
Sell-side provider keys. Repeat the parameter to pass more than one. Only providers that support buy orders are valid here: buff163, buffmarket, c5, csfloat, dmarket, dupefi, ecosteam, marketcsgo, steam, waxpeer, whitemarket, youpin.
limit
integer
Number of results per page.
offset
integer
default:"0"
Zero-based pagination offset.
Response example
data.items[].item_id
integer
Catalog item ID.
data.items[].market_hash_name
string
Full item name as it appears in the Steam catalog.
data.items[].phase
string | null
Doppler/Gamma phase, or null for non-phase items.
data.items[].buy_provider
string
Provider key where you purchase the item.
data.items[].sell_provider
string
Provider key where you sell the item.
data.items[].buy_price_usd
string
Decimal string purchase price in USD.
data.items[].sell_price_usd
string
Decimal string sell price in USD.
data.items[].gross_spread_pct
number
Gross spread as a percentage before fees.
data.items[].estimated_fees_usd
string
Decimal string estimated transaction fees in USD.
data.items[].net_profit_usd
string
Decimal string net profit after fees in USD.
data.items[].last_updated
string
ISO 8601 timestamp of the most recent price data used.
buy_price_usd, sell_price_usd, estimated_fees_usd, and net_profit_usd are decimal strings in USD — not minor units (cents).
pagination.total is always -1 on this endpoint. Use offset pagination only — passing a cursor returns HTTP 400.

GET /market/indexes

Aggregates the cached 24-hour market snapshot into category-level market cap indexes grouped by item_type or weapon_type. Tiers: Quant
group_by
string
default:"item_type"
Catalog dimension to group by. One of: item_type, weapon_type.
Response example
data.total_marketcap_usd
string
Decimal string total market cap across all included items, in USD.
data.groups
array
Category breakdown sorted by marketcap_usd descending.

GET /market/indicators

Computes technical indicators — including RSI, MACD, Bollinger Bands, ATR, VWAP, and OBV — from composite OHLCV candles across all providers for a single item. Tiers: Quant
item_id
integer
Catalog item ID. Takes precedence over market_hash_name when both are provided.
market_hash_name
string
Exact item name as it appears in the Steam catalog. Use item_id instead when you have it.
phase
string
Doppler/Gamma phase filter. One of: Phase 1, Phase 2, Phase 3, Phase 4, Ruby, Sapphire, Black Pearl, Emerald.
interval
string
default:"1d"
Candle interval for indicator computation. One of: 1h, 1d.
currency
string
default:"USD"
Output currency for price-level indicators (ISO 4217).
Response example
data.momentum
object
Momentum indicators.
data.volatility
object
Volatility indicators.
data.volume
object
Volume indicators.
data.signals
object
Human-readable signal summaries derived from the indicators above.
data.coverage
object
Candle history metadata for the item.
This endpoint does not accept a provider filter — indicators reflect the best available price across all providers. close_price_usd is always in USD. Price-level indicators (SMA, EMA, Bollinger Bands) are returned in your requested currency.

GET /market/items

Returns a market-wide summary snapshot with one row per catalog item. Liquidity is always scored against the 24-hour horizon. The snapshot is refreshed periodically — requests return the most recently available data. Tiers: Pro, Quant
This endpoint takes no query parameters.
Response example
data.items[].summary.best_ask_usd
string
Decimal string best ask price in USD across providers with active listings.
data.items[].summary.best_bid_usd
string
Decimal string highest bid in USD across all providers, including providers without a current ask.
data.items[].summary.marketcap
string
best_ask_usd × supply, expressed in USD major units.
data.items[].summary.supply
integer
Best available estimate of the number of items in circulation.
data.items[].summary.price_diff_24h
string
Price change over the last 24 hours, in USD.
data.items[].summary.price_rate_24h
number
Same 24h price change expressed as a percentage.
data.items[].summary.sales_1d
integer
Estimated number of trades in the last 24 hours. A useful approximation, not a guaranteed exact count.
data.items[].summary.liquidity
integer
Composite liquidity score (0–100) scored against the 24h horizon.
data.items[].summary.listing_score
integer | null
Listing-depth component score (0–18). null when liquidity data is unavailable.
data.items[].summary.gap_score
integer | null
Bid/ask gap component score (0–12). null when liquidity data is unavailable.
data.items[].summary.volume_score
integer | null
24h churn component score (0–45). null when liquidity data is unavailable.
data.items[].summary.stability_score
integer | null
Price stability bonus (0–8): added into the score’s remaining headroom below 100, combining observation density and price steadiness over the last 24 hours. null when insufficient history.
data.items[].summary.external_score
integer | null
External confirmation component score (0–25): based on Steam and Buff163 market activity. null when external data is unavailable.
best_ask_usd and all price_* values are decimal strings in USD — not minor units. Rows are sorted by rank, then by item ID.

GET /market/items/:item_id

Returns per-item market analytics including a summary and per-provider depth, spread, and volume data. Tiers: Pro, Quant
item_id
integer
required
Catalog item ID to analyze. Use GET /items to look up IDs.
Response example
data.providers
array
Per-provider depth and spread data. Ask-driven: providers with a live ask but no current bid still appear with bid_usd, spread_usd, spread_pct, and bid_depth set to null.
data.coverage
object
Provider coverage summary for this item.
ask_usd, bid_usd, spread_usd, and total_value_24h_usd are decimal strings in USD — not minor units. summary.best_bid_usd is the highest bid across all providers, including providers that do not appear in data.providers[].
bid_anomaly: true indicates the best bid exceeds the best ask on that provider, which produces a negative spread_pct. This is a data anomaly, not a tradeable state.

GET /market/history/chart

Returns per-provider daily price history for a single item — one price point per provider per UTC day, spanning years of history (i.e. up to 2013 for Steam) up to the present. Built for charting long horizons. Tiers: Quant
Provide either item_id or market_hash_name. With no time parameters the response covers the last 365 days.
item_id
integer
Catalog item ID. Required unless market_hash_name is provided.
market_hash_name
string
Exact item name as it appears in the Steam catalog. Required unless item_id is provided.
providers
string[]
Provider key filter. Repeatable. Omit to return every provider that has data for the item.
start
string
ISO 8601 UTC start of the window. Defaults to 365 days before end.
end
string
ISO 8601 UTC end of the window. Defaults to now.
lookback
integer
Window length in days. Overrides start when provided.
currency
string
default:"USD"
Target currency for returned prices (ISO 4217).
include_defunct
boolean
default:"false"
Include providers that have shut down but still have historical data (e.g. GamerPay, BitSkins). When false, their series are omitted even if requested explicitly via providers.
Response example
meta.providers
string[]
The provider keys actually present in series — those with at least one point in the requested window.
series[].data[].t
integer
UTC day bucket as a Unix timestamp (seconds, midnight).
series[].data[].price
integer
Closing price for that day in minor units of the response currency (e.g. 546976 = $5,469.76).
series[].data[].qty
integer
Listings/volume figure for that day. Meaning varies by provider and may be null.
Last modified on July 15, 2026