SCP Auctions APIcatalogs.scpauctions.com ↗
Query SCP Auctions past and active lots via 4 endpoints. Get final prices, bid counts, grades (PSA/SGC/BGS), graders, sale dates, and Buy Now figures.
What is the SCP Auctions API?
The SCP Auctions Catalog API provides structured access to SCP Auctions' public lot data across 4 endpoints, covering both ended and active listings. The search_sales endpoint returns up to 5 fully resolved past-lot records per call, including final price, bid count, grader, grade, and sale date. Companion endpoints handle single-lot lookup, active auction search, and Buy Now discovery — all returning consistent, typed response fields with ISO currency codes and UTC-normalized dates.
curl -X GET 'https://api.parse.bot/scraper/e55ab4c1-095c-4aac-987a-d141bd1b8fda/search_sales?sort=relevance&query=Michael+Jordan+PSA+10&status=any' \ -H 'X-API-Key: $PARSE_API_KEY'
Searches SCP Auctions' catalog of past (ended) lots by keyword and returns up to 5 fully resolved lot records per call, in the site's own order for the chosen sort. One search request plus one lot-page request per returned record (max 6 requests). Each record has the same shape as get_lot: status is exactly one of sold, not_sold, ended_unknown (auction ended but the site shows neither a sold price nor an Unsold label), or not_ended; an ended auction alone never yields sold. final_amount, currency, price_basis and buyer_premium_included are populated only for sold lots and are null otherwise; buyer_premium_rate is always null because the site does not publish the rate on lot pages. sale_date/sale_datetime is the lot page's own close time (with UTC offset) and is never taken from the site's current headline dates; sale_date_precision is datetime when it is present. grader/grade are parsed from the lot title (grade_source is title) and null when the title carries no recognizable grade. Pagination: page selects the next block of `limit` records; has_more is true while the site's total_results exceeds the records consumed so far. total_results is the site's own count for the query and status filter. failed_lots lists any lot pages that could not be fetched or parsed for this page. A query with no matches returns an empty results list.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based page of `limit` records over the search result stream. |
| sort | string | Result ordering, mirroring the site's Sort By menu. |
| limit | integer | Number of lot records to return, 1 to 5; larger values are clamped to 5. |
| queryrequired | string | Free-text keyword search over lot titles and descriptions (one shape: a player name plus set or grade words). |
| status | string | Restricts results to past lots that sold, went unsold, or either. |
{
"type": "object",
"fields": {
"page": "page number served",
"limit": "effective page size after clamping to 5",
"query": "echo of the search keywords",
"results": "array of lot records, same shape as get_lot data",
"has_more": "true when more records exist beyond this page",
"failed_lots": "array of {url, status_code, error?} for lot pages that could not be fetched or parsed",
"status_filter": "status filter applied (any, sold, unsold)",
"total_results": "site-reported total matching lots for the query and status filter; null if the site omitted it"
},
"sample": {
"data": {
"page": 1,
"limit": 2,
"query": "Michael Jordan PSA 10",
"results": [
{
"id": "9394841",
"url": "https://catalogs.scpauctions.com/online-auctions/scp-auctions-inc/1986-fleer-57-michael-jordan---psa-gem-mint-10-9394841",
"grade": "GEM MINT 10",
"title": "1986 Fleer #57 Michael Jordan - PSA GEM MINT 10",
"grader": "PSA",
"status": "sold",
"currency": "USD",
"bid_count": 15,
"image_url": "https://s1.img.bidsquare.com/item/xl/3810/38105385.jpeg",
"sale_date": "2026-07-26",
"auction_id": "23246",
"lot_number": "3",
"auction_url": "https://catalogs.scpauctions.com/auctions/scp-auctions-inc/2026-summer-premier-23246",
"description": "This 1986 Fleer #57 Michael Jordan rookie card grades PSA GEM MINT 10, the highest grade on the PSA scale.",
"price_basis": "sold_price_including_buyer_premium",
"auction_name": "2026 Summer Premier",
"final_amount": 360000,
"grade_source": "title",
"status_label": "Sold for",
"sale_datetime": "2026-07-26T22:30:00-04:00",
"currency_symbol": "$",
"sale_date_source": "lot_page_auction_close_time",
"auction_dates_text": "Thu, Jul 9, 2026 12:00PM CDT - Sun, Jul 26, 2026 09:30PM CDT",
"buyer_premium_note": "Sold Price includes BP",
"buyer_premium_rate": null,
"final_amount_label": "Sold for",
"sale_date_precision": "datetime",
"buyer_premium_included": true
},
{
"id": "6742678",
"url": "https://catalogs.scpauctions.com/online-auctions/scp-auctions-inc/sensational-1984-star-101-xrc-michael-jordan-autographed-true-rookie---bgs-nm-mt-8-5-beckett-9-auto-one-of-highest-dual-grades-in-hobby-6742678",
"grade": "NM-MT+ 8.5",
"title": "Sensational 1984 Star #101 XRC Michael Jordan Autographed True Rookie - BGS NM-MT+ 8.5, Beckett 9 Auto. (One of Highest Dual Grades in Hobby!)",
"grader": "BGS",
"status": "sold",
"currency": "USD",
"bid_count": 19,
"image_url": "https://s1.img.bidsquare.com/item/xl/2823/28233694.jpeg",
"sale_date": "2024-11-23",
"auction_id": "16485",
"lot_number": "4",
"auction_url": "https://catalogs.scpauctions.com/auctions/scp-auctions-inc/2024-fall-premier-16485",
"description": "Presented here is one of the finest signed versions of MJ's first rookie card you will find in the hobby.",
"price_basis": "sold_price_including_buyer_premium",
"auction_name": "2024 Fall Premier",
"final_amount": 312000,
"grade_source": "title",
"status_label": "Sold for",
"sale_datetime": "2024-11-23T22:30:00-05:00",
"currency_symbol": "$",
"sale_date_source": "lot_page_auction_close_time",
"auction_dates_text": "Wed, Nov 6, 2024 12:00PM CST - Sat, Nov 23, 2024 09:30PM CST",
"buyer_premium_note": "Sold Price includes BP",
"buyer_premium_rate": null,
"final_amount_label": "Sold for",
"sale_date_precision": "datetime",
"buyer_premium_included": true
}
],
"has_more": true,
"failed_lots": [],
"status_filter": "sold",
"total_results": 280
},
"status": "success"
}
}About the SCP Auctions API
Past Lot Search and Detail
The search_sales endpoint accepts a free-text query (player name, set name, grade keywords) and optional status filter (sold, unsold, or either) to retrieve ended lots from SCP Auctions' catalog. Results are paginated via page and limit (capped at 5), and the response includes total_results for the matching query and filter, a has_more flag for pagination, and a failed_lots array listing any lot URLs that could not be resolved. Each record in results carries title, grade, grader, bid_count, sale_date (YYYY-MM-DD), currency, and status — where status is one of sold, not_sold, ended_unknown, or not_ended.
The get_lot endpoint resolves a single past-lot page by URL and returns the same field shape. It is useful for spot-checking a specific lot or refreshing a record. The grade field captures the full descriptor string (e.g., GEM MINT 10), and grader is parsed from the title to one of the recognized abbreviations (PSA, SGC, BGS, CGC, etc.) or null when absent. final_amount reflects the price on a buyer-premium basis as reported by the site, and currency is the ISO code for that figure.
Active Listings: Auctions and Buy Now
The search_active endpoint searches non-ended lots. The required listing_type parameter selects between buy_now (fixed-price gallery lots) and auction (timed-auction lots). Responses share the same pagination shape as search_sales and return records whose status field is one of available, active, upcoming, ended, or unknown. Each record includes amount (the current bid or asking price as a number), currency, bid_count, grader, and grade.
The get_active_lot endpoint fetches one active-listing page by URL. It adds a year field that extracts the first four-digit year from the title — useful when the lot title leads with a card year. The listing_type on the response is buy_now when the site marks the lot as such; otherwise it is auction. Past lot URLs also resolve through this endpoint, returning status: ended.
The SCP Auctions API is a managed, monitored endpoint for catalogs.scpauctions.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when catalogs.scpauctions.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 catalogs.scpauctions.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.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track realized prices for graded PSA/SGC cards across SCP Auctions' completed sales
- Compare bid counts and final amounts for the same player across multiple past auction cycles
- Monitor current Buy Now asking prices for specific graded cards using search_active with listing_type=buy_now
- Build a price-guide dataset filtered to sold lots only using the status filter in search_sales
- Alert when an active auction lot for a target player or set goes live using search_active with listing_type=auction
- Verify a specific lot's grade, grader, and sale date by passing its URL to get_lot
- Aggregate sale_date and final_amount fields over time to chart auction price trends for a given card set
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 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.
Does SCP Auctions offer an official developer API?+
What does the status field mean in get_lot responses, and how is it different from search_sales filtering?+
get_lot, status reflects what the lot page itself shows: sold means a final price is present, not_sold means the page carries an Unsold label, ended_unknown means the auction ended but neither condition is shown, and not_ended means the auction is still open. The status parameter in search_sales is a pre-filter applied before records are fetched — it restricts the search result stream to sold, unsold, or either. The two operate at different levels: one filters the search pool, the other reports what a resolved page shows.How does pagination work, and is there a way to retrieve more than 5 records per call?+
search_sales and search_active cap at 5 records per call via the limit parameter; values above 5 are clamped to 5. Use the page parameter to step through results and check has_more to know whether additional pages exist. total_results gives the site-reported count for the query, though it may be null if the site does not report it.Does the API expose auction house fees, seller information, or provenance notes for individual lots?+
Are image URLs included, and do they remain stable over time?+
get_lot returns an image_url field containing the primary lot image URL as listed on the lot page. SCP Auctions controls those image URLs, and their persistence after a sale closes depends on the site's own hosting. There is no guarantee of long-term stability for URLs pointing to the source site's image assets.