PSA API endpoint
Searches 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.
/psa/price-guide/setsQuery parameters:
query (required) — a set-name search term. Every word of the query must
start a word of the set name (74 does not match 1974, 1974 top does
match 1974 Topps). Case and punctuation are ignored.category_path (optional) — restrict the search to one category. Default:
every category. Allowed values: baseball-card-values,
basketball-card-values, boxing-card-values, football-card-values,
golf-card-values, hockey-card-values, soccer-card-values,
non-sports-tcg-card-values, racing-card-values, sports-ticket-values,
tennis-card-values, unopened-pack-values,
presidential-autograph-values, sports-autograph-values,
game-used-bat-values, graded-baseball-values. These are the path
values psa-price-guide-categories returns. Any other value returns a 400.page (optional) — one-based result page, default 1.page_size (optional) — sets per page, default 50, max 100.Notable response behavior:
category_path, set_path and set_id as the input to
psa-price-guide-set to fetch that set's full price table.total_count is every match across all pages. A query with no match returns
200 with total_count 0 and an empty sets list.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):
{
"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"
}
]
}
}
| Field | Filled in, of 6 checked | Values in the sample |
|---|---|---|
| set_id | 6 | |
| set_name | 6 | 1974 Topps (4), 1974 Topps Deckle Edge (1), 1974 Topps Stamps (1) |
| category_name | 6 | “Baseball Cards” and 3 other values |
| category_path | 6 | “baseball-card-values” and 3 other values |
| set_path | 6 | 1974-topps (4), 1974-topps-deckle-edge (1), 1974-topps-stamps (1) |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| query | string | Yes | Set-name search term, e.g. 1974 topps | 1974 topps | |
| category_path | string | No | Restrict to one category. Allowed values: baseball-card-values, basketball-card-values, boxing-card-values, football-card-values, golf-card-values, hockey-card-values, soccer-card-values, non-sports-tcg-card-values, racing-card-values, sports-ticket-values, tennis-card-values, unopened-pack-values, presidential-autograph-values, sports-autograph-values, game-used-bat-values, graded-baseball-values. Default: every category. Allowed values: baseball-card-values, basketball-card-values, boxing-card-values, football-card-values, golf-card-values, hockey-card-values, soccer-card-values, non-sports-tcg-card-values, racing-card-values, sports-ticket-values, tennis-card-values, unopened-pack-values, presidential-autograph-values, sports-autograph-values, game-used-bat-values, graded-baseball-values. | ||
| page | integer | No | One-based result page, default 1 | ||
| page_size | integer | No | Sets per page, default 50, max 100 | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/psa/price-guide/sets?query=1974+topps&category_path=baseball-card-values&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"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"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/psa.priceGuideSetsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | psa.PriceGuideSetsResponse | No | ||||
| data.category_path | string | No | CategoryPath echoes the category filter; empty when every category was searched. | |||
| data.page | integer | No | ||||
| data.page_size | integer | No | ||||
| data.query | string | No | ||||
| data.sets | array | No | ||||
| data.sets[].category_name | string | No | CategoryName is the category's display name from psa-price-guide-categories, e.g. "Baseball Cards". | |||
| data.sets[].category_path | string | No | CategoryPath is the set URL's category segment -- pass as category_path to psa-price-guide-set. | |||
| data.sets[].set_id | integer | No | SetID is PSA's own numeric set id. | |||
| data.sets[].set_name | string | No | SetName is the set's display name as PSA's category page shows it, e.g. "1974 Topps". | |||
| data.sets[].set_path | string | No | SetPath is the set URL's own slug -- pass as set_path to psa-price-guide-set. | |||
| data.total_count | integer | No | TotalCount is every matching set across all pages. | |||
| data.unavailable_categories | array | No | UnavailableCategories lists categories whose set list could not be loaded and had no earlier copy to fall back on. When present, Sets and TotalCount cover the other categories only. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/psa/price-guide/sets?query=1974+topps&category_path=baseball-card-values&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"