You need reliable, programmable access to trading card price history so you can value a portfolio, run P&L, or trigger buy/sell alerts this week. By the end of this guide, you’ll search for a specific card and pull its recent graded sale prices—ready to drop into your finance workflows, dashboards, and automated jobs.
What this API delivers
The Sports Card and Trading Card API exposes two core capabilities that matter for finance and pricing work:
- Card Search: fast fuzzy search to resolve a human query into a specific card identity and get a card_id plus basic metadata.
- Get Card Prices: time-series price data for a given card_id and grade over a requested lookback window (in days).
You’ll use Card Search to map a query like “LeBron James Topps Chrome 2003” to an exact card_id, then Get Card Prices to fetch the recent sales time series for a specific grade (e.g., PSA 10). The result is a lightweight but finance-ready pipeline you can wire into valuation, NAV snapshots, alerts, and reporting.
Getting started on Zyla API Hub
Open the API page, subscribe, and get your key. Zyla API Hub centralizes more than 10,000 public APIs with one account, one API key, and a subscription + quota model (not pay-per-call). For this API, you can start with a 7-day trial or 50 requests—check the listing for current access options and pricing.
Start 7-day trial on Sports Card and Trading Card API
Authentication: send Authorization: Bearer YOUR_API_KEY on every request.
Endpoints you’ll use
1) Card Search
Method: GET
URL: https://zylalabs.com/api/2511/sports-card-and-trading-card-api/2494/card-search
Purpose: Resolve a free-text query to one or more matching cards, each with a card_id and metadata you’ll need to request prices.
Required query parameter:
- search (string): your free-text query, e.g., Lebron James
Official cURL example:
curl -s -X GET "https://zylalabs.com/api/2511/sports-card-and-trading-card-api/2494/card-search?search=Lebron+James" \
-H "Authorization: Bearer YOUR_API_KEY"
Official JSON example response:
[
{
"description": "LeBron James 2003 Topps Basketball",
"player": "Lebron James",
"set": "2003 Topps Basketball",
"number": "221",
"variant": "Base",
"card_id": "1588290260620x609083468203688000",
"image": "//s3.amazonaws.com/appforest_uf/f1588290324330x374737296708651100/2003-Topps-Basketball-LeBron-James-graded.jpg",
"category": "Basketball",
"category_group": "Sports Cards",
"set_type": "Topps Basketball"
},
{
"description": "LeBron James 2003 Upper Deck Rookie Exclusives Basketball",
"player": "Lebron James",
"set": "2003 Upper Deck Rookie Exclusives Basketball",
"number": "1",
"variant": "Base",
"card_id": "1593982609906x272877681796710400",
"image": "//s3.amazonaws.com/appforest_uf/f1593982606419x316822824595257800/2003-Upper-Deck-Rookie-Exclusives-Lebron-James-1.jpg",
"category": "Basketball",
"category_group": "Sports Cards",
"set_type": "Upper Deck Rookie Exclusives Basketball"
},
{
"description": "LeBron James 2025 Topps Chrome Cactus Jack Basketball",
"player": "LeBron James",
"set": "2025 Topps Chrome Cactus Jack Basketball",
"number": "46",
"variant": "Base",
"card_id": "1782184797693x851477815192830800",
"image": "//s3.amazonaws.com/appforest_uf/f1598843985116x489100344198574160/05-Basketball.jpg",
"category": "Basketball",
"category_group": "Sports Cards",
"set_type": "Topps Chrome Cactus Jack Basketball"
},
{
"description": "LeBron James 2003 Topps Chrome Basketball",
"player": "Lebron James",
"set": "2003 Topps Chrome Basketball",
"number": "111",
"variant": "Base",
"card_id": "1586412050491x786559417729941500",
"image": "//942284f33c575895b4be9de571ca6e40.cdn.bubble.io/d112/f1766768512710x492230808547762700/resize",
"category": "Basketball",
"category_group": "Sports Cards",
"set_type": "Topps Chrome Basketball"
},
{
"description": "LeBron James 2024 Panini Prizm Basketball",
"player": "LeBron James",
"set": "2024 Panini Prizm Basketball",
"number": "130",
"variant": "Base",
"card_id": "1740403688997x505339465151470000",
"image": "//942284f33c575895b4be9de571ca6e40.cdn.bubble.io/d112/f1757384268822x692013733346557700/resize",…
Key fields:
- description, player, set, number, variant: human-readable identity for UI and logs.
- card_id: the identifier you must use with Get Card Prices.
- image: relative path to an image of the card.
2) Get Card Prices
Method: GET
URL: https://zylalabs.com/api/2511/sports-card-and-trading-card-api/2495/get-card-prices
Purpose: Retrieve a time series of recent prices for a specific card and grade over a requested window.
Required query parameters:
- card_id (string): e.g., 1586412050491x786559417729941500
- days (string): lookback period (e.g., 90)
- grade (string): grading label (e.g., PSA 10)
Official cURL example:
Official JSON example response:
[
{
"closing_date": "2026-08-03T23:59:00.000Z",
"Grade": "PSA 10",
"card_id": "1586412050491x786559417729941500",
"price": "16150.00"
},
{
"closing_date": "2026-08-01T23:59:00.000Z",
"Grade": "PSA 10",
"card_id": "1586412050491x786559417729941500",
"price": "18250.00"
},
{
"closing_date": "2026-07-31T23:59:00.000Z",
"Grade": "PSA 10",
"card_id": "1586412050491x786559417729941500",
"price": "17900.00"
},
{
"closing_date": "2026-07-27T23:59:00.000Z",
"Grade": "PSA 10",
"card_id": "1586412050491x786559417729941500",
"price": "17303.00"
},
{
"closing_date": "2026-07-21T23:59:00.000Z",
"Grade": "PSA 10",
"card_id": "1586412050491x786559417729941500",
"price": "17373.00"
},
{
"closing_date": "2026-07-17T23:59:00.000Z",
"Grade": "PSA 10",
"card_id": "1586412050491x786559417729941500",
"price": "15337.20"
},
{
"closing_date": "2026-07-15T23:59:00.000Z",
"Grade": "PSA 10",
"card_id": "1586412050491x786559417729941500",…
Fields you’ll actually use:
- closing_date: ISO 8601 UTC timestamps marking price closing times (Z suffix indicates UTC).
- price: a string representing the sale price amount. Currency is not specified in the response—store and present it accordingly.
- Grade: the grading label of the price series you requested.
- card_id: echoes the card you queried; useful for joins and multi-card pipelines.
Copy-paste Python: fetch prices and compute a quick metric
The snippet below requests a 90-day series for a specific card_id at PSA 10 grade and computes a simple last price and average. You can adapt the aggregation for NAVs, drawdowns, or risk limits.
import os
import requests
from decimal import Decimal
from statistics import mean
API_KEY = os.getenv("ZYLA_API_KEY", "YOUR_API_KEY")
url = "https://zylalabs.com/api/2511/sports-card-and-trading-card-api/2495/get-card-prices"
params = {
"card_id": "1586412050491x786559417729941500",
"days": "90",
"grade": "PSA 10",
}
headers = {
"Authorization": f"Bearer {API_KEY}",
}
resp = requests.get(url, headers=headers, params=params, timeout=30)
resp.raise_for_status()
data = resp.json() # array of { closing_date, Grade, card_id, price }
# Parse price strings into Decimal for finance-safe arithmetic
prices = [Decimal(entry["price"]) for entry in data]
dates = [entry["closing_date"] for entry in data]
last_price = prices[0] if prices else None # most recent appears first in the sample
avg_price = (mean(prices) if prices else None)
print("observations:", len(prices))
print("most_recent_date:", dates[0] if dates else None)
print("most_recent_price:", str(last_price) if last_price is not None else None)
print("average_price_lookback:", str(Decimal(avg_price)) if avg_price is not None else None)
Finance workflows you can ship this week
- Portfolio valuation: Store a watchlist of card_id + grade pairs; run a daily job to pull the latest price and compute NAV and P&L. Keep everything in UTC since closing_date timestamps are UTC.
- Risk and exposure monitoring: Set thresholds on rolling averages or max drawdown over a lookback window (e.g., 30–90 days) and alert when breached.
- Order routing and price bands: For marketplaces that require pre-trade checks, compare the incoming ask to a moving average or the most recent print to reject outliers.
- Performance reporting: Snapshot end-of-week prices and produce time-weighted returns for alternative-asset sleeves that include trading cards.
Implementation notes that save time
- Authentication: Every request must include Authorization: Bearer YOUR_API_KEY.
- Time zone: closing_date values are UTC (notice the Z). Do all date math in UTC to avoid off-by-one issues around midnight boundaries.
- Ordering: If you rely on “most recent first,” verify ordering on your side. Persist sorted-by-date views before computing rolling metrics.
- Parsing: Treat price as a string and convert to Decimal (or your language’s exact decimal type) before arithmetic to avoid float drift.
- Caching: For dashboards, consider caching the last response for a card_id/grade/days tuple to avoid redundant calls within the same refresh interval.
- Quotas: Zyla uses subscription + quota. For initial integration, you can begin with a 7-day trial or 50 requests; check the listing for specifics as they can change.
Step-by-step: resolve a card and fetch its prices
1) Resolve the card
Use Card Search with a specific query string that includes player, set, year, and variant when possible. From the response, pick the intended match and copy its card_id.
2) Pull graded time series
Call Get Card Prices with the chosen card_id, your desired days window, and the grade (e.g., PSA 10). Store the series in your data store and perform downstream analytics.
Using the API from AI agents via MCP
If you prefer to orchestrate calls through an AI agent that speaks the Model Context Protocol (MCP), point your client to the MCP endpoint and supply your API key. Refer to the documentation here: MCP. With MCP configured, your agent can call the same marketplace endpoints shown above, using the same Authorization header and URL paths.
End-to-end example in cURL
The quickest way to validate your pipeline is to copy these two calls:
- Search for the card (replace YOUR_API_KEY):
- From the response, choose a card_id (for example, 1586412050491x786559417729941500), then fetch its prices:
Where this fits in a finance stack
Trading cards are a growing alternative-asset sleeve for collectors, funds, and marketplaces. The combination of Card Search and Get Card Prices lets you:
- Normalize identities using card_id so you can deduplicate watchlists and holdings.
- Build a clean price series per grade to compute returns, rolling vol, and z-scores.
- Feed portfolio tools, accounting systems, and risk checks with structured, timestamped prints.
Because the API returns ISO 8601 timestamps and stringified prices, you can store raw values as-is, then parse deterministically when calculating metrics.
Subscribe and ship
To integrate now, subscribe on the marketplace item page, get your key, and run the cURL above. Zyla API Hub keeps all your APIs under one key and subscription, so you don’t have to manage multiple vendor accounts. Start here: Start 7-day trial on Sports Card and Trading Card API
FAQ
How do I find the correct card_id?
Use the Card Search endpoint with a detailed query, then select the intended item from the response and copy its card_id. Feed that into Get Card Prices.
What time zone are the closing_date timestamps?
They are ISO 8601 with a Z suffix, which indicates UTC. Perform date math in UTC to avoid boundary issues.
What currency are the prices in?
The response includes a price field as a string amount. The currency is not specified in the response; handle presentation consistently across your app.
Is there a free plan?
Access follows a subscription + quota model (not pay-per-call). The listing offers a 7-day trial or 50 requests to get started; check the API page for current access options and pricing.
Can I call these endpoints through an AI agent?
Yes. Configure your MCP-compatible client to use the MCP endpoint and include your API key. See: MCP.
Official API response
[
{
"description": "LeBron James 2003 Topps Basketball",
"player": "Lebron James",
"set": "2003 Topps Basketball",
"number": "221",
"variant": "Base",
"card_id": "1588290260620x609083468203688000",
"image": "//s3.amazonaws.com/appforest_uf/f1588290324330x374737296708651100/2003-Topps-Basketball-LeBron-James-graded.jpg",
"category": "Basketball",
"category_group": "Sports Cards",
"set_type": "Topps Basketball"
},
{
"description": "LeBron James 2003 Upper Deck Rookie Exclusives Basketball",
"player": "Lebron James",
"set": "2003 Upper Deck Rookie Exclusives Basketball",
"number": "1",
"variant": "Base",
"card_id": "1593982609906x272877681796710400",
"image": "//s3.amazonaws.com/appforest_uf/f1593982606419x316822824595257800/2003-Upper-Deck-Rookie-Exclusives-Lebron-James-1.jpg",
"category": "Basketball",
"category_group": "Sports Cards",
"set_type": "Upper Deck Rookie Exclusives Basketball"
},
{
"description": "LeBron James 2025 Topps Chrome Cactus Jack Basketball",
"player": "LeBron James",
"set": "2025 Topps Chrome Cactus Jack Basketball",
"number": "46",
"variant": "Base",
"card_id": "1782184797693x851477815192830800",
"image": "//s3.amazonaws.com/appforest_uf/f1598843985116x489100344198574160/05-Basketball.jpg",
"category": "Basketball",
"category_group": "Sports Cards",
"set_type": "Topps Chrome Cactus Jack Basketball"
},
{
"description": "LeBron James 2003 Topps Chrome Basketball",
"player": "Lebron James",
"set": "2003 Topps Chrome Basketball",
"number": "111",
"variant": "Base",
"card_id": "1586412050491x786559417729941500",
"image": "//942284f33c575895b4be9de571ca6e40.cdn.bubble.io/d112/f1766768512710x492230808547762700/resize",
"category": "Basketball",
"category_group": "Sports Cards",
"set_type": "Topps Chrome Basketball"
},
{
"description": "LeBron James 2024 Panini Prizm Basketball",
"player": "LeBron James",
"set": "2024 Panini Prizm Basketball",
"number": "130",
"variant": "Base",
"card_id": "1740403688997x505339465151470000",
"image": "//942284f33c575895b4be9de571ca6e40.cdn.bubble.io/d112/f1757384268822x692013733346557700/resize",…
Official API response
[
{
"description": "LeBron James 2003 Topps Basketball",
"player": "Lebron James",
"set": "2003 Topps Basketball",
"number": "221",
"variant": "Base",
"card_id": "1588290260620x609083468203688000",
"image": "//s3.amazonaws.com/appforest_uf/f1588290324330x374737296708651100/2003-Topps-Basketball-LeBron-James-graded.jpg",
"category": "Basketball",
"category_group": "Sports Cards",
"set_type": "Topps Basketball"
},
{
"description": "LeBron James 2003 Upper Deck Rookie Exclusives Basketball",
"player": "Lebron James",
"set": "2003 Upper Deck Rookie Exclusives Basketball",
"number": "1",
"variant": "Base",
"card_id": "1593982609906x272877681796710400",
"image": "//s3.amazonaws.com/appforest_uf/f1593982606419x316822824595257800/2003-Upper-Deck-Rookie-Exclusives-Lebron-James-1.jpg",
"category": "Basketball",
"category_group": "Sports Cards",
"set_type": "Upper Deck Rookie Exclusives Basketball"
},
{
"description": "LeBron James 2025 Topps Chrome Cactus Jack Basketball",
"player": "LeBron James",
"set": "2025 Topps Chrome Cactus Jack Basketball",
"number": "46",
"variant": "Base",
"card_id": "1782184797693x851477815192830800",
"image": "//s3.amazonaws.com/appforest_uf/f1598843985116x489100344198574160/05-Basketball.jpg",
"category": "Basketball",
"category_group": "Sports Cards",
"set_type": "Topps Chrome Cactus Jack Basketball"
},
{
"description": "LeBron James 2003 Topps Chrome Basketball",
"player": "Lebron James",
"set": "2003 Topps Chrome Basketball",
"number": "111",
"variant": "Base",
"card_id": "1586412050491x786559417729941500",
"image": "//942284f33c575895b4be9de571ca6e40.cdn.bubble.io/d112/f1766768512710x492230808547762700/resize",
"category": "Basketball",
"category_group": "Sports Cards",
"set_type": "Topps Chrome Basketball"
},
{
"description": "LeBron James 2024 Panini Prizm Basketball",
"player": "LeBron James",
"set": "2024 Panini Prizm Basketball",
"number": "130",
"variant": "Base",
"card_id": "1740403688997x505339465151470000",
"image": "//942284f33c575895b4be9de571ca6e40.cdn.bubble.io/d112/f1757384268822x692013733346557700/resize",…