ParseForge Scrapers

Invaluable Auctions Scraper - Lots, Prices Realized & Artists

parseforge/invaluable-auctions-scraper

E-commerce

Scrape Invaluable auction lots with prices realized, upcoming lots open for bidding, and the artist directory. 130 fields including provenance, literature, condition and medium. 28 filters.

Run this scraper See the API call
Total users
4
Monthly active
0
Total runs
116
Bookmarked
0
Rating
Not rated yet
Last modified
6 days ago

Overview

ParseForge

Invaluable Auctions Scraper - Lots, Prices Realized & Artists API

Scrape Invaluable, the marketplace that aggregates live and timed auctions from thousands of houses worldwide. Get the archive of past lots with the price realized on each one, the lots open for bidding right now with live bid counts, and the artist directory with lifetime lot counts. 130 fields, 28 filters, three result types. No login, no API key, no browser. Export to CSV, JSON, Excel, or XML.

Every run delivers a 35-field lot row for one flat price. Twelve further data blocks: provenance, estimates, bidding, images, artist biography and the rest: are off by default: tick one and you get it, leave it and you are neither sent it nor billed for it.

Invaluable publishes no public API and its search runs entirely client-side, so an HTML scraper sees an empty shell. This Actor reads the same JSON endpoints the site's own front end uses, which is why a run of 5,000 lots finishes in about 8 seconds instead of loading 5,000 pages.

Who uses it What they scrape Invaluable for
Appraisers and valuers Comparable hammer prices for a maker, period or medium, with provenance and condition on each comp
Art-market analytics Price realized against low and high estimate across 14 currencies, normalised to USD
Dealers and collectors Upcoming lots in their category, filtered by house, country and estimate band, before the sale
Auction aggregators and price databases Whole departments in one run, deduplicated, with stable ids to join on
Provenance and catalogue researchers Provenance, literature and exhibition history, the fields that only exist on the lot page
Insurers and estate professionals Realized values by category and date range for schedules and probate

What it does

Pick one of three result types and the Actor returns flat rows.

🔨 Past lots and prices realized: one row per archived lot: hammer price in the sale currency, low and high estimate, bid count, the selling house, the sale date, the department and category, and the artist Invaluable matched to it.

🔔 Upcoming lots: one row per lot open for bidding: current bid, bid count, reserve, the sale's close time, venue latitude and longitude, watcher and favourite counts, and the sale type (live, timed, or view-only).

🎨 Artist directory: one row per artist: display name, aliases, genres, follower count, and how many lots Invaluable holds for them, split into past and upcoming.

Every run also gives you:

  • 🧾 Provenance, literature and exhibited. Switch on includeLotDetails and each row gains the connoisseurship block that exists only on the lot's own page: provenance, literature, exhibition history, condition, medium, dimensions, signature, marks, buyer's premium and view count.
  • 🚫 Duplicates removed before you are billed. Invaluable's index re-serves records on deep pages: measured on one Fine Art query, pages 19 and 20 shared 612 of 1,000 lot references. Every row is deduplicated by lot reference, so you are never charged twice for the same lot.
  • 🪟 Past the index ceiling. A single query stops serving at roughly 20,000 distinct lots no matter how many million it claims to hold. When your row target is higher, the Actor splits the sale-date range and drains each window separately.
  • 💱 14 currencies, one comparable number. convertToUsd adds priceResultUsd, estimateLowUsd, estimateHighUsd and currentBidUsd using Invaluable's own rates.
  • 🔤 Mojibake repaired. Invaluable's feed ships some text as UTF-8 already decoded as Latin-1: "Grandma’s Sunday" for "Grandma's Sunday". Those strings are repaired; text that is already clean is never touched.
  • 🔗 Stable ids to join on. lotRef, catalogRef, houseRef and artistRef are Invaluable's own permanent references and survive title and spelling changes.

Results export to CSV, JSON, Excel, or XML, or stream from the API.

What you can do with Invaluable data

📊 Build a price database for a maker or category.

Filter by artist, department and date range, sort by price realized, and switch on USD conversion. Estimates come with every row, so you can measure how often a category beats its high estimate.

🔍 Assemble appraisal comparables with provenance.

includeLotDetails gives you the provenance, literature and condition text on each comparable, the part an appraisal actually has to cite, and the part a listing-only scraper cannot reach.

🔔 Watch a category before the hammer falls.

Run upcoming filtered to your department and estimate band, sorted by newestListed, and see what is coming to market with venue coordinates and current bids.

🏛️ Profile the houses and artists behind a market.

includeHouseProfile and includeArtistProfile attach the selling house's address and founding date, and the artist's dates, profession and genres: each fetched once and cached across the whole run.

Why choose this scraper

What you get
Three result types Past lots with prices realized, upcoming lots with live bids, and the artist directory: one Actor, one schema.
130 fields 35 in the base row, 89 more across twelve optional blocks you switch on individually.
28 filters Department, category, style, house, artist, country, state, currency, sale type, price band, estimate band, bid count, date range and more. Filtered rows are never written and never charged.
Deduplicated The source re-serves records on deep pages. Every lot is written once, so your bill and your dataset both stay honest.
Reaches past the ceiling Automatic sale-date slicing when one query stops serving before your row target.
USD normalisation 14 sale currencies converted with Invaluable's own rates, so prices compare directly.
Fast, because there is no browser 5,000 lots in about 8 seconds, 30,000 in under a minute. Measured, not estimated.
Filter without buying the column Estimate, bid and price filters read the complete row before anything is stripped, so you can narrow by a field you did not pay for.
Nothing you did not ask for All twelve optional blocks are off by default. A block you did not tick is stripped before the row is written, so it is never delivered and never billed.
Honest empties A field Invaluable does not publish is absent from the row, never a guessed value and never a null.
Four export formats CSV, JSON, Excel, and XML, from the dashboard or the API.

How it compares

There are two other Invaluable Actors in the Store. Their columns reflect what their own public listings state, not a test run of them.

Feature ParseForge lexis-solutions lulzasaur
Past lots with prices realized Yes Yes Yes
Upcoming lots Yes, with live bid count, reserve and venue coordinates Current bids stated Yes
Artist directory Yes, 258,000 artists Not stated Not stated
Provenance, literature, exhibited Yes Not stated Not stated
Condition, medium, dimensions, signature Yes Not stated Not stated
Sale venue address and viewing notes Yes Not stated Not stated
Auction house and artist profiles Yes, cached per reference Not stated Not stated
USD normalisation across 14 currencies Yes Not stated Not stated
Duplicate lots removed Yes Not stated Not stated
Reaches past the ~20,000-row index ceiling Yes, by date slicing Not stated Not stated
Filters 28 Not stated Keyword, past or upcoming
Default memory 512 MB 4,096 MB 4,096 MB
Actor start fee $0.054 per GB $0.00005 $0.00005
Price per row (base) $0.005 $0.0049 $0.005
Pay only for the data you tick 12 optional blocks, all off by default One price, everything bundled One price, everything bundled

Per base row the three are within a hundredth of a cent of each other. The difference is what the row contains and what you can decline: their price is a bundle, so a run that only needs titles, houses and hammer prices pays for the descriptions and images too. Here that run pays $5.00 per 1,000 and nothing else, and a run that wants provenance and biographies can buy exactly those. Our start fee is higher, so below roughly 45 rows they are cheaper; above it the bundling difference decides.

What a lot looks like

At the defaults, every lot returns as one flat 35-field row. This is a real record:

{
  "rowType": "past-lot",
  "lotRef": "C6AB47CC42",
  "lotId": "200214796",
  "lotUrl": "https://www.invaluable.com/lot/C6AB47CC42",
  "lotNumber": "2287",
  "lotTitle": "Cosmograph Daytona “The King”, Reference 6270 | A highly important yellow gold, diamond and sapphire-set chronograph wristwatch with bracelet, Circa 1985",
  "priceResult": 40635000,
  "sold": true,
  "resultsPosted": true,
  "currencyCode": "HKD",
  "currencySymbol": "HK$",
  "catalogRef": "10VJHYYSZ5",
  "catalogUrl": "https://www.invaluable.com/catalog/10VJHYYSZ5",
  "saleType": "Live",
  "saleDate": "2025-10-21T03:00:00.000Z",
  "saleDateLocal": "Oct 21, 11:00 AM HKT",
  "closed": true,
  "onlineOnly": false,
  "houseName": "Sotheby's",
  "houseRef": "4WSXVOTIS6",
  "houseUrl": "https://www.invaluable.com/auction-house/4WSXVOTIS6",
  "location": "Hong Kong, HK",
  "countryName": "Hong Kong",
  "category": "Jewelry",
  "subcategory": "Watches, Men's",
  "hasImage": true
}

Tick includeEstimates, includeDescription, includeImages and includeBidding and the same row also carries:

{
  "estimateLow": 16000000,
  "estimateHigh": 32000000,
  "lotDescription": "Rolex Cosmograph Daytona “The King”, Reference 6270 … Dial: pavé-set diamond. Calibre: cal. 727 mechanical, 17 jewels …",
  "imageUrl": "https://image.invaluable.com/housePhotos/…/H4891-L351953283.jpg",
  "thumbnailUrl": "https://image.invaluable.com/housePhotos/…/H4891-L351953283_thz.jpg",
  "bidCount": 0
}

Add the page-reading blocks: includeLotDetails, includeCatalogDetails, includeArtistProfile, and convertToUsd, and it also carries:

{
  "medium": "18k yellow gold, diamond and sapphire",
  "dimensions": "37 mm diameter",
  "condition": "Very good.",
  "provenance": "Private collection, acquired directly from Asprey of London",
  "literature": "Cf. Pucci Papaleo, Ultimate Rolex Daytona, p. 412",
  "exhibited": "Sotheby's Hong Kong, October 2025",
  "lotSignature": "case, dial and movement",
  "buyersPremiumPct": 26,
  "viewCount": 8412,
  "catalogTitle": "Important Watches",
  "venueCity": "Hong Kong",
  "venueCountry": "Hong Kong",
  "saleTimeZone": "HKT",
  "priceResultUsd": 5210000,
  "estimateLowUsd": 2051000,
  "usdConversionRate": 0.1282
}

What you always get, and what you add

Always in the row: covered by the result-item price

35 fields, on every lot, with no box to tick:

Group Fields
Identity lotRef, lotId, lotUrl, lotNumber, lotTitle, rowType
Price realized priceResult, sold, resultsPosted, currencyCode, currencySymbol
Sale catalogRef, catalogUrl, saleType, saleDate, saleDateLocal, saleEndDate, listedDate, closed, onlineOnly, featured, unlotted
Seller houseName, houseRef, houseUrl, location, countryName
Artist artistName, artistRef, artistUrl
Taxonomy category, subcategory, style, houseCategory
Media flag hasImage

That is a complete auction record on its own: what sold, for how much, in which currency, at which house, on what date, in which category, by which artist.

Add a block when you need it

Each box below is off by default. Tick it and the block is delivered and billed; leave it and neither happens. The first six come from the same search response the base row does, so they cost no extra request. The last six read another page, which is why they cost more.

Checkbox Adds Event Price
includeDescription lotDescription, extraText description-text $0.0008
includeEstimates estimateLow, estimateHigh estimate-band $0.0008
includeBidding currentBid, bidCount, reservePrice bidding-data $0.0006
includeImages imageUrl, thumbnailUrl, imageWidth, imageHeight image-urls $0.0005
includeGeo latitude, longitude, stateName geo-location $0.0004
includeEngagement watcherCount, favoriteCount, activityCount engagement-stats $0.0004
includeLotDetails 27 fields: provenance, literature, exhibited, condition, medium, dimensions, signature, marks, buyer's premium, view counts lot-details $0.006
includeAllImages images (every photo at three resolutions), imageCount image-set $0.002
includeCatalogDetails 19 fields: sale title, description, venue address, viewing notes, timezone catalog-details $0.004
includeArtistProfile 8 fields: artist dates, profession, aliases, genres, biography artist-profile $0.004
includeHouseProfile 11 fields: house address, phone, founding date, profile text house-profile $0.003
convertToUsd priceResultUsd, estimateLowUsd, estimateHighUsd, currentBidUsd, usdConversionRate price-usd $0.0008

A block you ticked but that Invaluable did not publish is not charged. The charge is decided by reading the finished row, not by reading your checkbox, so a lot with no provenance costs you nothing for includeLotDetails.

You can filter on a field without buying it

Filters run against the complete row, before any block is stripped. So this works:

{ "estimateMin": 5000, "minBidCount": 3, "soldOnly": true }

with includeEstimates and includeBidding both off. You get the lots that match, priced as base rows, without the estimate or bidding columns. Pay for the columns only when you want to read them, not to filter on them.

Configure the run

Setting What it does
resultType past for the archive with prices realized, upcoming for lots open for bidding, artists for the artist directory.
searchQuery Full-text query across lot title, description and artist. Leave empty to browse by department, house or date alone.
maxItems Ceiling on rows written. One request returns up to 1,000 rows, so this is the main lever on run cost.
sortBy Relevance, price realized, sale date or lot number on past lots; bid count, current bid and newest-listed on upcoming lots; alphabetical on artists.
lotUrls Skip search entirely and read these lots directly. Accepts full lot URLs or bare lot references. The same checkboxes apply.
proxyConfiguration Off by default. Search needs no proxy; the six blocks that read another page do: see below.

Narrow the run with filters

Every filter is applied before a row is written, so rows you filter out are never charged.

Filter What it keeps
categories Any of the 15 departments: Fine Art, Collectibles, Decorative Art, Furniture, Jewelry, Asian Art & Antiques, Firearms, Wines & Spirits and the rest.
subcategories Any of 97 categories: Painting, Prints, Sculpture, Rings, Clocks, Whiskey, Rifles, Toys and so on.
styles The third taxonomy level: Landscape, Abstract, Portrait, Nude. Invaluable only publishes it on upcoming lots.
auctionHouses / houseRefs Only these selling houses, by name or by Invaluable reference.
artistNames / artistRefs Only these artists, by name or by reference.
countries Seller country, from the 31 Invaluable indexes.
states Seller state or province. Indexed on upcoming lots.
currencies Sale currency: USD, EUR, GBP, AUD, CAD, CHF, JPY, HKD, SGD, KRW, THB, COP, ZAR, PLN.
saleTypes Live, Timed or View Only. Upcoming lots.
catalogRefs Only these sales, by catalog reference.
priceResultMin / priceResultMax Hammer price band, in the sale's own currency.
estimateMin / estimateMax Estimate band. Works with includeEstimates off.
currentBidMin / currentBidMax Live bid band. Works with includeBidding off.
minBidCount Lots that already attracted at least this many bids. Works with includeBidding off.
dateFrom / dateTo Inclusive sale-date range, YYYY-MM-DD.
soldOnly / unsoldOnly Lots with, or without, a published hammer price.
onlineOnly Sales that ran online only.
withImagesOnly Drops lots the house listed without a photo. Works with includeImages off.
withArtistOnly Lots Invaluable matched to an artist record. Upcoming lots.
featuredOnly Lots the house paid to feature. Upcoming lots.
excludeClosed Drops lots whose bidding already closed. Upcoming lots.

A note on the upcoming-only filters: styles, states, withArtistOnly, featuredOnly and excludeClosed are indexed on upcoming lots but not on the archive. Applying them to past would silently return zero rows, so the Actor ignores them there instead.

Proxy: not for search, yes for the six blocks that fetch a page

The search index tolerates sustained querying and needs no proxy at all, a 35,000-hit run completed from a single unproxied IP with zero blocks. That is why proxyConfiguration is off by default and why a default run costs you no proxy traffic.

The endpoints behind includeLotDetails, includeAllImages, includeCatalogDetails, includeArtistProfile and includeHouseProfile are the opposite. They answer a burst of about four requests per IP and then return HTTP 202 with a zero-length body: not 429, not 403. A client that trusts the status code reads that as success and writes empty rows. This Actor validates every response by body, never by status code.

Requests are spread over eight proxy sessions, each with its own reservation clock, and the gap between them is steered by what actually comes back, a throttle widens it, a clean response narrows it. Measured recovery from a drained IP is about 40 seconds, and the penalty lengthens the more the source is pushed, so throughput depends on how rested your proxy pool is rather than on any fixed rate. Across measured runs, enriching a lot with all five page-reading blocks took between 6 and 10 seconds; residential proxies were consistently around three times faster than datacenter and failed roughly seven times less often.

Two consequences worth planning around:

  • Those blocks are for hundreds of lots, not tens of thousands. A base run of 30,000 rows takes under a minute; the same 30,000 with includeLotDetails would take hours. Filter down to the lots you actually need the provenance for.
  • If the source stops answering, the run stops asking. After twelve consecutive dead fetches the Actor switches those blocks off for the rest of the run, says so in the log, and finishes on base rows. You are not charged for blocks that never arrived.

If you tick a page-reading block, turn on Apify Proxy: residential: in proxyConfiguration. The Actor warns you in the log if you forget.

Pricing

This Actor is pay per event. You are charged for what a run actually delivers: never for a row a filter rejected, never for a duplicate the index re-served, and never for a block you did not tick.

A run left at its defaults fires exactly three events: result-item per row, one search-query per request, and apify-actor-start once.

The unbundled prices below take effect on 4 September 2026. Until then the Actor bills its previous rate of $0.0035 per row, and the six blocks that come from the search response: description, estimates, bidding, images, geo and engagement: are delivered without a charge, exactly as they were when they sat inside the base row.

Event Price When it fires
result-item $0.005 One row written to the dataset, with all 35 base fields.
search-query $0.009 One search request, returning up to 1,000 lots with every filter already applied.
apify-actor-start $0.054 Once when the run starts, per GB of memory. This Actor runs in 512 MB, so that is one event.
description-text $0.0008 Optional: includeDescription.
estimate-band $0.0008 Optional: includeEstimates.
bidding-data $0.0006 Optional: includeBidding.
image-urls $0.0005 Optional: includeImages.
geo-location $0.0004 Optional: includeGeo.
engagement-stats $0.0004 Optional: includeEngagement.
lot-details $0.006 Optional: includeLotDetails. One rate-limited page read per lot.
image-set $0.002 Optional: includeAllImages. Shares the lot-details request.
catalog-details $0.004 Optional: includeCatalogDetails. One read per sale, cached.
artist-profile $0.004 Optional: includeArtistProfile. One read per artist, cached.
house-profile $0.003 Optional: includeHouseProfile. One read per house, cached.
price-usd $0.0008 Optional: convertToUsd.

1,000 lots at the defaults cost $5.06, or $5.00 per 1,000 rows plus the start fee.

Add the six index blocks: description, estimates, bidding, images, geo, engagement, and the same 1,000 lots cost $8.56. Turn on everything, including the five page-reading blocks, and it is $28.36, because each of those lots is then an individual throttled request rather than one bulk query.

Cached blocks are why sale, artist and house details stay cheap in practice: a 500-lot catalogue is one catalog-details read, not 500.

Free users

Apify free-plan runs are capped at 25 rows per run. Everything else is identical: all 35 base fields, all twelve optional blocks, all 28 filters, all three result types. Upgrade your Apify plan to lift the cap.

Run it

  1. Open the Actor in Apify Console, pick a result type, and type a keyword or choose a department.
  2. Set maxItems to the number of rows you want.
  3. Click Start, then export the dataset as CSV, JSON, Excel, or XML.

Or from the API:

curl -X POST "https://api.apify.com/v2/acts/parseforge~invaluable-auctions-scraper/runs?token=YOUR_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"resultType":"past","searchQuery":"rolex daytona","soldOnly":true,"sortBy":"priceDesc","maxItems":100}'

Use with AI agents (MCP)

The Actor is exposed over Apify's MCP server, so an agent can call it as a tool:

https://mcp.apify.com/sse?actors=parseforge/invaluable-auctions-scraper

Ask things like "what did Picasso lithographs sell for at auction last year" and the agent fills the input itself.

Troubleshooting

No rows came back.

Invaluable's index answers a filter value it does not recognise with zero rows, not an error. Check spelling against the dropdowns: house and artist names must match Invaluable's own spelling exactly, and Sotheby's needs its apostrophe. Also check that your filters are not mutually exclusive, such as soldOnly together with unsoldOnly.

The run stopped well short of maxItems.

That is the index ceiling, not a bug. A single query stops serving at roughly 20,000 distinct lots however many millions it reports holding. The Actor automatically splits the sale-date range to reach further; if it still falls short, narrow the query: one department or one date range at a time, and run it more than once.

Why is the reported total so much bigger than what I got?

Invaluable returns an approximate count and flags it as an estimate; repeating the same query returns 85 million one moment and 110 million the next. The log prints the estimate for orientation only, and the run reads until the index actually runs dry.

Enrichment fields are missing on some rows.

Those endpoints throttle hard, and how hard depends on how recently the source has been pushed. The Actor retries, rotates proxy sessions and paces itself against the responses, but a lot whose request never got through is written without the block rather than with invented values. Switch proxyConfiguration to residential proxies, ask for fewer rows, or come back later.

The log says enrichment was switched off part-way.

That is the circuit breaker. After twelve consecutive dead detail fetches the Actor stops asking, because at that point the source has stopped answering this proxy pool entirely and retrying only burns run time. The listing fields are complete and unaffected, and nothing is charged for the blocks that did not arrive. Re-run with residential proxies for the lots you still need.

Why is priceResult zero on a past lot?

Invaluable writes 0 both for a lot that did not sell and for a house that withholds its results. sold and resultsPosted tell the two apart. Use soldOnly to keep only lots with a published hammer price.

Why does an upcoming lot have no priceResult?

Because it has not been sold yet. The field is omitted rather than written as zero, so an empty cell is never mistaken for a lot that failed to sell.

A field stopped filling.

Invaluable changed its index or its lot payload. Email us with your run ID so we can update the parser.

FAQ

Question Answer
Do I need an Invaluable account or API key? No. This reads public Invaluable data, so there is nothing to register or authenticate.
How far back does the archive go? Invaluable's archive spans decades of sales. Use dateFrom and dateTo to pick a window; the earliest and latest dates your filters actually reach are printed in the log.
Are prices before or after buyer's premium? priceResult is the hammer price in the sale's own currency, and it is in the base row. Tick includeLotDetails to add buyersPremiumPct and compute the total.
Can I compare prices across countries? Yes. Tick convertToUsd and every price, estimate and bid also arrives in USD with the rate used on the row.
Can I get every lot in one sale? Yes. Put the sale's code in catalogRefs and leave the keyword empty.
Does it cover live bidding? It reads the current bid, bid count and reserve as the index publishes them. It does not place bids and does not stream a live sale.
How many rows per run? Free plan: 25. Paid: up to 100,000, bounded by how many distinct lots your filters actually reach.
Can I avoid the optional charges entirely? Yes. Leave every box unticked, which is how the Actor ships. A default run bills result-item, search-query and apify-actor-start, and nothing else.
Do I need a proxy? Not for search, and it is off by default. Yes for the five blocks that read a lot, sale, artist or house page, which throttle per IP.
Is this an official Invaluable product? No. It is unofficial and reads only publicly available Invaluable data.

Related actors

Browse the full ParseForge collection for more scrapers.

🆘 Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Invaluable LLC or any auction house listed on it. It collects only publicly available Invaluable data. Invaluable and the auction houses assert rights over their catalogue text and images; you are responsible for using this data in compliance with Invaluable's terms and applicable law, and for obtaining a licence where your use requires one.

Input

FieldTypeWhat it doesDefault
resultType string (3 options) `past` reads the archive of ~83 million lots that already went under the hammer, with prices realized. `upcoming` reads the ~232,000 lots currently open for bidding, with live bid counts and geo. `artists` reads Invaluable's artist directory with lifetime lot counts. past
searchQuery string Full-text query across lot title, description and artist. Leave empty to browse a category, a house or a date range without a keyword. rolex
maxItems integer Ceiling on rows written to the dataset. One search request returns up to 100 rows, so this is also the main lever on run cost. 50
sortBy string (12 options) Which Invaluable sort index to read. Price and date orders exist on the archive; bid count, current bid and newest-listed exist on upcoming lots. relevance
categories array Top-level Invaluable departments. Empty means every department. not set
subcategories array Second taxonomy level, e.g. Painting, Rings, Whiskey. Works on both past and upcoming lots. not set
styles array Third taxonomy level, e.g. Landscape, Abstract, Portrait, Nude. Invaluable only publishes this level on upcoming lots, so it is ignored for `past`. not set
auctionHouses array Exact house names as Invaluable spells them, e.g. `Sotheby's`, `Bonhams`. Multiple names are ORed. not set
artistNames array Exact artist names, e.g. `Pablo Picasso`. Multiple names are ORed. not set
countries array Country of the selling house. not set
states array State or province of the selling house, e.g. `New York`. Invaluable only indexes this on upcoming lots. not set
currencies array Currency the sale is denominated in. not set
saleTypes array Live auction, timed online auction, or view-only listing. not set
catalogRefs array Scrape only these sales, by Invaluable catalog reference (the code in a /catalog/ URL). not set
houseRefs array Scrape only these houses, by Invaluable house reference. More precise than a name. not set
artistRefs array Scrape only these artists, by Invaluable artist reference. not set
priceResultMin integer Hammer price floor, in the sale's own currency. Past lots only. not set
priceResultMax integer Hammer price ceiling, in the sale's own currency. Past lots only. not set
estimateMin integer Keeps lots whose low estimate is at least this. not set
estimateMax integer Keeps lots whose high estimate is at most this. not set
currentBidMin integer Live bid floor. Most useful on upcoming lots. not set
currentBidMax integer Live bid ceiling. not set
minBidCount integer Keeps lots that already attracted at least this many bids. not set
dateFrom string Inclusive lower bound on the sale date, `YYYY-MM-DD`. not set
dateTo string Inclusive upper bound on the sale date, `YYYY-MM-DD`. not set
soldOnly boolean Keeps lots where a hammer price was published. Invaluable writes 0 both for unsold lots and for houses that withhold results. false
unsoldOnly boolean The inverse: bought-in lots and sales whose house does not publish results. false
onlineOnly boolean Keeps lots from sales that ran online only. false
withImagesOnly boolean Drops lots the house listed without an image. false
withArtistOnly boolean Keeps lots Invaluable matched to an artist record. Only indexed on upcoming lots. false
featuredOnly boolean Keeps lots the house paid to feature. Only indexed on upcoming lots. false
excludeClosed boolean Drops lots whose bidding already closed. false
lotUrls array Skip search entirely and read these lots directly. Accepts a full invaluable.com lot URL or a bare lot reference. Every row is fully enriched. not set
includeDescription boolean Adds `lotDescription` and `extraText`, the full catalogue text the house wrote for the lot. Comes from the search index, so it costs no extra request. false
includeEstimates boolean Adds `estimateLow` and `estimateHigh`. The `estimateMin` / `estimateMax` filters work whether or not this is on, so you can narrow by estimate without buying the columns. false
includeBidding boolean Adds `currentBid`, `bidCount` and `reservePrice`. The `currentBidMin`, `currentBidMax` and `minBidCount` filters work whether or not this is on. false
includeImages boolean Adds `imageUrl`, `thumbnailUrl` and the pixel dimensions of the main photo. `hasImage` and the `withImagesOnly` filter stay free. false
includeGeo boolean Adds `latitude`, `longitude` and `stateName`. Invaluable only indexes coordinates on upcoming lots. false
includeEngagement boolean Adds `watcherCount`, `favoriteCount` and `activityCount`: how much attention the lot is getting on Invaluable. false
includeLotDetails boolean Adds provenance, literature, exhibited, condition, medium, dimensions, signature, marks, buyer premium and view counts from the lot own page. One rate-limited request per lot: the slowest and most proxy-hungry option here. false
includeAllImages boolean Adds the full photo array at thumbnail, medium and large resolution with pixel dimensions. Shares the lot-details request, so switching both on costs one request, not two. false
includeCatalogDetails boolean Adds the sale title, description, venue address, viewing notes and timezone. One request per sale, reused across every lot in it. false
includeArtistProfile boolean Adds the artist dates, profession, aliases, genres and biography. One request per artist, reused across the run. false
includeHouseProfile boolean Adds the house address, phone, founding date and profile text. One request per house, reused across the run. false
convertToUsd boolean Adds `priceResultUsd`, `estimateLowUsd`, `estimateHighUsd` and `currentBidUsd` using Invaluable own conversion rates, so lots in 14 currencies compare directly. false
proxyConfiguration object Search needs no proxy and runs proxy-free by default. The optional blocks that fetch a lot, sale, artist or house page do need one: that API answers a short burst per IP and then returns empty bodies. Turn on Apify Proxy, ideally residential, whenever you tick one of those. {"useApifyProxy":false}

Pricing

from $4.45 per 1,000 results

Charged forWhat it isPrice each
result One lot row written to the dataset with all 35 base fields: identity, price realized, currency, sale, auction house, artist and category. $0.00445 to $0.005
Search query One search request against the Invaluable index, returning up to 1,000 lots with every filter already applied. $0.00801 to $0.009
Catalogue description (optional) Optional, off by default. The full catalogue text the house wrote for the lot. Switch on with includeDescription. $0.000712 to $0.0008
Pre-sale estimates (optional) Optional, off by default. Low and high estimate. The estimate filters work without buying these columns. Switch on with includeEstimates. $0.000712 to $0.0008
Bidding data (optional) Optional, off by default. Current bid, bid count and reserve. The bid filters work without buying these columns. Switch on with includeBidding. $0.000534 to $0.0006
Primary image URLs (optional) Optional, off by default. Full-size and thumbnail URLs for the main photo, with pixel dimensions. Switch on with includeImages. $0.000445 to $0.0005
Venue coordinates (optional) Optional, off by default. Latitude, longitude and state of the selling venue. Switch on with includeGeo. $0.000356 to $0.0004
Engagement counters (optional) Optional, off by default. Watcher, favourite and activity counts for the lot. Switch on with includeEngagement. $0.000356 to $0.0004
Full lot details (optional) Optional, off by default. Provenance, literature, exhibited, condition, medium, dimensions, signature, marks, buyer premium and view counts, read from the lot own page. Switch on with includeLotDetails. $0.00534 to $0.006
Every photo (optional) Optional, off by default. The full photo array at thumbnail, medium and large resolution. Shares the lot-details request. Switch on with includeAllImages. $0.00178 to $0.002
Sale details (optional) Optional, off by default. Sale title, description, venue address, viewing notes and timezone. Cached per sale. Switch on with includeCatalogDetails. $0.00356 to $0.004
Artist biography (optional) Optional, off by default. Artist dates, profession, aliases, genres and biography. Cached per artist. Switch on with includeArtistProfile. $0.00356 to $0.004
Auction house profile (optional) Optional, off by default. House address, phone, founding date and profile text. Cached per house. Switch on with includeHouseProfile. $0.00267 to $0.003
USD conversion (optional) Optional, off by default. Price realized, estimates and current bid converted to USD with Invaluable own rates. Switch on with convertToUsd. $0.000712 to $0.0008
Actor Start Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). $0.04806 to $0.054

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

API

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST · run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~invaluable-auctions-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "helloWorld": 123
  }'

Examples

Input that runs as-is.

input.json
{
  "helloWorld": 123
}

Reviews

No reviews yet. Be the first.

Issues

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

Related scrapers

Run Invaluable Auctions Scraper - Lots, Prices Realized & Artists on Apify All scrapers