Discover/PSA Card API
live

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.

Endpoint health
verified 4m ago
search_price_guide
get_cert_details
get_cert_sales
list_population_sets
search_population_report
11/11 passing latest checkself-healing
Endpoints
12
Updated
21h ago

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.

This call costs1 credit / call— charged only on success
Try it
PSA Certification Number (e.g., '69225215')
→ api.parse.bot/scraper/311daf8c-242f-4c68-af70-b50617fd1d13/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
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'
All endpoints · 12 totalmissing one? ·

Retrieve details for a specific PSA certification number. Returns card name, grade, population data, images, spec ID, and PSA value estimate.

Input
ParamTypeDescription
cert_numberrequiredstringPSA Certification Number (e.g., '69225215')
Response
{
  "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.

Reliability & maintenanceVerified

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.

Last verified
4m ago
Latest check
11/11 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • 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
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 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.

Frequently asked questions
Does PSA have an official public developer API?+
PSA does not publish a general-purpose public developer API. PSA's cert verification tools are gated behind membership and business agreements. This Parse API provides structured access to the same public cert, population, and price guide data without requiring a PSA business account.
What does get_cert_full return compared to get_cert_details?+
get_cert_details returns card metadata (grade, year, brand, subject, images, spec_id, population string) for one cert. get_cert_full fetches the same metadata plus the full grade-breakdown row from the population report — Grade1 through Grade10, half grades, qualifier counts, and a Total integer — so you get both the individual card's grade and the distribution of every graded copy in one response. It also accepts a cert_numbers array of up to 200 items.
How do the price_grades and grade columns vary between sets?+
The PSA Price Guide does not use the same grade columns for every set. Vintage sets may show columns from PR 1 through MT 9, while modern sets typically show 1 through 10. The get_set_population_and_prices endpoint returns a price_grades array that lists the actual column labels for the requested set in table order, so your code should read that field rather than assuming a fixed set of columns.
Does the API return all-time sales history for a certification?+
Not currently. get_cert_sales returns the sales shown on the public cert page (newest first) with a truncated flag set to true when more sales exist behind PSA's authenticated 'View All' link; total_sales is always null because PSA does not expose an all-time count publicly. You can fork this API on Parse and revise it to add an endpoint that retrieves the extended sales history for authenticated users.
Can I retrieve population data for PSA Authentic (ungraded) or half-grade certifications?+
Grade counts for numeric grades 1–10 are returned by get_population_report_by_set and get_population_by_spec. The population report includes qualifier and half-grade columns in get_cert_full and list_population_sets (via the year_total object), but individual card-level qualifier and half-grade breakdowns are not broken out as separate fields in the per-card endpoints. You can fork this API on Parse and revise it to surface those additional grade columns at the card level.
Page content last updated . Spec covers 12 endpoints from psacard.com.
Related APIs in MarketplaceSee all →
alt.xyz API
Find authenticated graded trading cards on alt.xyz by their certification number to instantly access the card's details, current Alt Value with confidence ranges, daily price trends, population statistics, and comparable market sales data for that grade. Use this information to track card valuations, understand market demand, and make informed trading decisions.
cgccards.com API
Access data from cgccards.com.
cardladder.com API
Search your favorite trading cards and instantly access current pricing, Card Ladder values, confidence scores, and recent sales history to make informed collecting and trading decisions. Get detailed market data across all three endpoints to track card values and monitor how prices have changed over time.
tcgplayer.com API
Search for trading cards across all games and sets on TCGPlayer, and instantly access detailed pricing information by condition plus current seller listings with prices, shipping costs, and seller ratings. Compare card values and find the best deals from multiple sellers all in one place.
pricecharting.com API
Access collectible pricing data from PriceCharting.com. Search for Pokémon cards, US coins, and other collectibles to retrieve current prices across multiple grades (ungraded, PSA 9, PSA 10, MS62, MS66, and more), browse full set listings, view historical price trends, and explore recent sold listings.
app.getcollectr.com API
Search and retrieve detailed information about collectible trading cards and sealed products, including current market prices, historical price trends, and grading data to track and compare your collection's value. Find specific cards or products quickly and access comprehensive market insights to make informed collecting and trading decisions.
futbin.com API
Search and retrieve FIFA Ultimate Team player data including market prices, detailed statistics, and performance metrics. Analyze market trends and compare player values across the full EA FC player catalog.
cgccomics.com API
Access data from cgccomics.com.