What 1,550 listings actually measure: turnover, not stock
Описание и применение
API Roblox ограничивает список предложений 1550 элементами, отсортированными по времени обновления. Это приводит к ошибочному счёту как к запасу. Вычислив длительность окна с помощью timestamps, команда переопределила метрику как оборот (листинги/час).
Задача
Marketplace APIs that cap result sets return a fixed number of listings (e.g., 1,550) that are sorted by most recent update, leading developers to mistakenly interpret the count as current stock of items.
Результат
By measuring the time window of the capped listings, the team redefined the metric from stock to turnover, enabling accurate comparison across games and days and avoiding misleading stock counts.
Рабочий процесс
- 1. Query /api/
<game>/listings?limit=100&page=N until no more pages (max 31). - 2. Collect updated_at timestamps from all listings.
- 3. Determine earliest (from) and latest (to) timestamps to compute window duration in minutes.
- 4. Count occurrences of each item within the 1,550 listings.
- 5. Compare counts against filtered endpoint /api/
<game>/listings?itemTags=true&item=<id>&selling=true&auction=false&page=N to verify presence of items outside the window. - 6. Publish daily counts with window duration as open data (CC BY 4.0).
Доказательства
We counted how many of those 1,550 listings mentioned each item and published the result as "how many people are offering one".
Each listing carries updated_at. The oldest and newest in a completed run bracket exactly how much time those 1,550 listings covered.
If the count were stock, an item recorded as 0 would have nothing on offer. So we asked per item, using the filtered endpoint.
- Дата записи: 2026-09-15T10:45:22.417Z