Skip to main content
The 8bitedge Demand & Intent API translates buyer behavior into actionable seller signals. Rather than guessing what to stock or how to price, you can read directly from the data — clicks to eBay, price-alert watches, and search queries — to understand what retro buyers want right now. This guide walks through every demand endpoint and maps each one to a concrete seller question.
All demand endpoints require the demand-intent.read scope on your API key. Requests with a key missing this scope receive 403 insufficient_scope.

What’s a demand signal?

Every demand endpoint is built from one of three underlying signal types, or a combination of them. Intent — a buyer clicked through to an eBay listing. This is the strongest proxy for purchase intent available without transaction data. Intent rows carry:
  • redirects — total click-throughs in the period
  • distinct_users — unique buyer reach
  • mobile_share — fraction of intent from mobile devices (useful for listing-format decisions)
Watch — a buyer saved a price-alert notification for a title. This captures latent or unmet demand: buyers who want the game but haven’t found a price they’ll pay. Represented as watch_count. Momentum — a derived signal that measures whether interest is accelerating. It compares the recent daily pace to the 30-day baseline. Labels:
  • rising — recent pace is at least 20% faster than the 30-day baseline (momentum value 1.2 or above)
  • steady — recent pace is within 20% of the baseline (between 0.8 and 1.2)
  • cooling — recent pace has slipped more than 20% below baseline (below 0.8)
  • null / unknown — no 30-day baseline is available yet
Demand score — a single 0–100 index that blends all three signals into one number. Weights: intent 50%, reach 20%, watch demand 30%. Scores are normalized within the current period and console scope, so the top game always scores 100.

”What should I stock?”

Use the demand leaderboard to see which games have the highest buyer activity across the platform.
curl -s "https://api.8bitedge.com/api/v1/demand-intent/games" \
  -H "Authorization: Bearer $TOKEN" | jq
By default the endpoint returns the top games for the last 7 days, sorted by redirect intent. Each row in the response looks like this:
{
  "rank": 1,
  "game": {
    "id": 412,
    "name": "Chrono Trigger",
    "slug": "chrono-trigger",
    "console_id": 19,
    "console_name": "Nintendo SNES"
  },
  "intent": {
    "redirects": 980,
    "distinct_users": 712,
    "mobile_share": 0.41
  },
  "watch": {
    "watch_count": 64
  },
  "momentum": {
    "value": 1.4,
    "label": "rising"
  },
  "pricing": {
    "loose": "40.00",
    "complete": "95.50",
    "new": "300.00"
  },
  "demand_score": 100
}
Sorting options — use ?sort= to change how the leaderboard is ranked:
ValueRanks byBest for
intent (default)Redirect volumeFinding the highest-traffic titles to source immediately
watchesWatch count descendingFinding titles buyers want but can’t yet find at the right price
momentumMomentum ratio descendingGetting ahead of demand before it fully peaks
# Sort by watches (latent demand)
curl -s "https://api.8bitedge.com/api/v1/demand-intent/games?sort=watches" \
  -H "Authorization: Bearer $TOKEN" | jq

# Sort by momentum (fastest-rising first)
curl -s "https://api.8bitedge.com/api/v1/demand-intent/games?sort=momentum" \
  -H "Authorization: Bearer $TOKEN" | jq

”How is this specific game performing?”

Use the game profile endpoint to pull all three time periods — day, 7d, and 30d — side by side for a single title. Pass the game’s numeric id (from a catalog lookup or leaderboard row) as the path parameter.
curl -s "https://api.8bitedge.com/api/v1/demand-intent/games/412" \
  -H "Authorization: Bearer $TOKEN" | jq
{
  "data": {
    "game": {
      "id": 412,
      "name": "Chrono Trigger",
      "console_name": "Nintendo SNES"
    },
    "pricing": {
      "loose": "40.00",
      "complete": "95.50",
      "new": "300.00"
    },
    "periods": {
      "day":  { "redirects": 140,  "distinct_users": 121,  "watch_count": 9,   "rank": 2 },
      "7d":   { "redirects": 980,  "distinct_users": 712,  "watch_count": 64,  "rank": 1 },
      "30d":  { "redirects": 3120, "distinct_users": 2380, "watch_count": 210, "rank": 1 }
    },
    "momentum": {
      "value": 1.4,
      "label": "rising"
    }
  }
}
The endpoint returns 404 if the game ID is unknown or disabled.

”What’s heating up?”

Use the trending endpoint to see games whose recent daily pace most exceeds their 30-day baseline. The response has the same leaderboard row shape as /demand-intent/games, but sort is forced to momentum — you cannot override it here.
curl -s "https://api.8bitedge.com/api/v1/demand-intent/trending" \
  -H "Authorization: Bearer $TOKEN" | jq
Trending is most useful for getting ahead of demand before it fully peaks. A rising game today is often a rank 1 game next week.

”What are buyers waiting for?”

Use the watched endpoint to find games with high watch counts even when redirect intent is relatively low. These are titles where buyer demand exists but supply — or price — hasn’t yet met it.
curl -s "https://api.8bitedge.com/api/v1/demand-intent/watched" \
  -H "Authorization: Bearer $TOKEN" | jq
The response uses the same row shape as the leaderboard. The key difference from the standard leaderboard: this endpoint is built from the watch table first. Redirect intent is left-joined and shown, but may be zero — a game can appear here even if no one has clicked through to eBay recently, as long as buyers are setting price alerts for it.
High watch count + low redirects is the clearest supply-gap signal in the API: buyers exist and are waiting, but aren’t finding listings they’ll act on.

”What condition should I sell in?”

Condition demand is available at three levels of granularity.

Per-game condition breakdown

To find out whether buyers for a specific title want it loose, complete-in-box, new, or don’t have a preference:
curl -s "https://api.8bitedge.com/api/v1/demand-intent/games/412/conditions" \
  -H "Authorization: Bearer $TOKEN" | jq
The response returns all four conditions (loose, cib, new, any) sorted by rank, each with watch_count, condition_share (this condition’s fraction of all alerts for the game), distinct_users, and mobile_share. The any condition represents buyers who set alerts without specifying a condition — they are effectively condition-indifferent.

Market-wide condition mix

To understand what condition the broader market is searching for right now:
curl -s "https://api.8bitedge.com/api/v1/demand-intent/searches/conditions" \
  -H "Authorization: Bearer $TOKEN" | jq
This returns an aggregate across all active searches — not tied to any single game — showing condition_share for each condition. Use this to inform your sourcing strategy at the portfolio level.

Top games wanted in a specific condition

To see which games buyers most want in a particular condition, use /demand-intent/conditions/{condition}:
# What are buyers most wanting CIB?
curl -s "https://api.8bitedge.com/api/v1/demand-intent/conditions/cib" \
  -H "Authorization: Bearer $TOKEN" | jq

# What are buyers most wanting loose?
curl -s "https://api.8bitedge.com/api/v1/demand-intent/conditions/loose" \
  -H "Authorization: Bearer $TOKEN" | jq
Valid values for {condition} are loose, cib, new, and any. The endpoint returns 404 for any other value. Rankings restart within each condition, so the same game can rank first in CIB and fifth in loose.

Search demand

Search demand is keyed by free-text query rather than game ID, because a single search like “chrono trigger snes” spans many potential listings across the catalog. Use these endpoints to understand what buyers are actively typing — and where supply gaps exist.
# Full search leaderboard, sorted by volume (default)
curl -s "https://api.8bitedge.com/api/v1/demand-intent/searches" \
  -H "Authorization: Bearer $TOKEN" | jq
Sorting options:
ValueRanks byBest for
volume (default)Combined search countHighest-traffic queries overall
momentum7d-vs-30d search paceSearches gaining traction fast
unmetZero-result share descendingSupply gaps and sourcing opportunities
Quick-access views — these are pre-sorted shortcuts that use the same response shape as /searches:
# Rising searches (momentum-sorted)
curl -s "https://api.8bitedge.com/api/v1/demand-intent/searches/trending" \
  -H "Authorization: Bearer $TOKEN" | jq

# High-volume searches returning little or nothing (supply gap signal)
curl -s "https://api.8bitedge.com/api/v1/demand-intent/searches/unmet" \
  -H "Authorization: Bearer $TOKEN" | jq
/searches/unmet is one of the most actionable endpoints for sourcing decisions. A query with high search_count and high zero_result_share tells you buyers are actively looking for something the platform can’t supply — find that inventory and list it.

”Which platforms are hot?”

Use the console leaderboard to see which platforms have the most buyer activity overall. This is useful if you trade across multiple systems and want to focus your sourcing budget on the most active markets.
curl -s "https://api.8bitedge.com/api/v1/demand-intent/consoles" \
  -H "Authorization: Bearer $TOKEN" | jq
Each row in the response includes the console’s rank, redirect intent (volume and distinct-user reach), and momentum. The leaderboard can be sorted by intent (default) or momentum. To filter the game-level leaderboards by a specific platform, use the console_id values returned here.

Filtering by console

Most demand list endpoints accept a ?console_id= parameter to focus the results on a single platform. This is useful when you specialize in a particular console or want to compare demand within one ecosystem.
# Top SNES games (console_id 19) by demand
curl -s "https://api.8bitedge.com/api/v1/demand-intent/games?console_id=19" \
  -H "Authorization: Bearer $TOKEN" | jq
Use the /consoles endpoint to look up valid console IDs.

Period and date parameters

All demand list endpoints accept two time-control parameters:
ParameterValuesDefaultNotes
periodday, 7d, 30d7dTime window for the metrics
dateISO date stringLatest computedOverride the reference date
The response meta always includes the resolved period, period_date, and sort so you can confirm which window your data reflects.

Next steps

Demand Games API

Full reference for all /demand-intent/games endpoints and their parameters.

Demand Searches API

Full reference for /demand-intent/searches, trending, and unmet endpoints.

Demand Conditions API

Full reference for condition breakdown and per-condition game rankings.

Demand Consoles API

Full reference for the console leaderboard and console profiles.