Dorotheum.com Auction & Artist Scraper
Pricing
from $5.25 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
0
Monthly active users
6 days ago
Last modified
Categories
Features
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?
- Strengths and limits
- Sample output
- Who uses this Dorotheum scraper?
- How much does it cost?
- How to scrape Dorotheum auction results
- Input
- Input examples
- Track new results over time
- Use it from Python or the API
- FAQ
- Related auction and art scrapers
What data can you extract from Dorotheum?
Three data types, chosen with entityType:
auctionResults (default) and currentAuctions | artists |
|---|---|
| Lot title, number, URL, image URL | Name, profile URL |
| Full lot description (medium, size, condition, provenance) | Birth and death year, nationality |
| Auction name, date, type, branch | Recent lot count at Dorotheum |
| Realized price and currency (sold lots) | Recent average price |
| Estimate low / high | Recent sale categories |
| Starting bid | Latest 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.
auctionResultswalks 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.
priceis 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.
priceis 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 intitle. - 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):
| Lot | Estimate (EUR) | Realized (EUR) |
|---|---|---|
| Lucas Cranach the Elder | 290,000–360,000 | 265,837 |
| Jan van Goyen | 102,000–116,000 | 196,972 |
| Bernardino Licinio | 87,000–100,000 | 102,904 |
| Jan Sanders van Hemessen | 73,000–110,000 | 89,532 |
| Bartolomé Esteban Murillo | 100,000–130,000 | 80,579 |
| Johann Carl Loth, called Carlotto | 16,000–20,000 | 60,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:
priceis 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 instarting_bidand never mixes the two.estimate_low/estimate_highare filled only when Dorotheum shows an estimate range. Many lots, especially recent ones, show only a starting bid, which is instarting_bid.descriptionis 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
artistsdata type'srecent_*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_idare filled only when Dorotheum attributes a lot to a named artist. Works catalogued as "follower of", "school of" or anonymous keep the attribution intitle.
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
- Click Try for free (or open the actor in Apify Console) and go to the Input tab.
- Choose
entityType:auctionResults,currentAuctionsorartists. - Optionally paste specific auction or artist URLs into
startUrls. maxItemsdefaults to 50, a quick preview. Clear it (null) for the full archive.- Leave the Residential proxy setting on (the default).
- Click Start.
- Browse the results in the Output tab, or download them as JSON, CSV, Excel or HTML.
- To collect new results as they're published, add a Schedule with
mode: auto.
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
entityType | String | auctionResults | currentAuctions, auctionResults or artists. |
startUrls | Array 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. |
maxItems | Integer | 50 | Stop after this many lots or artists. A full auctionResults crawl covers the whole archive; raise this or clear it (null) for that. |
mode | String | auto | auto (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. |
impersonate | String | chrome (internal) | Browser fingerprint used for requests. Dorotheum's bot protection challenges plain requests; change only if chrome stops working. |
proxyConfiguration | Object | Residential | Apify 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 onlynew/changed/delisted.currentAuctions:mode: autoalways returns everything.- A
startUrlsrun is always partial and never updates the baseline.
Use it from Python or the API
from apify_client import ApifyClientclient = 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!
Related auction and art scrapers
Same design, same output style, so results combine easily:
- Lempertz Scraper — Germany's oldest auction house, realized prices with buyer's premium.
- Artcurial Scraper — French auction results with hammer and final prices.
- Bruun Rasmussen Scraper — Denmark's largest auction house.
- MyArtBroker Scraper — print editions with Christie's/Sotheby's/Phillips price history.
- Ritchie Bros. Scraper — sold heavy equipment and truck auction lots.
- Saatchi Art Scraper — current artworks and per-artist sales stats.
- ArtBrokerage Scraper — secondary-market listings with provenance.