Graded Card Auction Prices API (Goldin, Fanatics Collect, Pristine Auction, MySlabs)
Realized prices from Goldin, Fanatics Collect (formerly PWCC), Pristine Auction and MySlabs by keyword, with buyer's premium, sold date, sale type, grading company and grade, through one CompSniper API key.
CompSniper has four endpoints for realized prices from the big graded card and collectibles auction houses:
| Endpoint | Source | What you get |
|---|---|---|
GET /v1/goldin/sold | Goldin | Sold lots with hammer price, buyer's premium, final price, bid count and sale type |
GET /v1/fanatics/sold | Fanatics Collect (formerly PWCC) | Sales with final price, sale type, grading company, grade, cert number and year |
GET /v1/pristine/sold | Pristine Auction | Ended lots with the realized price, end time and sale type |
GET /v1/myslabs/sold | MySlabs | Sold slabs with price (1% buyer's premium included), shipping, sold day and sale type |
All four use the same API key, per-minute limit, monthly allowance and purchased credits as the eBay endpoints, on every plan including free. No auction-house account is needed. Every call is one keyword search and counts as one request; failed calls are never charged.
price is what the buyer paid in US dollars. Where the house charges a buyer's premium (Goldin,
Fanatics Collect auctions, MySlabs) it is included, so prices compare directly with eBay sold prices.
Request
curl --fail-with-body \
-H "Authorization: Bearer cs_live_REPLACEWITHYOURKEY" \
"https://api.compsniper.com/v1/goldin/sold?keyword=1999+pokemon+base+set+charizard+psa+8"import requests
for house in ["goldin", "fanatics", "pristine", "myslabs"]:
response = requests.get(
f"https://api.compsniper.com/v1/{house}/sold",
headers={"Authorization": "Bearer cs_live_REPLACEWITHYOURKEY"},
params={"keyword": "michael jordan 1986 fleer psa 8"},
timeout=60,
)
response.raise_for_status()
data = response.json()
print(house, data["totalItems"], "sales, median", (data["summary"] or {}).get("median"))Parameters
| Parameter | Values | Default |
|---|---|---|
keyword | Card, player, set and grade, up to 300 characters | Required |
sortBy | recent, price_desc, price_asc | recent |
page | Goldin 1 to 100, Fanatics Collect 1 to 200, Pristine 1 to 50, MySlabs 1 only | 1 |
deep | MySlabs only: true merges several result sets for a few hundred sales | false |
Page sizes: 50 sales (Goldin, Fanatics Collect), 60 (Pristine Auction), up to 72 (MySlabs). Keep requesting
the next page while hasNextPage is true.
MySlabs returns one page per search. Add deep=true to merge the results of every sort order and price
range for the same keyword (a few hundred distinct sales, about 10 seconds). Deep MySlabs calls count as
one request each and are limited to about 3 per minute per account.
Response
{
"keyword": "1999 pokemon base set holo charizard psa 8",
"page": 1,
"pageSize": 50,
"marketplace": "goldin",
"sortBy": "recent",
"totalResults": 178,
"totalItems": 50,
"hasNextPage": true,
"items": [
{
"saleId": "202609-0920-5312-36623fb6-0c1e-4a95-aaf9-bd7fcfc8fbaf",
"url": "https://goldin.co/item/1996-pokemon-japanese-basic-set-no-rarity-holo-6-charizard-psa-nm-mt-8bkr1g",
"title": "1996 Pokemon Japanese Base Set No Rarity Symbol Holo #6 Charizard - PSA NM-MT 8",
"price": 152500,
"hammerPrice": 125000,
"buyersPremiumPercent": 22,
"shippingPrice": null,
"currency": "USD",
"soldAt": "2026-10-26T04:05:54.000Z",
"saleType": "Thematic",
"bids": 42,
"gradingService": "PSA",
"grade": "8",
"certNumber": null,
"year": 1996,
"category": null,
"imageUrl": null
}
],
"summary": { "count": 50, "currency": "USD", "median": 6133.55, "mean": 81155.21, "min": 350.14, "max": 3080500, "p25": 1235.56, "p75": 31262.5, "avgShipping": null },
"scrapedAt": "2026-10-31T09:00:00.000Z"
}Fields
| Field | Meaning |
|---|---|
saleId | The house's id for the sale or lot |
url | Link to the lot (Goldin, Pristine Auction, MySlabs) |
price | What the buyer paid in USD, buyer's premium included where the house charges one |
hammerPrice, buyersPremiumPercent | Winning bid and premium rate (Goldin); MySlabs premium is 1% |
shippingPrice | Shipping the buyer paid, when shown (MySlabs) |
soldAt | Sale time in UTC; MySlabs gives the day only |
saleType | How it sold, for example FIXED, WEEKLY, PREMIER (Fanatics Collect), Weekly, Elite, Thematic (Goldin), Fixed price, Auction (MySlabs) |
bids | Number of bids (Goldin) |
gradingService, grade | Grading company and grade (Fanatics Collect from its records, the others read from the title) |
certNumber | The slab's certificate number (Fanatics Collect) |
year, category, imageUrl | Card year, category (Fanatics Collect) and image |
The houses match keywords loosely, the way their own search boxes do: the search above also returns other
Charizard cards and grades, which is why its price range is wide. Check title, grade and year (or add
the set, number and grade to the keyword) before you use a price as a comp for one exact card.
totalResults is how many sales match the search when the house reports it. summary holds the count,
median, mean, min, max, p25 and p75 of the returned prices.
Coverage
| Source | Coverage |
|---|---|
| Fanatics Collect | 5.5 million sales back to 2008, including PWCC history; sorted by sold date or price |
| Goldin | Every sold lot that matches the keyword, sorted by sold date or price |
| Pristine Auction | Ended lots that match the keyword |
| MySlabs | The most recent sold slabs for the keyword (up to 72), or a few hundred with deep=true |
Billing
- One successful call is one request on every endpoint, including MySlabs with
deep=true. - Failed requests are free.
- Repeat calls can return instantly from a short-lived saved copy and count as one request.
Errors
These endpoints use the shared error format (code, error, requestId):
| Status | Code | Meaning | What to do |
|---|---|---|---|
| 400 | invalid_params | Missing keyword, a page out of range, or a MySlabs page above 1 | Fix the request |
| 429 | rate_limited / quota_exceeded | Per-minute limit or monthly allowance reached | See Rate limits |
| 502, 503 | upstream_blocked / server_busy | The house did not answer this time, or MySlabs is busy | Retry after a few seconds, with a bound |
See Errors for the full list. For PSA population reports and PSA's own sales records by grade, see the PSA endpoints.
PSA Population and Graded Card Prices API
PSA graded card prices by grade, population reports for a single card or a whole set, card search and a full list of PSA sets per game, with one API key.
Grailed Sold Listings API
Get Grailed sold prices (what buyers actually paid), sold dates, shipping, size and condition, plus active listings, with one CompSniper API key.