Sold comps
Pokemon Card Listings API
| Source | Limit | Plan |
|---|---|---|
eBay sold Completed-sale evidence behind aggregate values. | 1-20 Default 20; cursor pagination for deeper comp review. | Scale or Business Rate limited separately at 30 requests per 30 seconds per account. |
Endpoint
GET /v2/cards/:id/listings
curl -H "X-API-Key: YOUR_KEY" \
"https://api.poketrace.com/v2/cards/019bff77.../listings?grader=PSA&grade=10&sort=price_desc"Returns eBay sold comps with title, source item ID, price, sold date, grader, grade, condition, URL, anomaly metadata, and pagination.
- Listings require the Scale or Business plan.
- The endpoint only returns eBay sold listings.
- The listings burst limit is 30 requests per 30 seconds per user/account.
Parameters
Path Parameters
id string | PokeTrace card ID from /cards or /cards/:id. 019bff77-befa-771d-bab0-f5909f0a78c9 |
Query Parameters
limit number | Listings per page. Max 20, default 20. 20 |
cursor string | Pagination cursor from pagination.nextCursor. MjA= |
grader string | Filter by grading company. The API normalizes this to uppercase. PSA |
grade string | Filter by numeric grade stored on the listing. 10 |
min_price / max_price number | Positive price bounds for comp review. 1000 / 10000 |
sort enum | sold_at_desc, sold_at_asc, price_desc, or price_asc. price_desc |
Response fields
Listing Fields
Fields returned for each sold eBay listing.
id number | Internal listing row ID. 421012 |
sourceItemId string | Marketplace item identifier. 123456789012 |
listingType string | null | Listing classification when available. auction |
title string | Original listing title used for comp inspection. Pokemon Base Set Charizard PSA 10 |
price / currency number / string | Sold price and currency for the comp. 5200 USD |
listingUrl string | null | URL back to the marketplace listing when available. https://www.ebay.com/itm/123456789012 |
Comp Metadata
Fields used to explain why a listing matched a raw or graded tier.
condition string | null | Raw card condition inferred or stored for the listing. NEAR_MINT |
grader string | null | Detected grading company for slab comps. PSA |
grade string | null | Detected numeric grade for slab comps. 10 |
soldAt string | null | ISO timestamp for completed sale. 2026-01-27T12:00:00.000Z |
anomalyFlag boolean | null | Whether the listing was flagged as suspicious or outlier-like. false |
anomalyReason string | null | Reason attached to anomalyFlag when present. price_outlier |
Examples
const params = new URLSearchParams({
grader: "PSA",
grade: "10",
min_price: "1000",
sort: "price_desc",
})
const response = await fetch(
`https://api.poketrace.com/v2/cards/019bff77.../listings?${params}`,
{ headers: { "X-API-Key": process.env.POKETRACE_API_KEY } },
)
const { data } = await response.json(){
"data": [{
"sourceItemId": "123456789012",
"title": "Pokemon Base Set Charizard PSA 10",
"price": 5200,
"currency": "USD",
"listingUrl": "https://www.ebay.com/itm/123456789012",
"grader": "PSA",
"grade": "10",
"soldAt": "2026-01-27T12:00:00.000Z",
"anomalyFlag": false,
"anomalyReason": null
}],
"pagination": { "hasMore": true, "nextCursor": "MjA=", "count": 20 }
}When to Use It
Use listings for comp evidence, not for normal search. Load /cards first, then fetch /listings only when the UI needs to show why a price is believable.
Audit Trail
Show title, soldAt, price, grader, grade, listingUrl, and anomalyReason together. That gives users enough context to accept or reject a comp.
Filtering Strategy
For slab workflows, pass grader and grade instead of parsing titles client-side. For raw workflows, use price bounds and sort order to review extreme comps.
Frequently asked questions
Can I show sold eBay Pokemon card comps in my app?
Yes, on Scale and Business. The endpoint returns individual sold listings with prices, sold timestamps, grader fields, URLs, and anomaly metadata.
Should I call listings for every search result?
No. Use /cards for search and current pricing. Use /listings when a user opens a card, audits a valuation, or needs high-confidence comp evidence.