Collect Auctions APIcollectauctions.com ↗
Search Collect Auctions lots and retrieve per-lot detail: status, opening bid, premium-inclusive sale price, bid count, and auction schedule via 2 endpoints.
What is the Collect Auctions API?
The Collect Auctions API exposes 2 endpoints that cover lot search and per-lot detail from collectauctions.com. Use search_lots to query the gallery by keyword across one or all auctions, or call get_lot to pull structured detail on any individual lot — including its native status label (Sold, Unsold, or Active), opening bid, premium-inclusive SOLD FOR total, bid count, and auction schedule.
curl -X GET 'https://api.parse.bot/scraper/8899ac96-76bf-4433-9336-ceb2c9d5e0b8/search_lots?query=Mantle&search_in=lot' \ -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 collectauctions-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: Collect Auctions SDK — search lots, drill into detail."""
from parse_apis.collectauctions_com_api import CollectAuctions, SearchIn, LotNotFound
client = CollectAuctions()
# Search for lots matching a keyword, capped at 5 results.
for lot_summary in client.lot_summaries.search(query="Mantle", limit=5):
print(lot_summary.title, lot_summary.status, lot_summary.opening_bid.amount)
# Drill down: take the first hit and navigate to its full detail.
hit = client.lot_summaries.search(query="Mantle", search_in=SearchIn.TITLE, limit=1).first()
if hit is not None:
lot = hit.details()
print(lot.title, lot.category, lot.views)
print(lot.starting_bid.amount, lot.starting_bid.currency)
if lot.sold_for_total is not None:
print("Sold for:", lot.sold_for_total.amount, lot.sold_for_total.currency)
if lot.auction is not None:
print("Auction:", lot.auction.name, lot.auction.end_text)
# Same lot via direct point-lookup using the discovered lot_id.
try:
same = client.lots.get(lot_id=hit.lot_id)
print(same.title, same.bid_count, same.result_label)
except LotNotFound as e:
print("Lot not found:", e.message)
print("exercised: lot_summaries.search / details / lots.get")
Searches the site's lot gallery and returns one fixed page of up to 20 lot summaries in the site's default Lot # order. Each row carries the site's native status label (e.g. Sold / Unsold), the native result label printed on the card (e.g. 'SOLD FOR $5,957', 'UNSOLD'), the opening (minimum) bid separately from the premium-inclusive sold_for_total parsed from that label, and bid_count. hammer_price is always null because the site prints only premium-inclusive prices. By default the search is scoped to the auction the site currently features (auction_scope in the response); all_auctions=true switches the scope to every past and present auction, which costs one extra round trip. Gallery amounts are rounded to whole dollars; get_lot shows cents. has_more is true when the site's pager lists a later page; page is 1-based and defaults to 1. A search with no matches returns an empty lots array.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based result page; each page holds up to 20 lots. |
| queryrequired | string | Search text matched by the site against the field chosen by search_in. |
| search_in | string | Which lot field the site searches. |
| all_auctions | boolean | When true, search across every auction on the site instead of only the currently featured auction. |
{
"type": "object",
"fields": {
"lots": "array of lot summaries: lot_id (native id, feed to get_lot), lot_number (catalog number within its auction, not unique across auctions), title, url, bid_count, opening_bid {amount, currency}, status (native label), result_label (native price-box text), sold_for_total {amount, currency} premium-inclusive or null when not printed, hammer_price (always null, not printed)",
"has_more": "true when the site pager lists a later page",
"page_size": "fixed page size (20)",
"auction_scope": "site label of the auction scope searched ('All Auctions' or one auction's name)"
},
"sample": {
"data": {
"lots": [
{
"url": "https://collectauctions.com/bids/bidplace?itemid=62537",
"title": "1952 Bowman Mickey Mantle #101 PSA 4",
"lot_id": "62537",
"status": "Sold",
"bid_count": 20,
"lot_number": "197",
"opening_bid": {
"amount": 600,
"currency": "USD"
},
"hammer_price": null,
"result_label": "SOLD FOR $5,957",
"sold_for_total": {
"amount": 5957,
"currency": "USD"
}
}
],
"page": 1,
"query": "Mantle",
"has_more": true,
"page_size": 20,
"search_in": "title",
"auction_scope": "April 2, 2026: Spring Auction"
},
"status": "success"
}
}About the Collect Auctions API
Searching Lots
The search_lots endpoint accepts a required query string and returns up to 20 lot summaries per page in the site's default Lot # order. Use the page parameter for pagination — has_more tells you whether a subsequent page exists. The optional search_in parameter targets which lot field the search matches against. Set all_auctions: true to broaden results beyond the currently featured auction; the auction_scope field in the response confirms which scope was applied. Each summary includes lot_id (needed to call get_lot), a lot_number (catalog number within its own auction), native status, and the result label as printed on the lot card.
Per-Lot Detail
The get_lot endpoint accepts either a numeric lot_id from search_lots or a full collectauctions.com lot URL containing itemid=. It returns the lot's title, category, starting_bid (opening minimum, denominated in USD from the printed $ sign), bid_count, and the native result_label string exactly as the site prints it (e.g. SOLD FOR $5,957 or UNSOLD). The sold_for_total field is a parsed, premium-inclusive figure with amount and currency — it is null for unsold or active lots. The status field normalizes to Sold, Unsold, or Active. Auction schedule metadata — name, start, end, and timezone — comes back under the auction object when the page prints one.
Known Field Gaps
Two fields are structurally absent from the source and always return null: hammer_price (the site does not display a pre-premium hammer figure separately) and lot_closed_at (no per-lot close timestamp is printed). The views field carries the page view count shown on the lot page. The is_closed boolean indicates whether the closed-lot result panel is displayed, which is how status is derived for completed lots.
The Collect Auctions API is a managed, monitored endpoint for collectauctions.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when collectauctions.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 collectauctions.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 final sale prices (premium-inclusive) for specific collectibles categories across multiple Collect Auctions sales.
- Build a price history database by paginating
search_lotswithall_auctions: trueand recordingsold_for_totalper lot. - Monitor active lots by filtering
get_lotresponses wherestatusequals 'Active' and checkingbid_countfor bidding activity. - Research opening bid trends by aggregating
starting_bidamounts across lots in a given keyword search. - Alert on newly closed lots by comparing
is_closedstate across repeatedget_lotcalls for a watchlist oflot_idvalues. - Build a catalog browser that displays auction scope, lot number, status label, and result label for a given keyword.
| 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 Collect Auctions provide an official developer API?+
What does `get_lot` return for a lot that hasn't sold yet?+
status will be 'Active', sold_for_total will be null, and result_label will reflect whatever the site currently prints in the price box. bid_count and starting_bid are still populated, and is_closed will be false.Does the API return the hammer price separately from the buyer's premium?+
hammer_price is always null. The only price figure available for sold lots is sold_for_total, which is the premium-inclusive SOLD FOR amount parsed from the site's result label.Is pagination supported across all search results?+
search_lots response returns a fixed page of up to 20 lots (confirmed by page_size). The has_more boolean indicates whether a next page exists, and the page parameter (1-based) lets you step through results. There is no cursor or offset — only sequential page numbers.Can I retrieve bidder identities or a full per-lot bid history?+
bid_count and final result data but does not expose individual bidder information or a timestamped bid history. You can fork this API on Parse and revise it to add an endpoint covering additional lot detail if that data becomes accessible on the site.