Skip to main content
The condition endpoints let you see which games buyers most want in a specific condition — loose (cartridge or disc only, no box or manual), CIB (complete in box — game, box, and manual), new (sealed or unused), or any (no condition preference specified). If you are deciding whether to list a copy of a game as loose or hold it to sell CIB, this is the data to check first. All endpoints on this page require the demand-intent.read scope and a valid Authorization: Bearer <token> header.

How condition demand is measured

Condition demand comes from notification alerts — watchlist saves where a buyer explicitly selects the condition they want before setting a price-drop alert. This captures both the game ID and the buyer’s desired condition in a single signal, making it the most precise source of condition-specific intent available. It is separate from search demand (which can carry condition keywords but is not tied to a game ID). The any bucket is a derived condition: it represents alerts saved with no condition filter — an “indifferent” buyer who will accept any condition at the right price.
Condition ranks are computed per condition, not across the full catalog. The rank-1 game in loose is the most-wanted loose title; the rank-1 game in cib is the most-wanted CIB title. The same game can rank #1 in loose and #5 in cib — the leaderboards are independent.

GET /api/v1/demand-intent/conditions/

Returns a ranked leaderboard of games most wanted in the specified condition, for the selected period. Use this when you have inventory to list and want to know which condition will attract the most buyers.

Valid condition values

Any other value for {condition} returns 404 not_found.

Path parameters

string
required
The condition to filter by. Must be one of loose, cib, new, or any.

Query parameters

string
default:"7d"
The time window to aggregate over. One of day, 7d, or 30d.
integer
Filter results to games belonging to this console.
string
Override the target date. Defaults to the latest computed date. Format: YYYY-MM-DD.
integer
default:"25"
Page size. Capped by your plan’s max_page_size.
integer
default:"1"
Page number (page-mode pagination).
string
Cursor token for cursor-mode pagination. Pass paginate=cursor to opt in.
string
default:"page"
Set to cursor for cursor-based pagination.

Response

array
Paginated array of game rows ranked within the selected condition.
integer
The game’s rank within this condition’s leaderboard for the period. Ranking is per-condition and independent of other conditions.
object
Game identity fields.
integer
Unique game ID.
string
Display name of the game.
string
URL slug for the game.
integer
ID of the console this game belongs to.
string
Display name of the console.
object
Watchlist and alert metrics for this game in the selected condition.
integer
Number of active alerts for this game in this condition.
integer
Number of price-drop notification triggers for this game in this condition.
float
This condition’s share of all alerts across the game’s four conditions (0.0–1.0). This reflects how concentrated buyer demand for this game is on this particular condition — not this game’s share of the leaderboard.
integer
Unique users with an alert for this game in this condition.
float
Fraction of alert activity from mobile devices (0.0–1.0).
object
Current market prices from the catalog.
string
Loose price as a decimal string.
string
Complete-in-box price as a decimal string.
string
Sealed/new price as a decimal string.
object
string
The resolved period (day, 7d, or 30d).
string
The date the data was computed for (YYYY-MM-DD).
string
The active condition filter.
string
Always "watches" for this endpoint.
object
Standard pagination metadata.
Example — GET /api/v1/demand-intent/conditions/loose:
In the example above, condition_share: 0.75 means 75% of all alerts for Chrono Trigger (across all four conditions) are for the loose version — buyers for this title strongly prefer to own the cartridge alone rather than wait for a boxed copy.
To see all four conditions side-by-side for a single game — rather than browsing by condition — use GET /api/v1/demand-intent/games/{game_id}/conditions. That endpoint shows you the full condition breakdown ranked within one game, and is the fastest way to answer “for this specific title, should I list it loose or CIB?”