LiveAuctioneers API

What auction lots actually sold for - the hammer price, before the premium - across thousands of auction houses

LiveAuctioneers is a US-based marketplace that runs online bidding for thousands of auction houses, and this API reads it as JSON with no account and no key.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a LiveAuctioneers endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
L
/liveauctioneers/v1

6 active endpoints, on 1, 2 and 3 credit tiers.

  • POST/liveauctioneers/v1/search
  • POST/liveauctioneers/v1/past_results
  • POST/liveauctioneers/v1/detail
  • POST/liveauctioneers/v1/auction
  • POST/liveauctioneers/v1/auction_house
  • POST/liveauctioneers/v1/suggest

What LiveAuctioneers endpoints does ReefAPI ship?

6 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

6 endpoints

search

2 cr

Search lots that are open for bidding or coming up, across thousands of auction houses.

required
—
optional
—

past_results

2 cr

The sold-lot archive.

required
—
optional
—

detail

3 cr

One lot in full.

required
lot_id
optional
—

auction

3 cr

One sale (catalogue).

required
sale_id
optional
—

auction_house

3 cr

One auction house.

required
house_id
optional
—

suggest

1 cr

Search-box suggestions.

required
query
optional
—

Every parameter, every allowed value →

LiveAuctioneers API

8 of 6 endpoints, ready to run

View docs ↗

Tiffany lamps that sold, highest hammer price first

2 credits0 required · 3 optional
POST/liveauctioneers/v1/past_results
idle
// Press "Try it" and this pane shows exactly what the
// live site returned this second — including an empty
// result, if that is the truth. No key, no account.

How the LiveAuctioneers API works

LiveAuctioneers is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 491 engines.

02
Call
POST /liveauctioneers/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 or 2 or 3 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

From a description to a defensible sold price

Find what comparable lots actually sold for, check one result bid by bid, then compare it with what is on offer today and what a winning bid would really cost.

01suggest?query=tiffany
GET/liveauctioneers/v1/suggest?query=tiffany

The completions LiveAuctioneers itself offers, plus matching auction houses with their house_id.

02past_results?query=tiffany
GET/liveauctioneers/v1/past_results?query=tiffany
lamp&sold_after=2024-01-01&sort=price_high_first

Sold lots with hammer_price (before premium), the estimate they were offered at, the opening price, the bid count, the house and the sale date. 632 tiffany-lamp lots sold in 2024 were measured.

03past_results?query=tiffany
GET/liveauctioneers/v1/past_results?query=tiffany
lamp&min_price=100&max_price=500

The same archive cut to a hammer band - every returned row falls inside it - so a price series can be built slice by slice inside the 1,200-row window.

04detail?lot_id=<lot_id>
GET/liveauctioneers/v1/detail?lot_id=<lot_id>

One result end to end: the hammer price, the bid history bid by bid with each bid's source, the catalogue text, every photo and the sale's buyer's-premium bands.

05search?query=tiffany
GET/liveauctioneers/v1/search?query=tiffany
lamp&sort=sale_soonest

What comparable lots are being offered at now, with the estimate, the opening price and - only where bids exist - the current bid as separate fields.

A dated price series of hammer prices you can cite - house, sale date, estimate, hammer and the premium that will be added - next to what comparable lots are being bid on today.

request
curl -X POST https://api.reefapi.com/liveauctioneers/v1/past_results \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"tiffany lamp","sort":"price_high_first","max_results":10}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "liveauctioneers",
    "endpoint": "past_results",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

What a LiveAuctioneers row actually contains

An auction lot carries several different amounts. Every row below was measured against live LiveAuctioneers responses on 2026-10-14.

FieldWhat it holds
hammer_priceWhat the lot sold for, before the buyer's premium, in the lot's own currency. Set only on sold lots. Checked on five sold lots against the top bid in each lot's own bid history and against the price on each lot's own page: five out of five equal. Filled on 48 of 48 rows in each of five categories of the archive.
final_bid vs hammer_price`final_bid` is the last leading bid the source records on an ended lot; `hammer_price` is the sale price. They are usually equal, but not always: on one measured lot the hammer was 3,500 while the recorded leading bid was 5,500, so the two are never merged.
starting_price vs current_bid`starting_price` is the opening price. `current_bid` is set only on open lots with at least one bid and is null otherwise, so a lot nobody has bid on never shows a bid. `price_is` names which figure the row leads with: `hammer_price`, `current_bid` or `starting_price`.
estimate_low / estimate_highThe house's pre-sale estimate. The estimate filters bound the LOW end of that range, because that is how the source filters - a lot estimated 200-10,000 is inside a band that tops out at 300.
bid_historyOn a closed lot: every bid with its amount, currency and source (internet bid or competing floor bid). Its top amount, `bid_history_top`, matched `hammer_price` on every closed lot measured. The source publishes the history only after a lot closes; on open lots it is empty.
amounts_include_buyers_premiumFalse on every row. The premium is set per SALE: `detail` and `auction` return it as bands - one flat rate (25% on a measured sale) or up to three tiers, for example 20% up to 4,000, 18% to 10,000 and 15% above.
total_found and last_reachable_pageCounts stop at 10,000 open lots and 9,000 archived lots (`total_is_capped` says so). Paging stops at 10,000 open lots and 1,200 archived lots per query - past that LiveAuctioneers serves results only to signed-in members - and `last_reachable_page` says where the window ends. Narrow with a filter rather than paging deeper.
houseThe seller is the auction HOUSE, a business: `house`, `house_id`, `house_url`, its location and review score on every row, and its business website and contact details in `auction_house`.

Amounts are in each lot's own currency and are never converted. A field the source does not publish is null rather than filled in.

LiveAuctioneers coverage, measured

Every number below was read from live LiveAuctioneers responses on 2026-10-14.

Sold prices

hammer_price on every sold archive row: 48 of 48 in each of art, jewelry, furniture, collectibles and fashion. Checked against two independent sources on five sold lots - the top bid in the lot's own bid history and the price on the lot's own page - five out of five equal. Excludes the buyer's premium.

Filters that bite

On `tiffany lamp`, 6,418 archived lots unfiltered: 632 sold in 2024, 2,071 at a hammer of 1,000 or more, 2,459 between 100 and 500, 6,130 in Home & Décor - every returned row inside the filter. Hammer-price sorting returned 24 rows in strict order both ways.

Prices kept apart

estimate_low and estimate_high, starting_price, current_bid only on open lots with at least one bid, hammer_price only on sold lots, and final_bid separately - on one measured lot the hammer was 3,500 and the last recorded leading bid 5,500. price_is names the figure a row leads with. Nothing is converted between currencies.

Buyer's premium

Per sale, returned as bands: a flat rate (25% on a measured sale) or up to three tiers with their cut-offs (20% to 4,000, 18% to 10,000, 15% above on another). amounts_include_buyers_premium is false on every row.

Open lots

Six top-level categories. One query, `vase`, sits on the 10,000 counting ceiling unfiltered; Art narrows it to 1,180, Furniture 166, one New York filter 3,468. Unknown categories are refused, because the source would silently ignore them and return everything.

Limits, published

Counts stop at 10,000 open lots and 9,000 archived lots (total_is_capped). Paging stops at 10,000 open and 1,200 archived lots per query (last_reachable_page). Up to 120 rows per page. The bid history exists only after a lot closes. Archived rows carry the house's location, not the lot's.

What people build with LiveAuctioneers

The jobs this data is most often used for.

6

endpoints

1/2/3

credits per call

01

Price an item before consigning or bidding: `past_results` with a query, a category and a date window, sorted by highest hammer, gives what comparable lots actually sold for, with the estimate they were offered at next to it.

02

Build an auction-comparables feed for appraisers, insurers and dealers that cites the house, the sale date, the hammer price and the estimate per lot, with the buyer's premium kept separate so the figure reconciles with an invoice.

03

Measure how hard a lot was fought for: `detail` returns the bid history of a closed lot bid by bid, so you can see how many bids it took to get from the opening price to the hammer.

04

Compare the cost of winning before bidding: `detail` and `auction` return the sale's own buyer's-premium bands - a flat rate or up to three tiers with their cut-offs.

What LiveAuctioneers data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 491 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/liveauctioneers/v1/past_results \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"tiffany lamp","sort":"price_high_first","max_results":10}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/liveauctioneers/v1/past_results",
    headers={"x-api-key": REEF_KEY},
    json={
  "query": "tiffany lamp",
  "sort": "price_high_first",
  "max_results": 10
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up LiveAuctioneers.

Get a free key →
Does the LiveAuctioneers API return what a lot actually sold for?▾

Yes. `past_results` and `detail` return `hammer_price`, the price the lot sold for, before the buyer's premium. On five sold lots it matched the top bid in the lot's own bid history and the price on the lot's own page five times out of five, and it was filled on every one of 240 archived rows sampled across five categories.

Is the hammer price with or without the buyer's premium?▾

Without. `amounts_include_buyers_premium` is false on every row. The hammer equals the winning bid, and the premium is added on top at the rate the sale publishes - `detail` and `auction` return those bands so you can compute the total.

Can I filter and sort the archive by sold price?▾

Yes: `min_price` and `max_price` bound the hammer price, and `sort` takes `price_high_first` or `price_low_first`. Measured on `tiffany lamp`: 6,418 archived lots unfiltered, 2,071 at a hammer of at least 1,000 and 2,459 between 100 and 500, with every returned row inside the band.

A lot shows a price but no bids. Is that a bid?▾

No. That figure is the opening price, returned as `starting_price`. `current_bid` is filled only once `bid_count` is at least 1, and `price_is` says which figure the row leads with.

Why does a search say 10,000 results for almost everything?▾

Because LiveAuctioneers stops counting there for open lots (9,000 for the archive). `total_is_capped` is true when the figure sits on that ceiling. Add a category, a house, a country or a price band to get an exact count under it.

How deep can I page through sold lots?▾

1,200 archived lots per query, and 10,000 open lots; beyond that LiveAuctioneers serves results only to signed-in members. Every response carries `last_reachable_page`. Use the date window, the category, the house or the hammer band to cut a large archive into slices that fit.

Which categories can I filter by?▾

The six top-level ones: art, collectibles, fashion, furniture, home_decor and jewelry. Any other value is refused with an error, because the source silently ignores a category it does not recognise and would otherwise return everything.

Do I need a LiveAuctioneers account or key?▾

No. This API reads public, logged-out data and needs no account, cookie or token. The seller on every row is the auction house, which is a business.

What is the LiveAuctioneers API?▾

LiveAuctioneers API is a ReefAPI endpoint group for what auction lots actually sold for - the hammer price, before the buyer's premium - across thousands of auction houses, next to the lots open for bidding now with the estimate, the opening price and the live bid kept apart. It returns live JSON through POST requests under /liveauctioneers/v1.

Is the LiveAuctioneers API free to try?▾

Yes. ReefAPI starts with 1,000 free credits, no card required. LiveAuctioneers calls use the same shared credit balance as every other ReefAPI engine.

Do I need a LiveAuctioneers login or account?▾

No login to LiveAuctioneers is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the LiveAuctioneers data?▾

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the LiveAuctioneers API use?▾

LiveAuctioneers actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call LiveAuctioneers from an AI assistant or MCP client?▾

Yes. Connect ReefAPI once through MCP and your assistant can call liveauctioneers actions with the same key, credit pool and JSON envelope used by normal REST requests.

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 490 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-10-14.