ActorStack.dev
E-commerceLead generationv0.1.5updated 1 October 2026

Invaluable Scraper: Auction Lots, Prices Realized & Houses

The price realized next to the estimate. Bidders reduced to counts.

Auction lots from Invaluable in two modes: sold lots with the price realized next to the low and high estimate, and upcoming lots with the current bid, bid count and watchers. Plus directories of auction houses and artists, with no bidder identifier ever leaving the Actor.

oswaldocarabano/invaluable-auctions-scraper

input.json
{
  "outputType": "lots",
  "searchMode": "past",
  "keyword": "tiffany lamp",
  "sortBy": "relevance",
  "maxItems": 200,
  "scrapeDetails": false
}
Version
v0.1.5
Memory
512 MB
Browser
none
Proxy
None for search; residential for lot pages

Short answer

The Invaluable Auctions Scraper exports lots from invaluable.com in two modes: sold lots with the price realized next to the low and high estimate, and upcoming lots with the current bid, bid count and watchers. Measured on Apify on 1 October 2026 over a stratified sample of 1,020 sold and 1,020 upcoming lots from 138 auction houses in 12 countries, price realized was filled on 100% of sold lots and the estimate on 91.7%. Each lot keeps its own currency, a zero in the source is delivered as null, and no bidder identifier is ever output. Pricing is $4.70 per 1,000 lots. Invaluable's Terms of Use prohibit robots and data extraction without written permission, which anyone running the Actor should weigh first.

Key points

  • Price realized was filled on 100% of 1,020 sold Invaluable lots measured on 1 October 2026, and the low and high estimate on 91.7% of the same sample.
  • Invaluable estimate coverage depends on the search: 91.7% over a 16-keyword sample of 1,020 sold lots, 85.2% over 480 sold lots in 8 categories, and 70.8% over the 1,000 most recent sold lots.
  • Invaluable stores a missing estimate or result as 0, and the Actor delivers those as null so an average of price realized is not dragged down by zeros that are not prices.
  • Every Invaluable lot keeps its own currency — USD, EUR, GBP, AUD, CAD, JPY and others — and the Actor never converts a price silently.
  • Bidder, watcher and winner identifiers are present in Invaluable's search index, and the Actor outputs only counts and a `has_winner` flag; 0 bidder IDs were found across 110 platform runs.
  • Invaluable's Terms of Use, version 3.11, prohibit robots, spiders and any form of data extraction without written permission, and the header of its robots.txt repeats the prohibition.
  • Artist attribution on Invaluable is sparse outside fine art: `artist_name` was filled on 10.9% of 1,020 sold lots overall and on 43.4% of those in Fine Art.
On this page11 sections

What it does

Auction lots from Invaluable in two modes: sold lots with the price realized next to the low and high estimate, and upcoming lots with the current bid, bid count and watchers. Plus directories of auction houses and artists, with no bidder identifier ever leaving the Actor.

output — one row
{
  "row_type": "lot",
  "lot_id": "205866906",
  "title": "Vintage Rolex Day-Date President Gold and Diamond Watch",
  "status": "sold",
  "auction_date": "2026-09-25T14:00:00.000Z",
  "currency": "USD",
  "estimate_low": 7000,
  "estimate_high": 10000,
  "price_realized": 13000,
  "bid_count": 17,
  "watcher_count": 50,
  "supercategory": "Jewelry",
  "category": "Watches, Women's",
  "house_name": "Charlton Hall",
  "location": "West Columbia, SC, US",
  "country": "United States of America",
  "lot_url": "https://www.invaluable.com/auction-lot/vintage-rolex-day-date-president-gold-and-diamond-656-c-692359e70e"
}

Why this one

Zeros that are not prices

Invaluable stores "no estimate" and "no result" as 0. A dataset that passes those through makes every average wrong in the same direction, and the error has no symptom. The Invaluable Auctions Scraper delivers them as null, so a mean of `price_realized` or of the estimate is computed over lots that actually have one.

Bidders reduced to counts

The search index carries the identifiers of watchers, bidders and winners, and each bidder's maximum bid. None of it leaves the Actor: the output has `watcher_count`, `bidder_count` and `has_winner`, and every row of 110 platform runs was checked for bidder IDs, with zero found.

Keywords that contain the keyword

With the index's default typo tolerance, a date-ordered search for "rolex" returned 45 of 100 lots that actually contained the word, and "patek" returned 3 of 100. Tightened, the same searches returned 100, 100 and 98 of 100. Every filter — category, country, house, artist, sale type, estimate, price and date — matched 100% of delivered rows in the test runs.

Lot pages optional, and priced as what they cost

A lot page carries every photo, the buyer's premium tiers, bid increments, the house address and, when the house wrote them, dimensions, medium, condition and provenance. It also weighs about 71 times the bytes of a search result and sits behind a web application firewall, so `scrapeDetails` is off by default and billed as its own $0.003 event only when the page is read.

Use cases

  • Price an object from sold comparables: price realized against the low and high estimate, sale date, house and full description.
  • Build a price index for a maker, category or artist from prices realized in their original currencies.
  • Source upcoming lots before the sale by keyword, category, estimate, country or house, sorted by ending soonest or most bids.
  • Track demand for a category through bid counts, bidders, watchers and favorites on upcoming lots.
  • Export the directory of about 6,900 auction houses with their country and number of upcoming lots.

Input

Every field has a default, and the defaults are deliberately small so a first run is cheap enough to inspect before you commit to a sweep. This table mirrors the Actor's own input schema field for field.

FieldDefaultWhat it does
outputTypestringlotsWhat to scrape`lots`, `auctionHouses` or `artists`. One row type per run.
searchModestringpastPast or upcoming lots`past` for sold lots with prices realized, newest first; `upcoming` for lots open for bidding, with live bid data.
keywordstring—KeywordLike the search box on invaluable.com, such as `tiffany lamp`. A pasted invaluable.com search URL also works; other URLs are rejected.
categoriesstring[]allCategoriesAny of the 14 top-level Invaluable categories, from Fine Art to Farm & Agriculture.
countriesstring[]allAuction house countriesAs Invaluable writes them, such as `Germany`. `USA` and `UK` are accepted as aliases.
auctionHousesstring[]allAuction housesExact house names, such as `Bonhams`. Run once with `outputType: auctionHouses` to get the list.
artiststring—ArtistExact artist name as Invaluable attributes it, such as `Pablo Picasso`.
saleTypestringanySale typeLive or Timed. Upcoming lots only.
minEstimate / maxEstimatenumber—Estimate rangeLow estimate at least, high estimate at most, in each lot's own currency.
minPrice / maxPricenumber—Price rangePrice realized for past lots, current bid for upcoming ones, in each lot's own currency.
dateFrom / dateTostring—Auction date range`YYYY-MM-DD`, UTC, inclusive.
includeUnsoldbooleanfalseInclude lots without a price realizedOff returns only lots with a published hammer price. On adds past lots that passed or have no published result.
sortBystringdateSort bydate, dateAsc, relevance, priceHigh, priceLow, newlyListed or mostBids. Price sorts compare raw numbers across currencies.
maxItemsinteger100Maximum resultsHard cap on rows delivered and charged, up to 100,000. Searches larger than 20,000 are split by date automatically.
scrapeDetailsbooleanfalseAdd full lot page datapersonal dataEvery photo, dimensions, medium, condition, provenance, house address, buyer's premium tiers and bid increments. About 1.5 s per lot, charged as a separate event.
maxConcurrencyinteger3Lot pages in parallelOnly used with lot pages; 1 to 5. The site paces lot pages and 3 is the measured sweet spot.
maxCacheAgeDaysinteger7Reuse lot page data up to (days)Applies only to lot page data; rows say so in `detail_from_cache` and `detail_fetched_at`. 0 always fetches fresh. Search results are always live.
proxyConfigurationobjectbuilt-inProxyOptional. Only lot pages use a proxy; the search does not need one.

Output and fill rates

A field being in the schema is not the same as it having a value. The percentages below were counted on real runs; the sample sizes are in Measurements. Anything not listed here is not promised.

FieldFilledMeaning
price_realizednumber100%The result for sold lots, described by the Actor as the hammer price. In the lot's own currency; 0 in the source becomes null.
estimate_lownumber91.7%With `estimate_high`. Sold lots, n = 1,020; 77.5% of upcoming lots. Other samples gave 85.2% and 70.8%.
currencystring100%On every row. Prices are never converted.
titlestring100%With `description`, `lot_number`, `lot_url`, `status` and `sale_type` (Live or Timed).
auction_datedatetime100%ISO, UTC, with `auction_date_local`. Delivered as Invaluable shows it.
house_namestring100%With `house_ref`, `catalog_ref`, `location` and `country`.
categorystring100%With `supercategory`; `subcategory` on upcoming lots.
current_bidnumber100%With `bid_count` and `watcher_count`. Present in both modes.
bidder_countinteger100%Upcoming lots, with `favorite_count`, `activity_count` and `posted_at`. A count, never an identifier.
has_winnerbooleannot measuredSold lots; true on 43.2% of 1,020. Replaces the winner identifier the index carries.
artist_namestring10.9%With `artist_ref`. 43.4% of sold Fine Art lots; 24.4% of upcoming lots.
more_textstring44.4%Extra catalogue notes and footnotes. 63.8% of upcoming lots.
end_timedatetime16.1%Timed auctions only. 33.1% of upcoming lots.
reserve_pricenumber4.1%Upcoming lots only, n = 1,020.
photosstring[]100%Lot pages only, n = 120: 4.7 photos per lot on average, against 1 from the search.
buyers_premium_tiersobject[]100%Lot pages only, n = 120, with `buyers_premium` and `bid_increments`.
condition_reportstring50%Lot pages only, n = 120. 56.5% on an earlier sample of 23.
usd_conversion_ratenumber66.7%Lot pages only, n = 120. The site's own rate when it gives one.
dimensionsstring15%Lot pages only, n = 120. With `medium` at 8.3%.
provenancestring3.3%Lot pages only, n = 120.

Every key is always present. A field that exists but is empty comes back as explicit null, so a parser never has to guess.

Datasets

Different record types go to different datasets, so the main table never carries columns that are blank on most rows.

  • defaultOne row type per run: auction lots (92 fields), auction houses or artists. `RUN_SUMMARY` and `ERRORS` are written to the key-value store.billed
  • Error rowsInput errors and pages that could not be read, with the reason.never billed

Pricing

Pay per delivered result. Charges are applied as each row is produced rather than in a lump at the end, so an aborted run bills only for what it actually gave you.

EventPriceNotes
apify-actor-startActor start$0.00001The platform minimum, once per run.
lotAuction lot$0.0047One lot: title, description, estimate, current bid or price realized, auction date, category, house, location and image. Never charged for errors, duplicates or failed pages.
lot-detailFull lot page$0.003Optional. Every photo, dimensions, medium, condition, provenance, house address, buyer's premium tiers and bid increments. Charged only when the page is read.
auction-houseAuction house$0.001Name, ID, country, logo and number of upcoming lots.
artistArtist$0.001Name, aliases, genres, total, upcoming and past lot counts, and followers.

Measurements

Each figure is shown with the method that produced it. A benchmark without a method is a marketing claim wearing a number's clothes.

Lot fill-rate sample

1,020 sold + 1,020 upcoming lots

16 keyword searches per mode on Apify, 1 October 2026, from 138 auction houses in 12 countries. The lot rates on this page come from it.

Estimate coverage by sample

91.7%, 85.2% and 70.8%

Sold lots: the 1,020-lot stratified sample; 480 lots across 8 categories on 23 September; and the 1,000 most recent sold lots. Coverage follows what you search.

Lot page sample

120 lot pages

60 sold and 60 upcoming paintings, rings and chairs. 4.7 photos per lot on average; an earlier sample of 23 pages gave 4.3.

Throughput

1,000 lots in 2.1 to 3.6 s

Platform runs at 512 MB on builds 0.1.3 and 0.1.4, with 1,000 delivered, 1,000 charged and 0 duplicates.

Lot page access

577 requests, 1 WAF challenge, 0 blocks

Aggregated from the run summaries of 97 platform runs through a residential proxy. The challenge was answered by changing IP, never by solving it.

Bidder identifiers output

0 across 110 platform runs

Every row of every run checked by script.

Keyword precision

"rolex" 45 of 100 before, 100 of 100 after

Lots containing the searched word in a date-ordered search, before and after tightening the index's typo tolerance. "patek" went from 3 to 98 of 100.

What it will not do

Stated plainly so you can judge fit before spending anything.

  • Invaluable's Terms of Use (§5.2 and §4.2) prohibit robots and data extraction without written permission, and the robots.txt header says the same. Anyone running the Actor should read those terms and make their own decision.
  • On a sold lot page, an anonymous visitor was shown "Sold: Log in to view" when the developer checked on 1 October 2026; the price realized the Actor delivers comes from the search index and the page state, which are served without a session. Invaluable also sells access to its results database by subscription.
  • Lot pages ignore robots.txt's `Crawl-delay: 10`: the Actor requests them at about 1.5 seconds per page per session. Search queries go to the search index host rather than to `www.invaluable.com`.
  • Artist is filled on 10.9% of sold lots overall (43.4% in Fine Art), and the estimate's coverage swings between 70.8% and 91.7% depending on the sample.
  • Sorting by price compares raw numbers across currencies, because nothing is converted. `usd_conversion_rate` appears on 66.7% of lot pages.
  • The sale-type filter works only for upcoming lots: the site does not keep sale type filterable for past ones.
  • Some sold lots carry an auction date a few days ahead of the result, because some houses publish results under the catalogue's closing date. The date is delivered as Invaluable shows it.
  • Invaluable's counters are approximate: two queries on 23 September 2026 put sold lots with a price at 8.74 and 10.10 million.

Privacy

  • The seller on Invaluable is always a registered auction house: 0 of 960 lots sampled had a seller that was not a house. House names, addresses and logos are business data and are delivered.
  • No bidder, watcher or winner identifier is ever output, and no bidder's maximum bid. Only counts and a `has_winner` flag.
  • Of 960 lot descriptions, 2.4% contained something shaped like an email and 4.5% like a phone number; in the sample they were the auction house's own contacts and are delivered as written.
  • Removal requests: privacy@actorstack.dev

See also the data removal process.

Frequently asked questions

Are Invaluable prices converted to US dollars?
No. Each row keeps the lot's own currency in `currency`. With lot pages on, `usd_conversion_rate` gives Invaluable's own rate where the page has one, which was 66.7% of 120 lot pages measured.
Does the price realized include the buyer's premium?
The Actor describes `price_realized` as the hammer price, and whether a given house's published result includes premium was not verified. With lot pages on, `buyers_premium` and its tiers are delivered so the premium can be computed explicitly.
Does the Invaluable Auctions Scraper log in?
No. It never creates an account, signs in or solves a challenge. Search results come from Invaluable's public search index; lot pages, when requested, are read anonymously through a residential proxy.
What do Invaluable's terms say about scraping?
Invaluable's Terms of Use, version 3.11, prohibit using any robot or spider to monitor or copy its pages and any form of data extraction without written permission. This is a description of the document, not legal advice.
How many lots can one run return?
Up to 100,000. Searches larger than 20,000 lots are split by date automatically so `maxItems` is the number of rows actually delivered, and larger histories can be covered by scheduling runs by date range.

Guides for this Actor