> ## Documentation Index
> Fetch the complete documentation index at: https://docs.8bitedge.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Use demand signals to find what retro game buyers want

> Learn how to use the 8bitedge Demand & Intent API to identify trending games, unmet search demand, and condition-level buyer preferences.

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.

<Note>
  All demand endpoints require the **`demand-intent.read`** scope on your API key. Requests with a key missing this scope receive `403 insufficient_scope`.
</Note>

## 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.

```bash theme={null}
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:

```json theme={null}
{
  "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:

| Value              | Ranks by                  | Best for                                                         |
| ------------------ | ------------------------- | ---------------------------------------------------------------- |
| `intent` (default) | Redirect volume           | Finding the highest-traffic titles to source immediately         |
| `watches`          | Watch count descending    | Finding titles buyers want but can't yet find at the right price |
| `momentum`         | Momentum ratio descending | Getting ahead of demand before it fully peaks                    |

```bash theme={null}
# 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.

```bash theme={null}
curl -s "https://api.8bitedge.com/api/v1/demand-intent/games/412" \
  -H "Authorization: Bearer $TOKEN" | jq
```

```json theme={null}
{
  "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.

```bash theme={null}
curl -s "https://api.8bitedge.com/api/v1/demand-intent/trending" \
  -H "Authorization: Bearer $TOKEN" | jq
```

<Tip>
  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.
</Tip>

***

## "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.

```bash theme={null}
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.

<Note>
  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.
</Note>

***

## "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:

```bash theme={null}
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:

```bash theme={null}
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}`:

```bash theme={null}
# 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.

```bash theme={null}
# 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:**

| Value              | Ranks by                     | Best for                               |
| ------------------ | ---------------------------- | -------------------------------------- |
| `volume` (default) | Combined search count        | Highest-traffic queries overall        |
| `momentum`         | 7d-vs-30d search pace        | Searches gaining traction fast         |
| `unmet`            | Zero-result share descending | Supply gaps and sourcing opportunities |

**Quick-access views** — these are pre-sorted shortcuts that use the same response shape as `/searches`:

```bash theme={null}
# 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
```

<Tip>
  `/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.
</Tip>

***

## "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.

```bash theme={null}
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.

```bash theme={null}
# 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:

| Parameter | Values             | Default         | Notes                       |
| --------- | ------------------ | --------------- | --------------------------- |
| `period`  | `day`, `7d`, `30d` | `7d`            | Time window for the metrics |
| `date`    | ISO date string    | Latest computed | Override 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

<CardGroup cols={2}>
  <Card title="Demand Games API" href="/api/demand-games">
    Full reference for all `/demand-intent/games` endpoints and their parameters.
  </Card>

  <Card title="Demand Searches API" href="/api/demand-searches">
    Full reference for `/demand-intent/searches`, trending, and unmet endpoints.
  </Card>

  <Card title="Demand Conditions API" href="/api/demand-conditions">
    Full reference for condition breakdown and per-condition game rankings.
  </Card>

  <Card title="Demand Consoles API" href="/api/demand-consoles">
    Full reference for the console leaderboard and console profiles.
  </Card>
</CardGroup>
