200,000+ new sale records ingested daily

Sports Card Sales API

Every card that sold — across eBay, Goldin, Heritage, Fanatics-Vault, REA, Alt, and Pristine — available as clean, queryable JSON. Individual sale records with true sold prices, not averages or estimates.

What is the Sports Card Sales API?

The Card API gives developers programmatic access to individual transaction records for trading card sales across every major marketplace. Instead of scraping eBay completed listings yourself or manually pulling auction results from Goldin and Heritage, you make a single HTTP request and get structured JSON with the actual sale price, date, platform, and listing details.

This is raw, transaction-level data — not aggregated averages, not 90-day rolling estimates. If a Mike Trout 2011 Topps Update PSA 10 sold for $2,450 via Best Offer on eBay at 11:42 PM, that record is in the database within hours, with the true accepted offer price, not the asking price.

The API covers 38+ card categories — baseball, basketball, football, hockey, soccer, Pokemon, sports memorabilia, and more — with a unified JSON schema across all platforms and listing types (auction, fixed price, and Best Offer).

200,000+

New records / day

7

Platforms unified

38+

Card categories

Platform coverage

All seven platforms are included on every tier, including the free tier.

PlatformTypeListing typesTrue Best Offer
eBayGeneral marketplaceAuction · Fixed Price · Best OfferYes — accepted price
GoldinPremium auction houseAuctionN/A
HeritagePremium auction houseAuctionN/A
Fanatics-VaultAuthenticated marketplaceFixed Price · Best OfferYes — accepted price
REASpecialty auction houseAuctionN/A
AltModern marketplaceFixed Price · Best OfferYes — accepted price
PristineAuction houseAuctionN/A

What you get

Every feature is available on every tier — the difference between plans is volume and lookback depth, not feature gating.

Individual sale records

Every row is one transaction. Not a daily average, not a 30-day median — the actual sale, with price, date, title, platform, and listing type. Build any aggregation you need on top of the raw data.

True Best Offer prices

eBay Best Offer sales are notoriously opaque. We capture the actual accepted offer price, not the asking price — critical for accurate comparable analysis. Every record is tagged with listing_type.

Full-text search

Query by any combination of player name, set name, year, grade, parallel, or variation. The search spans all platforms simultaneously. No per-platform integration needed.

Rich filter params

Filter by platform (eBay, Goldin, Heritage, etc.), date range (date_from + date_to), price range (min_price + max_price), and listing type (Auction, FixedPrice, BestOffer).

200,000+ records daily

New completed listings are ingested continuously. eBay alone contributes over 195,000 records per day across all categories. Goldin and Heritage add thousands more per auction event.

Unified JSON schema

Every platform returns the same JSON shape: id, title, platform, listing_type, sale_price, sale_date, listing_url, category. One integration covers all seven sources.

CSV export

Download any filtered query as a CSV file for spreadsheet analysis, bulk loading into a database, or feeding a machine learning model. Export limits vary by tier.

MCP server for AI agents

7 AI-native tools for use with Claude, Cursor, and any MCP-compatible client. Pull card sales data directly into your AI workflow using natural language queries.

Code examples

Search for recent card sales across all platforms in your language of choice.

Python

import requests

resp = requests.get(
    "https://thecardapi.com/api/v1/market/sales",
    params={"q": "Mike Trout PSA 10", "date_from": "2025-04-01", "limit": 50},
    headers={"x-market-api-key": "YOUR_API_KEY"},
)
for sale in resp.json()["data"]:
    print(f"{sale['sale_date']}  ${sale['sale_price']:,.0f}  [{sale['listing_type']}]  {sale['platform']}")

JavaScript / Node.js

const params = new URLSearchParams({ q: "Mike Trout PSA 10", date_from: "2025-04-01", limit: "50" });
const res = await fetch(`https://thecardapi.com/api/v1/market/sales?${params}`, {
  headers: { "x-market-api-key": "YOUR_API_KEY" },
});
const { data } = await res.json();
data.forEach(s => console.log(`${s.sale_date}  $${s.sale_price}  [${s.listing_type}]  ${s.platform}`));

curl

curl "https://thecardapi.com/api/v1/market/sales?q=Mike+Trout+PSA+10&date_from=2025-04-01&limit=50" \
  -H "x-market-api-key: YOUR_API_KEY"

Response

{
  "data": [
    {
      "id":           "ebay_3941827461",
      "title":        "2011 Topps Update Mike Trout RC #US175 PSA 10",
      "platform":     "eBay",
      "listing_type": "BestOffer",
      "sale_price":   2450.00,
      "sale_date":    "2025-04-12",
      "listing_url":  "https://www.ebay.com/itm/...",
      "category":     "Baseball Cards"
    },
    {
      "id":           "goldin_18841",
      "title":        "2011 Topps Update Mike Trout Rookie #US175 BGS 9.5",
      "platform":     "Goldin",
      "listing_type": "Auction",
      "sale_price":   3100.00,
      "sale_date":    "2025-04-08",
      "listing_url":  "https://goldin.co/...",
      "category":     "Baseball Cards"
    }
  ],
  "total": 184,
  "page":  1,
  "per_page": 50
}

How The Card API compares

Compared against DIY scraping, price guide websites, and eBay's native API.

The Card APIDIY scrapingPrice guide siteseBay Browse API
Individual transactionsYesPartialNoYes (eBay only)
True Best Offer pricesYesNoNoNo
Multi-platform coverage7 platforms1 at a timeVarieseBay only
200K+ records / dayYesManual effortAggregatedYes (eBay only)
Structured JSON APIYesBuild it yourselfNoYes
Full-text + price filtersYesNoLimitedLimited
CSV exportYesBuild it yourselfOftenNo
MCP / AI agent supportYes (7 tools)NoNoNo
Free tier10,000/dayFree (build it)Often freeRate-limited
Integration time< 5 minutesDays to weeksN/AHours

Common use cases

What developers are building with The Card API.

Comp lookup tools

Build a comparable sales tool that shows recent transactions for any card across all platforms. The q parameter handles natural search queries like '2020 Bowman Chrome Wander Franco auto PSA 10'.

Portfolio valuation

Pull 7–30 days of comps for each card in a collection, calculate market price, and track value changes over time. Combine with the /daily endpoint for aggregate market stats.

AI agent integrations

Use the MCP server to give Claude or GPT access to live card market data. Agents can answer 'what did a Luka rookie sell for this week?' in natural language.

Market analytics dashboards

Build analytics showing price trends, volume by platform, auction vs. fixed price price divergence, and category-level market health.

Auction platform integrations

Embed sold-price comps directly into your auction listing creation flow to help sellers price accurately relative to recent market activity.

Machine learning models

Download bulk CSV exports to train regression models predicting card values from grade, player stats, set year, or condition. Historical data available on Pro and Enterprise tiers.

Pricing

Start free — upgrade only when your usage demands it.

Free

$0

  • 10,000 sales/day
  • 7-day lookback
  • CSV export (10K rows)
  • MCP server access
  • Email support

Starter

$9/mo

  • 50,000 sales/day
  • 7-day lookback
  • CSV export (50K rows)
  • Everything in Free
Most popular

Pro

$49/mo

  • 500,000 sales/day
  • 30-day lookback
  • Unlimited CSV export
  • Webhook notifications
  • Everything in Starter

Enterprise

Custom

  • Unlimited sales/day
  • Full history
  • S3 bulk delivery (daily)
  • Cursor pagination
  • Dedicated support + SLA

Starter and Pro plans include a 7-day free trial. Cancel anytime.

Frequently asked questions

What is the Sports Card Sales API?
The Card API is a REST API that provides programmatic access to individual trading card sale records from eBay, Goldin, Heritage, Fanatics-Vault, REA, Alt, and Pristine. Each record is a single completed transaction — one card, one sale, one price — with the true sold price, listing type, platform, and date. It is not a price guide or average estimate; it is raw market transaction data.
How is this different from eBay's own API?
eBay's Browse API lets you search active listings and completed items, but it does not expose the true accepted price on Best Offer sales — it shows the listing price. The Card API captures the actual negotiated price on Best Offer transactions. It also aggregates data from 6 other major platforms (Goldin, Heritage, REA, Fanatics-Vault, Alt, Pristine) in a single unified schema, which eBay's API cannot provide.
How many card sales are available per day on the free tier?
The free tier allows 10,000 sale records per day with a 7-day lookback window. No credit card is required. This is sufficient for most hobby projects, comp tools, and AI agent use cases.
Which card categories are covered?
The API covers 38+ card categories including Baseball Cards, Basketball Cards, Football Cards, Hockey Cards, Soccer Cards, Pokemon, Magic: The Gathering, non-sport cards, sports memorabilia, golf, tennis, boxing, UFC/MMA, racing, and wrestling. All categories are available on all tiers.
Does the API include Best Offer prices from eBay?
Yes. The Card API captures the true accepted offer price on eBay Best Offer sales. This is a critical differentiator — most price guides and data sources report the listing price for Best Offer transactions, which can overstate actual sold prices by 15–40%. The listing_type field on every record identifies whether the sale was Auction, FixedPrice, or BestOffer.
Can I access historical card sales data?
Yes. The free tier includes a 7-day lookback window. The Pro tier ($49/month) extends this to 30 days, which is useful for trend analysis and price modeling. The Enterprise tier provides access to the full historical database from the API's inception.
Is there an MCP server for AI agents?
Yes. The Card API includes an MCP (Model Context Protocol) server at https://thecardapi.com/api/mcp with 7 AI-native tools. Any MCP-compatible client — Claude Desktop, Cursor, Claude Code — can query card market data directly using natural language. Configure it with your API key as a Bearer token.

Start pulling card sales data

Free tier: 10,000 sales/day, 7-day lookback, no credit card required. First request in under 2 minutes.

Get Free API Key →