Discover/PSA Card API
live

PSA Card APIpsacard.com

Access PSA certification details, population reports, price guide searches, and recent sales data for graded collectibles via a structured JSON API.

This API takes change requests — .
Endpoint health
verified 1h ago
search_population_report
get_population_report_by_set
get_cert_sales
get_cert_full
get_cert_details
8/8 passing latest checkself-healing
Endpoints
9
Updated
6d ago

What is the PSA Card API?

This API exposes 9 endpoints covering PSA-graded collectible data, including certification lookup, population reports, and price guide search. The get_cert_details endpoint returns grade, subject, year, brand, card number, spec ID, population count, and image URLs for any PSA cert number. Other endpoints let you search population reports by keyword, drill into per-set or per-spec grade distributions, and retrieve recent sale records attached to a specific certification.

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 · 9 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 Lookup and Sales

get_cert_details accepts a single cert_number and returns the card's grade, subject, year, brand, card_number, variety, spec_id, population, and an array of full-size images. For bulk workflows, get_cert_details_batch accepts a JSON array of up to 200 cert numbers via the cert_numbers parameter and returns results in request order, with each item including a success flag plus the same identification fields. get_cert_full combines cert details with the full grade-level population breakdown (Grade1 through Grade10, GradeTotal, Total) for one cert or a batch of up to 200, making it the most complete single-call option for valuation or inventory tooling.

get_cert_sales returns the recent sale history attached to a cert page: each sale object includes date_sold, price, title, venue, and a listing URL. The truncated boolean indicates whether additional sales exist beyond the public window. total_sales is always null because PSA does not expose an all-time count on the public cert page.

Population Report

search_population_report accepts a query string (for example, '1999 Pokemon Game' or 'Mickey Mantle') and an optional category_id, returning matching sets with their HeadingID, SetName, YearIssued, SportCategoryID, and CategoryName. Those IDs feed into get_population_report_by_set, which returns grade counts (Grade1 through the top grade) for every card in the set, paginated via start and length and filterable with a search parameter. get_population_by_spec narrows the query to a single card by spec_id, returning individual grade counts and a Total.

Price Guide and Categories

search_price_guide mirrors the population search interface but returns price guide entries, each with SMRSetID, SetName, SportCategoryID, CategoryName, and SetNameSEO. It does not return per-grade price values directly — it identifies the matching set records. browse_population_categories requires no inputs and returns the full list of collectible categories with their name, slug, url, and category_id, which can be passed as category_id filters in other endpoints.

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
1h ago
Latest check
8/8 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 looks up cert numbers in bulk and stores grade, population, and recent sale prices.
  • Identify short-printed or high-grade-scarce cards by comparing Grade10 counts against Total from get_population_by_spec.
  • Monitor recent sale prices for a specific PSA cert using get_cert_sales to track market movement over time.
  • Construct a grading arbitrage tool that cross-references population data from get_population_report_by_set with price guide results.
  • Catalog a card collection by batch-fetching cert details for up to 200 slabs in one call with get_cert_details_batch.
  • Enumerate all available collectible categories via browse_population_categories to build a category-aware search UI.
  • Cross-reference HeadingID and SportCategoryID from search_population_report into get_population_report_by_set for full set census data.
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 offer an official developer API?+
PSA does not publish a public developer API or offer documented programmatic access to its population report, cert lookup, or price guide data for third-party use.
What does get_cert_full return that get_cert_details does not?+
get_cert_full combines the identification fields from cert details (grade, year, brand, subject, spec_id, variety, card_number) with the full grade-level population breakdown — Grade1 through Grade10, GradeTotal, and Total — in a single response. get_cert_details returns only the aggregate population string, not the per-grade counts.
Are there limitations on the sales data returned by get_cert_sales?+
Yes. The endpoint returns only the sales visible on the public cert page, newest first. When additional sales exist behind PSA's authenticated 'View All' link, the response sets truncated=true. The total_sales field is always null because PSA does not surface an all-time sale count on the public page.
Does the API return actual per-grade price values from the PSA Price Guide?+
Not currently. search_price_guide returns set-level records (SMRSetID, SetName, CategoryName, SetNameSEO) that identify matching price guide entries, but it does not return the numeric SMR price values for each grade. You can fork this API on Parse and revise it to add an endpoint that retrieves per-grade pricing for a specific SMRSetID.
Can I filter population searches by category without getting empty results?+
Both search_population_report and search_price_guide accept an optional category_id parameter, but the endpoints note that non-zero values may return empty results. The safest approach is to use category_id=0 (the default) for broad searches, then use the SportCategoryID values returned in results to identify the correct category for downstream calls.
Page content last updated . Spec covers 9 endpoints from psacard.com.
Related APIs in MarketplaceSee all →
cgccards.com API
Access data from cgccards.com.
sportscardspro.com API
Access data from sportscardspro.com.
mntgrading.com API
Access data from mntgrading.com.
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.
sportscarddatabase.com API
Access data from sportscarddatabase.com.
gosgc.com API
Look up details about your SGC graded sports cards by entering their certification code to instantly access grading information, card specifications, and authentication status. Verify the authenticity and condition assessment of your collectible cards to confirm their market value and authenticity.
beckett.com API
Search and retrieve trading card news articles from Beckett.com across non-sport and vintage card categories, including checklists and set information. Browse posts by category or look up specific articles to stay updated on the latest card market trends and releases.
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.