PSA Card APIpsacard.com ↗
Access PSA certification details, population reports, and price guide data for graded cards. 12 endpoints covering cert lookup, grade counts, and sales history.
What is the PSA Card API?
The PSA Card API exposes 12 endpoints covering certification lookup, population reports, and price guide data from PSAcard.com. With get_cert_details you can retrieve a card's grade, subject, year, brand, spec ID, and PSA value estimate by cert number. Other endpoints let you search population reports by keyword, pull grade-by-grade counts for entire sets, and fetch recent sales alongside fair market value pricing — all in structured JSON.
curl -X GET 'https://api.parse.bot/scraper/311daf8c-242f-4c68-af70-b50617fd1d13/get_cert_details?cert_number=69225215' \ -H 'X-API-Key: $PARSE_API_KEY'
Retrieve details for a specific PSA certification number. Returns card name, grade, population data, images, spec ID, and PSA value estimate.
| Param | Type | Description |
|---|---|---|
| cert_numberrequired | string | PSA Certification Number (e.g., '69225215') |
{
"type": "object",
"fields": {
"year": "string year the card was issued",
"brand": "string brand/title of the card set",
"grade": "string PSA grade (e.g., 'GEM MT 10')",
"images": "array of full-size image URLs for the card (may be empty if no images scanned)",
"spec_id": "string SpecID identifying the card specification in PSA's system",
"subject": "string subject/player name on the card",
"variety": "string variety or pedigree designation (e.g., 'DARK PHANTASMA'), empty string if none",
"card_title": "string full title including year, brand, card number, and subject",
"population": "string total PSA population count for the card set",
"card_number": "string card number within the set (e.g., '074')",
"cert_number": "string the certification number",
"psa_estimate": "string PSA value estimate (e.g., '$115.00'), or null if unavailable",
"back_image_url": "absolute HTTPS URL of the full-size card back image, or null if unavailable",
"front_image_url": "absolute HTTPS URL of the full-size card front image, or null if unavailable"
},
"sample": {
"data": {
"url": "https://www.psacard.com/cert/69225215/psa",
"cert_number": "69225215"
},
"status": "success"
}
}About the PSA Card API
Certification and Population Data
The get_cert_details endpoint accepts a PSA certification number and returns the card's full metadata: year, brand, grade, subject, card_number, variety, card_title, spec_id, and a population string for the set. Image URLs are included in the images array when PSA has scans on file. For bulk lookups, get_cert_details_batch accepts a JSON array of up to 200 cert numbers and returns results in request order, each with a success flag. The combined get_cert_full endpoint merges cert metadata with the full grade-breakdown (Grade1–Grade10 plus qualifier and half-grade columns) in a single call — useful when you need both the individual card's grade and the distribution of all graded copies.
Population Reports by Set
To explore population data at the set level, start with search_population_report, which accepts a keyword query and returns matching sets with HeadingID, SetName, YearIssued, SportCategoryID, and CategoryName. Pass the HeadingID as set_id and SportCategoryID as category_id into get_population_report_by_set to retrieve all cards in that set with per-card grade counts (Grade1 through Grade10), SubjectName, CardNumber, Variety, and SpecID. The is_psa_dna flag filters results to PSA/DNA-certified autograph items when needed. For a single card, get_population_by_spec returns the same grade-count breakdown using a spec_id obtainable from get_cert_details or the set population response.
Price Guide Integration
search_price_guide searches by keyword and returns sets with SMRSetID, SetName, SportCategoryID, and SetNameSEO — the slug fields required by downstream endpoints. get_set_population_and_prices takes smr_set_id, set_slug, and category_slug and returns both the full price table (prices array with per-grade fair market values and price_grades column labels) and the full population array in one response. The heading_id field links the price guide set to its population report counterpart. list_price_guide_sets lists every set in a category given a category_id, supporting an optional name filter via query.
Category Browsing and Sales History
browse_population_categories returns two parallel category lists in one call: categories for the Price Guide (with category_id for filtering) and population_categories for the Population Report (with slug for pop report URLs). list_population_sets lists all sets for a given Population Report category and year, returning SetName, HeadingID, grade columns, and a year_total summary row. get_cert_sales retrieves recent sales from a cert's public page, with each sale carrying date_sold, price, title, venue, listing URL, and image_url. The truncated boolean signals when additional sales exist beyond what the public page exposes.
The PSA Card API is a managed, monitored endpoint for psacard.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when psacard.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official psacard.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a portfolio tracker that resolves cert numbers to grades and PSA value estimates via get_cert_details
- Compare grade distributions across competing card sets using get_population_report_by_set with Grade1–Grade10 counts
- Monitor recent sale prices for a specific cert with get_cert_sales to track market movement over time
- Generate fair market value tables for entire sets by combining search_price_guide with get_set_population_and_prices
- Identify PSA/DNA autograph population counts for a set using the is_psa_dna flag in get_population_report_by_set
- Batch-validate cert authenticity and grade for up to 200 cards at once with get_cert_details_batch
- Enumerate every graded set in a PSA Population Report category and year using list_population_sets with year_total summaries
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.