demand-intent.read scope and a valid Authorization: Bearer <token> header.
Search demand vs. game demand
Search demand is keyed by free-text query rather than game ID. A single query like “chrono trigger” can span multiple titles and consoles depending on what inventory is listed. This means search data tells you what buyers are typing, while game demand tells you what they are clicking — the two signals are complementary. Because search rows are query-keyed, they cannot be filtered bygame_id; use console_id or the game demand endpoints for game-level analysis.
Each search query unions two upstream sources: price lookups (buyers checking what a game is worth) and site searches (buyers browsing the catalog). Both are reflected in the combined search_count.
Search demand score
The searchdemand_score is a 0–100 index blending volume and reach into one comparable number. Volume (combined search count) is the primary signal; reach (distinct users) is the secondary signal. There is no watch component — searches are not the same as notification alerts. The top-ranked query in the result set always scores 100.
Leaderboard row shape
All search list endpoints return rows in this shape:integer
Precomputed rank by combined search volume within the period.
string
The normalized free-text query string.
object
Search volume and reach metrics.
integer
Total searches (price lookups + site searches) in the period.
integer
Searches originating from price lookup flows.
integer
Searches originating from the site search interface.
integer
Number of unique users who searched this query.
Fraction of searches from mobile devices (0.0–1.0).
object
object
integer
Composite 0–100 search demand index.
Common query parameters
All list endpoints on this page share the following query parameters.string
default:"7d"
The time window to aggregate over. One of
day, 7d, or 30d.integer
Filter results to searches associated with 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.
string
default:"page"
Set to
cursor for cursor-based pagination.GET /api/v1/demand-intent/searches
Returns a ranked leaderboard of search queries by volume for the selected period. Use this to understand what buyers are actively searching and pricing, even before they click through to a listing.Query parameters
In addition to the common parameters:string
default:"volume"
Sort order for the leaderboard. One of:
volume— by combined search count (default)momentum— by the 7d-vs-30d search pace, fastest-rising firstunmet— byzero_result_sharedescending, then volume; restricted to queries meeting a minimum search threshold to filter out one-off typos
Response
Returns a paginated array of search leaderboard rows (see Leaderboard row shape). Themeta object includes the resolved period, period_date, and sort.
Example response:
GET /api/v1/demand-intent/searches/trending
Returns rising search queries — the ones whose recent daily search pace most exceeds their 30-day baseline. The sort is fixed tomomentum and cannot be overridden. Use this endpoint to get ahead of emerging demand before it shows up in the main volume leaderboard.
Query parameters
string
default:"7d"
The time window to aggregate over. One of
day, 7d, or 30d.integer
Filter to searches associated with this console.
string
Override the target date (defaults to latest computed).
integer
default:"25"
Page size.
integer
default:"1"
Page number.
string
Cursor token for cursor-mode pagination.
string
default:"page"
Set to
cursor for cursor-based pagination.Response
Returns a paginated array of search leaderboard rows in the same shape asGET /api/v1/demand-intent/searches. The meta.sort field is always "momentum".
Queries with no 30-day baseline are excluded from this endpoint because momentum requires a prior period to compare against.
GET /api/v1/demand-intent/searches/unmet
Returns high-volume search queries that are consistently returning little or no inventory — your clearest supply-gap and sourcing signal. If buyers are repeatedly searching for a title and coming up empty, that is a direct opportunity to list it. The sort is fixed tounmet (highest zero_result_share first, then by volume) and cannot be overridden.
Query parameters
string
default:"7d"
The time window to aggregate over. One of
day, 7d, or 30d.integer
Filter to searches associated with this console.
string
Override the target date (defaults to latest computed).
integer
default:"25"
Page size.
integer
default:"1"
Page number.
string
Cursor token for cursor-mode pagination.
string
default:"page"
Set to
cursor for cursor-based pagination.Response
Returns a paginated array of search leaderboard rows in the same shape asGET /api/v1/demand-intent/searches. Rows are sorted by zero_result_share descending, then by search_count. The meta.sort field is always "unmet".
Results are restricted to queries that meet a minimum search-count threshold. This filters out one-off typos or rare queries that happen to return no results — the list reflects genuine, repeated, unmet demand.
GET /api/v1/demand-intent/searches/conditions
Returns the market-wide condition mix from active searches — showing what condition (loose, CIB, new, or any) buyers are explicitly searching for across the entire catalog. Use this to understand the overall market preference for condition before deciding how to grade and list your inventory. This endpoint returns acollection (not a paginated list) of all four condition rows for the selected period.
Query parameters
string
default:"7d"
The time window to aggregate over. One of
day, 7d, or 30d.string
Override the target date (defaults to latest computed).
This endpoint does not accept a
game_id filter — search rows are keyed by free-text query and carry no game ID. For a per-game condition breakdown, use GET /api/v1/demand-intent/games/{game_id}/conditions instead.Response
array
All four condition rows, sorted by rank (search volume descending). The rows sum to approximately 1.0 on
condition_share.integer
Rank within the four conditions for the period.
string
One of
loose, cib, new, or any.integer
Total condition-classified searches in the period for this condition.
This condition’s share of all condition-classified searches (0.0–1.0). All four rows sum to ~1.0.
integer
Unique users who searched with this condition in the period.
Fraction of searches from mobile devices (0.0–1.0).