Discover/Pristine Auction API
live

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.

Endpoint health
verified 3h ago
get_lot
search_lots
2/2 passing latest checkself-healing
Endpoints
2
Updated
3h ago

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.

This call costs1 credit / call— charged only on success
Try it
1-based result page; 30 lots per page.
Result ordering. Omitted = the site's default ordering.
Free-text search term matched against lot titles (e.g. a player, set or card name).
Which lots to include: active (still open for bidding), completed (ended), or all (both).
api.parse.bot/scraper/90fb8e63-d89d-4d24-8445-c25ef960c168/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
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'
Python SDK · recommended

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")
All endpoints · 2 totalmissing one? ·

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).

Input
ParamTypeDescription
pageinteger1-based result page; 30 lots per page.
sortstringResult ordering. Omitted = the site's default ordering.
queryrequiredstringFree-text search term matched against lot titles (e.g. a player, set or card name).
statusstringWhich lots to include: active (still open for bidding), completed (ended), or all (both).
Response
{
  "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.

Reliability & maintenanceVerified

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.

Last verified
3h ago
Latest check
2/2 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • 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_lots with status=active
  • Build a price history dataset by paginating completed lots for a given card name or year
  • Alert when a target lot's is_ended flips to true by polling get_lot near the end_time
  • Compare bid_count across similar lots to gauge collector demand for specific cards
  • Aggregate total_results counts per search term to identify trending players or sets
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 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.

Frequently asked questions
Does Pristine Auction offer an official developer API?+
Pristine Auction does not publish an official public developer API or documentation. This Parse API provides structured programmatic access to the public lot data available on their site.
How does `get_lot` distinguish a completed lot that didn't sell from one that did?+
The 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?+
Not currently. The API returns aggregate 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?+
Not currently. Both endpoints cover the sports-card Card Auction category. Other Pristine Auction verticals such as memorabilia or autographs are not included. You can fork this API on Parse and revise it to add endpoints targeting those additional category pages.
What should I expect when paginating large result sets?+
Page size is fixed at 30 lots per page, set by the source. Use 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.
Page content last updated . Spec covers 2 endpoints from pristineauction.com.
Related APIs in MarketplaceSee all →