Dorotheum.com Auction & Artist Scraper avatar

Dorotheum.com Auction & Artist Scraper

Pricing

from $5.25 / 1,000 results

Go to Apify Store
Dorotheum.com Auction & Artist Scraper

Dorotheum.com Auction & Artist Scraper

Dorotheum.com auction scraper — real unpaywalled realized prices back to 1998, upcoming estimates, and artist profiles, with built-in delta mode.

Pricing

from $5.25 / 1,000 results

Rating

0.0

(0)

Developer

Artsiom Kunitsyn

Artsiom Kunitsyn

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

6 days ago

Last modified

Categories

Features

Limited permissions

Share

Dorotheum Scraper — auction results & realized prices since 1998

Scrape auction results, upcoming lots and artists from Dorotheum, Vienna's auction house since 1707 and one of the largest in Europe. Get the realized (hammer) price, estimate range, starting bid, sale date and artist for every lot in Dorotheum's public archive, going back to 1998. That's an open alternative to paywalled auction price databases. No login or subscription.

Covers every Dorotheum department: Old Master and modern paintings, contemporary art, furniture, jewelry, watches, coins, antiques, design, classic cars and more. Export Dorotheum auction data to JSON, CSV or Excel, or pull it into Python, Google Sheets or an AI agent.

Dorotheum Auktionsergebnisse, Zuschlagspreise und Schätzpreise als Datensatz.

Contents

What data can you extract from Dorotheum?

Three data types, chosen with entityType:

auctionResults (default) and currentAuctionsartists
Lot title, number, URL, image URLName, profile URL
Full lot description (medium, size, condition, provenance)Birth and death year, nationality
Auction name, date, type, branchRecent lot count at Dorotheum
Realized price and currency (sold lots)Recent average price
Estimate low / highRecent sale categories
Starting bidLatest lot title and price
Sold flag
Artist name, id and profile URL
  • auctionResults: past sales with realized prices, back to 1998.
  • currentAuctions: lots coming up for sale, with estimates and starting bids.
  • artists: Dorotheum's artist directory.

Every record also carries a change_type (new, changed, unchanged, delisted). The Output tab has a readable table view per data type with the full field list.

Why this Dorotheum scraper

  • Real realized prices, completely open. Dorotheum publishes each historical lot's price with no login, and this actor turns 25+ years of it into a clean dataset.
  • Efficient. One auction page carries every lot in that sale, so a whole auction's results come from a single request.
  • Complete archive by default. auctionResults walks every auction back to 1998 when uncapped.
  • Built for Dorotheum's bot protection, with residential proxies and a browser fingerprint.

⚖️ Strengths and limits

Read this before you run a big job, so you know exactly what you get.

Strengths

  • Open realized prices. Dorotheum's published results, back to 1998, as structured data; the kind of data price databases charge a subscription for.
  • Honest price fields. price is only ever a realized price, and a starting bid is never reported as one. In a 750-lot check, all 734 sold lots had a price and none of the 16 unsold lots did.
  • Proxy included. Dorotheum blocks cloud IPs, so runs use Residential proxies; there's no separate proxy fee.
  • All departments, from Old Masters to watches and classic cars.

Limits

  • No search filters. You can't filter by department, artist, keyword or date in the input. Pick specific auctions or artists with startUrls, or filter the results yourself after the run.
  • The full archive is a big job. About 9,300 auctions, some with hundreds of lots, and you pay per lot ($7.50 per 1,000 on the free plan: a 300-lot sale is about $2.25, so the whole archive would run into a large bill). We haven't run it end to end, so we can't give you an exact total. A scale test ran at about 2 lots per second, so raise the run's timeout for long crawls and set a spending limit.
  • Price basis isn't stated. price is the figure Dorotheum publishes. We don't split out or confirm the buyer's premium, so don't compare it directly with hammer prices from other houses without checking.
  • Estimates are often missing. Many lots, especially recent ones, show only a starting bid.
  • Description isn't split up. Medium, size, condition and provenance stay inside the free-text description. Some titles and text are in German.
  • Artist rows cover recent lots only. recent_* fields reflect at most about 30 recent lots, not a career total.
  • Attributions. "Follower of", "school of" and anonymous works have no artist_name; the wording stays in title.
  • Upcoming sales appear late. Dorotheum announces sales before their catalogue is online; those have no lots until it is.
  • Bot protection. Dorotheum uses Cloudflare and blocks some proxy exits. The actor retries on a new IP, but this is the most likely thing to slow or fail a run. Its robots.txt also opts out of AI training use, so check that if it's your use case.
  • Not affiliated with Dorotheum.

Sample output

Real rows from a recent run (Old Master Paintings sale, 29 March 2000):

LotEstimate (EUR)Realized (EUR)
Lucas Cranach the Elder290,000–360,000265,837
Jan van Goyen102,000–116,000196,972
Bernardino Licinio87,000–100,000102,904
Jan Sanders van Hemessen73,000–110,00089,532
Bartolomé Esteban Murillo100,000–130,00080,579
Johann Carl Loth, called Carlotto16,000–20,00060,027

Lot record (JSON):

{
"source": "dorotheum",
"entity_type": "auctionResults",
"external_id": "dorotheum_10204744",
"url": "https://www.dorotheum.com/en/l/10204744/",
"title": "Peter Paul Rubens Nachfolger des 19. Jahrhunderts",
"auction_name": "Summer auction",
"auction_date": "2026-07-29",
"lot_number": "5",
"price": 1170,
"currency": "EUR",
"starting_bid": 900.0,
"sold": true,
"change_type": "new"
}

Artist record (JSON):

{
"source": "dorotheum",
"entity_type": "artists",
"external_id": "dorotheum_artist_alvar-aalto",
"url": "https://www.dorotheum.com/en/k/alvar-aalto/",
"name": "Alvar Aalto",
"birth_year": 1898,
"death_year": 1976,
"nationality": "Finland",
"recent_lot_count": 30,
"recent_avg_price": 4294.73,
"change_type": "new"
}

Good to know:

  • price is set only when a lot actually sold (sold: true). For an unsold lot the site shows the starting bid in the same place; the actor keeps that in starting_bid and never mixes the two.
  • estimate_low/estimate_high are filled only when Dorotheum shows an estimate range. Many lots, especially recent ones, show only a starting bid, which is in starting_bid.
  • description is Dorotheum's full free text. Medium, size and condition sit inside it and aren't split into separate fields, because the format varies too much across 25 years and every object category.
  • The artists data type's recent_* fields come from the artist's own Dorotheum page, which lists only their most recent lots (about 30 at most). They aren't a lifetime total.
  • artist_name/artist_id are filled only when Dorotheum attributes a lot to a named artist. Works catalogued as "follower of", "school of" or anonymous keep the attribution in title.

Who uses this Dorotheum scraper?

  • Art-market analysts and price databases: realized prices, estimate accuracy and sell-through rates across 25+ years.
  • Appraisers, insurers and art-lending firms: auction comparables for valuations.
  • Dealers and collectors: track upcoming lots and see what similar works fetched.
  • Researchers and journalists: price history for artists, schools and object categories.

How much does it cost?

Pay per result: you're charged per lot or artist record delivered. There's no monthly rental or separate proxy fee to estimate. See the Pricing tab for current prices, including automatic discounts on higher Apify plans.

The default run returns 50 lots, about $0.38 at the free-plan price. The $5 monthly credit on Apify's free plan covers roughly 650 lots.

How to scrape Dorotheum auction results

  1. Click Try for free (or open the actor in Apify Console) and go to the Input tab.
  2. Choose entityType: auctionResults, currentAuctions or artists.
  3. Optionally paste specific auction or artist URLs into startUrls.
  4. maxItems defaults to 50, a quick preview. Clear it (null) for the full archive.
  5. Leave the Residential proxy setting on (the default).
  6. Click Start.
  7. Browse the results in the Output tab, or download them as JSON, CSV, Excel or HTML.
  8. To collect new results as they're published, add a Schedule with mode: auto.

Input

ParameterTypeDefaultDescription
entityTypeStringauctionResultscurrentAuctions, auctionResults or artists.
startUrlsArray of strings(none)Specific auction URLs (.../en/a/{id}/) or artist URLs (.../en/k/{slug}/) to scrape instead of the full crawl. Such runs are always partial: no delisting detection, no saved baseline.
maxItemsInteger50Stop after this many lots or artists. A full auctionResults crawl covers the whole archive; raise this or clear it (null) for that.
modeStringautoauto (recommended): full scan first, changes only after, for auctionResults/artists. currentAuctions always returns everything, because estimates change as a sale approaches. full/incremental override this per run.
impersonateStringchrome (internal)Browser fingerprint used for requests. Dorotheum's bot protection challenges plain requests; change only if chrome stops working.
proxyConfigurationObjectResidentialApify Proxy settings. Keep the Residential default: Dorotheum blocks datacenter and cloud IPs.

Input examples

Quick preview of historical results (the default):

{ "entityType": "auctionResults" }

Full historical archive back to 1998 (slow):

{ "entityType": "auctionResults", "maxItems": null }

Everything currently up for auction:

{ "entityType": "currentAuctions", "maxItems": null }

Full artist directory:

{ "entityType": "artists", "maxItems": null }

Results of one specific auction:

{ "entityType": "auctionResults", "startUrls": ["https://www.dorotheum.com/en/a/123940/"] }

Scheduled run for new results (keep maxItems cleared so the baseline is saved):

{ "entityType": "auctionResults", "mode": "incremental", "maxItems": null }

Track new results over time

Every run labels each item new, changed (price or sold status moved for lots; recent activity moved for artists), unchanged or delisted. The baseline is saved per entityType.

  • auctionResults/artists: mode: auto (default) returns everything on the first run, then only new/changed/delisted.
  • currentAuctions: mode: auto always returns everything.
  • A startUrls run is always partial and never updates the baseline.

Use it from Python or the API

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("artsiom_k/dorotheum-scraper").call(
run_input={"entityType": "auctionResults", "maxItems": 5000}
)
for lot in client.dataset(run["defaultDatasetId"]).iterate_items():
if lot["sold"]:
print(lot["auction_date"], lot["title"], lot["price"], lot["currency"])

The same works from JavaScript, plain HTTP, Make, Zapier, n8n and Google Sheets integrations. AI agents such as Claude or Cursor can call it through Apify's MCP server.

FAQ

Does Dorotheum have an API for auction results? No, there's no public Dorotheum API. This actor returns Dorotheum's public auction results as structured data, so it works as one.

How far back do Dorotheum auction results go? To 1998. An uncapped auctionResults run walks the full archive.

Why is price empty for a lot that's listed in the results? That lot didn't sell. Check starting_bid. See Good to know.

Is the price the hammer price or does it include buyer's premium? It's the result price exactly as Dorotheum publishes it on the lot page.

Which departments are covered? All of them: paintings from Old Masters to contemporary, prints, furniture, jewelry, watches, coins, antiques, design, arms, toys, classic cars and more. Filter by auction_name or title after the run.

Can I export Dorotheum results to Excel or CSV? Yes: JSON, CSV, Excel, XML or HTML from the Output tab, or through the API.

How do I get only new results? Run it on a schedule with mode: auto (or incremental) and maxItems cleared.

Is it legal to scrape Dorotheum? This actor collects publicly available auction-result data: lot descriptions, prices and the public artist directory. Use it for a legitimate purpose and in line with GDPR where personal data is involved.

Something doesn't work or a field is missing? Open an issue on the Issues tab; issues are answered promptly.

Feedback and reviews

Missing a field or hit a problem? Open an issue on the Issues tab: issues are answered promptly.

If this Actor is useful to you, please leave a short review on this page. Reviews help other people find it and help decide what to improve next. Thank you!

Same design, same output style, so results combine easily: