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.
curl -s "https://api.8bitedge.com/api/v1/demand-intent/conditions/loose" \
  -H "Authorization: Bearer $TOKEN" | jq

Valid condition values

ValueBuyer intent
looseCartridge or disc only, no box or manual
cibComplete in box — game, box, and manual
newSealed or unused
anyNo condition preference specified
Any other value for {condition} returns 404 not_found.

Path parameters

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

Query parameters

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

Response

data
array
Paginated array of game rows ranked within the selected condition.
rank
integer
The game’s rank within this condition’s leaderboard for the period. Ranking is per-condition and independent of other conditions.
game
object
Game identity fields.
id
integer
Unique game ID.
name
string
Display name of the game.
slug
string
URL slug for the game.
console_id
integer
ID of the console this game belongs to.
console_name
string
Display name of the console.
watch
object
Watchlist and alert metrics for this game in the selected condition.
watch_count
integer
Number of active alerts for this game in this condition.
update_count
integer
Number of price-drop notification triggers for this game in this condition.
condition_share
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.
distinct_users
integer
Unique users with an alert for this game in this condition.
mobile_share
float
Fraction of alert activity from mobile devices (0.0–1.0).
pricing
object
Current market prices from the catalog.
loose
string
Loose price as a decimal string.
complete
string
Complete-in-box price as a decimal string.
new
string
Sealed/new price as a decimal string.
meta
object
period
string
The resolved period (day, 7d, or 30d).
period_date
string
The date the data was computed for (YYYY-MM-DD).
condition
string
The active condition filter.
sort
string
Always "watches" for this endpoint.
pagination
object
Standard pagination metadata.
Example — GET /api/v1/demand-intent/conditions/loose:
{
  "data": [
    {
      "rank": 1,
      "game": {
        "id": 412,
        "name": "Chrono Trigger",
        "slug": "chrono-trigger",
        "console_id": 19,
        "console_name": "Nintendo SNES"
      },
      "watch": {
        "watch_count": 48,
        "update_count": 64,
        "condition_share": 0.75,
        "distinct_users": 41,
        "mobile_share": 0.38
      },
      "pricing": { "loose": "40.00", "complete": "95.50", "new": "300.00" }
    }
  ],
  "meta": {
    "period": "7d",
    "period_date": "2026-06-16",
    "condition": "loose",
    "sort": "watches",
    "pagination": { "mode": "page", "page": 1, "per_page": 25, "total": 320, "last_page": 13 }
  },
  "links": { "next": "https://api.8bitedge.com/api/v1/demand-intent/conditions/loose?page=2", "prev": null }
}
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?”