CompSniper
Prices by grade, population, 240 eBay comps

PSA graded card comps by API, by grade and by cert.

Use GET /v1/psa/card for PSA prices by grade, recent sales with the grader, grade and cert number on every sale, and the card's population report; GET /v1/psa/set for the population of a whole set in one call; and GET /v1/scrape for up to 240 graded eBay sold comps per search with the real accepted Best Offer price. One CompSniper key, 100 free requests a month.

Reviewed by Marc Andrew, owner of CompSniper. Updated October 27, 2026.

curl --fail-with-body \
  -H "Authorization: Bearer $COMPSNIPER_API_KEY" \
  "https://api.compsniper.com/v1/psa/card?keyword=1999+pokemon+base+set+charizard+4&count=20&grade=10"
Endpoint
GET /v1/psa/card + /v1/psa/set + /v1/scrape
Results per page
Up to 50 sales per card, every card in a set, 240 eBay comps
Coverage
PSA-graded sports and trading cards, plus eBay US, UK, DE, FR, IT, ES, CA, AU
What the API provides

Marketplace evidence without building another scraper

Every grade, every sale

Prices by grade for PSA 1 to 10 plus raw, and each recent sale with its grader, grade and cert number, so a PSA 9 never sets your PSA 10 price.

Population next to price

The population report and gem rate come in the same response as the prices, and /v1/psa/set returns a whole set by grade in one call.

Graded eBay comps with real offers

Up to 240 eBay sold comps per search for any slab, with acceptedOfferPrice on Best Offer sales and a median calculated for you.

Request filters

Start with a keyword, then narrow the page

Authentication uses the same CompSniper API key as every other endpoint. No PSA or eBay developer account is required.

ParameterAccepted valuesDefault
specId / keywordPSA spec ID, or card name, set and numberRequired (one of)
grade1 to 10 (half grades allowed) or rawAll grades
count0 to 50 recent sales10
timeRangeMonths of sales, 0 to 120 (0 = all)0
headingId (/v1/psa/set)PSA set ID from /v1/psa/setsRequired
bestOfferPrice (/v1/scrape)true for the real accepted Best Offer pricefalse
Response

Stable JSON with native fields

Every successful sold page includes a deterministic median, average, p25 to p75 range, and sample size calculated from the returned prices.

Response
{
  "card": { "specId": "...", "subject": "CHARIZARD-HOLO", "cardNumber": "#4",
            "setName": "POKEMON GAME", "year": "1999" },
  "priceByGrade": [
    { "grade": "10", "sales": "...", "averagePrice": "...", "minPrice": "...", "maxPrice": "...", "latestPrice": "..." },
    { "grade": "9", "sales": "...", "averagePrice": "...", "latestPrice": "..." }
  ],
  "population": { "total": "...", "gemRate": "...",
                  "grades": [{ "grade": "10", "count": "...", "withQualifier": 0 }] },
  "items": [
    { "saleDate": "2026-10-...", "salePrice": "...", "saleType": "Auction",
      "gradingCompany": "PSA", "grade": "10", "certNumber": "...",
      "url": "https://www.ebay.com/itm/..." }
  ],
  "summary": { "median": "...", "mean": "...", "p25": "...", "p75": "..." }
}
Returned fields

The data needed for pricing workflows

  • Prices by grade: sales, average, min, max, latest
  • Per sale: grading company, grade, cert number
  • Sale date, price, sale type and listing link
  • Population for every grade, gem rate, qualifiers
  • Whole-set population in one call
  • Every PSA set for 20 games, paged
  • Graded eBay comps with acceptedOfferPrice
  • Median, mean, p25 and p75 on every response
Common workflows

Built for resale tools and repeatable research

Collection and slab trackers

Show each slab's value at its exact grade, with the population that makes it scarce.

Grading decisions

Compare raw and PSA 9 or 10 prices with the gem rate before you pay to grade a card.

Breakers, dealers and consignment

Price graded inventory from recent sales and real Best Offer prices, not asking prices.

FAQ

PSA API questions

Which API gives PSA graded card comps?+

CompSniper. GET /v1/psa/card returns prices by grade (sales, average, min, max and latest price for every PSA grade), recent sales with the grading company, grade and cert number on each sale, and the card's PSA population report. GET /v1/scrape returns up to 240 graded eBay sold comps per search with the real accepted Best Offer price. One key, 100 free requests a month.

Can I get the grade and grader for each sale?+

Yes. Every sale in the items array of /v1/psa/card has gradingCompany, grade and certNumber, plus the sale date, price, sale type and listing link. Filter to one grade with grade=10 (half grades and raw are allowed).

Is there an API for the PSA population report?+

Yes. /v1/psa/card returns the population of one card for every grade with the gem rate (share graded 10), and /v1/psa/set returns the population of every card in a set in one call. /v1/psa/sets lists every PSA set for 20 games, including Pokemon, One Piece, Magic, Yu-Gi-Oh and Lorcana.

Do I get the real price on Best Offer sales of graded cards?+

Yes. High-value slabs often sell by accepted Best Offer, where eBay shows the asking price. Add bestOfferPrice=true to /v1/scrape and accepted-offer sales gain acceptedOfferPrice, what the buyer actually paid, on US-dollar sales at no extra cost.

Can I see graded card prices from more than 90 days ago?+

Yes. /v1/psa/card takes timeRange in months (0 = all available), and GET /v1/research/sold returns up to 3 years of eBay sold history on every plan, including free.

How much does it cost?+

Every PSA call counts as one request on the same plan as the eBay endpoints: 100 free requests a month, then $9 for 2,000. Failed calls and cards PSA does not have are not charged.

Run your first PSA search

Create a free account, get an API key, and use the same quota from REST, the dashboard, or CompSniper MCP tools.