Fanatics Collect API endpoint
Searches Fanatics Collect's full marketplace -- weekly auctions, premier auctions, and the fixed-price "Buy Now" marketplace -- by free-text query, category, grading service, price/year/grade range, and listing status, in a caller-selected sort order. Only the first 2,400 or so results of a query can be paged through; later pages come back empty and are not charged, so narrow the query with filters. Costs 1 credit per successful call. See GetCategories for the accepted category, grading-service, status, and sort values.
/fanaticscollect/searchQuery parameters:
q (optional) — free-text search across title, brand, subject, and set.marketplace (optional) — listing type. One of WEEKLY, PREMIER, FIXED. Omit to search all three.category_parent (optional) — top-level category. One of Sports Cards, Trading Card Games, Other, Video Games, Comics.sub_category (optional) — a parent > child category path (or just the child name), e.g. Sports Cards > Baseball or Baseball. See Fanatics Collect Categories for the full 35-value list.grading_service (optional) — one of Ungraded, CGC, PSA, BGS, SGC, Other Approved, PSA/DNA, CSG, MBA, PSA_DNA, BVG, OTHER_APPROVED, BCCG, WATA, GAI, VGA, CBCS, UDA, CAC, KSA, PCGS. Ungraded is a real, common value (raw/unslabbed items), not a placeholder for missing data.certified_seller (optional) — exact seller/shop name, case-insensitive. Not a fixed enum -- the set is large and changes over time; match a name from a prior Search result's certified_seller field.seller_id (optional) — exact seller id (UUID) -- browse everything one seller has listed. Not a fixed enum; match a prior Search result's seller_id field. More precise than certified_seller when a seller/shop name isn't unique.brand (optional) — exact brand/subject facet value, case-insensitive, e.g. a player, character, or set name such as Michael Jordan or Pikachu. Not a fixed enum; match a value from a prior Search result's brand field.auction_urn (optional) — browse every lot in one specific weekly or premier auction event. Not a fixed enum; copy the exact value from a prior Search result's auction_urn field. Only WEEKLY/PREMIER listings carry one.status (optional) — one of LIVE, SOLD, ALL. Default LIVE.allow_offers (optional, boolean) — filter for listings the seller accepts offers on.has_offers (optional, boolean) — filter for listings with at least one active offer pending.great_price (optional, boolean) — filter for listings Fanatics Collect itself flags as a great price vs. guide value.min_price / max_price (optional) — current price/bid range, inclusive, in the listing's own currency (almost always USD).min_year / max_year (optional) — card/item year range, inclusive.min_grade / max_grade (optional) — numeric grade range, inclusive.sort (optional) — one of recommended, recently_added, best_deals, lot_number, lowest_price, highest_price, best_value, earliest_year, latest_year, earliest_sale_date, latest_sale_date. Default best_value.page (optional) — 1-based page number, default 1.per_page (optional) — results per page, default 24, max 100.Response fields:
query, page, per_page, total, total_pages. Only the first 2,400 or so results of a query can be paged through (measured 2026-10-29); past that, pages come back with an empty results list and total 0, and that empty page is not charged. Narrow the query with filters instead of paging deeper.results[] — one entry per matching listing:
id, url, title, subtitle, marketplace, status.current_price, asking_price — {amount, currency} objects; absent when not applicable.year, grade, grading_service, category_parent, sub_categories[].brand, card_number, serial, teams[], certified_seller, seller_id.auction_urn, auction_name, lot_number — present for WEEKLY/PREMIER listings; absent for FIXED.image_primary, image_secondary — representative photo URLs.favorited_count, allow_offers, has_offers, great_price, fanatics_authentic.FIXED-marketplace results do not yet support Fanatics Collect Listing detail lookup (that endpoint's upstream query only serves WEEKLY/PREMIER) -- follow a FIXED result's url to view it on-site.
Credit cost: 1 credit per successful call. An empty page after page 1 is not charged.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| id | 20 | |
| url | 20 | fanaticscollect.com |
| title | 20 | “2011 Pokemon World Championships Decks Megazone Judge #78 C…” and 19 other values |
| marketplace | 20 | FIXED in all 20 |
| status | 20 | Live in all 20 |
| current_price | 20 | |
| asking_price | 20 | |
| year | 20 | 2,009 to 2,026, median 2,024 |
| grade | 19 | 0.5 to 10, median 10 |
| grading_service | 19 | PSA (10), CGC (8), BGS (1) |
| category_parent | 20 | Sports Cards (11), Trading Card Games (8), Other (1) |
| sub_categories | 19 | median 1 entry |
| brand | 16 | “Judge” and 10 other values |
| card_number | 12 | “78” and 11 other values |
| serial | 13 | 13,389,909 to 6,186,039,026, median 6,094,662,030 |
| certified_seller | 20 | |
| seller_id | 20 | |
| lot_number | 20 | “Lot: Pcb1dba05-6996-4893-8c9f-46bba2135235” and 19 other values |
| image_primary | 20 | cdn-vault.fanaticscollect.com |
| image_secondary | 20 | cdn-vault.fanaticscollect.com |
| favorited_count | 20 | 0 to 32, median 1 |
| allow_offers | 20 | true in 11 of 20 |
| has_offers | 20 | true in 0 of 20 |
| great_price | 20 | true in 20 of 20 |
| fanatics_authentic | 20 | true in 0 of 20 |
| teams | 11 | median 1 entry |
| subtitle | 2 | “CGC Population 1 of 13” and 1 other value |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| q | string | No | Free-text search across title, brand, subject, and set | aaron judge | |
| marketplace | string | No | Listing type. Omit to search all three. Allowed values: WEEKLY, PREMIER, FIXED. | ||
| category_parent | string | No | Top-level category Allowed values: Sports Cards, Trading Card Games, Other, Video Games, Comics. | ||
| sub_category | string | No | A parent > child category path (or just the child name), e.g. \ | ||
| grading_service | string | No | Grading/authentication service Allowed values: Ungraded, CGC, PSA, BGS, SGC, Other Approved, PSA/DNA, CSG, MBA, PSA_DNA, BVG, OTHER_APPROVED, BCCG, WATA, GAI, VGA, CBCS, UDA, CAC, KSA, PCGS. | ||
| certified_seller | string | No | Exact seller/shop name (case-insensitive). Not a fixed enum -- match a name from a prior Search result's certified_seller field. | Fanatics Collect | |
| seller_id | string | No | Exact seller id (UUID) -- browse everything one seller has listed. Not a fixed enum; match a prior Search result's seller_id field. | 4216b44a-9696-4263-96c3-5f58eeb9a316 | |
| brand | string | No | Exact brand/subject facet value (case-insensitive), e.g. a player, character, or set name. Not a fixed enum; match a prior Search result's brand field. | Michael Jordan | |
| auction_urn | string | No | Browse every lot in one specific weekly or premier auction event. Not a fixed enum; copy the exact value from a prior Search result's auction_urn field. Only WEEKLY/PREMIER listings carry one. | WEEKLY:fb70389e-1c67-11f1-90df-0ab83224f98f | |
| status | string | No | Listing status. Default LIVE. Allowed values: LIVE, SOLD, ALL. | ||
| allow_offers | boolean | No | Filter for listings the seller accepts offers on | ||
| has_offers | boolean | No | Filter for listings with at least one active offer pending | ||
| great_price | boolean | No | Filter for listings Fanatics Collect itself flags as a great price vs. guide value | ||
| min_price | number | No | Minimum current price/bid, inclusive | ||
| max_price | number | No | Maximum current price/bid, inclusive | ||
| min_year | integer | No | Minimum card/item year, inclusive | ||
| max_year | integer | No | Maximum card/item year, inclusive | ||
| min_grade | number | No | Minimum numeric grade, inclusive | ||
| max_grade | number | No | Maximum numeric grade, inclusive | ||
| sort | string | No | Result order. Default best_value. Allowed values: recommended, recently_added, best_deals, lot_number, lowest_price, highest_price, best_value, earliest_year, latest_year, earliest_sale_date, latest_sale_date. | ||
| page | integer | No | 1-based page number, default 1 | ||
| per_page | integer | No | Results per page, default 24, max 100 | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/fanaticscollect/search?q=coffee&marketplace=WEEKLY&category_parent=Sports+Cards&grading_service=Ungraded&status=LIVE&allow_offers=true&has_offers=true&great_price=true&sort=recommended&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "judge",
"page": 1,
"per_page": 24,
"total": 1119,
"total_pages": 47,
"results": [
{
"id": "7333af05-4208-4acd-a7fa-99410276afa5",
"url": "https://www.fanaticscollect.com/buy-now/7333af05-4208-4acd-a7fa-99410276afa5",
"title": "2024 Pokemon Japanese Sv5m-Cyber Judge Excadrill #079 PSA 10",
"marketplace": "FIXED",
"status": "Live",
"current_price": {
"amount": 40,
"currency": "USD"
},
"year": 2024,
"grade": 10,
"grading_service": "PSA",
"category_parent": "Trading Card Games",
"sub_categories": [
"Trading Card Games > Pokémon (Japanese)"
],
"favorited_count": 3,
"allow_offers": true,
"has_offers": false,
"great_price": false,
"fanatics_authentic": false
}
]
}
}Request schema
No body schema
Response schema
#/definitions/fanaticscollect.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | fanaticscollect.SearchResponse | No | ||||
| data.page | integer | No | ||||
| data.per_page | integer | No | ||||
| data.query | string | No | ||||
| data.results | array | No | ||||
| data.results[].allow_offers | boolean | No | ||||
| data.results[].asking_price | fanaticscollect.Money | No | ||||
| data.results[].asking_price.amount | number | No | 13.2 | |||
| data.results[].asking_price.currency | string | No | USD | |||
| data.results[].auction_name | string | No | ||||
| data.results[].auction_urn | string | No | ||||
| data.results[].brand | string | No | ||||
| data.results[].card_number | string | No | ||||
| data.results[].category_parent | string | No | ||||
| data.results[].certified_seller | string | No | ||||
| data.results[].current_price | fanaticscollect.Money | No | ||||
| data.results[].current_price.amount | number | No | 13.2 | |||
| data.results[].current_price.currency | string | No | USD | |||
| data.results[].fanatics_authentic | boolean | No | ||||
| data.results[].favorited_count | integer | No | ||||
| data.results[].grade | number | No | ||||
| data.results[].grading_service | string | No | ||||
| data.results[].great_price | boolean | No | ||||
| data.results[].has_offers | boolean | No | ||||
| data.results[].id | string | No | ||||
| data.results[].image_primary | string | No | ||||
| data.results[].image_secondary | string | No | ||||
| data.results[].lot_number | string | No | ||||
| data.results[].marketplace | string | No | ||||
| data.results[].seller_id | string | No | ||||
| data.results[].serial | string | No | ||||
| data.results[].status | string | No | ||||
| data.results[].sub_categories | array | No | ||||
| data.results[].subtitle | string | No | ||||
| data.results[].teams | array | No | ||||
| data.results[].title | string | No | ||||
| data.results[].url | string | No | ||||
| data.results[].year | integer | No | ||||
| data.total | integer | No | ||||
| data.total_pages | integer | No | ||||
| 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/fanaticscollect/search?q=coffee&marketplace=WEEKLY&category_parent=Sports+Cards&grading_service=Ungraded&status=LIVE&allow_offers=true&has_offers=true&great_price=true&sort=recommended&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"