Pristine Auction APIpristineauction.com ↗
Search Pristine Auction sports card lots and retrieve bid counts, end times, final hammer prices, and buyer's premium via 2 JSON endpoints.
What is the Pristine Auction API?
The Pristine Auction API exposes 2 endpoints covering Pristine Auction's sports-card lots, returning up to 14 fields per lot including current bid, bid count, auction end timestamp, and — for completed sales — the sold status and final price. Use search_lots to query active or ended lots by keyword, player name, or card set, then call get_lot with the returned URL to pull full detail on any individual lot.
curl -X GET 'https://api.parse.bot/scraper/90fb8e63-d89d-4d24-8445-c25ef960c168/search_lots?query=curry&status=active' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace pristineauction-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Pristine Auction SDK — search sports-card lots, drill into detail."""
from parse_apis.pristineauction_com_api import (
PristineAuction, LotSort, LotStatus, LotNotFound,
)
client = PristineAuction()
# Search active lots for a player, sorted by ending soonest.
for summary in client.lot_summaries.search(
query="curry",
sort=LotSort.ENDING_SOONEST,
status=LotStatus.ACTIVE,
limit=5,
):
print(summary.title, summary.current_bid, summary.no_reserve)
# Drill into the first completed lot to see final sale details.
hit = client.lot_summaries.search(
query="curry", status=LotStatus.COMPLETED, limit=1,
).first()
if hit is not None:
lot = hit.details()
print(lot.title, lot.sold, lot.winning_bid, lot.buyer_premium, lot.total_price)
# Point lookup by URL; handle a missing lot gracefully.
try:
lot = client.lots.get(
url="https://www.pristineauction.com/a13182848-Stephen-Curry-Signed-2024-Topps-Now-Olympic-Games-22-BGS-Autograph-Graded-10",
)
print(lot.title, lot.current_bid, lot.bid_count, lot.views)
except LotNotFound:
print("lot not found")
print("exercised: lot_summaries.search / details / lots.get")
Keyword search over Pristine Auction's public Card Auction (sports-card) lots. One request per call, 30 lots per page (fixed by the site). Returns one row per lot with its title, canonical URL and lot_id, the amount shown in the listing, the auction end timestamp (UTC) and whether the lot is active or completed. The listing amount for an active lot is the current high bid (price_basis 'high_bid'); for a completed lot the site shows the winning bid plus buyer's premium (price_basis 'total_with_premium'). Bid counts are not shown in listings and are always null here; use get_lot for bid_count and the sold/hammer/premium breakdown. `page` is 1-based; a page past total_pages returns an empty items list with has_more false. `status` selects active lots (default), completed lots, or both. `sort` is optional and defaults to the site's own ordering. Results are 'completed' when the site marks them ENDED; completed does not by itself mean sold. An unmatched query returns a valid empty result (total_results 0).
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based result page; 30 lots per page. |
| sort | string | Result ordering. Omitted = the site's default ordering. |
| queryrequired | string | Free-text search term matched against lot titles (e.g. a player, set or card name). |
| status | string | Which lots to include: active (still open for bidding), completed (ended), or all (both). |
{
"type": "object",
"fields": {
"page": "1-based page returned",
"items": "array of lot summaries, one per lot on this page",
"query": "echo of the search term as sent",
"status": "the status filter applied (active | completed | all)",
"has_more": "true when page < total_pages",
"per_page": "lots per page (30, fixed by the site)",
"items[].url": "canonical lot page URL; pass unchanged to get_lot",
"total_pages": "ceil(total_results / per_page), minimum 1",
"items[].title": "original lot title",
"total_results": "site-reported total number of matching lots across all pages",
"items[].lot_id": "site lot number as a string; also the numeric part of url",
"items[].status": "active or completed (site ENDED marker); completed alone does not mean sold",
"items[].end_time": "auction end timestamp, ISO-8601 UTC",
"items[].subtitle": "secondary line under the title, null when absent",
"items[].bid_count": "always null in listings (not shown by the site); see get_lot",
"items[].image_url": "thumbnail image URL",
"items[].no_reserve": "true when the site shows the NO RESERVE badge",
"items[].current_bid": "USD amount shown in the listing, null when none is shown",
"items[].price_basis": "what current_bid represents: high_bid (active) or total_with_premium (completed, includes buyer's premium); null when current_bid is null",
"items[].auction_type": "site auction type label (e.g. CARD AUCTION)",
"items[].end_time_epoch": "auction end as Unix seconds"
},
"sample": {
"data": {
"page": 1,
"items": [
{
"url": "https://www.pristineauction.com/a12925414-Stephen-Curry-2009-10-Topps-321-RC-BCCG-10",
"title": "Stephen Curry 2009-10 Topps #321 RC (BCCG 10)",
"lot_id": "12925414",
"status": "active",
"end_time": "2026-09-28T03:00:00Z",
"subtitle": "Rookie Card",
"bid_count": null,
"image_url": "https://images.pristineauction.com/442/4422903/thumb_1786991652-Stephen-Curry-2009-10-Topps-321-RC-BCCG-10-PristineAuction.com.jpg",
"no_reserve": true,
"current_bid": 1158.15,
"price_basis": "high_bid",
"auction_type": "CARD AUCTION",
"end_time_epoch": 1790564400
}
],
"query": "curry",
"status": "active",
"has_more": false,
"per_page": 30,
"total_pages": 1,
"total_results": 8
},
"status": "success"
}
}About the Pristine Auction API
Searching Lots
The search_lots endpoint accepts a required query string matched against lot titles — player names, card sets, or any text that appears in a listing work here. Results arrive 30 lots per page (fixed), and the page parameter navigates deeper pages. A status filter lets you scope results to active (still open for bidding), completed (ended), or all. The response includes total_results and total_pages so you can paginate correctly, and has_more signals whether another page exists. Each item in items[] carries a title, a url suitable for passing directly to get_lot, and an end_time in ISO-8601 UTC.
Lot Detail
get_lot takes the url field from any search_lots result — or the bare /a<lot_id> numeric form — and returns the full record for that lot. Key fields include bid_count, status (active or completed), is_ended, and sold (which is true only when a completed lot shows a confirmed winning bid, since a lot can end without selling). When the lot has sold, pricing fields reflect the final hammer price. The views field surfaces site-reported view counts, returned as null when the site does not display them. A subtitle field captures any secondary line shown beneath the main title, or null when absent.
Coverage and Limitations
Both endpoints cover only Pristine Auction's Card Auction (sports-card) category. Pagination is fixed at 30 results per page by the source. The currency field is observed as USD but returned as null when not stated on the page. Completed lots carry an end_time that reflects the actual close time rather than a scheduled estimate.
The Pristine Auction API is a managed, monitored endpoint for pristineauction.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when pristineauction.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 pristineauction.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 closing prices and buyer's premium on completed sports card lots for market research
- Monitor active auctions for a specific player or set using
search_lotswithstatus=active - Build a price history dataset by paginating
completedlots for a given card name or year - Alert when a target lot's
is_endedflips to true by pollingget_lotnear theend_time - Compare
bid_countacross similar lots to gauge collector demand for specific cards - Aggregate
total_resultscounts per search term to identify trending players or sets
| 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 Pristine Auction offer an official developer API?+
How does `get_lot` distinguish a completed lot that didn't sell from one that did?+
status field returns completed for any ended lot regardless of outcome. The sold field is true only when a completed lot shows a confirmed winning bid. A lot can have status: completed and sold: false simultaneously, meaning it ended without a buyer.Is bid history or individual bidder data available through these endpoints?+
bid_count and the current or winning bid amount, but not the per-bid history or bidder identities. You can fork this API on Parse and revise it to add an endpoint targeting the lot's bid history page if that data is publicly visible.Does the API cover Pristine Auction categories beyond sports cards?+
What should I expect when paginating large result sets?+
total_pages to determine how many requests are needed for full coverage, and check has_more to confirm whether another page exists before requesting it. total_results reflects the site-reported count at the time of the request and can change if new lots are added mid-pagination.