Methodology
No storefront publishes per-game revenue, so every revenue and sales figure on GamesBerry is a model, not a reported number. Here is exactly how each one is built, how it checks out against real sales, and where it can be wrong — so you can judge how much to trust it.
Steam reviews are roughly proportional to sales. We estimate copies sold as reviews × a sales-per-review multiplier, then adjust for the factors that shift that ratio: release era (older games were reviewed less per sale), genre (a simulation or strategy audience reviews far less per copy than an action one), price band, and review volume (blockbusters get reviewed more per sale, so their multiplier compresses). Games with a measurable concurrent-player peak also carry a further compression on top, scaled to how large that peak is — in practice this pulls big-audience games down between 6% and 24%, and it is calibration rather than a second independent reading: for all but a small minority the player number itself is bounded away before it reaches the figure.
Every input comes straight from Steam — review counts, price, and concurrent players — with no third-party owner estimates in the loop. The result is always a low / mid / high range, never a single number.
We tune the model against public, developer-reported sales — the only ground truth that exists. Below is how our current live estimates compare to those reported figures, landing within a median of 11%. In fairness: these are the calibration anchors the model was tuned on, so this is a sanity check that the tuning holds, not an out-of-sample accuracy claim — treat it as a floor, not proof. Still, no competing tool publishes even this. As more studios disclose sales we hold a subset back for true out-of-sample validation.
Checked against reported revenue
Every anchor above reports copies sold. Revenue is a separate claim — it depends on the price a game actually sold at over its life, on regional pricing and on discounts — and until 2026-08-15 we had nothing to check it against. This is the first one.
Where this check does not reach. Every anchor below is priced between $14.99 and $39.99, because those are the studios that have published figures. 82.7% of the priced Steam catalogue sits under $14.99 — 89,802 games — so for most of the catalogue the number above is an assumption carried over from a price band it was never measured in. The model does adjust for price, but that adjustment is itself untested down there. Treat estimates for cheap games as the weakest thing we publish, and if you have shipped one and know the real figure, we would rather hear it than guess.
| Game | Genre | Our est. | Reported | Δ |
|---|---|---|---|---|
| Rust | Survival | 20.2M | 20M · Facepunch | +1% |
| Stardew Valley | Simulation | 26.9M | 26M · ConcernedApe (PC) | +4% |
| Palworld | Action | 15.4M | 15M · Pocketpair | +2% |
| Crusader Kings III | Strategy | 4.6M | 4M · Paradox | +16% |
| Manor Lords | City-builder | 2.9M | 3M · Hooded Horse | -4% |
| Against the Storm |
Harder categories vary more: live-service co-op titles (shared/gifted copies) and review-bombed launches skew the review-to-sale ratio, and games sold heavily on GOG or Epic sit below their all-PC total here because we estimate Steam only. Full method and sources are documented internally.
Revenue = estimated sales × an effective average selling price. That price is below the sticker price because games sell at a discount over their lifetime — and the discount deepens with age. A launch-year game realises ~95% of list; a five-year-old one closer to 60–65%.
For games we've tracked long enough, we refine this into a time integral: monthly units sold × the actual price that month, reconstructed from Steam's review histogram and our price history. This is gross revenue before Steam's platform cut and refunds.
Every price, chart position and revenue figure defaults to one market: the United States, in US dollars — and now says so on the page rather than only here. Where we have more, the page shows more: a game with prices in several storefronts lists each one in the currency that storefront quoted, and a game that charts in several countries lists each position next to its country. Nothing is converted between currencies. We hold no exchange rate, and regional pricing is a publisher's decision rather than an artifact of one — Baldur's Gate 3 is $59.99 in the United States and R$199.99 in Brazil, and converting would erase exactly the fact worth having.
The default exists because a number with no country attached is a lie waiting to happen. Strip the label and €41.99 and $41.99 print as the same "4199". Where a market is missing from one of these lists, it is because we have not asked for that title yet — not because the game is unavailable there — except where a store cannot answer at all, which is set out below.
Behind that single default, chart ranks are already collected across 15 markets (US, GB, DE, FR, JP, CA, AU, BR, KR, MX, RU, CN, TR, PL, UA) for Apple, Google Play, PlayStation and Steam. PSN and Steam prove each request actually landed in the market asked — checked against the store's own currency or storefront receipt, since a session or a proxy's exit IP can silently answer for the wrong country — and write nothing when it can't be shown; Apple and Google Play ask a country-specific endpoint directly (a per-region RSS feed, a gl= parameter), which the request itself already pins. Prices in those same markets, checked the same currency-receipt way, exist for Steam, GOG, Xbox, Epic and Google Play. Not every store has every storefront, and the ones it does not have are named rather than left blank: Google Play does not operate in mainland China (asking anyway returns American prices), the PlayStation Store redirects its Russian storefront to the American one, and Steam prices Turkey in US dollars with no currency code on the chart page — so a Turkish chart cannot be told from an American one, and only its prices are collected. Epic publishes a single worldwide chart, not one per region, and we label it global rather than force it into a country it isn't. GOG and Xbox chart ranks, and Nintendo prices, stay narrower than that — each for a different, concrete reason:
Xbox's chart order is not stable enough to localise — or to show as a number at all. We ran the identical en-US request twice, seconds apart, on 2026-08-06: the two answers shared 97 of the top 100 game ids but agreed on the position of only 7 of them — a game two minutes from now can jump from #12 to #40 against the same list, and re-asking is enough to reproduce that jump with nothing about the game having changed. Prod's existing Xbox series bears this out: it moves a median of 5-6 places a day, the same size as the gap between two requests seconds apart, which means that day-to-day movement is the store reshuffling a stable list, not demand shifting. Ten countries' worth of that would also write roughly 2,000 reshuffled rows a day describing noise, not demand, so Xbox stays on one market until its own ordering settles down. This is why the site never prints an exact Xbox rank — game pages and the cross-store table show instead of, say, "#47": the is real (which titles are in Xbox's top 100), the is not.
Every estimate carries high / medium / low confidence, driven mostly by review volume. Under ~50 reviews the signal is thin and the range widens sharply — treat low-confidence figures as order-of-magnitude only.
GOG & Xbox expose review/rating counts, so they use the same Steam-calibrated model (treat as rougher). Epic exposes no public reviews — catalog and prices only, no revenue estimate. Apple & Google Play are IAP-driven and asymmetric: Apple publishes no install counts, so App Store games show no revenue estimate at all — ratings and rankings only. Google Play does publish install counts, so its revenue is modeled as installs × genre ARPD (average revenue per download) with an intentionally wide band and low confidence — still a rough estimate, not a reported figure. PlayStation uses rating counts where available.
Followers come from a game's Steam community group member count (the same source SteamDB uses). Steam never publishes wishlists, so "Est. wishlists" is a followers × 10 industry heuristic — a rough proxy, clearly labelled as such.
These figures are excellent for relative comparison and market sizing — which games, genres and studios earn more, and the shape of a title's trajectory. They are not accounting-grade and should not be cited as fact. When we can measure something exactly (price, review count, followers), we show the measured value; everything labelled "est." is modeled.
| Strategy |
| 1.3M |
| 1.5M · Hooded Horse |
| -11% |
| Dwarf Fortress | Colony sim | 1.1M | 1M · Kitfox (Steam) | +12% |
| House Flipper 2 | Simulation | 708.9K | 1M · Frozen District (Steam) | -29% |
We ran the same check — two identical requests, seconds apart — against PlayStation and Google Play before deciding whether the same caveat belonged on their numbers too. It doesn't: PSN's bestseller chart agreed on 100 of 100 ids and 100 of 100 positions, and Google Play's top-grossing chart agreed on 97 of 97 ids and 97 of 97 positions — both perfectly reproducible, repeated more than once. So a PSN or Google Play rank on this site is a real ranking: if it says #12, asking again a moment later says #12 too. Xbox is the one chart we have found this problem on; everything else we show as a number moved from a genuinely ordered list.
GOG's chart is pinned to the US storefront in the request itself (countryCode=US), so a GOG rank is the American storefront's ranking, not a market we chose to skip — real per-country GOG ranks are unblocked work, just not done yet. GOG prices are further along: it genuinely serves ten storefronts in ten currencies — except Japan, Korea, Mexico and Ukraine, which have no local GOG currency at all: asking GOG to price a game in yen, won or pesos returns a hard error, and asking in US dollars is the only request that succeeds. A GOG price shown for Japan is therefore not a labelling shortcut on our part — it is what GOG itself charges there, in dollars, and the dollar sign next to it is accurate, not approximate.
Nintendo's gap runs deeper than pricing. Our whole Nintendo catalogue comes from one Algolia index, store_all_products_en_us, which only ever hands out Americas-region product ids. Nintendo runs three separate regional eShops with disjoint id ranges, so an id from the American one is not a thin answer in the European or Japanese eShop — it names no product there at all. That is why Nintendo prices exist for exactly 4 markets (US, CA, MX, BR) and nowhere else: it is the limit of what our own ids can ask, not a country we haven't collected yet.
One place this still shows up as an unmeasured guess rather than a measured one: the revenue model multiplies every estimate by a flat constant, REGIONAL_FACTOR = 0.90, assuming the rest of the world nets 90% of what the US list price implies. Until 2026-08-06 every price we stored was the US price, so there was nothing to check that assumption against. The multi-market price history above is the first real data that could — it is not folded back into the revenue model yet, so until it is, read 0.90 as an industry-typical guess sitting next to figures built from the stores' own receipts, not one of them.