Transparency
How CSDB.gg Data Works
Every number on this site traces back to a named source and a documented calculation. This page explains where the data comes from, how often it refreshes, and how derived stats are computed — so you can judge it, and correct us when we get something wrong.
See also: CS2 tools, guides, skins database, cases, weapon stats, pro player settings, map callouts, console commands.
See the data itself: CSDB Data Lab, pro player database, skins database and update tracker. The Data Lab's own collection and publication rules are on the Data Lab methodology page.
Where the Data Comes From
Skin, Sticker & Case Prices
Marketplace prices are aggregated by SteamWebAPI: 19 marketplaces quote in the current snapshot, including Buff163, Skinport, CSFloat, CS.MONEY, DMarket, BitSkins, Waxpeer, and the Steam Community Market. What the site shows is a committed snapshot dated 24 Sep 2026, refreshed daily from SteamWebAPI. The “from” price on any item is the lowest quote across those sources in that snapshot, alongside per-marketplace quotes, liquidity scores, and 7/30/90-day trading volumes. Skin pages add cross-market listings from the SteamWebAPI bulk feed (cached for an hour on the server) and Skinport sold prices ingested daily.
Pro Player Settings & Gear
Player settings — sensitivity, DPI, crosshair codes, viewmodel, video settings, and peripherals — are collected from publicly published player configs in a weekly sweep (last sweep 21 Sep 2026). Liquipedia supplies career metadata only: roster status, years active, and social links. There is no separate verification step against streams or team configs; each profile shows the date its settings were last checked at the source.
Esports Matches & Tournaments
Live match data, schedules, results, tournament brackets, rosters, player ratings, and map results come from the PandaScore esports API. The team registry (teams, rosters, map pools) is rebuilt weekly and is dated 27 Aug 2026. Team and player esports records are matched against our own settings database by name and roster history.
Ranks, Player Counts & Server Status
FACEIT level distribution comes from the FACEIT Data API rankings, fetched by a manually run script (snapshot dated 12 Jul 2026). Premier and Competitive rank distribution is Leetify data via Esports Tales (March 2026). Live player counts, server status, Steam profiles and inventories come from the Steam Web API at request time, behind short server caches.
Game Data
Weapon stats, damage values, movement speeds, and economy numbers are taken from CS2 game files and verified in-game after each patch. Map callouts and lineups are maintained by hand against the current map pool.
Update Cadence
| Data | Refresh | How |
|---|---|---|
| Skin / sticker / case prices | Weekly + daily | Committed snapshot dated 24 Sep 2026: SteamWebAPI daily when the job runs. Pages re-render from that snapshot, so a re-render never changes a price |
| Live matches & results | 2–15 min | PandaScore feed cached on the server for 2–15 minutes depending on the view; the matches page polls about every minute |
| Esports registry (teams, rosters, map pools) | Weekly | Rebuilt from PandaScore by scheduled jobs; registry dated 27 Aug 2026 |
| Pro settings & gear | Weekly sweep | Public-config sweep on Mondays (last sweep 21 Sep 2026); each profile shows its own last-checked date |
| Skinport sold prices | Daily | Bulk sales aggregates ingested once a day |
| Cross-market listings on skin pages | Hourly | SteamWebAPI bulk feed, cached for an hour on the server |
| Weapon & game data | Per patch | Re-extracted from game files after CS2 updates (snapshot dated 12 Jul 2026) |
| FACEIT level distribution | Manual | FACEIT Data API rankings, snapshot dated 12 Jul 2026 |
| Premier & Competitive ranks | Per dataset | Leetify data via Esports Tales, March 2026 |
How Derived Stats Are Computed
- eDPI
eDPI = DPI × in-game sensitivity. The standard way to compare true sensitivity across players regardless of mouse hardware. Used on player pages, the eDPI calculator, and pro averages.- Time to Kill (TTK)
- Computed from each weapon's damage, armor penetration, fire rate, and the target's HP/armor: shots-to-kill at a given range multiplied by the weapon's cycle time. See the damage calculator for the interactive version.
- StatTrak premium
- Wear-matched percentage uplift: a StatTrak Field-Tested quote is only compared against the normal Field-Tested quote of the same skin, averaged across all wears where both exist. Full rankings on the StatTrak premium page.
- Price tiers & “from” prices
- An item's headline price is the lowest live listing across all tracked marketplaces and wears. Price-tier hubs (e.g. skins under $10) bucket by that lowest price and rank by 30-day trading volume, not list price.
- Pro usage rankings
- Gear rankings count how many players in the settings database use each product; brand share groups those counts by manufacturer. See most used mice and the other gear ranking pages.
- Liquidity score (0–100)
- Our own figure, not a provider's. Three weighted parts: sales velocity 55% (30-day sales, log-scaled — the gap between 5 and 50 sales matters enormously, the gap between 5,000 and 50,000 barely at all), listing depth 25% (active listings, log-scaled), and spread tightness 20% (cross-market spread inverted; 0% scores 1, 30%+ scores 0). Where the spread cannot be measured it counts as neutral rather than perfect. Items with no sales and no listings get no score at all — that is exactly the case where a confident number would mislead most. Every skin page shows the inputs beside the score.
- Ask vs sold
(cheapest ask − median sale) ÷ median sale, wear-matched: a Factory New median is never compared against a Field-Tested ask, or the “premium” would just be the wear gap. Sold prices are completed Skinport transactions over 30 days; asks are the cheapest across tracked markets. Listings are what sellers want, sales are what buyers paid — the gap is the negotiating room.- Market estimate & confidence
- A range, never a fake-precise single figure. Anchored on the median recent sale where one exists, otherwise the cheapest ask. The band widens as confidence falls and as the market disagrees with itself. Confidence is high with 30+ sales across 3+ markets, medium with 5+ sales or 3+ agreeing markets, and lowotherwise. An illiquid knife is honestly “$8,000–$10,500, low confidence”; quoting it at $9,247 would imply a precision the market does not have.
- Volatility
- Standard deviation of daily log returns, annualised. Log returns because price moves compound — a fall from 100 to 50 and a rise from 50 to 100 are the same size of move. Needs at least 10 observations; below that the figure is dominated by whichever day was noisy, which is how a stable item gets labelled “Very High” off one bad print. Bands: under 20% Low, under 45% Moderate, under 90% High, above that Very High.
- True buy cost & sell proceeds
- Buy cost adds the operator's published buyer fee to the listing. Sell proceeds subtract the sale fee, then the payout fee charged on top to withdraw — the one that quietly changes which marketplace is actually best. Fees come from each operator's own published schedule (dated in the fee tracker). Where an operator publishes no fee we mark the figure rather than assuming zero, since assuming zero would flatter exactly those who disclose least.
- CSDB Team Rating (v1)
- An Elo rating over every finished CS2 match in the trailing 120 days, processed in date order from a common 1000 baseline. The K-factor scales with tournament tier (S-tier moves a rating roughly seven times as much as a D-tier qualifier) and with series margin, so a 2–0 counts for more than a 2–1. Ratings are computed in three passes: the early passes establish how strong each opponent actually is, and only the final pass is published — without that, teams that play a high volume of matches against weak opposition drift to the top on activity alone. A team needs eight matches inside the window to be listed. See the table on the teams hub.
- Map pool grades
- Per-map win rates are windowed (last 90 days by default) rather than lifetime, because a team's map pool from two rosters ago says little about today. Grades come from a win rate shrunk toward 50% by a four-map prior, so a 1–0 record grades as average rather than perfect, and a map needs five plays in the window to be graded at all. Sample counts are shown next to every figure.
- Match win probability (model v2)
- One model powers every surface that prices a match. Pre-match it weights head-to-head record (15%), recent form (30%), map-pool strength (30%) and map-level head-to-head (25%). Form is genuinely recency-weighted — the last ten results decay at 0.85 per match back in time, blended 60/40 with the longer-run win rate. Head-to-head meetings decay at 0.8 per match. Live matches shift most of the weight onto the current series and map score. Probabilities are clamped to 5–95%, and confidence is reduced for thin samples, BO1s and low-tier events.
Market Metrics
The figures on the market dashboardand in the “Market characteristics” block on item pages. Every one is computed from the committed price snapshot (dated on the page) or from the index histories the capture job appends to; none is fetched at render time, none is forecast. Where the data cannot support a figure the row is omitted rather than estimated.
- Index level and changes
- Laspeyres price indices over fixed baskets, base 100 at inception:
index = Σ(p_now × q_base) / Σ(p_base × q_base) × 100. Skin baskets weight by 90-day volume at inception; the sticker basket by 7-day volume (the only sales window the sticker feed carries) with a $0.10 price floor; the case basket holds one of every case (q_base = 1), so it tracks the cost of one of each. Baskets never re-pick themselves. History begins the day each capture first ran and is never backfilled. “Since last capture” compares the two most recent observations; the 7-day and 30-day changes need an observation inside the first 40% of the window (within 3 days for 7d, 12 days for 30d) and are omitted otherwise, so a fortnightly series never reports a 7-day move. A 24-hour change would need daily captures and is not shown. - Market breadth
- Of the items compared, how many rose, fell or stayed within ±1%. Per index basket it uses the per-item prices each snapshot records, against the previous capture and against inception. By category it uses the baseline comparison below. Breadth over a basket of one-cent items is mostly flat by construction — the basket size is shown so that is visible.
- Gainers, losers and trend vs baseline
- The current snapshot against a fixed, dated baseline snapshot. Only wears present in both are compared, wears under $1 at baseline are ignored, a skin needs at least three comparable wears, and its change is the median per-wear change — so one odd listing on one wear cannot put a skin on the board. Stickers have no baseline and show no trend.
- Cross-market spread
(highest quote − lowest quote) ÷ lowest quoteacross tracked marketplaces at the headline (cheapest) wear, Steam excluded because its price is gross of a fee the seller never receives. The dashboard ranks items priced $5 or more with quotes from at least three marketplaces, and states the median spread across that whole population beside the largest ones. A large spread usually means one marketplace holds an outlying ask, which is why the low and high marketplace are named.- Unusual volume
- The 30-day sale count against the same count from an earlier capture at least five days older. Items need a price of $1 or more and at least 20 prior sales, so 2 → 20 sales is not a “10× surge”. The volume history begins with the first capture after it was introduced; until a prior capture exists the module is not shown.
- Index highs and lows
- An index whose latest observation is the single highest or lowest in its history — only once it has at least eight observations. Below that every point of a young series is a “new high” or “new low”, which is noise dressed as news.
- Liquidity (item pages)
- The CSDB score defined above, computed from 30-day Steam sales, active listings and cross-market spread. Where an item carries no 30-day sales count (stickers), the provider's own 0–100 liquidity score is shown instead and labelled as a provider score; the two are never mixed under one label. The market dashboard's liquidity tables rank by the provider score.
- Volume bands
- 30-day Steam Community Market sales, banded by order of magnitude: under 10 very low, under 100 low, under 1,000 moderate, under 10,000 high, above that very high. Off-Steam marketplaces are not counted.
- Provider coverage and snapshot age
- Coverage is the number of marketplaces quoting the item out of those quoting anything in the current snapshot. Snapshot age is whole days between the snapshot's own timestamp and the time the page was last generated — prices are a committed snapshot refreshed by a scheduled job, not a live feed.
- CSDB estimated value (skin pages)
- An estimate for one wear of one variant, shown as a range, never as a single price. Inputs are that wear's lowest listing on each cash marketplace (Steam is excluded — wallet funds are not cash) and, where we hold them, recorded sale prices. Listings are cleaned first: with three or more quotes, any quote further from the median than
max(3.5 × 1.4826 × MAD, 35% of the median)is flagged and left out, and a quote flagged as far below the market is never shown as the best price. The estimate is the median of the cleaned quotes weighted by source quality (order-book marketplaces 1.0, trade-bot sites 0.6, others 0.7), blended with the 30-day median sale price when there are at least three sales, the sales weightedn ÷ (n + 8)up to 80%. The range widens with the spread of the quotes and when sales and listings disagree, and is rounded to a 1-2-5 step so it does not imply cents of precision it does not have. Confidenceis high only with recorded sales behind it: listings alone can never score above medium. Where a wear has no recorded sales, fewer than five marketplaces, and its listings sit more than 20× off the skin's other wears, more than 5× off the same wear's other variant, or more than 5× off its own last recorded price, we publish no value and show “Insufficient recent sales” beside the raw listing, labelled as an unverified ask. - CSDB Market Score (skin pages)
- How easy one wear is to trade at a fair price, 0–100 — not a view on where the price is going. A weighted mean of up to five subscores: liquidity 30%, sell-through (30-day sales ÷ active listings) 20%, market depth (marketplaces quoting) 20%, spread tightness 15% and valuation confidence 15%. A subscore is included only when its inputs exist for that exact wear, the weights are renormalised over those present, and with fewer than three no score is shown.
High liquidity means an item has historically been easier to trade near its quoted price. None of these figures predicts future prices.
Commercial Placements
Partner tables (trading sites, gambling sites) and the partner cards on the homepage are commercial placements, ordered by partnership; outbound links to partners there and inside reviews are referral links. Reviews, guides and data pages are not paid for and are not ordered by partnership, and no partner block appears inside guides or data pages. The Data Lab publishes under its own collection and publication rules.
Spotted an Inaccuracy?
Data pipelines drift: a player switches mice off-stream, a marketplace delists an item, a patch changes a damage value. If a number looks wrong, tell us — corrections usually ship within a day or two.