Catawiki Scraper
Pricing
from $0.77 / 1,000 lots
Catawiki Scraper
Extract Catawiki auction lots with 90 fields each: current bid in EUR/USD/GBP, the expert's low-high estimate, full bid history, seller reputation, structured specifications and the image gallery. Search by keyword, browse a category, or take a whole auction in one run.
Pricing
from $0.77 / 1,000 lots
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share

Extract auction lots from catawiki.com at scale, with the richest field set available: current bid in three currencies, the expert's low/high estimate, full bid history, seller reputation, structured item specifications and the complete image gallery. No API key required.
Why this scraper?
💶 Live bidding data
Current bid, minimum next bid and opening bid, converted to euros, dollars or pounds on request, together with a true total bid count taken from the full bidding record rather than the handful shown on the page.
📈 The expert's estimate
Every lot on Catawiki is reviewed by a specialist who publishes a low and high estimate. Both figures are returned alongside the current bid, so you can measure the gap on any lot.
🔨 Complete bid history
Each individual bid with its amount, timestamp, the bidder's country and whether it came from an automatic bid — plus a total bid count on every lot.
🏅 Seller reputation
Shop name, country, member-since date, objects sold to date, positive/neutral/negative feedback counts, overall score, and the pro and top-seller flags.
🔎 Structured specifications
Brand, model, condition, material, period, dimensions and every other attribute Catawiki records, returned both as a list and as a keyed object you can query directly.
🗂️ Four ways in
Search by keyword, browse a category, take an entire auction in one pass, or scrape individual lots — paste any Catawiki address and the right mode is selected automatically.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQuery | string | (empty) | Keyword to search across all Catawiki auctions — a brand, artist, model or object type. |
startUrls | array | [] | Catawiki addresses to scrape. Search pages, category pages, whole auctions and single lots are all recognised. |
filters | string | (empty) | Catawiki filter expression, copied from the part of an address after filters=. Join several clauses with an ampersand. |
locale | string | "en" | Storefront language: en, nl, de, fr, it or es. Selects which translated titles and descriptions are returned. |
currency | string | "EUR" | Currency for bid amounts and estimates: EUR, USD or GBP. |
maxResults | integer | 100 | Maximum lots to return across all searches and start URLs. 0 means no limit. |
fetchDetails | boolean | true | Fetch each lot's own page to add bids, estimate, seller, specifications and gallery. |
includeBidHistory | boolean | true | Include the individual bids on each lot, not just the count. |
maxBidHistory | integer | 25 | Largest number of bids to keep per lot, newest first. 0 keeps the count only. |
skipReposts | boolean | false | Leave out lots already returned by an earlier run, so a scheduled run gives you only what is new. |
Output schema
Every field below is present on every record. Fields Catawiki does not publish for a given lot are returned as null rather than omitted.
Always present
| Field | Type | Description |
|---|---|---|
id | integer | Catawiki lot identifier. |
lotId | integer | Same value as id, provided for convenience when joining datasets. |
url | string | Full address of the lot page. |
slug | string | URL slug of the lot, identifier and title combined. |
title | string | Lot title as shown on the listing. |
subtitle | string | Short qualifier under the title, such as movement and case material. |
auctionId | integer | Identifier of the auction this lot belongs to. |
reservePriceSet | boolean | Whether the seller set a reserve price. false means a no-reserve lot. |
hasFreeShipping | boolean | Whether the seller offers free shipping on this lot. |
buyNowPrice | number | Fixed buy-now price where the seller offers one (null on ordinary auction lots). |
buyNowCurrency | string | Currency of buyNowPrice. Catawiki quotes buy-now in euros only. |
favoriteCount | integer | Number of users who added the lot to their favourites. |
isContentExplicit | boolean | Whether Catawiki flags the lot as explicit content. |
biddingStartTime | string | ISO timestamp at which bidding opened. |
imageUrl | string | Full-size primary image. |
thumbnailImageUrl | string | Thumbnail version of the primary image. |
sellerId | integer | Catawiki seller identifier. |
sellerShopName | string | Seller's shop name as shown on the listing. |
source | string | Always catawiki.com. |
sourceUrl | string | The start URL this lot was reached from (null for keyword searches). |
sourceType | string | How the lot was reached: search, category, auction or lot. |
locale | string | Storefront language the record was scraped in. |
scrapedAt | string | ISO timestamp of extraction. |
scrapedDate | string | Extraction date in the Amsterdam time zone, YYYY-MM-DD. |
contentHash | string | Stable fingerprint of the lot identity, used to detect changes between runs. |
isRepost | boolean | Whether this lot was already seen in an earlier run. |
originalPublishDate | string | Bidding start time recorded the first time this lot was seen. |
originalUrl | string | Address the lot carried when first seen. |
changeStatus | string | NEW, SEEN or UPDATED relative to earlier runs. |
With fetchDetails: true
| Field | Type | Description |
|---|---|---|
descriptionHtml | string | Seller's description as published. Catawiki stores descriptions as plain text, so this is normally null and descriptionText carries the content. |
descriptionText | string | Seller's description as plain text. |
descriptionMarkdown | string | Seller's description converted to Markdown. |
summary | string | Catawiki's own one-paragraph summary of the lot. |
currentBid | number | Highest bid so far, converted to the currency you selected. |
currentBidCurrency | string | Currency of currentBid. |
currentBidEur | number | The same bid in euros, always present regardless of the currency you selected. |
minimumNextBid | number | Smallest bid that would currently be accepted. |
startingBid | number | Opening bid set for the lot. |
bidCount | integer | Total bids placed on the lot over its whole run, not just the bids listed in bidHistory. |
lastBidAt | string | ISO timestamp of the most recent bid. |
estimateMin | number | Low end of the expert's estimate (null when no estimate was published). |
estimateMax | number | High end of the expert's estimate (null when no estimate was published). |
estimateCurrency | string | Currency the estimate is expressed in. |
biddingEndTime | string | ISO timestamp at which bidding closes. |
biddingEndDate | string | Closing date in the Amsterdam time zone, YYYY-MM-DD. |
isOpen | boolean | Whether the lot is currently open for bidding. |
isClosed | boolean | Whether bidding has closed. |
isSold | boolean | Whether the lot sold. |
reservePriceMet | boolean | Whether the reserve has been met (null on no-reserve lots). |
highInterest | boolean | Catawiki's flag for lots attracting unusual attention. |
categoryId | integer | Identifier of the lot's own category. |
categoryUrl | string | Address of that category page. |
categoryLevel | integer | Depth of that category in the tree. |
categoryL0Id | integer | Top-level category identifier, such as Watches, Pens & Lighters. |
categoryL0Name | string | Top-level category name. |
categoryL1Id | integer | Second-level category identifier. |
categoryL1Name | string | Second-level category name. |
categoryL2Id | integer | Third-level category identifier. |
categoryL2Name | string | Third-level category name. |
auctionTitle | string | Title of the auction the lot sits in. |
auctionUrl | string | Address of the auction page. |
auctionStatus | string | Auction state, such as open_now. |
auctionStartAt | string | ISO timestamp the auction opened. |
auctionCloseAt | string | ISO timestamp the auction closes. |
auctionLotCount | integer | Number of lots in the auction. |
auctionIsThemed | boolean | Whether this is a themed sale rather than a regular one. |
expertName | string | Catawiki specialist who curated the auction. |
expertUrl | string | Address of that specialist's public profile. |
sellerName | string | Seller's public shop name. |
sellerUrl | string | Address of the seller's public profile. |
sellerCountry | string | Country the seller ships from. |
sellerCountryCode | string | Two-letter country code for the same. |
sellerIsPro | boolean | Whether the seller holds professional status. |
sellerIsTop | boolean | Whether Catawiki marks the seller as a top seller. |
sellerMemberSince | string | ISO timestamp the seller joined Catawiki. |
sellerObjectsSold | integer | Lots the seller has sold to date. |
sellerLotsInAuction | integer | Lots the seller currently has in this auction. |
sellerScore | integer | Seller's overall feedback score as a percentage. |
sellerPositiveCount | integer | Positive feedback entries. |
sellerNeutralCount | integer | Neutral feedback entries. |
sellerNegativeCount | integer | Negative feedback entries. |
sellerFeedbackCount | integer | Total feedback entries over the seller's lifetime. |
sellerBadges | array | Badge titles awarded to the seller, such as Verified. |
specifications | array | Item attributes as { name, value } pairs. |
specs | object | The same attributes as a keyed object, for direct lookup. |
images | array | Every full-size image in the lot gallery. |
imageCount | integer | Number of images in the gallery. |
ageCheckRequired | boolean | Whether the lot requires age verification to bid. |
hasExplicitContent | boolean | Whether the lot page carries an explicit-content warning. |
bidHistory | array | Individual bids, newest first. Fields below. |
bidHistory[].amount | number | Bid amount. |
bidHistory[].currency | string | Currency of the bid amount. |
bidHistory[].placedAt | string | ISO timestamp the bid was placed. |
bidHistory[].bidderCountryCode | string | Two-letter country code of the bidder. |
bidHistory[].bidderTotalBids | integer | Bids that bidder has placed on Catawiki in total. |
bidHistory[].isAutobid | boolean | Whether the bid was placed automatically. |
Bidders are not identified. Catawiki publishes bids anonymously and this actor records only the country and lifetime bid count.
Example record
{"id": 106613983,"lotId": 106613983,"url": "https://www.catawiki.com/en/l/106613983-rolex-oysterdate-precision-no-reserve-price-6425-men-1960","slug": "106613983-rolex-oysterdate-precision-no-reserve-price-6425-men-1960","title": "Rolex - Oysterdate Precision - No reserve price - 6425 - Men - 1960","subtitle": "Manual winding - Steel","auctionId": 1263236,"reservePriceSet": false,"hasFreeShipping": false,"buyNowPrice": null,"buyNowCurrency": null,"favoriteCount": 112,"isContentExplicit": false,"biddingStartTime": "2026-09-11T10:00:00.000Z","imageUrl": "https://assets.catawiki.nl/assets/2026/9/4/0/d/4/0d47cb61-3cdb-4f1e-ab3f-5b7ccd2bcc9b.jpg","thumbnailImageUrl": "https://assets.catawiki.nl/assets/2026/9/4/0/d/4/thumb2_0d47cb61-3cdb-4f1e-ab3f-5b7ccd2bcc9b.jpg","sellerId": 1273747,"sellerShopName": "balmes70","source": "catawiki.com","sourceUrl": null,"sourceType": "search","locale": "en","scrapedAt": "2026-09-14T14:33:39.000Z","scrapedDate": "2026-09-14","contentHash": "4f2a8c1d93b7e560","summary": "A 1960 Rolex Oysterdate Precision reference 6425 in steel with a silver dial, manual winding, 34 mm case, offered with its original box and a three-year service warranty.","descriptionText": "Exclusive Rolex Oysterdate Precision. Ref 6425. Silver dial. Like New, serviced Official Serviced. Brand Rolex. Model Oysterdate Precision...","descriptionHtml": null,"descriptionMarkdown": "Exclusive Rolex Oysterdate Precision. Ref 6425. Silver dial...","currentBid": 1625,"currentBidCurrency": "EUR","currentBidEur": 1625,"minimumNextBid": 1725,"startingBid": 1725,"bidCount": 10,"lastBidAt": "2026-09-14T13:16:24.000Z","estimateMin": 2600,"estimateMax": 2900,"estimateCurrency": "EUR","biddingEndTime": "2026-09-20T18:32:32.000Z","biddingEndDate": "2026-09-20","isOpen": true,"isClosed": false,"isSold": false,"reservePriceMet": null,"highInterest": true,"categoryId": 343,"categoryUrl": "https://www.catawiki.com/en/c/343-rolex-watches","categoryLevel": 2,"categoryL0Id": 299,"categoryL0Name": "Watches, Pens & Lighters","categoryL1Id": 333,"categoryL1Name": "Watches","categoryL2Id": 343,"categoryL2Name": "Rolex Watches","auctionTitle": "Rolex Watches Auction · No Reserve","auctionUrl": "https://www.catawiki.com/en/a/1263236-rolex-watches-auction-no-reserve","auctionStatus": "open_now","auctionStartAt": "2026-09-11T10:00:00.000Z","auctionCloseAt": "2026-09-20T18:00:00.000Z","auctionLotCount": 40,"auctionIsThemed": true,"expertName": "Mauro Atienza","expertUrl": "https://www.catawiki.com/en/e/607-mauro-atienza","sellerName": "balmes70","sellerUrl": "https://www.catawiki.com/en/u/1273747-balmes70","sellerCountry": "Spain","sellerCountryCode": "ES","sellerIsPro": true,"sellerIsTop": true,"sellerMemberSince": "2015-11-06T16:01:30.000Z","sellerObjectsSold": 13980,"sellerLotsInAuction": 10,"sellerScore": 100,"sellerPositiveCount": 126,"sellerNeutralCount": 14,"sellerNegativeCount": 0,"sellerFeedbackCount": 5791,"sellerBadges": ["Verified"],"specifications": [{ "name": "Brand", "value": "Rolex" },{ "name": "Model", "value": "Oysterdate Precision" },{ "name": "Gender", "value": "Men" },{ "name": "Case material", "value": "Steel" },{ "name": "Condition", "value": "Like New" }],"specs": {"Brand": "Rolex","Model": "Oysterdate Precision","Gender": "Men","Case material": "Steel","Condition": "Like New"},"images": ["https://assets.catawiki.nl/assets/2026/9/4/0/d/4/0d47cb61-3cdb-4f1e-ab3f-5b7ccd2bcc9b.jpg","https://assets.catawiki.nl/assets/2026/9/4/a/9/a/a9a99db3-c890-4c10-bbb7-bf5dbbb208c5.jpg"],"imageCount": 11,"ageCheckRequired": false,"hasExplicitContent": false,"bidHistory": [{"amount": 1625,"currency": "EUR","placedAt": "2026-09-14T13:16:24.000Z","bidderCountryCode": "it","bidderTotalBids": 441,"isAutobid": false},{"amount": 1525,"currency": "EUR","placedAt": "2026-09-14T07:02:53.000Z","bidderCountryCode": "it","bidderTotalBids": 603,"isAutobid": false}],"isRepost": false,"originalPublishDate": null,"originalUrl": null,"changeStatus": "NEW"}
Examples
Search for Rolex watches across all open auctions:
{"searchQuery": "rolex","maxResults": 250,"currency": "EUR"}
No-reserve lots from Dutch sellers in the watches category:
{"startUrls": [{ "url": "https://www.catawiki.com/en/c/333-watches" }],"filters": "reserve_price[]=0&seller_location[]=nl","maxResults": 500}
Take an entire auction in one pass, on the Dutch storefront:
{"startUrls": [{ "url": "https://www.catawiki.com/nl/a/1263236-rolex-watches-auction-no-reserve" }],"locale": "nl","maxResults": 0}
Daily feed of newly listed lots closing within a day:
{"searchQuery": "art deco","filters": "bidding_end_days[]=1","skipReposts": true,"maxResults": 200}
💰 Pricing
$0.79 per 1,000 results — you only pay for successfully retrieved lots. Failed retries and filtered reposts are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.08 |
| 1,000 | ~$0.79 |
| 10,000 | ~$7.90 |
| 100,000 | ~$79.00 |
Flat-rate alternatives typically charge $29–$49/month regardless of usage.
Subscription tiers lower the rate further, down to $0.77 per 1,000 at the highest tier. Use the Max results cap in the input to control your spend exactly.
Performance
| Run size | Typical time |
|---|---|
| 100 lots | under 1 minute |
| 1,000 lots | 4–7 minutes |
| 10,000 lots | 40–70 minutes |
Turning off Fetch full lot details is roughly ten times faster, at the cost of bids, estimates, seller data and specifications.
Known limitations
- Catawiki does not publish a sort order that survives to the data layer, so results arrive in the site's own default order. Use
filtersto narrow a result set rather than sorting it. - Descriptions are written by sellers and vary in depth from a single line to several paragraphs.
- Expert estimates are absent on a minority of lots, mostly in lower-value categories.
- Closed auctions drop out of search after a period. Scrape an auction while it is open, or on the day it closes, to capture final bids.
- Which specifications exist depends entirely on the category — a watch carries case diameter and movement, a painting carries technique and signature.
Technical details
- Source: catawiki.com — curated online auctions across art, watches, jewellery, coins, comics, wine, cars and collectibles
- Coverage: all public categories and auctions, in six storefront languages
- Repost storage: KeyValueStore
catawiki-scraper-lot-dedup, 90-day TTL - Retry: automatic retry on network errors with exponential backoff, three attempts per request
Rate this actor
If this scraper does its job, a short review on the Reviews tab helps other users find it. Something not working? Open an issue on the Issues tab instead — issues get fixed.
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl