---
title: "Search Category Indexes"
method: POST
path: "/v1/cards/category-index-search"
tags: ["Market Data"]
---

# Search Category Indexes

`POST /v1/cards/category-index-search`

## Request

- Base URL: `https://api.cardhedger.com`
- URL: `https://api.cardhedger.com/v1/cards/category-index-search`
- Auth: API key in header `X-API-Key`
- TypeScript: <https://skmtc.dev/cardhedger/apis/card-hedge-api/docs/v1/cards/category-index-search/post.ts> (a function with typed inputs; its response is checked against the schema)

List the category market indexes, or search for one.

Each index is a basket of hand-picked cards (with a grade) for one
category, valued daily. `latest` is the newest daily level (in index
points; compare movements in percent) and `changes` compares it with
1, 7, 30, 90, 180 and 365 days before. Pass an index's `slug` to
`category-index-history` for its values over time.

Send `{}` (or no body) to list every index. `search` matches part of
the name, slug or category; `category` must match exactly. Both ignore
case.

**Finding the index you need**

1. Send `{}` to list every index, or narrow the list with `search`
   (e.g. `{"search": "poke"}`) or `category` (e.g. `{"category": "Hockey"}`).
2. Take the `slug` of the index you want, e.g. `hockey`. The slug is the
   index's stable key, so you can store it and skip this step next time.
3. Pass it as `index` to `category-index-history` for its values over time.

Only need today's level and recent moves, e.g. for a dashboard tile?
This response has them: `latest` and `changes`.

**Example curl:**
```bash
curl -X POST -H "X-API-Key: your-api-key-here" \
     -H "Content-Type: application/json" \
     -d '{}' \
     "https://api.cardhedger.com/v1/cards/category-index-search"
```

## Request body

- CategoryIndexSearchRequest
  - `search` string, nullable: Optional text to find in the index's name, slug or category (case-insensitive). Omit to list every index.
  - `category` string, nullable: Optional exact category, case-insensitive, e.g. `Baseball`.

## Response `200`

Successful Response

- CategoryIndexSearchResponse
  - `count` integer, required
  - `indexes` CategoryIndexItem[], required
    - `slug` string, required: Stable key; pass it to category-index-history
    - `name` string, required
    - `category` string, nullable
    - `description` string, nullable
    - `image_url` string, nullable
    - `base_date` string, date, nullable: First day of the index's history
    - `latest` CategoryIndexLatest, required
      - `value` number, nullable, required: Index level on `as_of`, in points
      - `as_of` string, date, required: The (US Eastern) day of the latest value
      - `card_count` integer, nullable: Cards in the index on that day
      - `cards_priced` integer, nullable: Cards that had a price on that day
      - `calc_version` string, nullable: Version of the index calculation
    - `changes` object, required: Change from N days before `as_of`; null when there is no value to compare with

## Other responses

- `422`: `invalid_request`: a malformed body, or start_date after end_date
- `502`: `upstream_error`: index data is temporarily unavailable

## Changes

- **2026-11-07** `f7ab0cecf985`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/cardhedger/apis/card-hedge-api/changes/v1/cards/category-index-search/post.md)

---

[API](https://skmtc.dev/cardhedger/apis/card-hedge-api.md) - [All operations](https://skmtc.dev/cardhedger/apis/card-hedge-api/llms.txt) - [OpenAPI document](https://skmtc.dev/cardhedger/apis/card-hedge-api/revisions/2bb45185aa09?raw)
