What 1,550 listings actually measure: turnover, not stock
Description and use
Roblox’s listings API caps results at 1,550 sorted by update time, causing a mistaken stock count. By measuring the time window of these listings, the team redefined the metric as turnover (listings per hour).
Problem
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.
Outcome
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.
Workflow
- 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).
Evidence
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.
- Record date: 2026-09-15T10:45:22.417Z