TCGiant Pricing API
Access trading card market prices, eBay sold listings, and historical price data. Build price guides, collection trackers, and pricing tools with our REST API.
Overview
- ✅ Requests are made over HTTPS
- ✅ Responses are returned in JSON format
- ✅ CORS headers included for cross-site requests
- ✅ Prices are integers in cents (e.g., $17.32 = 1732)
- ✅ Dates are encoded as YYYY-MM-DD strings
Authentication
Every API call requires an API key. Pass it as a query parameter or header:
Rate Limits
| Tier | Requests/Min | Requests/Day | Price |
|---|---|---|---|
| Free | 10 | 100 | $0 |
| Pro | 60 | 10,000 | TBD |
Error Handling
Every response includes a status field set to success or error.
API Endpoints
/api/v1/card
Get a single card with prices across all 15 conditions.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | integer | No | Card ID |
slug | string | No | Card slug |
q | string | No | Search query (card name, set, number) |
Example
/api/v1/cards
Search and list cards with pagination.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
q | string | No | Search query |
set | string | No | Filter by set slug |
game | string | No | Filter by game slug (default: pokemon) |
page | integer | No | Page number (default: 1) |
limit | integer | No | Results per page (default: 20, max: 100) |
Example
/api/v1/sets
List all card sets, optionally filtered by game.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
game | string | No | Filter by game slug |
page | integer | No | Page number |
limit | integer | No | Results per page (default: 50) |
Example
/api/v1/sales
Get recent eBay sold listings for a card with filtering.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
card_id | integer | Yes | Card ID |
condition | string | No | Filter: UNGRADED, GRADE_9, PSA_10, etc. |
grading_company | string | No | Filter: PSA, CGC, BGS, TAG |
from | date | No | Start date (YYYY-MM-DD) |
to | date | No | End date (YYYY-MM-DD) |
include_outliers | boolean | No | Include outlier sales (default: true) |
page | integer | No | Page number |
limit | integer | No | Results per page (default: 25) |
Example
/api/v1/price-history
Get historical price data for charting. Returns time-series snapshots.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
card_id | integer | Yes | Card ID |
condition | string | No | Condition (default: UNGRADED) |
period | string | No | daily or weekly (default: daily) |
from | date | No | Start date (default: 90 days ago) |
to | date | No | End date (default: today) |
Example
/api/v1/games
List all supported TCG brands/games.
Example
Condition IDs
We track 15 conditions for each card, covering ungraded and graded across all major grading companies.
| API Key | Label | Description |
|---|---|---|
ungraded | Ungraded | No grading service has given the card a grade |
grade_1 | Grade 1 | Graded by PSA, BGS, or CGC as 1 |
grade_2 | Grade 2 | Graded by PSA, BGS, or CGC as 2 |
grade_3 | Grade 3 | Graded by PSA, BGS, or CGC as 3 |
grade_4 | Grade 4 | Graded by PSA, BGS, or CGC as 4 |
grade_5 | Grade 5 | Graded by PSA, BGS, or CGC as 5 |
grade_6 | Grade 6 | Graded by PSA, BGS, or CGC as 6 |
grade_7 | Grade 7 | Graded by PSA, BGS, or CGC as 7 |
grade_8 | Grade 8 | Graded by PSA, BGS, or CGC as 8 |
grade_9 | Grade 9 | Graded by PSA, BGS, or CGC as 9 |
grade_9_5 | Grade 9.5 | Graded by BGS as 9.5 |
psa_10 | PSA 10 | Graded by PSA as a 10 (Gem Mint) |
cgc_10 | CGC 10 | Graded by CGC as a 10 (Pristine/Perfect) |
bgs_10 | BGS 10 | Graded by BGS (Beckett) as a 10 (Pristine) |
tag_10 | TAG 10 | Graded by TAG as a 10 (Gem Mint) |
How We Determine Prices
We combine all eBay sold listing data to determine the current market price. Our algorithm considers:
- 📊 EWMA — Exponentially Weighted Moving Average gives more weight to recent sales (40% of final price)
- 📈 Median Price — Most robust against manipulation (35% of final price)
- 🔄 Recent Average — Average of last 5 sales for responsiveness (25% of final price)
- 🚫 Outlier Detection — IQR method flags suspiciously low/high sales
- ⏳ Age Weighting — Recent sales (7 days) weighted at 100%, older sales decay
Minimum 3 non-outlier sales required to calculate a price. Outlier sales are preserved in the database and visible in sales history but excluded from price calculations.
TCGiant Pricing