Every rate is read from the panel itself — its own API catalogue endpoint where we hold a key, or the price list it publishes on its own site where we do not — dated, and written to an append-only log. Each listing says which of the two it came from. Once at least two independent panels sell the same canonical service, a daily index row records the minimum, the quartiles, the median and the maximum across every listing they publish for it, together with the number of distinct sellers behind those listings.
Those two counts are different and the difference matters. A single panel routinely lists hundreds of variants of one service — different countries, different refill windows, different account pools — so a median is computed over listings, because that is the distribution a buyer actually chooses from, while the sample size counts panels, because one seller is not a market however many rows it publishes. Both are shown. A page that printed the first and called it the second would have invented hundreds of businesses.
Nothing on these pages is an estimate. Where a service has no observed rate the cell is a dash. Where the sample is below 5 independent sellers, the page says so, keeps itself out of the search index and out of the sitemap, and shows the rates anyway — because the data is real even when the word “market” is not yet earned.