---
title: "Get 90-Day Average Prices by Grade"
method: POST
path: "/v1/cards/90day-prices-by-grade"
tags: ["Market Data"]
---

# Get 90-Day Average Prices by Grade

`POST /v1/cards/90day-prices-by-grade`

## Request

- Base URL: `https://api.cardhedger.com`
- URL: `https://api.cardhedger.com/v1/cards/90day-prices-by-grade`
- Auth: API key in header `X-API-Key`

Get 90-day average prices for cards at a specific grade.

This endpoint returns paginated cards with their average price over the last 90 days
for a specified grade. Optionally filter by search query or category.

To search by relevance instead of browsing page by page, see
`90day-prices-by-grade-search`.

**Parameters:**
- `page`: Page number for pagination (default: 1)
- `page_size`: Number of results per page (1-500, default: 100)
- `grade`: Required. Card grade (e.g., 'PSA 10', 'SGC 10', 'BGS 9.5')
- `search`: Optional search query for card name
- `category`: Optional category filter (e.g., 'Pokemon', 'Baseball')

**Example curl:**
```bash
# Get PSA 10 cards
curl -X POST -H "X-API-Key: your-api-key-here" \
     -H "Content-Type: application/json" \
     -d '{
       "page": 1,
       "page_size": 100,
       "grade": "PSA 10"
     }' \
     "https://api.cardhedger.com/v1/cards/90day-prices-by-grade"

# Search with filters
curl -X POST -H "X-API-Key: your-api-key-here" \
     -H "Content-Type: application/json" \
     -d '{
       "page": 1,
       "page_size": 50,
       "grade": "SGC 10",
       "search": "Pikachu",
       "category": "Pokemon"
     }' \
     "https://api.cardhedger.com/v1/cards/90day-prices-by-grade"
```

Returns paginated cards with 90-day average price and sales count.

## Request body

- PriceByGradeRequest: Request model for 90-day price by grade endpoint.
  - `page` integer: Page number for pagination
  - `page_size` integer: Number of results per page
  - `grade` string, required: Card grade (e.g., 'PSA 10', 'SGC 10', 'BGS 9.5')
  - `search` string, nullable: Optional search query for card name
  - `category` string, nullable: Optional category filter (e.g., 'Pokemon', 'Baseball')

## Response `200`

Successful Response

- PriceByGradeResponse: Response model for 90-day price by grade endpoint.
  - `page` integer: Current page number
  - `pages` integer: Total number of pages
  - `cards` PriceByGradeCard[]: List of cards with price data
    - `description` string, required: Full card description
    - `player` string, required: Player or character name
    - `set` string, required: Card set name
    - `number` string, required: Card number in set
    - `variant` string, required: Card variant
    - `card_id` string, required: Unique card identifier
    - `gemrate_id` string, nullable: GemRate card identifier
    - `image` string, required: Card image URL
    - `category` string, required: Card category
    - `category_group` string, required: Category group
    - `set_type` string, required: Set type
    - `90_day_sales` integer, required: Number of sales in last 90 days
    - `grade` string, required: Card grade
    - `price` string, required: Average price for the grade

## Other responses

- `422`: Validation Error

---

[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/6de42f192a4d?raw)
