Certification and authenticity verification
Use PSA endpoints to turn certification and authenticity verification into repeatable API requests with documented inputs and JSON responses.
Turn PSA's (Professional Sports Authenticator) public grading and authentication reference data into structured JSON -- verify a certification number, search and browse PSA's Price Guide for trading-card values, and browse CardFacts card-set checklists, AutographFacts and TicketFacts subject profiles and exemplar image galleries, and ProBatFacts bat-authentication reference pages. Credential-free.
Extract PSA certification lookups, Price Guide values, and CardFacts/AutographFacts/ProBatFacts/TicketFacts authentication reference data as structured JSON.
Endpoint families
6
Documented params
42
Examples
20
Live catalog snapshot
Active endpoints
20
Methods
GET
Required params
37
Schema refs
20
{
"platform": "PSA",
"endpoint": "psa-cert-lookup",
"method": "GET",
"path": "/psa/cert-lookup",
"auth": "apiKey"
}Use cases
Extract PSA certification lookups, Price Guide values, and CardFacts/AutographFacts/ProBatFacts/TicketFacts authentication reference data as structured JSON.
Use PSA endpoints to turn certification and authenticity verification into repeatable API requests with documented inputs and JSON responses.
Use PSA endpoints to turn trading-card price-guide research into repeatable API requests with documented inputs and JSON responses.
Use PSA endpoints to turn card, autograph, ticket, and bat authentication reference lookups into repeatable API requests with documented inputs and JSON responses.
Managed execution
Every figure below is read from the live PSA endpoint catalog — 20 endpoints, 42 documented request parameters, and 20 published response schemas — the same catalog Docs and Playground run against.
20 documented PSA endpoints, grouped into 6 request families — Autographfacts, Price Guide and Probatfacts, plus 3 more.
42 request parameters are documented across those PSA endpoints, 37 of them required — the full input contract is public before you write any integration code.
20 of the 20 PSA endpoints ship a recorded example response, and 20 carry a documented response schema — you can code against the real JSON before the first request.
PSA endpoints document their error responses (400, 404, 500 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
20 hosted MCP tools back the PSA endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Coverage map
/psa/autographfacts/categories
/psa/price-guide/categories
/psa/probatfacts/categories
/psa/ticketfacts/categories
/psa/cardfacts/categories
/psa/cert-lookup
Featured endpoints
/psa/cert-lookupLooks up PSA's own public Cert Verification record for one PSA-graded card by its certification number: item title, grade, label type, reverse cert/barcode flag, year, brand/title, subject, card number, category, PSA's own price estimate, and this-cert's-own population figures (population for this exact card+grade, and pop-higher). Scoped to PSA's trading-card department; a cert number issued under a different PSA division (autographs, tickets) returns a not-found error. PSA's full Population Report and Auction Prices Realized both require a PSA/Collectors account login and are not available through this endpoint.
Response notes
- A successful lookup is cached for up to 6 hours, so `psa_estimate` and the population figures can be that old on a repeat request. An uncached lookup typically takes 5 to 30 seconds. - `psa_estimate`, `psa_population`, `psa_population_url` and `psa_pop_higher` are omitted when PSA shows no figure for a given field on this cert (e.g. an ungraded/authentic-only item carries no PSA Estimate). - `psa_population_url` is PSA's own Population Report deep link for this card+grade, informational only — following it requires a Collectors account login. - `label_type` is empty when the cert carries PSA's standard label (no special label variant like Fugitive Ink or a Black Label-style qualifier). - A cert number PSA cannot resolve (invalid, or issued under a non-trading-card department) returns `404`.
Sampled 14 Oct 2026: 15 of 15 fields returned with a value. cert_number: 125,866,845; title: “2003 POKEMON SKYRIDGE #146 CHARIZARD-HOLO”.
MCP tool psa_cert_lookup
/psa/price-guide/categoriesPSA Price Guide's full category list -- the discovery endpoint for the category_path parameter used to browse or fetch a set's price table. Every category is a distinct collectible type (Baseball Cards, Basketball Cards, Boxing Cards, Football Cards, Golf Cards, Hockey Cards, Soccer Cards, Non-Sports/TCG Cards, Racing Cards, Sports Tickets, Tennis, Unopened Packs, Presidential Autographs, Sports Autographs, Professional Model/Game-Used Bats, Graded Baseballs).
Response notes
- `path` is the category segment of the URL of the sets inside it, so use the returned value verbatim as `category_path` for `psa-price-guide-set` and `psa-price-guide-sets`. It is not a uniform slug+id template: most categories end in `-values`, but `non-sports-tcg-card-values`, `game-used-bat-values` and `graded-baseball-values` differ from the older slugs PSA's navigation links redirect from, and Presidential Autographs and Graded Baseballs each hold a single set.
Sampled 14 Oct 2026: 16 items, 3 fields filled in every item. name: “Baseball Cards” and 15 other values; path: “baseball-card-values” and 15 other values.
MCP tool psa_price_guide_categories
/psa/price-guide/searchSearches PSA Price Guide by free text (a player/subject name or set name), matching PSA's own site search box. Each result is a matching set with the query's matching cards/items inside it; use a result's category_path, set_path and set_id as the input to psa-price-guide-set to fetch that set's full price table.
Response notes
- If this endpoint returns a `503` because PSA's own search is unavailable, use `psa-price-guide-sets` to find a set by name instead; it does not match card or player names. - Use a result's `category_path`, `set_path` and `set_id` as the input to `psa-price-guide-set` to fetch that set's full price table. - `items` lists only the cards within that set that matched the query, not the set's full checklist — call `psa-price-guide-set` for the complete set.
Sampled 14 Oct 2026: 20 items, 6 fields filled in every item. set_name: “1974 Topps” and 19 other values; items: median 1 entry.
MCP tool psa_price_guide_search
/psa/price-guide/setsSearches PSA Price Guide by set name (for example "1974 topps" or "super bowl") using PSA's own browse-by-category pages. It matches set names only: it does not search card or player names, and results carry no card items. Use psa-price-guide-search for card and player search while PSA's own search is available. Every word of the query must start a word of the set name; exact and leading matches rank first. Each result's category_path, set_path and set_id are the inputs to psa-price-guide-set. Set lists are cached for 12 hours, so a first call after a cold start can take longer. If a category's set list cannot be loaded, the other categories still answer and unavailable_categories names the missing ones.
Response notes
- Use a result's `category_path`, `set_path` and `set_id` as the input to `psa-price-guide-set` to fetch that set's full price table. - Ranking: sets whose name equals the query come first, then names that start with the query, then the rest in PSA's own order. - `total_count` is every match across all pages. A query with no match returns `200` with `total_count` 0 and an empty `sets` list. - Each category's set list is cached for 12 hours, so the first call after a quiet period (or a restart) can be slower than later ones. The 16 categories hold about 2,900 sets; new sets appear after the cache refreshes. - If one category's set list cannot be loaded, the other categories still answer and `unavailable_categories` names the missing ones, so `sets` and `total_count` cover the remaining categories only. A request fails with `503` only when no category could be loaded. - `category_name` is the category's display name from `psa-price-guide-categories`, for example `Baseball Cards`. Example response (a live `query=1974 topps` result, checked 2026-10-25): ```json { "code": 200, "msg": "OK", "data": { "query": "1974 topps", "page": 1, "page_size": 50, "total_count": 6, "sets": [ { "set_id": 1239, "set_name": "1974 Topps", "category_name": "Baseball Cards", "category_path": "baseball-card-values", "set_path": "1974-topps" }, { "set_id": 1708, "set_name": "1974 Topps", "category_name": "Basketball Cards", "category_path": "basketball-card-values", "set_path": "1974-topps" }, { "set_id": 694, "set_name": "1974 Topps", "category_name": "Football Cards", "category_path": "football-card-values", "set_path": "1974-topps" }, { "set_id": 1576, "set_name": "1974 Topps", "category_name": "Hockey Cards", "category_path": "hockey-card-values", "set_path": "1974-topps" }, { "set_id": 1240, "set_name": "1974 Topps Deckle Edge", "category_name": "Baseball Cards", "category_path": "baseball-card-values", "set_path": "1974-topps-deckle-edge" }, { "set_id": 2491, "set_name": "1974 Topps Stamps", "category_name": "Baseball Cards", "category_path": "baseball-card-values", "set_path": "1974-topps-stamps" } ] } } ```
Sampled 29 Oct 2026: 6 items, 5 fields filled in every item. set_name: 1974 Topps (4), 1974 Topps Deckle Edge (1), 1974 Topps Stamps (1); category_name: “Baseball Cards” and 3 other values.
MCP tool psa_price_guide_sets
/psa/price-guide/setFetches one PSA Price Guide set's full grade-by-grade price table: every card in the set with PSA's own formatted price per grade column (the set's own grade columns vary -- a vintage set may carry more/lower grade tiers than a modern one). category_path, set_path and set_id together identify the set; use the matching fields from a psa-price-guide-search result, or category_path from psa-price-guide-categories combined with a set_path/set_id found by browsing PSA's own category page.
Response notes
- `category_path`, `set_path` and `set_id` must all three match exactly — the numeric `set_id` alone does not resolve if either slug is wrong. Use the matching fields from one `psa-price-guide-search` result rather than constructing them independently. - `grades` is the set's own grade-column labels, in PSA's own display order (e.g. `["NM 7","NM-MT 8","MT 9","GEM-MT 10"]`). This varies by set — a vintage set may carry more/lower grade tiers than a modern one. - A card's `prices` map omits any grade with no price for that card, rather than including it with an empty value. - Some rows are PSA's own group-summary entries (e.g. "Commons 1-660") covering a print-run range rather than one specific card. These carry real prices but no `item_id`. - A `category_path`/`set_path`/`set_id` combination PSA cannot resolve returns `404`.
Sampled 14 Oct 2026: 680 items, 0 fields filled in every item, 4 not. card_number: 1 to 483, median 240; description: “Commons 1-660” and 498 other values.
MCP tool psa_price_guide_set
/psa/cardfacts/categoriesPSA CardFacts' full category list -- the discovery endpoint for the category_id parameter used to browse sets. Nine categories: Baseball, Basketball, Boxing, Football, Golf, Hockey, Misc Sports, Multi-Sport, and Non-Sports/TCG.
Response notes
- This is a separate category id space from `psa-price-guide-categories`, `psa-autographfacts-categories`, `psa-ticketfacts-categories`, and `psa-probatfacts-categories` — ids `10` and `16` in particular mean different things in CardFacts than in Price Guide. Do not assume a shared category id means the same category across PSA's different sub-products.
Sampled 14 Oct 2026: 9 items, 2 fields filled in every item. name: “Baseball” and 8 other values.
MCP tool psa_cardfacts_categories
Related APIs
Marketplaces & Retail
Research new, used, and vintage instruments across Reverb listings, seller shops, and the Price Guide. Keep current asking prices separate from historical sales, and preserve model, finish, year, condition, and currency when comparing gear.
Marketplaces & Retail
Collect marketplace product signals from Amazon without building brittle storefront scrapers.
Marketplaces & Retail
Build resale, pricing, and marketplace workflows from structured eBay data.
How to scrape PSA
PSA publishes public certification verification, price-guide data, and several authentication reference families (CardFacts, AutographFacts, ProBatFacts, TicketFacts) on its own site. Crawlora's PSA endpoints return each family's category taxonomy alongside its detail data as normalized JSON -- no account. A pull on 2026-10-27 showed three separate category directories for card facts (9), price guide (16) and autograph facts (19), and that the same sport has different ids in each.
Pass a PSA cert number to /psa/cert-lookup to verify it.
List categories with /psa/price-guide/categories, search card or player queries with /psa/price-guide/search, or search set names with /psa/price-guide/sets. The set search matches names only; pass its returned category_path, set_path, and set_id to /psa/price-guide/set for the full table.
List categories with /psa/cardfacts/categories, sets in a category with /psa/cardfacts/sets, and a set's card checklist with /psa/cardfacts/checklist.
List categories and subjects in a category, then pass a subject to the family's own subject-profile and exemplar-gallery endpoints (e.g. /psa/autographfacts/subject and /psa/autographfacts/gallery).
cardfacts categories returned 9, price-guide categories 16 and autographfacts categories 19. Baseball is id 13 in card facts, 13 in the price guide (Baseball Cards, path baseball-card-values) and id 4 in autograph facts, so never reuse a category id across products.
The set and checklist routes take ids from the category and set routes, and the price-guide set route also needs a category path and set path. Keep the path strings with the ids.
Agent skills
Install a Crawlora agent skill and your agent can pull PSA data as JSON through the documented API, without writing a scraper. These skills cover PSA:
Researches public trading-card and sports-collectible markets through the Crawlora API — card identity, PSA certification and price-guide evidence…
npx skills add github.com/Crawlora-org/crawlora-skills --skill collectibles-market-researchFAQ
Yes. /psa/cert-lookup verifies a PSA cert number and returns PSA's own public certification record.
Yes. /psa/price-guide/search and /psa/price-guide/set return PSA's own public trading-card price-guide values by set and grade.
Each is one of PSA's own reference families: CardFacts covers card-set checklists, AutographFacts covers autograph subject profiles and price guides, ProBatFacts covers bat-authentication reference pages, and TicketFacts covers ticket-stub reference pages -- each with its own category taxonomy and exemplar image galleries where applicable.
No. Crawlora is not affiliated with PSA and provides structured extraction for supported public PSA pages. Use PSA's official products when you require an official licensed integration.
No. Baseball was 13 in card facts and the price guide but 4 in autograph facts on 2026-10-27.