demand-intent.read scope and a valid Authorization: Bearer <token> header.
Common query parameters
All list endpoints on this page share the following query parameters.The time window to aggregate over. One of
day, 7d, or 30d.Restrict results to games belonging to this console. Omit to return results across all consoles.
Override the target date. Defaults to the latest computed date for the selected period. Format:
YYYY-MM-DD.Page size. Capped by your plan’s
max_page_size.Page number (page-mode pagination).
Cursor token for cursor-mode pagination. Pass
paginate=cursor to opt in.Pagination mode. Set to
cursor to use cursor-based pagination.Derived fields
Several fields in the response are computed from the raw demand data rather than stored directly. Understanding how they are derived helps you interpret what they signal.momentum
| Label | Condition |
|---|---|
rising | momentum 1.2 or above |
steady | between 0.8 and 1.2 |
cooling | below 0.8 |
value and label are returned as null / "unknown".
demand_score
A single 0–100 index blending intent, reach, and watch demand into one comparable number. Each component is normalised against the highest value in the current period and console scope, so the top-ranked title always scores 100 and every other title is scored relative to it.
The three signals blended are:
- Intent — redirect volume (purchase-intent clicks).
- Reach — distinct users who generated those clicks.
- Watch demand — watchlist alert count.
mobile_share
The fraction of demand activity that originated from a mobile device, expressed as a value between 0.0 (no mobile activity) and 1.0 (all mobile). Useful for understanding your buyers’ browsing context.
GET /api/v1/demand-intent/games
Returns a ranked leaderboard of games by demand for the selected period. Use this endpoint to answer “what should I source and stock right now?”Query parameters
In addition to the common parameters:Sort order for the leaderboard. One of:
intent— by redirect volume (default)watches— bywatch_countdescending (latent demand)momentum— by the momentum ratio descending (fastest-rising first)
Response
Returns a paginated array of leaderboard rows. Themeta object includes the resolved period, period_date, and sort.
Array of leaderboard rows, each representing one game ranked by the selected sort.
The game’s rank within the current period and sort. Precomputed from the demand metrics tables.
Watchlist / notification alert signals (latent demand).
Number of active watchlist alerts for this game in the period.
Composite 0–100 demand index. The highest-ranked title in the result set always scores 100.
The resolved period (
day, 7d, or 30d).The date the data was computed for (YYYY-MM-DD).
The active sort (
intent, watches, or momentum).Standard pagination metadata (see Pagination).
GET /api/v1/demand-intent/games/
Returns a full demand profile for one game, with metrics shown side-by-side for all three periods (day, 7d, and 30d). Use this to understand how a specific title is performing across different time horizons.
Path parameters
The numeric ID of the game. You can resolve IDs from the Games catalog endpoints.
Response
Demand metrics for each time window.
Returns
404 not_found if the game_id does not correspond to an enabled game in the catalog.GET /api/v1/demand-intent/games//conditions
Returns a condition breakdown for one game, showing whether buyers most want it loose (cartridge/disc only), CIB (complete in box), new (sealed), or any (no condition preference). This is sourced from saved notification alerts — real buyer intent with a specific condition attached — making it a reliable signal for how to list your copy.Path parameters
The numeric ID of the game.
Query parameters
The time window to aggregate over. One of
day, 7d, or 30d.Response
All four condition rows, sorted by rank. Rows sum to approximately 1.0 on
condition_share.Rank within this game’s conditions for the period.
One of
loose, cib, new, or any.Number of active watchlist alerts for this game/condition pair.
Number of price-drop notification triggers for this game/condition pair.
This condition’s share of all alerts across the game’s four conditions (0.0–1.0). All four rows sum to ~1.0.
Unique users behind these alerts.
Fraction of alert activity from mobile devices (0.0–1.0).
All four conditions are always returned. A condition with no alerts in the selected period appears as a zeroed row (
watch_count: 0, condition_share: 0.0) ranked after the conditions that had activity. Returns 404 not_found if the game_id is unknown or disabled.GET /api/v1/demand-intent/trending
Returns games ranked by momentum — the fastest-rising titles whose recent daily activity most exceeds their 30-day baseline. Use this to get ahead of demand before prices move. The sort is fixed tomomentum and cannot be overridden.
Query parameters
The time window to aggregate over. One of
day, 7d, or 30d.Filter results to a single console.
Override the target date (defaults to latest computed).
Page size.
Page number.
Cursor token for cursor-mode pagination.
Set to
cursor for cursor-based pagination.Response
Returns a paginated array of leaderboard rows in the same shape asGET /api/v1/demand-intent/games. The meta.sort field is always "momentum".
GET /api/v1/demand-intent/watched
Returns the most-watched games — titles with the highest number of active watchlist alerts, representing buyers who are waiting for the right price before purchasing. This surfaces latent demand that redirect intent alone may not capture: a game with modest click-through but many alert saves signals a price-sensitive buyer pool ready to act.Query parameters
The time window to aggregate over. One of
day, 7d, or 30d.Filter results to a single console.
Override the target date (defaults to latest computed).
Page size.
Page number.
Cursor token for cursor-mode pagination.
Set to
cursor for cursor-based pagination.Response
Returns a paginated array of leaderboard rows in the same shape asGET /api/v1/demand-intent/games. The sort is fixed to watch_count descending. Redirect intent (intent.redirects) is left-joined from the intent table and may be 0 for titles that have watchlist saves but no purchase-intent clicks in the period.
Because this endpoint is built from the watch table rather than the intent table, you may see titles that do not appear on the main leaderboard at all — games people are waiting on but not yet actively clicking to buy.