How we prepare the data
The short version of our pipeline. We publish the approach and the confidence checks, not the recipe — but every figure in the product can be traced back to the rows behind it.
- 01
Capture
We read public store surfaces on a fixed schedule and write each observation as an immutable snapshot, with the time and market it came from.
- 02
Resolve
Observations are matched to stable app and publisher records, so a rename, a re-release or a store move doesn't fragment the history.
- 03
Classify
Apps are grouped into niches below the store's own categories, using their store metadata. Assignments are reviewed and can be rebuilt from scratch per category.
- 04
Estimate
Downloads and revenue are modelled, then calibrated against reference points. Where a source can only say “below a floor”, we keep the floor rather than inventing a number.
- 05
Aggregate
Publisher and niche totals are sums over measured apps only. Apps at a reporting floor are counted in the footnote, never silently summed as zero.
- 06
Check
A nightly calibration run scores accuracy and interval coverage per metric, market and category, so drift shows up as a number rather than a surprise.
What we promise about the numbers
Estimates are labelled, not laundered
Every figure carries its month, its scope and whether it was measured, bounded or missing. “No data” is shown as no data.
The raw rows stay reachable
Behind every chart position is the dated snapshot it came from; behind every niche total is the app list that produced it.
Modelled means modelled
These are third-party estimates, not publisher-reported figures. We say so on the page, not in a footnote nobody reads.
Methods change; history doesn't
When a model improves we recompute forward and keep the captured observations untouched, so comparisons stay honest.
Known limits
Estimates are modelled, not reported: treat them as well-calibrated ranges, not accounting. Small apps are the least certain — below a reporting floor we show the floor rather than a number, and those apps are excluded from totals and counted in the footnote instead.