Connectors: whisky/wine/art auctions and marketplaces (7 sources, agent O)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
41 changed files +9,268 −0
added
connectors/api/idealwine/_smoke.ts
+19 −0
@@ -0,0 +1,19 @@ | ||
| 1 | +import { createRouter, createCrawlContext, ConnectorMetaSchema } from '@rareindex/connectors'; | |
| 2 | +import { saveFixture } from '@rareindex/connectors/testing'; | |
| 3 | +import metaJson from './meta.json' with { type: 'json' }; | |
| 4 | +import createConnector from './index.js'; | |
| 5 | + | |
| 6 | +const save = process.argv.includes('--save'); | |
| 7 | +const meta = ConnectorMetaSchema.parse(metaJson); | |
| 8 | +const connector = createConnector(meta); | |
| 9 | +const router = createRouter({ firecrawlApiKey: process.env.FIRECRAWL_API_KEY, scrapflyApiKey: process.env.SCRAPFLY_API_KEY }); | |
| 10 | +const ctx = createCrawlContext({ router, meta, options: { mode: 'probe', limit: 2 } }); | |
| 11 | +let i = 0; | |
| 12 | +for await (const raw of connector.crawl(ctx)) { | |
| 13 | + const out = await connector.normalize({ ...raw, externalId: raw.externalId ?? null, fetchedAt: raw.fetchedAt ?? new Date() }); | |
| 14 | + console.log(`raw ${raw.externalId} (${raw.engine}) → ${out.length} records (${out.filter((r) => r.kind === 'price_observation').length} observations)`); | |
| 15 | + for (const r of out.filter((r) => r.kind === 'price_observation').slice(0, 3)) console.log(' ', JSON.stringify(r).slice(0, 420)); | |
| 16 | + if (save && i < 2) saveFixture(meta.id, i === 0 ? 'bordeaux-page-1' : 'bordeaux-page-2', { raw: { url: raw.url, externalId: raw.externalId ?? null, kind: raw.kind, engine: raw.engine, fetchedAt: raw.fetchedAt ?? new Date(), payload: raw.payload }, expect: { minCount: 40, kinds: ['catalog_item', 'price_observation'], requiredFields: ['attributes.name'] }, note: 'Captured live from idealwine.com /en/cote/bordeaux (plain HTTPS)' }); | |
| 17 | + i++; | |
| 18 | +} | |
| 19 | +console.log('engineStats', ctx.engineStats, 'anomalies', ctx.anomalies); | |
added
connectors/api/idealwine/index.test.ts
+43 −0
@@ -0,0 +1,43 @@ | ||
| 1 | +import { describe, expect, it } from 'vitest'; | |
| 2 | +import { ConnectorMetaSchema } from '@rareindex/connectors'; | |
| 3 | +import { loadFixture, runFixtureSuite } from '@rareindex/connectors/testing'; | |
| 4 | +import metaJson from './meta.json' with { type: 'json' }; | |
| 5 | +import createConnector, { parseCotePage, producerFromSlug } from './index.js'; | |
| 6 | + | |
| 7 | +const connector = createConnector(ConnectorMetaSchema.parse(metaJson)); | |
| 8 | + | |
| 9 | +describe('idealwine', () => { | |
| 10 | + runFixtureSuite(connector, it, expect); | |
| 11 | + | |
| 12 | + it('emits a catalog item + EUR guide_value observation per wine vintage', async () => { | |
| 13 | + const fx = loadFixture('idealwine', 'bordeaux-page-1'); | |
| 14 | + const out = await connector.normalize(fx.raw); | |
| 15 | + const obs = out.filter((r) => r.kind === 'price_observation'); | |
| 16 | + const items = out.filter((r) => r.kind === 'catalog_item'); | |
| 17 | + expect(obs.length).toBe(items.length); | |
| 18 | + expect(obs.length).toBeGreaterThan(20); | |
| 19 | + for (const r of obs) { | |
| 20 | + if (r.kind !== 'price_observation') continue; | |
| 21 | + expect(r.currency).toBe('EUR'); | |
| 22 | + expect(r.priceKind).toBe('guide_value'); | |
| 23 | + expect(r.price).toBeGreaterThan(0); | |
| 24 | + expect(r.attributes.categorySlug).toBe('wine'); | |
| 25 | + expect(r.attributes.set).toBeTruthy(); | |
| 26 | + expect(r.attributes.identifiers.idealwine_ref).toMatch(/^\d+-/); | |
| 27 | + expect(r.sourceUrl).toMatch(/^https:\/\/www\.idealwine\.com\/en\/wine-prices\//); | |
| 28 | + } | |
| 29 | + }); | |
| 30 | + | |
| 31 | + it('parses cards and producer slugs', () => { | |
| 32 | + const html = `<div class="cote_gridItem___dC3b"><div class="cote_breadCrumpRegion__xzjeq">Bordeaux<!-- --> > Pessac-Léognan</div><div class="cote_nameWine__v1UwE">Abeille de Fieuzal<!-- --> <span class="cote_colorDisplay__VWf8N">(<!-- -->Red<!-- -->)</span></div><img src="https://www.idealwine.com/media/x.jpg"/><div class="VintageRatingsCards_container__m_TZj"><a href="/en/wine-prices/120055-2021-Bottle-Bordeaux-Pessac-Leognan-Chateau-de-Fieuzal-red"><div class="VintageRatingsCards_cote__H0Z2A">2021<!-- --> <span><span class="Price_units__UHpM6">€<!-- -->13</span></span></div></a><a href="/en/wine-prices/120055-2020-Bottle-Bordeaux-Pessac-Leognan-Chateau-de-Fieuzal-red"><div class="VintageRatingsCards_cote__H0Z2A">2020 <span><span>€1,250</span></span></div></a></div></div><a href="/en/cote/bordeaux?page=58">58</a>`; | |
| 33 | + const p = parseCotePage(html, 'u', 'bordeaux', 1); | |
| 34 | + expect(p.totalPages).toBe(58); | |
| 35 | + expect(p.wines).toHaveLength(1); | |
| 36 | + expect(p.wines[0]).toMatchObject({ wineId: '120055', name: 'Abeille de Fieuzal', color: 'Red', region: 'Bordeaux', appellation: 'Pessac-Léognan' }); | |
| 37 | + expect(p.wines[0]!.vintages).toEqual([ | |
| 38 | + { vintage: 2021, priceEur: 13, url: 'https://www.idealwine.com/en/wine-prices/120055-2021-Bottle-Bordeaux-Pessac-Leognan-Chateau-de-Fieuzal-red', ref: '120055-2021' }, | |
| 39 | + { vintage: 2020, priceEur: 1250, url: 'https://www.idealwine.com/en/wine-prices/120055-2020-Bottle-Bordeaux-Pessac-Leognan-Chateau-de-Fieuzal-red', ref: '120055-2020' }, | |
| 40 | + ]); | |
| 41 | + expect(producerFromSlug('Bordeaux-Pessac-Leognan-Chateau-de-Fieuzal-red')).toBe('Bordeaux Pessac Leognan Chateau de Fieuzal'); | |
| 42 | + }); | |
| 43 | +}); | |
added
connectors/api/idealwine/index.ts
+149 −0
@@ -0,0 +1,149 @@ | ||
| 1 | +import { z } from 'zod'; | |
| 2 | +import { BaseConnector, html as H, type ConnectorMeta, type CrawlContext, type RawRecordInput, type RawRecordLike } from '@rareindex/connectors'; | |
| 3 | +import { AssetAttributesSchema, NormalizedCatalogItemSchema, NormalizedPriceObservationSchema, parsePrice, type NormalizedRecord } from '@rareindex/shared'; | |
| 4 | + | |
| 5 | +/** | |
| 6 | + * iDealwine "cote" (Price Estimate) pages — per-vintage auction-derived reference prices for | |
| 7 | + * French and Italian wines. One raw record per index page; normalise → one catalog_item per | |
| 8 | + * wine-vintage plus one guide_value observation (EUR / bottle). | |
| 9 | + */ | |
| 10 | + | |
| 11 | +const BASE = 'https://www.idealwine.com'; | |
| 12 | +const PARSER_VERSION = '1.0.0'; | |
| 13 | + | |
| 14 | +export const VintageSchema = z.object({ vintage: z.number().nullable(), priceEur: z.number(), url: z.string(), ref: z.string() }); | |
| 15 | +export const WineSchema = z.object({ wineId: z.string(), name: z.string(), color: z.string().nullable(), region: z.string().nullable(), appellation: z.string().nullable(), producerSlug: z.string().nullable(), image: z.string().nullable(), vintages: z.array(VintageSchema) }); | |
| 16 | +export const PagePayloadSchema = z.object({ kind: z.literal('cote_page'), url: z.string(), region: z.string(), page: z.number(), totalPages: z.number().nullable(), wines: z.array(WineSchema) }); | |
| 17 | +export type PagePayload = z.infer<typeof PagePayloadSchema>; | |
| 18 | + | |
| 19 | +/** Parse a /en/cote/<region> page (cards with per-vintage estimates). */ | |
| 20 | +export function parseCotePage(htmlText: string, url: string, region: string, page: number): PagePayload { | |
| 21 | + const $ = H.load(htmlText); | |
| 22 | + const wines: z.infer<typeof WineSchema>[] = []; | |
| 23 | + const pages = [...htmlText.matchAll(/\/en\/cote\/[a-z-]+\?page=(\d+)/g)].map((m) => Number(m[1])); | |
| 24 | + const totalPages = pages.length ? Math.max(...pages) : null; | |
| 25 | + $('[class*="cote_gridItem"]').each((_, el) => { | |
| 26 | + const $el = $(el); | |
| 27 | + const crumb = H.text($el.find('[class*="cote_breadCrumpRegion"]')) ?? ''; | |
| 28 | + const [reg, app] = crumb.split('>').map((s) => s.trim()); | |
| 29 | + const nameEl = $el.find('[class*="cote_nameWine"]').first(); | |
| 30 | + const color = H.text(nameEl.find('[class*="cote_colorDisplay"]'))?.replace(/[()]/g, '').trim() ?? null; | |
| 31 | + nameEl.find('[class*="cote_colorDisplay"]').remove(); | |
| 32 | + const name = H.text(nameEl); | |
| 33 | + const image = $el.find('img').attr('src') ?? null; | |
| 34 | + const vintages: z.infer<typeof VintageSchema>[] = []; | |
| 35 | + let wineId: string | null = null; | |
| 36 | + let producerSlug: string | null = null; | |
| 37 | + $el.find('a[href*="/en/wine-prices/"]').each((__, a) => { | |
| 38 | + const href = $(a).attr('href') ?? ''; | |
| 39 | + const m = href.match(/\/en\/wine-prices\/(\d+)-(\d{4}|NV|[^-]+)-Bottle-(.+)$/i); | |
| 40 | + const id = href.match(/\/en\/wine-prices\/(\d+)-/)?.[1] ?? null; | |
| 41 | + const vTxt = H.text($(a).find('[class*="VintageRatingsCards_cote"]')) ?? ''; | |
| 42 | + const vintage = vTxt.match(/^(\d{4})/)?.[1] ?? null; | |
| 43 | + const priceTxt = vTxt.match(/€\s*[\d\s.,]+/)?.[0] ?? null; | |
| 44 | + const price = priceTxt ? parsePrice(priceTxt.replace(/\s/g, ''), 'EUR')?.amount ?? null : null; | |
| 45 | + if (!id || !price) return; | |
| 46 | + wineId ??= id; | |
| 47 | + if (!producerSlug && m?.[3]) producerSlug = m[3]!; | |
| 48 | + vintages.push({ vintage: vintage ? Number(vintage) : null, priceEur: price, url: BASE + href, ref: href.replace(/^\/en\/wine-prices\//, '').split('-Bottle-')[0]! }); | |
| 49 | + }); | |
| 50 | + if (!name || !wineId || vintages.length === 0) return; | |
| 51 | + wines.push({ wineId, name, color, region: reg ?? null, appellation: app ?? null, producerSlug, image: image && !image.includes('_no_picture') ? (image.startsWith('http') ? image : BASE + image) : null, vintages }); | |
| 52 | + }); | |
| 53 | + return { kind: 'cote_page', url, region, page, totalPages, wines }; | |
| 54 | +} | |
| 55 | + | |
| 56 | +/** "Chateau-de-Fieuzal-red" → "Château de Fieuzal" is not recoverable exactly; keep a readable producer label without guessing accents. */ | |
| 57 | +export function producerFromSlug(slug: string | null): string | null { | |
| 58 | + if (!slug) return null; | |
| 59 | + const s = slug.replace(/-(red|white|rose|sparkling|sweet)$/i, '').replace(/^(Second-Wine-|Cru-bourgeois-)/i, ''); | |
| 60 | + const label = s.replace(/-/g, ' ').trim(); | |
| 61 | + return label || null; | |
| 62 | +} | |
| 63 | + | |
| 64 | +export class IdealwineConnector extends BaseConnector { | |
| 65 | + readonly version = '1.0.0'; | |
| 66 | + readonly parserVersion = PARSER_VERSION; | |
| 67 | + protected override minIntervalMs = 2000; | |
| 68 | + | |
| 69 | + async *crawl(ctx: CrawlContext): AsyncIterable<RawRecordInput> { | |
| 70 | + const regions = z.array(z.string()).parse(this.meta.config.regions ?? ['bordeaux']); | |
| 71 | + const pages = Number(this.meta.config.pagesPerRegion ?? 3); | |
| 72 | + const cursor = (ctx.options.cursor ?? {}) as { next?: Record<string, number> }; | |
| 73 | + const next: Record<string, number> = { ...(cursor.next ?? {}) }; | |
| 74 | + let count = 0; | |
| 75 | + for (const region of regions) { | |
| 76 | + const start = ctx.options.mode === 'backfill' ? (next[region] ?? 1) : 1; | |
| 77 | + for (let page = start; page < start + pages; page++) { | |
| 78 | + if (ctx.signal?.aborted || this.reached(ctx, count)) return void (await ctx.setCursor({ next })); | |
| 79 | + const url = `${BASE}/en/cote/${region}${page > 1 ? `?page=${page}` : ''}`; | |
| 80 | + await this.throttle(); | |
| 81 | + const res = await ctx.fetch(url, { | |
| 82 | + engines: ['api'], | |
| 83 | + responseType: 'text', | |
| 84 | + expect: ['title', 'price', 'currency'], | |
| 85 | + parse: (r) => { | |
| 86 | + const p = r.html ? parseCotePage(r.html, url, region, page) : null; | |
| 87 | + const w = p?.wines[0]; | |
| 88 | + return w ? { title: w.name, price: w.vintages[0]?.priceEur ?? null, currency: 'EUR' } : null; | |
| 89 | + }, | |
| 90 | + }); | |
| 91 | + const payload = res.success && res.html ? parseCotePage(res.html, url, region, page) : null; | |
| 92 | + if (!payload || payload.wines.length === 0) { | |
| 93 | + ctx.anomaly(payload ? 'empty_page' : 'page_fetch_failed', `${url}: ${res.error ?? res.httpStatus}`); | |
| 94 | + next[region] = 1; | |
| 95 | + break; | |
| 96 | + } | |
| 97 | + count++; | |
| 98 | + yield { url, externalId: `cote:${region}:${page}`, kind: 'price_observation', engine: res.engine, httpStatus: res.httpStatus, payload, fetchedAt: res.fetchedAt }; | |
| 99 | + next[region] = payload.totalPages && page >= payload.totalPages ? 1 : page + 1; | |
| 100 | + } | |
| 101 | + } | |
| 102 | + await ctx.setCursor({ next }); | |
| 103 | + } | |
| 104 | + | |
| 105 | + async normalize(raw: RawRecordLike): Promise<NormalizedRecord[]> { | |
| 106 | + const p = PagePayloadSchema.parse(raw.payload); | |
| 107 | + const out: NormalizedRecord[] = []; | |
| 108 | + const observationDate = new Date(Date.UTC(raw.fetchedAt.getUTCFullYear(), raw.fetchedAt.getUTCMonth(), raw.fetchedAt.getUTCDate())); | |
| 109 | + for (const w of p.wines) { | |
| 110 | + for (const v of w.vintages) { | |
| 111 | + const attributes = AssetAttributesSchema.parse({ | |
| 112 | + categorySlug: 'wine', | |
| 113 | + brand: producerFromSlug(w.producerSlug), | |
| 114 | + series: w.region, | |
| 115 | + set: w.appellation, | |
| 116 | + name: w.name, | |
| 117 | + year: v.vintage, | |
| 118 | + color: w.color, | |
| 119 | + size: '75cl', | |
| 120 | + country: /italie|italy/i.test(p.region) ? 'IT' : 'FR', | |
| 121 | + identifiers: { idealwine_wine_id: w.wineId, idealwine_ref: v.ref }, | |
| 122 | + metadata: { region_page: p.region }, | |
| 123 | + }); | |
| 124 | + const base = { | |
| 125 | + connectorId: this.meta.id, | |
| 126 | + sourceId: this.meta.sourceId, | |
| 127 | + sourceUrl: v.url, | |
| 128 | + externalId: v.ref, | |
| 129 | + rawTitle: `${w.name}${v.vintage ? ` ${v.vintage}` : ''}${w.appellation ? ` · ${w.appellation}` : ''}${w.color ? ` (${w.color})` : ''}`, | |
| 130 | + description: null, | |
| 131 | + imageUrls: w.image ? [w.image] : [], | |
| 132 | + attributes, | |
| 133 | + grade: { grader: null, grade: null, qualifier: null, certificationNumber: null }, | |
| 134 | + condition: { condition: null, conditionRaw: null, completeness: null }, | |
| 135 | + observedAt: raw.fetchedAt, | |
| 136 | + confidence: 0.75, | |
| 137 | + parserVersion: PARSER_VERSION, | |
| 138 | + }; | |
| 139 | + out.push(NormalizedCatalogItemSchema.parse({ kind: 'catalog_item', ...base, releaseDate: null })); | |
| 140 | + out.push(NormalizedPriceObservationSchema.parse({ kind: 'price_observation', ...base, priceKind: 'guide_value', price: v.priceEur, currency: 'EUR', observationDate, sampleSize: null })); | |
| 141 | + } | |
| 142 | + } | |
| 143 | + return out; | |
| 144 | + } | |
| 145 | +} | |
| 146 | + | |
| 147 | +export default function createConnector(meta: ConnectorMeta) { | |
| 148 | + return new IdealwineConnector(meta); | |
| 149 | +} | |
added
connectors/api/idealwine/meta.json
+33 −0
@@ -0,0 +1,33 @@ | ||
| 1 | +{ | |
| 2 | + "id": "idealwine", | |
| 3 | + "displayName": "iDealwine Price Estimate (wine price index)", | |
| 4 | + "sourceId": "idealwine", | |
| 5 | + "sourceName": "iDealwine", | |
| 6 | + "sourceType": "pricing_guide", | |
| 7 | + "sourceUrl": "https://www.idealwine.com", | |
| 8 | + "module": "api/idealwine", | |
| 9 | + "enginePriority": ["api", "firecrawl", "scrapfly"], | |
| 10 | + "categories": ["wine"], | |
| 11 | + "regions": ["FR", "EU"], | |
| 12 | + "languages": ["en", "fr"], | |
| 13 | + "currency": ["EUR"], | |
| 14 | + "supportsListings": false, | |
| 15 | + "supportsSold": false, | |
| 16 | + "supportsAuctions": false, | |
| 17 | + "supportsImages": true, | |
| 18 | + "supportsCatalog": true, | |
| 19 | + "supportsPopulation": false, | |
| 20 | + "supportsLookup": false, | |
| 21 | + "refreshFrequencyMinutes": 10080, | |
| 22 | + "priority": "medium", | |
| 23 | + "trustScore": 0.85, | |
| 24 | + "attributionRequired": true, | |
| 25 | + "termsUrl": "https://www.idealwine.com/en/cgv", | |
| 26 | + "accessNotes": "Public price-index pages (/en/cote/<region>?page=N) of iDealwine, the leading French wine auction house: each card lists a wine (region > appellation, colour, producer picture) with the iDealwine Price Estimate per vintage in EUR per 75 cl bottle. The estimate is computed by iDealwine from auction results (hammer price INCLUDING buyer's premium, updated weekly from 3M+ French auction prices since 1992) — we store it as a guide_value price observation, never as a transaction. Plain HTTPS with the RareIndex user agent; robots.txt disallows only /api/, account and login paths. No timestamp is published per estimate, so observationDate = fetch date (confidence 0.75). 2 s politeness delay; regions and pages per run are configurable.", | |
| 27 | + "enabled": true, | |
| 28 | + "schemaVersion": "1.0", | |
| 29 | + "config": { | |
| 30 | + "regions": ["bordeaux", "bourgogne", "rhone", "champagne", "loire", "italie", "alsace", "languedoc", "provence", "jura"], | |
| 31 | + "pagesPerRegion": 3 | |
| 32 | + } | |
| 33 | +} | |
added
connectors/api/lyon-turnbull/_smoke.ts
+23 −0
@@ -0,0 +1,23 @@ | ||
| 1 | +import { createRouter, createCrawlContext, ConnectorMetaSchema } from '@rareindex/connectors'; | |
| 2 | +import { saveFixture } from '@rareindex/connectors/testing'; | |
| 3 | +import metaJson from './meta.json' with { type: 'json' }; | |
| 4 | +import createConnector from './index.js'; | |
| 5 | + | |
| 6 | +const save = process.argv.includes('--save'); | |
| 7 | +const meta = ConnectorMetaSchema.parse(metaJson); | |
| 8 | +const connector = createConnector(meta); | |
| 9 | +const router = createRouter({ firecrawlApiKey: process.env.FIRECRAWL_API_KEY, scrapflyApiKey: process.env.SCRAPFLY_API_KEY }); | |
| 10 | +const ctx = createCrawlContext({ router, meta, options: { mode: 'probe', limit: 2 } }); | |
| 11 | +let i = 0; | |
| 12 | +for await (const raw of connector.crawl(ctx)) { | |
| 13 | + const out = await connector.normalize({ ...raw, externalId: raw.externalId ?? null, fetchedAt: raw.fetchedAt ?? new Date() }); | |
| 14 | + const sales = out.filter((r) => r.kind === 'sale'); | |
| 15 | + console.log(`raw ${raw.externalId} (${raw.engine}) → ${out.length} records, ${sales.length} sales`); | |
| 16 | + for (const r of sales.slice(0, 3)) console.log(' ', JSON.stringify(r).slice(0, 420)); | |
| 17 | + if (save && i < 2) { | |
| 18 | + const p = raw.payload as { lots: unknown[] }; | |
| 19 | + saveFixture(meta.id, `auction-${raw.externalId}`, { raw: { url: raw.url, externalId: raw.externalId ?? null, kind: raw.kind, engine: raw.engine, fetchedAt: raw.fetchedAt ?? new Date(), payload: { ...(raw.payload as object), lots: p.lots.slice(0, 60) } }, expect: { minCount: 20, kinds: ['sale', 'auction_lot'], requiredFields: ['attributes.categorySlug', 'rawTitle'] }, note: 'Captured live from lyonandturnbull.com (plain HTTPS, lots trimmed to 60)' }); | |
| 20 | + } | |
| 21 | + i++; | |
| 22 | +} | |
| 23 | +console.log('engineStats', ctx.engineStats, 'anomalies', ctx.anomalies); | |
added
connectors/api/lyon-turnbull/index.test.ts
+38 −0
@@ -0,0 +1,38 @@ | ||
| 1 | +import { describe, expect, it } from 'vitest'; | |
| 2 | +import { ConnectorMetaSchema } from '@rareindex/connectors'; | |
| 3 | +import { listFixtures, loadFixture, runFixtureSuite } from '@rareindex/connectors/testing'; | |
| 4 | +import metaJson from './meta.json' with { type: 'json' }; | |
| 5 | +import createConnector, { categoryForAuction, parsePastAuctions, premiumFor } from './index.js'; | |
| 6 | + | |
| 7 | +const connector = createConnector(ConnectorMetaSchema.parse(metaJson)); | |
| 8 | + | |
| 9 | +describe('lyon-turnbull', () => { | |
| 10 | + runFixtureSuite(connector, it, expect); | |
| 11 | + | |
| 12 | + it('emits GBP hammer-price sales for sold lots and auction_lot records for unsold ones', async () => { | |
| 13 | + const name = listFixtures('lyon-turnbull')[0]!; | |
| 14 | + const fx = loadFixture('lyon-turnbull', name); | |
| 15 | + const out = await connector.normalize(fx.raw); | |
| 16 | + const sales = out.filter((r) => r.kind === 'sale'); | |
| 17 | + expect(sales.length).toBeGreaterThan(5); | |
| 18 | + for (const r of sales) { | |
| 19 | + if (r.kind !== 'sale') continue; | |
| 20 | + expect(r.currency).toBe('GBP'); | |
| 21 | + expect(r.buyerPremiumIncluded).toBe(false); | |
| 22 | + expect(r.auctionHouse).toBe('Lyon & Turnbull'); | |
| 23 | + expect(Array.isArray(r.attributes.metadata.premium_tiers)).toBe(true); | |
| 24 | + if (r.attributes.metadata.premium_estimate !== null) expect(r.attributes.metadata.premium_estimate).toBeGreaterThan(0); | |
| 25 | + expect(r.saleDate.getFullYear()).toBeGreaterThanOrEqual(2020); | |
| 26 | + } | |
| 27 | + }); | |
| 28 | + | |
| 29 | + it('helpers', () => { | |
| 30 | + const html = `<script id="__NEXT_DATA__" type="application/json">${JSON.stringify({ props: { pageProps: { auctionsListData: [{ title: 'Scotland Collected ', saleNumber: '908', date: '19 & 20 August 2026', amsDate: '2026-08-19T09:00:00.000Z', arrowLink: '/auctions/scotland-collected-908' }] } } })}</script>`; | |
| 31 | + expect(parsePastAuctions(html)).toEqual([{ saleNumber: '908', title: 'Scotland Collected', subtitle: null, date: '19 & 20 August 2026', amsDate: '2026-08-19T09:00:00.000Z', link: '/auctions/scotland-collected-908' }]); | |
| 32 | + expect(categoryForAuction('Fine Jewellery')).toBe('jewelry'); | |
| 33 | + expect(categoryForAuction('1925: Celebrating Art Deco')).toBe('design_furniture'); | |
| 34 | + expect(categoryForAuction('Rare Books, Manuscripts, Maps & Photographs')).toBe('books'); | |
| 35 | + expect(premiumFor(10000, [{ percent: 27, amount_over: 0 }, { percent: 26, amount_over: 20000 }])).toBe(2700); | |
| 36 | + expect(premiumFor(30000, [{ percent: 27, amount_over: 0 }, { percent: 26, amount_over: 20000 }])).toBe(8000); | |
| 37 | + }); | |
| 38 | +}); | |
added
connectors/api/lyon-turnbull/index.ts
+257 −0
@@ -0,0 +1,257 @@ | ||
| 1 | +import { z } from 'zod'; | |
| 2 | +import { BaseConnector, html as H, type ConnectorMeta, type CrawlContext, type RawRecordInput, type RawRecordLike } from '@rareindex/connectors'; | |
| 3 | +import { AssetAttributesSchema, NormalizedAuctionLotSchema, NormalizedSaleSchema, extractYear, type NormalizedRecord } from '@rareindex/shared'; | |
| 4 | + | |
| 5 | +/** | |
| 6 | + * Lyon & Turnbull — auction results embedded as JSON in each auction page. One raw record per | |
| 7 | + * auction (compact lot list); normalise → one sale per sold lot (hammer price, GBP) and one | |
| 8 | + * auction_lot for unsold lots. | |
| 9 | + */ | |
| 10 | + | |
| 11 | +const BASE = 'https://www.lyonandturnbull.com'; | |
| 12 | +const PARSER_VERSION = '1.0.0'; | |
| 13 | + | |
| 14 | +export const PastAuctionSchema = z.object({ saleNumber: z.string(), title: z.string(), subtitle: z.string().nullable(), date: z.string().nullable(), amsDate: z.string().nullable(), link: z.string() }); | |
| 15 | +export type PastAuction = z.infer<typeof PastAuctionSchema>; | |
| 16 | + | |
| 17 | +export const LotSchema = z.object({ | |
| 18 | + uuid: z.string(), | |
| 19 | + lotNo: z.string(), | |
| 20 | + title: z.string(), | |
| 21 | + subTitle: z.string().nullable(), | |
| 22 | + low: z.number().nullable(), | |
| 23 | + high: z.number().nullable(), | |
| 24 | + hammer: z.number().nullable(), | |
| 25 | + status: z.string().nullable(), | |
| 26 | + sessionDate: z.string().nullable(), | |
| 27 | + image: z.string().nullable(), | |
| 28 | +}); | |
| 29 | +export const AuctionPayloadSchema = z.object({ | |
| 30 | + kind: z.literal('auction_results'), | |
| 31 | + url: z.string(), | |
| 32 | + auction: PastAuctionSchema, | |
| 33 | + currency: z.string(), | |
| 34 | + status: z.string().nullable(), | |
| 35 | + premiumTiers: z.array(z.object({ percent: z.number(), amount_over: z.number() })), | |
| 36 | + lots: z.array(LotSchema), | |
| 37 | +}); | |
| 38 | +export type AuctionPayload = z.infer<typeof AuctionPayloadSchema>; | |
| 39 | + | |
| 40 | +/** Past auctions from the /auctions/past-auctions __NEXT_DATA__ (`auctionsListData`). */ | |
| 41 | +export function parsePastAuctions(htmlText: string): PastAuction[] { | |
| 42 | + const data = H.nextData(htmlText) as { props?: { pageProps?: { auctionsListData?: Array<Record<string, unknown>> } } } | null; | |
| 43 | + const list = data?.props?.pageProps?.auctionsListData ?? []; | |
| 44 | + return list | |
| 45 | + .map((a) => ({ | |
| 46 | + saleNumber: String(a.saleNumber ?? ''), | |
| 47 | + title: String(a.title ?? '').trim(), | |
| 48 | + subtitle: a.subtitle ? String(a.subtitle) : null, | |
| 49 | + date: a.date ? String(a.date) : null, | |
| 50 | + amsDate: a.amsDate ? String(a.amsDate) : null, | |
| 51 | + link: String(a.arrowLink ?? ''), | |
| 52 | + })) | |
| 53 | + .filter((a) => a.link.startsWith('/auctions/') && a.saleNumber); | |
| 54 | +} | |
| 55 | + | |
| 56 | +function num(v: unknown): number | null { | |
| 57 | + if (v === null || v === undefined || v === '') return null; | |
| 58 | + const n = Number(v); | |
| 59 | + return Number.isFinite(n) && n > 0 ? n : null; | |
| 60 | +} | |
| 61 | + | |
| 62 | +/** Extract the embedded lots JSON ("lots":[...]) plus auction status/currency/premium tiers from an auction page. */ | |
| 63 | +export function parseAuctionPage(htmlText: string, url: string, auction: PastAuction): AuctionPayload | null { | |
| 64 | + const data = H.nextData(htmlText) as Record<string, unknown> | null; | |
| 65 | + let lotsRaw: Array<Record<string, unknown>> | null = null; | |
| 66 | + let auctionRaw: Record<string, unknown> | null = null; | |
| 67 | + const visit = (o: unknown, depth: number): void => { | |
| 68 | + if (!o || typeof o !== 'object' || depth > 8 || (lotsRaw && auctionRaw)) return; | |
| 69 | + if (Array.isArray(o)) { | |
| 70 | + for (const x of o) visit(x, depth + 1); | |
| 71 | + return; | |
| 72 | + } | |
| 73 | + const rec = o as Record<string, unknown>; | |
| 74 | + if (!lotsRaw && Array.isArray(rec.lots) && rec.lots.length && typeof (rec.lots[0] as Record<string, unknown>).lot_no !== 'undefined') { | |
| 75 | + lotsRaw = rec.lots as Array<Record<string, unknown>>; | |
| 76 | + auctionRaw = rec; | |
| 77 | + } | |
| 78 | + for (const v of Object.values(rec)) visit(v, depth + 1); | |
| 79 | + }; | |
| 80 | + if (data) visit(data, 0); | |
| 81 | + if (!lotsRaw) { | |
| 82 | + // fallback: the JSON may be inlined outside __NEXT_DATA__ | |
| 83 | + const i = htmlText.indexOf('"lots":['); | |
| 84 | + if (i < 0) return null; | |
| 85 | + const literal = H.inlineJson(htmlText.slice(i - 1), '"lots"'); | |
| 86 | + if (!literal || !Array.isArray((literal as { lots?: unknown }).lots)) return null; | |
| 87 | + lotsRaw = (literal as { lots: Array<Record<string, unknown>> }).lots; | |
| 88 | + auctionRaw = literal as Record<string, unknown>; | |
| 89 | + } | |
| 90 | + const a = auctionRaw as Record<string, unknown>; | |
| 91 | + const first = lotsRaw![0]!; | |
| 92 | + // Premium tiers live on the auction object (sibling of `lots`) or on each lot's financeItem. | |
| 93 | + const tierSource = (Array.isArray(a.premiums) ? a.premiums : Array.isArray((a.auction as { premiums?: unknown } | undefined)?.premiums) ? (a.auction as { premiums: unknown[] }).premiums : Array.isArray((first.financeItem as { premium_tiers?: unknown } | undefined)?.premium_tiers) ? (first.financeItem as { premium_tiers: unknown[] }).premium_tiers : []) as Array<{ percent?: number; amount_over?: number }>; | |
| 94 | + const premiums = tierSource.map((p) => ({ percent: Number(p.percent ?? 0), amount_over: Number(p.amount_over ?? 0) })); | |
| 95 | + const currencySymbol = ((first.auction as { currency?: { symbol?: string } } | undefined)?.currency?.symbol ?? (a.currency as { symbol?: string } | undefined)?.symbol ?? '£'); | |
| 96 | + const currency = currencySymbol === '£' ? 'GBP' : currencySymbol === '€' ? 'EUR' : currencySymbol === '$' ? 'USD' : 'GBP'; | |
| 97 | + const status = typeof a.status === 'string' ? a.status : ((first.auction as { status?: string } | undefined)?.status ?? null); | |
| 98 | + const lots = lotsRaw!.map((l) => { | |
| 99 | + const title = (l.title as { en?: string } | undefined)?.en ?? (typeof l.title === 'string' ? l.title : ''); | |
| 100 | + const sub = ((l.dynamic_fields as { en?: { sub_title?: string } } | undefined)?.en?.sub_title ?? null) as string | null; | |
| 101 | + const img = (l.images as Array<{ data?: { original?: { url?: string }; sm?: { url?: string } } }> | undefined)?.[0]?.data; | |
| 102 | + return { | |
| 103 | + uuid: String(l.uuid ?? ''), | |
| 104 | + lotNo: String(l.lot_no ?? ''), | |
| 105 | + title: String(title).trim(), | |
| 106 | + subTitle: sub ? String(sub).trim() : null, | |
| 107 | + low: num(l.low), | |
| 108 | + high: num(l.high), | |
| 109 | + hammer: num(l.hammer_price) ?? num((l.financeItem as { hammer_price?: unknown } | undefined)?.hammer_price), | |
| 110 | + status: typeof l.status === 'string' ? l.status : null, | |
| 111 | + sessionDate: typeof l.session_date === 'string' ? l.session_date : null, | |
| 112 | + image: img?.original?.url ?? img?.sm?.url ?? null, | |
| 113 | + }; | |
| 114 | + }); | |
| 115 | + return { kind: 'auction_results', url, auction, currency, status, premiumTiers: premiums, lots: lots.filter((l) => l.title && l.lotNo) }; | |
| 116 | +} | |
| 117 | + | |
| 118 | +const TITLE_CATEGORY: Array<[RegExp, string]> = [ | |
| 119 | + [/jewel/i, 'jewelry'], | |
| 120 | + [/silver|objets de vertu/i, 'silver'], | |
| 121 | + [/whisky|spirits|wine/i, 'whisky'], | |
| 122 | + [/watch|clock|horolog/i, 'watches'], | |
| 123 | + [/book|manuscript|map/i, 'books'], | |
| 124 | + [/photograph/i, 'photography'], | |
| 125 | + [/contemporary|modern made|post-war|prints|editions|modern british/i, 'contemporary_art'], | |
| 126 | + [/design|art deco|art nouveau|decorative arts|furniture|form through time/i, 'design_furniture'], | |
| 127 | + [/asian|chinese|japanese|islamic|african|tribal|ceramic|porcelain|glass/i, 'antiques'], | |
| 128 | + [/scottish|paintings|pictures|old master|fine art|art/i, 'art'], | |
| 129 | +]; | |
| 130 | + | |
| 131 | +export function categoryForAuction(title: string): string { | |
| 132 | + return TITLE_CATEGORY.find(([re]) => re.test(title))?.[1] ?? 'antiques'; | |
| 133 | +} | |
| 134 | + | |
| 135 | +/** Lot-level refinements for cross-category sales (natural history, watches inside mixed auctions…). */ | |
| 136 | +const LOT_CATEGORY: Array<[RegExp, string]> = [ | |
| 137 | + [/meteorite/i, 'meteorites'], | |
| 138 | + [/fossil|ammonite|trilobite|dinosaur|mammoth|megalodon/i, 'fossils'], | |
| 139 | + [/mineral|crystal|quartz|amethyst|geode|specimen/i, 'minerals'], | |
| 140 | + [/wristwatch|pocket watch|chronograph/i, 'other_watches'], | |
| 141 | + [/rolex/i, 'rolex'], | |
| 142 | + [/patek philippe/i, 'patek_philippe'], | |
| 143 | + [/omega/i, 'omega'], | |
| 144 | +]; | |
| 145 | +export function categoryForLot(auctionCategory: string, title: string): string { | |
| 146 | + return LOT_CATEGORY.find(([re]) => re.test(title))?.[1] ?? auctionCategory; | |
| 147 | +} | |
| 148 | + | |
| 149 | +/** Buyer's premium for a hammer price from tiered percentages (each tier applies to the slice above `amount_over`). */ | |
| 150 | +export function premiumFor(hammer: number, tiers: Array<{ percent: number; amount_over: number }>): number | null { | |
| 151 | + if (!tiers.length) return null; | |
| 152 | + const sorted = [...tiers].sort((a, b) => a.amount_over - b.amount_over); | |
| 153 | + let total = 0; | |
| 154 | + for (let i = 0; i < sorted.length; i++) { | |
| 155 | + const from = sorted[i]!.amount_over; | |
| 156 | + const to = sorted[i + 1]?.amount_over ?? Infinity; | |
| 157 | + if (hammer <= from) break; | |
| 158 | + total += (Math.min(hammer, to) - from) * (sorted[i]!.percent / 100); | |
| 159 | + } | |
| 160 | + return Math.round(total * 100) / 100; | |
| 161 | +} | |
| 162 | + | |
| 163 | +export class LyonTurnbullConnector extends BaseConnector { | |
| 164 | + readonly version = '1.0.0'; | |
| 165 | + readonly parserVersion = PARSER_VERSION; | |
| 166 | + protected override minIntervalMs = 2000; | |
| 167 | + | |
| 168 | + async *crawl(ctx: CrawlContext): AsyncIterable<RawRecordInput> { | |
| 169 | + const pastUrl = String(this.meta.config.pastAuctionsUrl ?? `${BASE}/auctions/past-auctions`); | |
| 170 | + const perRun = Number(this.meta.config.auctionsPerRun ?? 3); | |
| 171 | + const cursor = (ctx.options.cursor ?? {}) as { done?: string[] }; | |
| 172 | + const done = new Set<string>(cursor.done ?? []); | |
| 173 | + const list = await ctx.fetch(pastUrl, { engines: ['api'], responseType: 'text', minQuality: 0, timeoutMs: 60_000 }); | |
| 174 | + if (!list.success || !list.html) { | |
| 175 | + ctx.anomaly('past_list_failed', list.error ?? String(list.httpStatus)); | |
| 176 | + return; | |
| 177 | + } | |
| 178 | + const auctions = parsePastAuctions(list.html).sort((a, b) => (b.amsDate ?? '').localeCompare(a.amsDate ?? '')); | |
| 179 | + let fetched = 0; | |
| 180 | + let count = 0; | |
| 181 | + for (const auction of auctions) { | |
| 182 | + if (ctx.signal?.aborted || this.reached(ctx, count) || fetched >= perRun) break; | |
| 183 | + if (done.has(auction.saleNumber) && ctx.options.mode !== 'backfill') continue; | |
| 184 | + const url = BASE + auction.link; | |
| 185 | + await this.throttle(); | |
| 186 | + fetched++; | |
| 187 | + const res = await ctx.fetch(url, { | |
| 188 | + engines: ['api'], | |
| 189 | + responseType: 'text', | |
| 190 | + timeoutMs: 60_000, | |
| 191 | + expect: ['title', 'price', 'currency', 'status'], | |
| 192 | + parse: (r) => { | |
| 193 | + const p = r.html ? parseAuctionPage(r.html, url, auction) : null; | |
| 194 | + const sold = p?.lots.find((l) => l.hammer); | |
| 195 | + return p ? { title: p.lots[0]?.title, price: sold?.hammer ?? null, currency: sold ? p.currency : null, status: p.status } : null; | |
| 196 | + }, | |
| 197 | + }); | |
| 198 | + const payload = res.success && res.html ? parseAuctionPage(res.html, url, auction) : null; | |
| 199 | + if (!payload) { | |
| 200 | + ctx.anomaly('auction_parse_failed', `${auction.saleNumber}: ${res.error ?? res.httpStatus}`); | |
| 201 | + continue; | |
| 202 | + } | |
| 203 | + if (payload.status && payload.status !== 'completed') { | |
| 204 | + // still live/published — results not final yet | |
| 205 | + continue; | |
| 206 | + } | |
| 207 | + count++; | |
| 208 | + done.add(auction.saleNumber); | |
| 209 | + await ctx.setCursor({ done: [...done].slice(-400) }); | |
| 210 | + yield { url, externalId: auction.saleNumber, kind: 'sale', engine: res.engine, httpStatus: res.httpStatus, payload, fetchedAt: res.fetchedAt }; | |
| 211 | + } | |
| 212 | + } | |
| 213 | + | |
| 214 | + async normalize(raw: RawRecordLike): Promise<NormalizedRecord[]> { | |
| 215 | + const p = AuctionPayloadSchema.parse(raw.payload); | |
| 216 | + const categorySlug = categoryForAuction(`${p.auction.title} ${p.auction.subtitle ?? ''}`); | |
| 217 | + const out: NormalizedRecord[] = []; | |
| 218 | + for (const lot of p.lots) { | |
| 219 | + const saleDateIso = lot.sessionDate ?? p.auction.amsDate; | |
| 220 | + const saleDate = saleDateIso ? new Date(saleDateIso) : null; | |
| 221 | + const lotUrl = `${BASE}${p.auction.link}/lot/${lot.lotNo}`; | |
| 222 | + const yearHint = lot.subTitle ? extractYear(lot.subTitle) : null; | |
| 223 | + const attributes = AssetAttributesSchema.parse({ | |
| 224 | + categorySlug: categoryForLot(categorySlug, `${lot.title} ${lot.subTitle ?? ''}`), | |
| 225 | + name: lot.title, | |
| 226 | + year: yearHint, | |
| 227 | + identifiers: { lt_lot_uuid: lot.uuid, lt_lot: `${p.auction.saleNumber}/${lot.lotNo}` }, | |
| 228 | + metadata: { sale_number: p.auction.saleNumber, auction_title: p.auction.title, sub_title: lot.subTitle, estimate_low: lot.low, estimate_high: lot.high, premium_tiers: p.premiumTiers, premium_estimate: lot.hammer ? premiumFor(lot.hammer, p.premiumTiers) : null }, | |
| 229 | + }); | |
| 230 | + const base = { | |
| 231 | + connectorId: this.meta.id, | |
| 232 | + sourceId: this.meta.sourceId, | |
| 233 | + sourceUrl: lotUrl, | |
| 234 | + externalId: `${p.auction.saleNumber}:${lot.lotNo}`, | |
| 235 | + rawTitle: lot.subTitle ? `${lot.title} — ${lot.subTitle}` : lot.title, | |
| 236 | + description: null, | |
| 237 | + imageUrls: lot.image ? [lot.image] : [], | |
| 238 | + attributes, | |
| 239 | + grade: { grader: null, grade: null, qualifier: null, certificationNumber: null }, | |
| 240 | + condition: { condition: null, conditionRaw: null, completeness: null }, | |
| 241 | + observedAt: raw.fetchedAt, | |
| 242 | + confidence: 0.9, | |
| 243 | + parserVersion: PARSER_VERSION, | |
| 244 | + }; | |
| 245 | + if (lot.hammer && saleDate && lot.status !== 'unsold') { | |
| 246 | + out.push(NormalizedSaleSchema.parse({ kind: 'sale', ...base, saleType: 'auction', saleDate, price: lot.hammer, currency: p.currency, buyerPremiumIncluded: false, quantity: 1, isBundle: false, location: 'United Kingdom', auctionHouse: 'Lyon & Turnbull', lotNumber: lot.lotNo })); | |
| 247 | + } else { | |
| 248 | + out.push(NormalizedAuctionLotSchema.parse({ kind: 'auction_lot', ...base, auctionHouse: 'Lyon & Turnbull', auctionName: p.auction.title, lotNumber: lot.lotNo, startsAt: saleDate, endsAt: saleDate, estimateLow: lot.low, estimateHigh: lot.high, currentBid: null, currency: p.currency, status: 'ended', location: 'United Kingdom' })); | |
| 249 | + } | |
| 250 | + } | |
| 251 | + return out; | |
| 252 | + } | |
| 253 | +} | |
| 254 | + | |
| 255 | +export default function createConnector(meta: ConnectorMeta) { | |
| 256 | + return new LyonTurnbullConnector(meta); | |
| 257 | +} | |
added
connectors/api/lyon-turnbull/meta.json
+33 −0
@@ -0,0 +1,33 @@ | ||
| 1 | +{ | |
| 2 | + "id": "lyon-turnbull", | |
| 3 | + "displayName": "Lyon & Turnbull (auction results)", | |
| 4 | + "sourceId": "lyon-turnbull", | |
| 5 | + "sourceName": "Lyon & Turnbull", | |
| 6 | + "sourceType": "auction_house", | |
| 7 | + "sourceUrl": "https://www.lyonandturnbull.com", | |
| 8 | + "module": "api/lyon-turnbull", | |
| 9 | + "enginePriority": ["api", "firecrawl", "scrapfly"], | |
| 10 | + "categories": ["art", "contemporary_art", "photography", "design_furniture", "antiques", "jewelry", "silver", "watches", "other_watches", "books", "whisky", "porcelain", "glass_crystal", "clocks", "scientific_instruments"], | |
| 11 | + "regions": ["GB"], | |
| 12 | + "languages": ["en"], | |
| 13 | + "currency": ["GBP"], | |
| 14 | + "supportsListings": false, | |
| 15 | + "supportsSold": true, | |
| 16 | + "supportsAuctions": true, | |
| 17 | + "supportsImages": true, | |
| 18 | + "supportsCatalog": false, | |
| 19 | + "supportsPopulation": false, | |
| 20 | + "supportsLookup": false, | |
| 21 | + "refreshFrequencyMinutes": 1440, | |
| 22 | + "priority": "medium", | |
| 23 | + "trustScore": 0.9, | |
| 24 | + "attributionRequired": true, | |
| 25 | + "termsUrl": "https://www.lyonandturnbull.com/auctions/buy-sell/buy", | |
| 26 | + "accessNotes": "Edinburgh/London/Glasgow auction house. Past auctions are listed in the public /auctions/past-auctions page (Next.js __NEXT_DATA__: title, sale number, date, link); each auction page embeds the full lot list as JSON (lot number, title, sub-title, estimate, hammer_price, status sold/unsold, images, buyer's premium tiers). Plain HTTPS with the RareIndex user agent; robots.txt disallows only /account, /auth, /search and collection_* paths. We store the HAMMER price (buyer_premium_included=false) and record the published premium tiers in metadata; sale date = auction session date. No login, no bidder data. 2 s politeness delay.", | |
| 27 | + "enabled": true, | |
| 28 | + "schemaVersion": "1.0", | |
| 29 | + "config": { | |
| 30 | + "pastAuctionsUrl": "https://www.lyonandturnbull.com/auctions/past-auctions", | |
| 31 | + "auctionsPerRun": 3 | |
| 32 | + } | |
| 33 | +} | |
added
connectors/api/saatchi-art/_smoke.ts
+21 −0
@@ -0,0 +1,21 @@ | ||
| 1 | +import { createRouter, createCrawlContext, ConnectorMetaSchema } from '@rareindex/connectors'; | |
| 2 | +import { saveFixture } from '@rareindex/connectors/testing'; | |
| 3 | +import metaJson from './meta.json' with { type: 'json' }; | |
| 4 | +import createConnector from './index.js'; | |
| 5 | + | |
| 6 | +const save = process.argv.includes('--save'); | |
| 7 | +const meta = ConnectorMetaSchema.parse(metaJson); | |
| 8 | +const connector = createConnector(meta); | |
| 9 | +const router = createRouter({ firecrawlApiKey: process.env.FIRECRAWL_API_KEY, scrapflyApiKey: process.env.SCRAPFLY_API_KEY }); | |
| 10 | +const ctx = createCrawlContext({ router, meta, options: { mode: 'probe', limit: 2, categories: ['contemporary_art'] } }); | |
| 11 | +let i = 0; | |
| 12 | +for await (const raw of connector.crawl(ctx)) { | |
| 13 | + const out = await connector.normalize({ ...raw, externalId: raw.externalId ?? null, fetchedAt: raw.fetchedAt ?? new Date() }); | |
| 14 | + console.log(`raw ${raw.externalId} (${raw.engine}) → ${out.length} listings`); | |
| 15 | + for (const r of out.slice(0, 3)) console.log(' ', JSON.stringify(r).slice(0, 420)); | |
| 16 | + if (save && i < 2) saveFixture(meta.id, i === 0 ? 'paintings-page-1' : 'paintings-page-2', { raw: { url: raw.url, externalId: raw.externalId ?? null, kind: raw.kind, engine: raw.engine, fetchedAt: raw.fetchedAt ?? new Date(), payload: raw.payload }, expect: { minCount: 20, kinds: ['listing'], requiredFields: ['price', 'currency', 'attributes.brand'] }, note: 'Captured live from saatchiart.com __NEXT_DATA__' }); | |
| 17 | + i++; | |
| 18 | +} | |
| 19 | +const looked = await connector.lookup('https://www.saatchiart.com/art/Painting-Octhopuses/626451/10544327/view', ctx); | |
| 20 | +console.log('lookup →', looked.length ? JSON.stringify((await connector.normalize({ ...looked[0]!, externalId: looked[0]!.externalId ?? null, fetchedAt: new Date() }))[0]).slice(0, 300) : 'none'); | |
| 21 | +console.log('engineStats', ctx.engineStats, 'anomalies', ctx.anomalies); | |
added
connectors/api/saatchi-art/index.test.ts
+34 −0
@@ -0,0 +1,34 @@ | ||
| 1 | +import { describe, expect, it } from 'vitest'; | |
| 2 | +import { ConnectorMetaSchema } from '@rareindex/connectors'; | |
| 3 | +import { loadFixture, runFixtureSuite } from '@rareindex/connectors/testing'; | |
| 4 | +import metaJson from './meta.json' with { type: 'json' }; | |
| 5 | +import createConnector, { parseBrowsePage } from './index.js'; | |
| 6 | + | |
| 7 | +const connector = createConnector(ConnectorMetaSchema.parse(metaJson)); | |
| 8 | + | |
| 9 | +describe('saatchi-art', () => { | |
| 10 | + runFixtureSuite(connector, it, expect); | |
| 11 | + | |
| 12 | + it('maps artworks to USD fixed-price listings with artist, medium and size', async () => { | |
| 13 | + const fx = loadFixture('saatchi-art', 'paintings-page-1'); | |
| 14 | + const out = await connector.normalize(fx.raw); | |
| 15 | + expect(out.length).toBe(25); | |
| 16 | + for (const r of out) { | |
| 17 | + if (r.kind !== 'listing') throw new Error('expected listing'); | |
| 18 | + expect(r.currency).toBe('USD'); | |
| 19 | + expect(r.listingType).toBe('fixed_price'); | |
| 20 | + expect(['available', 'sold', 'unknown']).toContain(r.availability); | |
| 21 | + expect(r.attributes.identifiers.saatchi_artwork_id).toMatch(/^\d+$/); | |
| 22 | + expect(r.attributes.brand).toBeTruthy(); | |
| 23 | + expect(r.sourceUrl).toMatch(/^https:\/\/www\.saatchiart\.com\/art\//); | |
| 24 | + } | |
| 25 | + }); | |
| 26 | + | |
| 27 | + it('parses __NEXT_DATA__ browse pages', () => { | |
| 28 | + const html = `<script id="__NEXT_DATA__" type="application/json">${JSON.stringify({ props: { pageProps: { initialState: { searchProvider: { serverSideData: { totalResults: 2, results: [{ artworkId: '1', artworkTitle: 'A', artworkOriginalUrl: '/art/Painting-A/1/1/view', artistFirstName: 'jane', artistLastName: 'doe', category: 'Painting', mediums: ['oil'], materials: ['canvas'], dimensions: { widthInCentimeters: 10, heightInCentimeters: 20 }, listPriceInCents: 123400, originalArtworkStatus: 'sold', imageUrl: 'https://i/x.jpg' }] } } } } } })}</script>`; | |
| 29 | + const p = parseBrowsePage(html, 'u', { path: '/paintings', category: 'contemporary_art' }, 1)!; | |
| 30 | + expect(p.totalResults).toBe(2); | |
| 31 | + expect(p.works[0]).toMatchObject({ artworkId: '1', title: 'A', listPriceCents: 123400, status: 'sold', widthCm: 10 }); | |
| 32 | + expect(parseBrowsePage('<html></html>', 'u', { path: '/x', category: 'art' }, 1)).toBeNull(); | |
| 33 | + }); | |
| 34 | +}); | |
added
connectors/api/saatchi-art/index.ts
+202 −0
@@ -0,0 +1,202 @@ | ||
| 1 | +import { z } from 'zod'; | |
| 2 | +import { BaseConnector, html as H, type ConnectorMeta, type CrawlContext, type RawRecordInput, type RawRecordLike } from '@rareindex/connectors'; | |
| 3 | +import { AssetAttributesSchema, NormalizedListingSchema, type NormalizedRecord } from '@rareindex/shared'; | |
| 4 | + | |
| 5 | +/** | |
| 6 | + * Saatchi Art — original artworks listed for sale. One raw record per browse page (25 works); | |
| 7 | + * normalise → one listing per artwork (USD list price; sold works → availability 'sold'). | |
| 8 | + */ | |
| 9 | + | |
| 10 | +const BASE = 'https://www.saatchiart.com'; | |
| 11 | +const PARSER_VERSION = '1.0.0'; | |
| 12 | + | |
| 13 | +const SeedSchema = z.object({ path: z.string(), category: z.string() }); | |
| 14 | +type Seed = z.infer<typeof SeedSchema>; | |
| 15 | + | |
| 16 | +export const WorkSchema = z.object({ | |
| 17 | + artworkId: z.string(), | |
| 18 | + url: z.string(), | |
| 19 | + title: z.string(), | |
| 20 | + artistFirstName: z.string().nullable(), | |
| 21 | + artistLastName: z.string().nullable(), | |
| 22 | + artistId: z.number().nullable(), | |
| 23 | + category: z.string().nullable(), | |
| 24 | + mediums: z.array(z.string()), | |
| 25 | + materials: z.array(z.string()), | |
| 26 | + styles: z.array(z.string()), | |
| 27 | + subject: z.string().nullable(), | |
| 28 | + widthCm: z.number().nullable(), | |
| 29 | + heightCm: z.number().nullable(), | |
| 30 | + depthCm: z.number().nullable(), | |
| 31 | + listPriceCents: z.number().nullable(), | |
| 32 | + status: z.string().nullable(), | |
| 33 | + sku: z.string().nullable(), | |
| 34 | + image: z.string().nullable(), | |
| 35 | + countryName: z.string().nullable(), | |
| 36 | + uploadedAt: z.number().nullable(), | |
| 37 | +}); | |
| 38 | +export const PagePayloadSchema = z.object({ kind: z.literal('browse_page'), url: z.string(), seed: SeedSchema, page: z.number(), totalResults: z.number().nullable(), works: z.array(WorkSchema) }); | |
| 39 | +export type PagePayload = z.infer<typeof PagePayloadSchema>; | |
| 40 | + | |
| 41 | +export function parseBrowsePage(htmlText: string, url: string, seed: Seed, page: number): PagePayload | null { | |
| 42 | + const data = H.nextData(htmlText) as { props?: { pageProps?: { initialState?: { searchProvider?: { serverSideData?: { results?: Array<Record<string, unknown>>; totalResults?: number } } } } } } | null; | |
| 43 | + const ssd = data?.props?.pageProps?.initialState?.searchProvider?.serverSideData; | |
| 44 | + if (!ssd?.results) return null; | |
| 45 | + const works = ssd.results | |
| 46 | + .map((r) => { | |
| 47 | + const dims = (r.dimensions as { widthInCentimeters?: number; heightInCentimeters?: number; depthInCentimeters?: number } | undefined) ?? {}; | |
| 48 | + const path = String(r.artworkOriginalUrl ?? ''); | |
| 49 | + return { | |
| 50 | + artworkId: String(r.artworkId ?? ''), | |
| 51 | + url: path.startsWith('http') ? path : BASE + path, | |
| 52 | + title: String(r.artworkTitle ?? '').trim(), | |
| 53 | + artistFirstName: r.artistFirstName ? String(r.artistFirstName) : null, | |
| 54 | + artistLastName: r.artistLastName ? String(r.artistLastName) : null, | |
| 55 | + artistId: typeof r.artistId === 'number' ? r.artistId : null, | |
| 56 | + category: r.category ? String(r.category) : null, | |
| 57 | + mediums: Array.isArray(r.mediums) ? (r.mediums as unknown[]).map(String) : [], | |
| 58 | + materials: Array.isArray(r.materials) ? (r.materials as unknown[]).map(String) : [], | |
| 59 | + styles: Array.isArray(r.styles) ? (r.styles as unknown[]).map(String) : [], | |
| 60 | + subject: r.subject ? String(r.subject) : null, | |
| 61 | + widthCm: typeof dims.widthInCentimeters === 'number' ? dims.widthInCentimeters : null, | |
| 62 | + heightCm: typeof dims.heightInCentimeters === 'number' ? dims.heightInCentimeters : null, | |
| 63 | + depthCm: typeof dims.depthInCentimeters === 'number' ? dims.depthInCentimeters : null, | |
| 64 | + listPriceCents: typeof r.listPriceInCents === 'number' ? r.listPriceInCents : null, | |
| 65 | + status: r.originalArtworkStatus ? String(r.originalArtworkStatus) : null, | |
| 66 | + sku: r.sku ? String(r.sku) : null, | |
| 67 | + image: r.imageUrl ? String(r.imageUrl) : null, | |
| 68 | + countryName: r.countryName ? String(r.countryName) : null, | |
| 69 | + uploadedAt: typeof r.artworkUploadedDate === 'number' ? r.artworkUploadedDate : null, | |
| 70 | + }; | |
| 71 | + }) | |
| 72 | + .filter((w) => w.artworkId && w.title); | |
| 73 | + return { kind: 'browse_page', url, seed, page, totalResults: typeof ssd.totalResults === 'number' ? ssd.totalResults : null, works }; | |
| 74 | +} | |
| 75 | + | |
| 76 | +function titleCase(s: string): string { | |
| 77 | + return s.replace(/\b\w/g, (c) => c.toUpperCase()); | |
| 78 | +} | |
| 79 | + | |
| 80 | +export class SaatchiArtConnector extends BaseConnector { | |
| 81 | + readonly version = '1.0.0'; | |
| 82 | + readonly parserVersion = PARSER_VERSION; | |
| 83 | + override readonly urlPatterns = [/saatchiart\.com\/(?:en-[a-z]+\/)?art\/[^/]+\/\d+\/\d+\/view/]; | |
| 84 | + protected override minIntervalMs = 2000; | |
| 85 | + | |
| 86 | + async *crawl(ctx: CrawlContext): AsyncIterable<RawRecordInput> { | |
| 87 | + const seeds = z.array(SeedSchema).parse(this.meta.config.seeds ?? []); | |
| 88 | + const pages = Number(this.meta.config.pagesPerSeed ?? 4); | |
| 89 | + let count = 0; | |
| 90 | + for (const seed of seeds) { | |
| 91 | + if (ctx.options.categories?.length && !ctx.options.categories.includes(seed.category)) continue; | |
| 92 | + for (let page = 1; page <= pages; page++) { | |
| 93 | + if (ctx.signal?.aborted || this.reached(ctx, count)) return; | |
| 94 | + const url = `${BASE}${seed.path}${page > 1 ? `?page=${page}` : ''}`; | |
| 95 | + await this.throttle(); | |
| 96 | + const res = await ctx.fetch(url, { | |
| 97 | + engines: ['api'], | |
| 98 | + responseType: 'text', | |
| 99 | + expect: ['title', 'price', 'currency', 'images'], | |
| 100 | + parse: (r) => { | |
| 101 | + const p = r.html ? parseBrowsePage(r.html, url, seed, page) : null; | |
| 102 | + const w = p?.works[0]; | |
| 103 | + return w ? { title: w.title, price: w.listPriceCents, currency: 'USD', images: w.image ? [w.image] : [] } : null; | |
| 104 | + }, | |
| 105 | + }); | |
| 106 | + const payload = res.success && res.html ? parseBrowsePage(res.html, url, seed, page) : null; | |
| 107 | + if (!payload || payload.works.length === 0) { | |
| 108 | + ctx.anomaly(payload ? 'empty_page' : 'page_fetch_failed', `${url}: ${res.error ?? res.httpStatus}`); | |
| 109 | + break; | |
| 110 | + } | |
| 111 | + count++; | |
| 112 | + yield { url, externalId: `browse:${seed.path}:${page}`, kind: 'listing', engine: res.engine, httpStatus: res.httpStatus, payload, fetchedAt: res.fetchedAt }; | |
| 113 | + } | |
| 114 | + } | |
| 115 | + } | |
| 116 | + | |
| 117 | + async lookup(url: string, ctx: CrawlContext): Promise<RawRecordInput[]> { | |
| 118 | + const res = await ctx.fetch(url, { engines: ['api'], responseType: 'text', minQuality: 0 }); | |
| 119 | + if (!res.success || !res.html) return []; | |
| 120 | + const data = H.nextData(res.html) as { props?: { pageProps?: { initialState?: { page?: { data?: { pdpArtwork?: Record<string, unknown>; artwork?: Record<string, unknown> } } } } } } | null; | |
| 121 | + const a = data?.props?.pageProps?.initialState?.page?.data?.pdpArtwork ?? data?.props?.pageProps?.initialState?.page?.data?.artwork; | |
| 122 | + if (!a) return []; | |
| 123 | + const dims = (a.dimensions as { widthInCentimeters?: number; heightInCentimeters?: number; depthInCentimeters?: number; width?: number; height?: number; depth?: number } | undefined) ?? {}; | |
| 124 | + const artist = (a.artist as { firstName?: string; lastName?: string; id?: number } | undefined) ?? {}; | |
| 125 | + const work: z.infer<typeof WorkSchema> = { | |
| 126 | + artworkId: String(a.artworkId ?? a.id ?? url.match(/\/(\d+)\/view/)?.[1] ?? ''), | |
| 127 | + url, | |
| 128 | + title: String(a.title ?? a.artworkTitle ?? ''), | |
| 129 | + artistFirstName: artist.firstName ?? (a.artistFirstName ? String(a.artistFirstName) : null), | |
| 130 | + artistLastName: artist.lastName ?? (a.artistLastName ? String(a.artistLastName) : null), | |
| 131 | + artistId: artist.id ?? null, | |
| 132 | + category: a.category ? String(a.category) : null, | |
| 133 | + mediums: Array.isArray(a.mediums) ? (a.mediums as unknown[]).map(String) : [], | |
| 134 | + materials: Array.isArray(a.materials) ? (a.materials as unknown[]).map(String) : [], | |
| 135 | + styles: Array.isArray(a.styles) ? (a.styles as unknown[]).map(String) : [], | |
| 136 | + subject: a.subject ? String(a.subject) : null, | |
| 137 | + widthCm: dims.widthInCentimeters ?? dims.width ?? null, | |
| 138 | + heightCm: dims.heightInCentimeters ?? dims.height ?? null, | |
| 139 | + depthCm: dims.depthInCentimeters ?? dims.depth ?? null, | |
| 140 | + listPriceCents: typeof a.listPriceInCents === 'number' ? a.listPriceInCents : typeof a.price === 'number' ? Math.round(a.price * 100) : null, | |
| 141 | + status: a.originalArtworkStatus ? String(a.originalArtworkStatus) : null, | |
| 142 | + sku: a.sku ? String(a.sku) : null, | |
| 143 | + image: a.imageUrl ? String(a.imageUrl) : null, | |
| 144 | + countryName: null, | |
| 145 | + uploadedAt: null, | |
| 146 | + }; | |
| 147 | + if (!work.artworkId || !work.title) return []; | |
| 148 | + const payload: PagePayload = { kind: 'browse_page', url, seed: { path: 'lookup', category: work.category?.toLowerCase() === 'photography' ? 'photography' : 'contemporary_art' }, page: 0, totalResults: null, works: [work] }; | |
| 149 | + return [{ url, externalId: `artwork:${work.artworkId}`, kind: 'listing', engine: res.engine, httpStatus: res.httpStatus, payload, fetchedAt: res.fetchedAt }]; | |
| 150 | + } | |
| 151 | + | |
| 152 | + async normalize(raw: RawRecordLike): Promise<NormalizedRecord[]> { | |
| 153 | + const p = PagePayloadSchema.parse(raw.payload); | |
| 154 | + const out: NormalizedRecord[] = []; | |
| 155 | + for (const w of p.works) { | |
| 156 | + const artist = [w.artistFirstName, w.artistLastName].filter(Boolean).map((s) => titleCase(String(s))).join(' ') || null; | |
| 157 | + const size = w.widthCm && w.heightCm ? `${w.widthCm} × ${w.heightCm}${w.depthCm ? ` × ${w.depthCm}` : ''} cm` : null; | |
| 158 | + const categorySlug = w.category?.toLowerCase() === 'photography' ? 'photography' : p.seed.category; | |
| 159 | + const attributes = AssetAttributesSchema.parse({ | |
| 160 | + categorySlug, | |
| 161 | + brand: artist, | |
| 162 | + name: w.title, | |
| 163 | + material: [...w.mediums, ...w.materials].join(', ') || null, | |
| 164 | + size, | |
| 165 | + country: w.countryName ? titleCase(w.countryName) : null, | |
| 166 | + identifiers: { saatchi_artwork_id: w.artworkId, ...(w.sku ? { saatchi_sku: w.sku } : {}) }, | |
| 167 | + metadata: { category: w.category, styles: w.styles, subject: w.subject, artist_id: w.artistId, uploaded_at: w.uploadedAt ? new Date(w.uploadedAt * 1000).toISOString() : null, unique_original: true }, | |
| 168 | + }); | |
| 169 | + out.push( | |
| 170 | + NormalizedListingSchema.parse({ | |
| 171 | + kind: 'listing', | |
| 172 | + connectorId: this.meta.id, | |
| 173 | + sourceId: this.meta.sourceId, | |
| 174 | + sourceUrl: w.url, | |
| 175 | + externalId: w.artworkId, | |
| 176 | + rawTitle: artist ? `${artist} — ${w.title}` : w.title, | |
| 177 | + description: null, | |
| 178 | + imageUrls: w.image ? [w.image] : [], | |
| 179 | + attributes, | |
| 180 | + grade: { grader: null, grade: null, qualifier: null, certificationNumber: null }, | |
| 181 | + condition: { condition: null, conditionRaw: null, completeness: null }, | |
| 182 | + observedAt: raw.fetchedAt, | |
| 183 | + confidence: 0.85, | |
| 184 | + parserVersion: PARSER_VERSION, | |
| 185 | + listingType: 'fixed_price', | |
| 186 | + price: w.listPriceCents !== null ? w.listPriceCents / 100 : null, | |
| 187 | + currency: w.listPriceCents !== null ? 'USD' : null, | |
| 188 | + seller: artist, | |
| 189 | + location: w.countryName ? titleCase(w.countryName) : null, | |
| 190 | + quantity: 1, | |
| 191 | + listedAt: w.uploadedAt ? new Date(w.uploadedAt * 1000) : null, | |
| 192 | + availability: w.status === 'sold' ? 'sold' : w.status === 'avail' ? 'available' : 'unknown', | |
| 193 | + }), | |
| 194 | + ); | |
| 195 | + } | |
| 196 | + return out; | |
| 197 | + } | |
| 198 | +} | |
| 199 | + | |
| 200 | +export default function createConnector(meta: ConnectorMeta) { | |
| 201 | + return new SaatchiArtConnector(meta); | |
| 202 | +} | |
added
connectors/api/saatchi-art/meta.json
+40 −0
@@ -0,0 +1,40 @@ | ||
| 1 | +{ | |
| 2 | + "id": "saatchi-art", | |
| 3 | + "displayName": "Saatchi Art (original artworks for sale)", | |
| 4 | + "sourceId": "saatchi-art", | |
| 5 | + "sourceName": "Saatchi Art", | |
| 6 | + "sourceType": "marketplace", | |
| 7 | + "sourceUrl": "https://www.saatchiart.com", | |
| 8 | + "module": "api/saatchi-art", | |
| 9 | + "enginePriority": ["api", "firecrawl", "scrapfly"], | |
| 10 | + "categories": ["art", "contemporary_art", "photography"], | |
| 11 | + "regions": ["US", "GB", "EU"], | |
| 12 | + "languages": ["en"], | |
| 13 | + "currency": ["USD"], | |
| 14 | + "supportsListings": true, | |
| 15 | + "supportsSold": false, | |
| 16 | + "supportsAuctions": false, | |
| 17 | + "supportsImages": true, | |
| 18 | + "supportsCatalog": true, | |
| 19 | + "supportsPopulation": false, | |
| 20 | + "supportsLookup": true, | |
| 21 | + "refreshFrequencyMinutes": 1440, | |
| 22 | + "priority": "medium", | |
| 23 | + "trustScore": 0.7, | |
| 24 | + "attributionRequired": true, | |
| 25 | + "termsUrl": "https://www.saatchiart.com/termsofservice", | |
| 26 | + "accessNotes": "Public category browse pages (/paintings, /photography, /sculpture, /prints … with ?page=N) served as Next.js pages whose __NEXT_DATA__ carries 25 artworks per page: title, artist, category, mediums, materials, dimensions (cm), list price (USD cents), availability status (avail/sold), SKU and image. Plain HTTPS with the RareIndex user agent. robots.txt only disallows filter/sort query parameters (?category=, ?sort= …) which we do not use — pagination via ?page= is allowed. Listing asks are NOT transactions; sold works keep their last list price as a listing marked sold (no sale date is published, so no sale record is created). 2 s politeness delay.", | |
| 27 | + "enabled": true, | |
| 28 | + "schemaVersion": "1.0", | |
| 29 | + "config": { | |
| 30 | + "seeds": [ | |
| 31 | + { "path": "/paintings", "category": "contemporary_art" }, | |
| 32 | + { "path": "/photography", "category": "photography" }, | |
| 33 | + { "path": "/sculpture", "category": "contemporary_art" }, | |
| 34 | + { "path": "/prints", "category": "contemporary_art" }, | |
| 35 | + { "path": "/drawings", "category": "contemporary_art" }, | |
| 36 | + { "path": "/collage", "category": "contemporary_art" } | |
| 37 | + ], | |
| 38 | + "pagesPerSeed": 4 | |
| 39 | + } | |
| 40 | +} | |
added
connectors/api/scotch-whisky-auctions/_smoke.ts
+19 −0
@@ -0,0 +1,19 @@ | ||
| 1 | +import { createRouter, createCrawlContext, ConnectorMetaSchema } from '@rareindex/connectors'; | |
| 2 | +import { saveFixture } from '@rareindex/connectors/testing'; | |
| 3 | +import metaJson from './meta.json' with { type: 'json' }; | |
| 4 | +import createConnector from './index.js'; | |
| 5 | + | |
| 6 | +const save = process.argv.includes('--save'); | |
| 7 | +const meta = ConnectorMetaSchema.parse(metaJson); | |
| 8 | +const connector = createConnector(meta); | |
| 9 | +const router = createRouter({ firecrawlApiKey: process.env.FIRECRAWL_API_KEY, scrapflyApiKey: process.env.SCRAPFLY_API_KEY }); | |
| 10 | +const ctx = createCrawlContext({ router, meta, options: { mode: 'probe', limit: 2 } }); | |
| 11 | +let i = 0; | |
| 12 | +for await (const raw of connector.crawl(ctx)) { | |
| 13 | + const out = await connector.normalize({ ...raw, externalId: raw.externalId ?? null, fetchedAt: raw.fetchedAt ?? new Date() }); | |
| 14 | + console.log(`raw ${raw.externalId} (${raw.engine}) → ${out.length} sales`); | |
| 15 | + for (const r of out.slice(0, 3)) console.log(' ', JSON.stringify(r).slice(0, 420)); | |
| 16 | + if (save && i < 2) saveFixture(meta.id, i === 0 ? 'auction-page-1' : 'auction-page-2', { raw: { url: raw.url, externalId: raw.externalId ?? null, kind: raw.kind, engine: raw.engine, fetchedAt: raw.fetchedAt ?? new Date(), payload: raw.payload }, expect: { minCount: 10, kinds: ['sale'], requiredFields: ['saleDate', 'price', 'currency', 'attributes.brand'] }, note: 'Captured live from scotchwhiskyauctions.com (plain HTTPS)' }); | |
| 17 | + i++; | |
| 18 | +} | |
| 19 | +console.log('engineStats', ctx.engineStats, 'anomalies', ctx.anomalies); | |
added
connectors/api/scotch-whisky-auctions/index.test.ts
+45 −0
@@ -0,0 +1,45 @@ | ||
| 1 | +import { describe, expect, it } from 'vitest'; | |
| 2 | +import { ConnectorMetaSchema } from '@rareindex/connectors'; | |
| 3 | +import { loadFixture, runFixtureSuite } from '@rareindex/connectors/testing'; | |
| 4 | +import metaJson from './meta.json' with { type: 'json' }; | |
| 5 | +import createConnector, { parseAuctionList, parseLotPage, whiskyFacts } from './index.js'; | |
| 6 | + | |
| 7 | +const connector = createConnector(ConnectorMetaSchema.parse(metaJson)); | |
| 8 | + | |
| 9 | +describe('scotch-whisky-auctions', () => { | |
| 10 | + runFixtureSuite(connector, it, expect); | |
| 11 | + | |
| 12 | + it('maps lots to GBP hammer-price auction sales dated by the auction end', async () => { | |
| 13 | + const fx = loadFixture('scotch-whisky-auctions', 'auction-page-1'); | |
| 14 | + const out = await connector.normalize(fx.raw); | |
| 15 | + expect(out.length).toBeGreaterThanOrEqual(10); | |
| 16 | + for (const r of out) { | |
| 17 | + if (r.kind !== 'sale') throw new Error('expected sale'); | |
| 18 | + expect(r.currency).toBe('GBP'); | |
| 19 | + expect(r.buyerPremiumIncluded).toBe(false); | |
| 20 | + expect(r.saleType).toBe('auction'); | |
| 21 | + expect(['whisky', 'rum', 'cognac']).toContain(r.attributes.categorySlug); | |
| 22 | + expect(r.attributes.identifiers.swa_item).toMatch(/^\d+$/); | |
| 23 | + expect(r.sourceUrl).toMatch(/^https:\/\/www\.scotchwhiskyauctions\.com\/auctions\/\d+-/); | |
| 24 | + } | |
| 25 | + }); | |
| 26 | + | |
| 27 | + it('parses list and lot pages', () => { | |
| 28 | + const list = `<a href="/auctions/230-the-181st-auction/" class="auction"><h4>The 181st Auction</h4><h5>Ended July 12, 2026</h5><h6>There are 4926 lots in this auction</h6></a><a href="/auctions/232-the-183rd-auction/" class="auction"><h4>The 183rd Auction</h4><h5>Ends September 13, 2026</h5><h6>There are 4624 lots in this auction</h6></a>`; | |
| 29 | + const auctions = parseAuctionList(list); | |
| 30 | + expect(auctions).toHaveLength(2); | |
| 31 | + expect(auctions[0]).toMatchObject({ id: '230', slug: 'the-181st-auction', ended: true, lotCount: 4926, endedOn: '2026-07-12T00:00:00.000Z' }); | |
| 32 | + expect(auctions[1]!.ended).toBe(false); | |
| 33 | + const page = `<select><option>Page 1 of 247</option></select><div id="lots"><a href="/auctions/230-the-181st-auction/885566-on-a-saw-mill/" class="lot"><div class="aucimg" style="background-image: url('https://x/img.jpg');"></div><h4>Macallan 1989 18 Year Old Gran Reserva 70cl</h4><h6>Lot no 181-02514</h6><div><p class="sold">Sold for £1,250 in July 2026</p></div></a></div>`; | |
| 34 | + const p = parseLotPage(page, 'u', auctions[0]!, 1); | |
| 35 | + expect(p.totalPages).toBe(247); | |
| 36 | + expect(p.lots[0]).toMatchObject({ itemId: '885566', lotNo: '181-02514', priceGbp: 1250, image: 'https://x/img.jpg' }); | |
| 37 | + }); | |
| 38 | + | |
| 39 | + it('extracts whisky facts without guessing', () => { | |
| 40 | + expect(whiskyFacts('Macallan 1989 18 Year Old Gran Reserva 70cl')).toMatchObject({ brand: 'Macallan', age: 18, vintage: 1989, size: '70cl', categorySlug: 'whisky' }); | |
| 41 | + expect(whiskyFacts('Springbank 10 Year Old 75cl')).toMatchObject({ brand: 'Springbank', age: 10, vintage: null }); | |
| 42 | + expect(whiskyFacts('Appleton Estate 21 Year Old Rum')).toMatchObject({ categorySlug: 'rum', age: 21 }); | |
| 43 | + expect(whiskyFacts('Hennessy XO Cognac 1L')).toMatchObject({ categorySlug: 'cognac', size: '1L' }); | |
| 44 | + }); | |
| 45 | +}); | |
added
connectors/api/scotch-whisky-auctions/index.ts
+223 −0
@@ -0,0 +1,223 @@ | ||
| 1 | +import { z } from 'zod'; | |
| 2 | +import { BaseConnector, html as H, type ConnectorMeta, type CrawlContext, type RawRecordInput, type RawRecordLike } from '@rareindex/connectors'; | |
| 3 | +import { parseSourceDate, AssetAttributesSchema, NormalizedSaleSchema, type NormalizedRecord } from '@rareindex/shared'; | |
| 4 | + | |
| 5 | +/** | |
| 6 | + * Scotch Whisky Auctions — monthly online whisky auctions (Glasgow) with a public archive of | |
| 7 | + * results. One raw record per lot-list page; normalise → one sale per lot with a "Sold for" price. | |
| 8 | + */ | |
| 9 | + | |
| 10 | +const BASE = 'https://www.scotchwhiskyauctions.com'; | |
| 11 | +const PARSER_VERSION = '1.0.0'; | |
| 12 | + | |
| 13 | +export const AuctionSchema = z.object({ id: z.string(), slug: z.string(), title: z.string(), endedOn: z.string().nullable(), lotCount: z.number().nullable(), ended: z.boolean() }); | |
| 14 | +export type Auction = z.infer<typeof AuctionSchema>; | |
| 15 | + | |
| 16 | +export const LotSchema = z.object({ itemId: z.string(), url: z.string(), title: z.string(), lotNo: z.string().nullable(), soldText: z.string().nullable(), priceGbp: z.number().nullable(), image: z.string().nullable() }); | |
| 17 | +export const PagePayloadSchema = z.object({ kind: z.literal('lot_page'), url: z.string(), auction: AuctionSchema, page: z.number(), totalPages: z.number().nullable(), lots: z.array(LotSchema) }); | |
| 18 | +export type PagePayload = z.infer<typeof PagePayloadSchema>; | |
| 19 | + | |
| 20 | +/** Parse /auctions/ : cards "The 181st Auction · Ended July 12, 2026 · There are 4926 lots in this auction". */ | |
| 21 | +export function parseAuctionList(htmlText: string): Auction[] { | |
| 22 | + const $ = H.load(htmlText); | |
| 23 | + const out: Auction[] = []; | |
| 24 | + $('a.auction').each((_, a) => { | |
| 25 | + const href = $(a).attr('href') ?? ''; | |
| 26 | + const m = href.match(/^\/auctions\/(\d+)-([^/]+)\/?$/); | |
| 27 | + if (!m) return; | |
| 28 | + const title = H.text($(a).find('h4')) ?? ''; | |
| 29 | + const status = H.text($(a).find('h5')) ?? ''; | |
| 30 | + const lots = H.text($(a).find('h6'))?.match(/(\d[\d,]*)\s+lots/i)?.[1] ?? null; | |
| 31 | + const ended = /^Ended\b/i.test(status); | |
| 32 | + const dateTxt = status.replace(/^(Ended|Ends)\s*/i, ''); | |
| 33 | + const d = parseSourceDate(dateTxt); | |
| 34 | + out.push({ id: m[1]!, slug: m[2]!, title, endedOn: d ? d.toISOString() : null, lotCount: lots ? Number(lots.replace(/,/g, '')) : null, ended }); | |
| 35 | + }); | |
| 36 | + return out; | |
| 37 | +} | |
| 38 | + | |
| 39 | +/** Parse an auction lot-list page (20 lots): title, lot number, "Sold for £100 in July 2026", image. */ | |
| 40 | +export function parseLotPage(htmlText: string, url: string, auction: Auction, page: number): PagePayload { | |
| 41 | + const $ = H.load(htmlText); | |
| 42 | + const totalPages = Number(htmlText.match(/Page \d+ of (\d+)/)?.[1]) || null; | |
| 43 | + const lots: z.infer<typeof LotSchema>[] = []; | |
| 44 | + $('a.lot').each((_, a) => { | |
| 45 | + const href = $(a).attr('href') ?? ''; | |
| 46 | + const m = href.match(/\/auctions\/\d+-[^/]+\/(\d+)-[^/]*\/?$/); | |
| 47 | + if (!m) return; | |
| 48 | + const title = H.text($(a).find('h4')); | |
| 49 | + if (!title) return; | |
| 50 | + const lotNo = H.text($(a).find('h6'))?.replace(/^Lot no\s*/i, '') ?? null; | |
| 51 | + const soldText = H.text($(a).find('p.sold')) ?? null; | |
| 52 | + const price = soldText?.match(/Sold for £([\d,]+(?:\.\d+)?)/i)?.[1] ?? null; | |
| 53 | + const bg = $(a).find('.aucimg').attr('style') ?? ''; | |
| 54 | + const image = bg.match(/url\('([^']+)'\)/)?.[1] ?? null; | |
| 55 | + lots.push({ itemId: m[1]!, url: BASE + href.replace(/\/?$/, '/'), title, lotNo, soldText, priceGbp: price ? Number(price.replace(/,/g, '')) : null, image }); | |
| 56 | + }); | |
| 57 | + return { kind: 'lot_page', url, auction, page, totalPages, lots }; | |
| 58 | +} | |
| 59 | + | |
| 60 | +const SIZE_RE = /(\d+(?:\.\d+)?)\s?(cl|ml|l|litre|liter)s?\b/i; | |
| 61 | +const AGE_RE = /(\d{1,2})\s*[- ]?\s*(?:year|yo\b|y\.?o\.?)/i; | |
| 62 | +const VINTAGE_RE = /\b(19[2-9]\d|20[0-2]\d)\b(?!\s*(?:year|yo))/i; | |
| 63 | + | |
| 64 | +export interface WhiskyFacts { | |
| 65 | + brand: string | null; | |
| 66 | + age: number | null; | |
| 67 | + vintage: number | null; | |
| 68 | + size: string | null; | |
| 69 | + categorySlug: 'whisky' | 'rum' | 'cognac'; | |
| 70 | +} | |
| 71 | + | |
| 72 | +/** Heuristic facts from a lot title ("Macallan 1989 18 Year Old Gran Reserva 70cl"). Unknown → null, never guessed. */ | |
| 73 | +export function whiskyFacts(title: string): WhiskyFacts { | |
| 74 | + const t = title.replace(/[‘’]/g, "'"); | |
| 75 | + const categorySlug: WhiskyFacts['categorySlug'] = /\brum\b|\brhum\b/i.test(t) ? 'rum' : /\bcognac\b|\barmagnac\b/i.test(t) ? 'cognac' : 'whisky'; | |
| 76 | + const age = t.match(AGE_RE)?.[1] ? Number(t.match(AGE_RE)![1]) : null; | |
| 77 | + const vintage = t.match(VINTAGE_RE)?.[1] ? Number(t.match(VINTAGE_RE)![1]) : null; | |
| 78 | + const sizeM = t.match(SIZE_RE); | |
| 79 | + const size = sizeM ? `${sizeM[1]}${sizeM[2]!.toLowerCase().startsWith('l') ? 'L' : sizeM[2]!.toLowerCase()}` : null; | |
| 80 | + // Brand = leading words before the first digit / age / "Year" / "-" ; keep 1–4 words | |
| 81 | + const lead = t.split(/\s+(?=\d)|\s+-\s+|\s+\(/)[0] ?? t; | |
| 82 | + const words = lead.replace(/^['"]|['"]$/g, '').trim().split(/\s+/).filter(Boolean); | |
| 83 | + const brand = words.length ? words.slice(0, Math.min(words.length, 4)).join(' ') : null; | |
| 84 | + return { brand: brand && /[a-z]/i.test(brand) ? brand : null, age, vintage, size, categorySlug }; | |
| 85 | +} | |
| 86 | + | |
| 87 | +export class ScotchWhiskyAuctionsConnector extends BaseConnector { | |
| 88 | + readonly version = '1.0.0'; | |
| 89 | + readonly parserVersion = PARSER_VERSION; | |
| 90 | + override readonly urlPatterns = [/scotchwhiskyauctions\.com\/auctions\/\d+-[^/]+\/\d+-/]; | |
| 91 | + protected override minIntervalMs = 2000; | |
| 92 | + | |
| 93 | + async *crawl(ctx: CrawlContext): AsyncIterable<RawRecordInput> { | |
| 94 | + const listUrl = String(this.meta.config.auctionsUrl ?? `${BASE}/auctions/`); | |
| 95 | + const auctionsPerRun = Number(this.meta.config.auctionsPerRun ?? 2); | |
| 96 | + const pagesPerRun = Number(this.meta.config.pagesPerRun ?? 12); | |
| 97 | + const cursor = (ctx.options.cursor ?? {}) as { progress?: Record<string, number>; complete?: string[] }; | |
| 98 | + const progress: Record<string, number> = { ...(cursor.progress ?? {}) }; | |
| 99 | + const complete = new Set<string>(cursor.complete ?? []); | |
| 100 | + | |
| 101 | + const list = await ctx.fetch(listUrl, { engines: ['api'], responseType: 'text', minQuality: 0 }); | |
| 102 | + if (!list.success || !list.html) { | |
| 103 | + ctx.anomaly('auction_list_failed', list.error ?? String(list.httpStatus)); | |
| 104 | + return; | |
| 105 | + } | |
| 106 | + let auctions = parseAuctionList(list.html).filter((a) => a.ended); | |
| 107 | + // newest first; incremental = newest auctions not yet complete, backfill = continue with older ones | |
| 108 | + auctions.sort((a, b) => Number(b.id) - Number(a.id)); | |
| 109 | + if (ctx.options.mode !== 'backfill') auctions = auctions.slice(0, 6); | |
| 110 | + let count = 0; | |
| 111 | + let pagesFetched = 0; | |
| 112 | + let auctionsTouched = 0; | |
| 113 | + for (const auction of auctions) { | |
| 114 | + if (complete.has(auction.id)) continue; | |
| 115 | + if (auctionsTouched >= auctionsPerRun) break; | |
| 116 | + auctionsTouched++; | |
| 117 | + let page = (progress[auction.id] ?? 0) + 1; | |
| 118 | + for (;;) { | |
| 119 | + if (ctx.signal?.aborted || this.reached(ctx, count) || pagesFetched >= pagesPerRun) return void (await ctx.setCursor({ progress, complete: [...complete] })); | |
| 120 | + const url = `${BASE}/auctions/${auction.id}-${auction.slug}/${page > 1 ? `?page=${page}` : ''}`; | |
| 121 | + await this.throttle(); | |
| 122 | + const res = await ctx.fetch(url, { | |
| 123 | + engines: ['api'], | |
| 124 | + responseType: 'text', | |
| 125 | + expect: ['title', 'price', 'currency', 'status'], | |
| 126 | + parse: (r) => { | |
| 127 | + const p = r.html ? parseLotPage(r.html, url, auction, page) : null; | |
| 128 | + const sold = p?.lots.find((l) => l.priceGbp); | |
| 129 | + return p && p.lots.length ? { title: p.lots[0]!.title, price: sold?.priceGbp ?? null, currency: sold ? 'GBP' : null, status: sold ? 'sold' : null } : null; | |
| 130 | + }, | |
| 131 | + }); | |
| 132 | + pagesFetched++; | |
| 133 | + const payload = res.success && res.html ? parseLotPage(res.html, url, auction, page) : null; | |
| 134 | + if (!payload || payload.lots.length === 0) { | |
| 135 | + ctx.anomaly(payload ? 'empty_page' : 'page_fetch_failed', `${url}: ${res.error ?? res.httpStatus}`); | |
| 136 | + complete.add(auction.id); | |
| 137 | + break; | |
| 138 | + } | |
| 139 | + count++; | |
| 140 | + yield { url, externalId: `auction:${auction.id}:page:${page}`, kind: 'sale', engine: res.engine, httpStatus: res.httpStatus, payload, fetchedAt: res.fetchedAt }; | |
| 141 | + progress[auction.id] = page; | |
| 142 | + if (payload.totalPages && page >= payload.totalPages) { | |
| 143 | + complete.add(auction.id); | |
| 144 | + break; | |
| 145 | + } | |
| 146 | + page++; | |
| 147 | + } | |
| 148 | + await ctx.setCursor({ progress, complete: [...complete] }); | |
| 149 | + } | |
| 150 | + } | |
| 151 | + | |
| 152 | + async lookup(url: string, ctx: CrawlContext): Promise<RawRecordInput[]> { | |
| 153 | + const m = url.match(/\/auctions\/(\d+)-([^/]+)\/(\d+)-/); | |
| 154 | + if (!m) return []; | |
| 155 | + const res = await ctx.fetch(url, { engines: ['api'], responseType: 'text', minQuality: 0 }); | |
| 156 | + if (!res.success || !res.html) return []; | |
| 157 | + const $ = H.load(res.html); | |
| 158 | + const title = H.text($('h1').first()) ?? H.text($('h4').first()); | |
| 159 | + const soldText = res.html.match(/Sold for £[\d,]+(?:\.\d+)?[^<]*/)?.[0] ?? null; | |
| 160 | + const lotNo = res.html.match(/Lot no\s*([\d-]+)/i)?.[1] ?? null; | |
| 161 | + const ended = res.html.match(/Ended\s+([A-Z][a-z]+ \d{1,2}, \d{4})/)?.[1] ?? null; | |
| 162 | + const endedOn = ended ? parseSourceDate(ended)?.toISOString() ?? null : null; | |
| 163 | + if (!title) return []; | |
| 164 | + const price = soldText?.match(/£([\d,]+(?:\.\d+)?)/)?.[1] ?? null; | |
| 165 | + const image = $('meta[property="og:image"]').attr('content') ?? null; | |
| 166 | + const auction: Auction = { id: m[1]!, slug: m[2]!, title: '', endedOn, lotCount: null, ended: Boolean(endedOn) }; | |
| 167 | + const payload: PagePayload = { kind: 'lot_page', url, auction, page: 0, totalPages: null, lots: [{ itemId: m[3]!, url, title, lotNo, soldText, priceGbp: price ? Number(price.replace(/,/g, '')) : null, image }] }; | |
| 168 | + return [{ url, externalId: `lot:${m[3]}`, kind: 'sale', engine: res.engine, httpStatus: res.httpStatus, payload, fetchedAt: res.fetchedAt }]; | |
| 169 | + } | |
| 170 | + | |
| 171 | + async normalize(raw: RawRecordLike): Promise<NormalizedRecord[]> { | |
| 172 | + const p = PagePayloadSchema.parse(raw.payload); | |
| 173 | + const saleDate = p.auction.endedOn ? new Date(p.auction.endedOn) : null; | |
| 174 | + if (!saleDate) return []; | |
| 175 | + const out: NormalizedRecord[] = []; | |
| 176 | + for (const lot of p.lots) { | |
| 177 | + if (!lot.priceGbp || lot.priceGbp <= 0) continue; | |
| 178 | + const f = whiskyFacts(lot.title); | |
| 179 | + const attributes = AssetAttributesSchema.parse({ | |
| 180 | + categorySlug: f.categorySlug, | |
| 181 | + brand: f.brand, | |
| 182 | + name: lot.title, | |
| 183 | + year: f.vintage, | |
| 184 | + size: f.size, | |
| 185 | + country: f.categorySlug === 'whisky' && /scotch|islay|speyside|highland|campbeltown|lowland/i.test(lot.title) ? 'GB' : null, | |
| 186 | + identifiers: { swa_item: lot.itemId, ...(lot.lotNo ? { swa_lot: lot.lotNo } : {}) }, | |
| 187 | + metadata: { age_statement: f.age, auction_id: p.auction.id, auction_title: p.auction.title, sold_text: lot.soldText }, | |
| 188 | + }); | |
| 189 | + out.push( | |
| 190 | + NormalizedSaleSchema.parse({ | |
| 191 | + kind: 'sale', | |
| 192 | + connectorId: this.meta.id, | |
| 193 | + sourceId: this.meta.sourceId, | |
| 194 | + sourceUrl: lot.url, | |
| 195 | + externalId: lot.itemId, | |
| 196 | + rawTitle: lot.title, | |
| 197 | + imageUrls: lot.image ? [lot.image] : [], | |
| 198 | + attributes, | |
| 199 | + grade: { grader: null, grade: null, qualifier: null, certificationNumber: null }, | |
| 200 | + condition: { condition: null, conditionRaw: null, completeness: null }, | |
| 201 | + observedAt: raw.fetchedAt, | |
| 202 | + confidence: 0.9, | |
| 203 | + parserVersion: PARSER_VERSION, | |
| 204 | + saleType: 'auction', | |
| 205 | + saleDate, | |
| 206 | + price: lot.priceGbp, | |
| 207 | + currency: 'GBP', | |
| 208 | + buyerPremiumIncluded: false, | |
| 209 | + quantity: 1, | |
| 210 | + isBundle: /\b(x\s?\d|\d+\s?x\s|lot of|set of|\d+\s?bottles)\b/i.test(lot.title), | |
| 211 | + location: 'Glasgow, United Kingdom', | |
| 212 | + auctionHouse: 'Scotch Whisky Auctions', | |
| 213 | + lotNumber: lot.lotNo, | |
| 214 | + }), | |
| 215 | + ); | |
| 216 | + } | |
| 217 | + return out; | |
| 218 | + } | |
| 219 | +} | |
| 220 | + | |
| 221 | +export default function createConnector(meta: ConnectorMeta) { | |
| 222 | + return new ScotchWhiskyAuctionsConnector(meta); | |
| 223 | +} | |
added
connectors/api/scotch-whisky-auctions/meta.json
+34 −0
@@ -0,0 +1,34 @@ | ||
| 1 | +{ | |
| 2 | + "id": "scotch-whisky-auctions", | |
| 3 | + "displayName": "Scotch Whisky Auctions (results)", | |
| 4 | + "sourceId": "scotch-whisky-auctions", | |
| 5 | + "sourceName": "Scotch Whisky Auctions", | |
| 6 | + "sourceType": "auction_house", | |
| 7 | + "sourceUrl": "https://www.scotchwhiskyauctions.com", | |
| 8 | + "module": "api/scotch-whisky-auctions", | |
| 9 | + "enginePriority": ["api", "firecrawl", "scrapfly"], | |
| 10 | + "categories": ["whisky", "rum", "cognac"], | |
| 11 | + "regions": ["GB"], | |
| 12 | + "languages": ["en"], | |
| 13 | + "currency": ["GBP"], | |
| 14 | + "supportsListings": false, | |
| 15 | + "supportsSold": true, | |
| 16 | + "supportsAuctions": true, | |
| 17 | + "supportsImages": true, | |
| 18 | + "supportsCatalog": false, | |
| 19 | + "supportsPopulation": false, | |
| 20 | + "supportsLookup": true, | |
| 21 | + "refreshFrequencyMinutes": 1440, | |
| 22 | + "priority": "high", | |
| 23 | + "trustScore": 0.9, | |
| 24 | + "attributionRequired": true, | |
| 25 | + "termsUrl": "https://www.scotchwhiskyauctions.com/terms/", | |
| 26 | + "accessNotes": "Public monthly auction archive (Glasgow; ~4,500–5,000 lots per auction, 20 lots per page, plain HTTPS with the RareIndex user agent, robots.txt disallows only /cmsplus/). Each lot card exposes title, lot number and 'Sold for £X in <month year>' — this is the hammer price; the buyer's commission (SWA charges a separate buyer's premium plus VAT) is NOT included, so buyer_premium_included=false. Sale date = the auction end date shown on the auction page. Unsold lots are skipped. 2 s politeness delay; pagesPerRun caps each incremental run (backfill mode walks older auctions).", | |
| 27 | + "enabled": true, | |
| 28 | + "schemaVersion": "1.0", | |
| 29 | + "config": { | |
| 30 | + "auctionsUrl": "https://www.scotchwhiskyauctions.com/auctions/", | |
| 31 | + "auctionsPerRun": 2, | |
| 32 | + "pagesPerRun": 12 | |
| 33 | + } | |
| 34 | +} | |
added
connectors/api/winebid/_smoke.ts
+20 −0
@@ -0,0 +1,20 @@ | ||
| 1 | +import { createRouter, createCrawlContext, ConnectorMetaSchema } from '@rareindex/connectors'; | |
| 2 | +import { saveFixture } from '@rareindex/connectors/testing'; | |
| 3 | +import metaJson from './meta.json' with { type: 'json' }; | |
| 4 | +import createConnector from './index.js'; | |
| 5 | + | |
| 6 | +const save = process.argv.includes('--save'); | |
| 7 | +const meta = ConnectorMetaSchema.parse(metaJson); | |
| 8 | +const connector = createConnector(meta); | |
| 9 | +const router = createRouter({ firecrawlApiKey: process.env.FIRECRAWL_API_KEY, scrapflyApiKey: process.env.SCRAPFLY_API_KEY }); | |
| 10 | +const ctx = createCrawlContext({ router, meta, options: { mode: 'probe', limit: 4 } }); | |
| 11 | +let i = 0; | |
| 12 | +for await (const raw of connector.crawl(ctx)) { | |
| 13 | + const out = await connector.normalize({ ...raw, externalId: raw.externalId ?? null, fetchedAt: raw.fetchedAt ?? new Date() }); | |
| 14 | + const sales = out.filter((r) => r.kind === 'sale'); | |
| 15 | + console.log(`raw ${raw.externalId} (${raw.engine}) → ${out.length} records, ${sales.length} sales`); | |
| 16 | + for (const r of sales.slice(0, 2)) console.log(' ', JSON.stringify(r).slice(0, 420)); | |
| 17 | + if (save && i < 2 && sales.length) saveFixture(meta.id, `item-${(raw.externalId ?? '').replace('item:', '')}`, { raw: { url: raw.url, externalId: raw.externalId ?? null, kind: raw.kind, engine: raw.engine, fetchedAt: raw.fetchedAt ?? new Date(), payload: raw.payload }, expect: { minCount: 2, kinds: ['sale', 'listing'], requiredFields: ['rawTitle', 'attributes.name'] }, note: 'Captured live from winebid.com item page (plain HTTPS)' }); | |
| 18 | + if (sales.length) i++; | |
| 19 | +} | |
| 20 | +console.log('engineStats', ctx.engineStats, 'anomalies', ctx.anomalies); | |
added
connectors/api/winebid/index.test.ts
+37 −0
@@ -0,0 +1,37 @@ | ||
| 1 | +import { describe, expect, it } from 'vitest'; | |
| 2 | +import { ConnectorMetaSchema } from '@rareindex/connectors'; | |
| 3 | +import { listFixtures, loadFixture, runFixtureSuite } from '@rareindex/connectors/testing'; | |
| 4 | +import metaJson from './meta.json' with { type: 'json' }; | |
| 5 | +import createConnector, { parseCategoryPage, parseItemPage, wineFacts } from './index.js'; | |
| 6 | + | |
| 7 | +const connector = createConnector(ConnectorMetaSchema.parse(metaJson)); | |
| 8 | + | |
| 9 | +describe('winebid', () => { | |
| 10 | + runFixtureSuite(connector, it, expect); | |
| 11 | + | |
| 12 | + it('emits per-bottle USD sales (premium excluded) dated by the recent-sales table', async () => { | |
| 13 | + const name = listFixtures('winebid')[0]!; | |
| 14 | + const out = await connector.normalize(loadFixture('winebid', name).raw); | |
| 15 | + const sales = out.filter((r) => r.kind === 'sale'); | |
| 16 | + expect(sales.length).toBeGreaterThan(0); | |
| 17 | + for (const r of sales) { | |
| 18 | + if (r.kind !== 'sale') continue; | |
| 19 | + expect(r.currency).toBe('USD'); | |
| 20 | + expect(r.buyerPremiumIncluded).toBe(false); | |
| 21 | + expect(r.attributes.metadata.buyer_premium_pct).toBe(17); | |
| 22 | + expect(r.saleDate.getFullYear()).toBeGreaterThanOrEqual(2015); | |
| 23 | + expect(r.sourceUrl).toMatch(/^https:\/\/www\.winebid\.com\/BuyWine\/Item\/\d+/); | |
| 24 | + } | |
| 25 | + }); | |
| 26 | + | |
| 27 | + it('parses item pages, category links and titles', () => { | |
| 28 | + const html = `<h1>1983 Château Margaux (1.5L)</h1><p>Light capsule condition issue</p><div id="itemDiagnostics" data-is-ended="False"></div><table class="recentSales"><thead><tr><th>Item</th><th>Sold</th><th>Amount</th><th>Date</th></tr></thead><tr><td><a href="/BuyWine/Item/10856401/1983-Chateau-Margaux">I10856401</a></td><td class="text-right">2</td><td class="text-right">$520</td><td class="text-right" title="August 23, 2026 12:00:00 AM (PDT)">Aug 23, 2026</td></tr></table>`; | |
| 29 | + const p = parseItemPage(html, 'https://www.winebid.com/BuyWine/Item/10881873/1983-Chateau-Margaux', 'Bordeaux')!; | |
| 30 | + expect(p.itemId).toBe('10881873'); | |
| 31 | + expect(p.title).toBe('1983 Château Margaux (1.5L)'); | |
| 32 | + expect(p.recentSales).toEqual([{ itemId: '10856401', url: 'https://www.winebid.com/BuyWine/Item/10856401/1983-Chateau-Margaux', quantity: 2, amountUsd: 520, soldOn: 'August 23, 2026 12:00:00 AM (PDT)' }]); | |
| 33 | + expect(wineFacts('1983 Château Margaux (1.5L)')).toEqual({ vintage: 1983, name: 'Château Margaux', size: '1.5L' }); | |
| 34 | + expect(wineFacts('2019 Opus One')).toEqual({ vintage: 2019, name: 'Opus One', size: '750ml' }); | |
| 35 | + expect(parseCategoryPage('[x](https://www.winebid.com/BuyWine/Item/10887720/2019-Chateau-Haut-Brion-~) <a href="/BuyWine/Item/1/a">a</a>')).toEqual(['https://www.winebid.com/BuyWine/Item/10887720/2019-Chateau-Haut-Brion-~', 'https://www.winebid.com/BuyWine/Item/1/a']); | |
| 36 | + }); | |
| 37 | +}); | |
added
connectors/api/winebid/index.ts
+215 −0
@@ -0,0 +1,215 @@ | ||
| 1 | +import { z } from 'zod'; | |
| 2 | +import { BaseConnector, html as H, type ConnectorMeta, type CrawlContext, type RawRecordInput, type RawRecordLike } from '@rareindex/connectors'; | |
| 3 | +import { AssetAttributesSchema, NormalizedListingSchema, NormalizedSaleSchema, parsePrice, parseSourceDate, type NormalizedRecord } from '@rareindex/shared'; | |
| 4 | + | |
| 5 | +/** | |
| 6 | + * WineBid — item pages expose a "Recent sales" table (past winning bids for the same wine). | |
| 7 | + * One raw record per item page; normalise → one sale per past sale row plus the current listing. | |
| 8 | + */ | |
| 9 | + | |
| 10 | +const BASE = 'https://www.winebid.com'; | |
| 11 | +const PARSER_VERSION = '1.0.0'; | |
| 12 | +const PREMIUM_PCT = 17; | |
| 13 | + | |
| 14 | +const CategorySchema = z.object({ path: z.string(), label: z.string() }); | |
| 15 | + | |
| 16 | +export const SaleRowSchema = z.object({ itemId: z.string(), url: z.string(), quantity: z.number(), amountUsd: z.number(), soldOn: z.string() }); | |
| 17 | +export const ItemPayloadSchema = z.object({ | |
| 18 | + kind: z.literal('item_page'), | |
| 19 | + url: z.string(), | |
| 20 | + itemId: z.string(), | |
| 21 | + title: z.string(), | |
| 22 | + category: z.string().nullable(), | |
| 23 | + condition: z.string().nullable(), | |
| 24 | + currentBid: z.number().nullable(), | |
| 25 | + estimate: z.number().nullable(), | |
| 26 | + ended: z.boolean().nullable(), | |
| 27 | + image: z.string().nullable(), | |
| 28 | + recentSales: z.array(SaleRowSchema), | |
| 29 | +}); | |
| 30 | +export type ItemPayload = z.infer<typeof ItemPayloadSchema>; | |
| 31 | + | |
| 32 | +export function parseCategoryPage(text: string): string[] { | |
| 33 | + const out = new Set<string>(); | |
| 34 | + for (const m of text.matchAll(/https:\/\/www\.winebid\.com\/BuyWine\/Item\/(\d+)\/[^)\s"'<>]*/g)) out.add(`${BASE}/BuyWine/Item/${m[1]}/${m[0].split('/').pop()!.replace(/[)"'>]+$/g, '')}`); | |
| 35 | + for (const m of text.matchAll(/href="(\/BuyWine\/Item\/(\d+)\/[^"]+)"/g)) out.add(BASE + m[1]!); | |
| 36 | + return [...out]; | |
| 37 | +} | |
| 38 | + | |
| 39 | +export function parseItemPage(htmlText: string, url: string, category: string | null): ItemPayload | null { | |
| 40 | + const $ = H.load(htmlText); | |
| 41 | + const itemId = url.match(/\/BuyWine\/Item\/(\d+)/)?.[1]; | |
| 42 | + const title = H.text($('h1').first()); | |
| 43 | + if (!itemId || !title) return null; | |
| 44 | + const condition = H.text($('h1').first().nextAll('p').first()); | |
| 45 | + const recentSales: z.infer<typeof SaleRowSchema>[] = []; | |
| 46 | + $('table.recentSales tr').each((_, tr) => { | |
| 47 | + const tds = $(tr).find('td'); | |
| 48 | + if (tds.length < 4) return; | |
| 49 | + const a = $(tds[0]).find('a'); | |
| 50 | + const href = a.attr('href') ?? ''; | |
| 51 | + const id = href.match(/\/BuyWine\/Item\/(\d+)/)?.[1]; | |
| 52 | + const qty = Number(H.text($(tds[1])) ?? ''); | |
| 53 | + const amount = parsePrice(H.text($(tds[2])), 'USD'); | |
| 54 | + const soldOn = $(tds[3]).attr('title') ?? H.text($(tds[3])) ?? ''; | |
| 55 | + if (!id || !amount || !soldOn) return; | |
| 56 | + recentSales.push({ itemId: id, url: BASE + href, quantity: Number.isFinite(qty) && qty > 0 ? qty : 1, amountUsd: amount.amount, soldOn }); | |
| 57 | + }); | |
| 58 | + const bidTxt = H.text($('.currentBid, .bidAmount, #currentBid').first()) ?? htmlText.match(/Current Bid[^$]{0,80}\$([\d,]+(?:\.\d+)?)/i)?.[1] ?? null; | |
| 59 | + const currentBid = bidTxt ? (parsePrice(bidTxt, 'USD')?.amount ?? null) : null; | |
| 60 | + const estimate = parsePrice(htmlText.match(/Estimate[^$]{0,120}\$([\d,]+(?:\.\d+)?)/i)?.[1] ?? null, 'USD')?.amount ?? null; | |
| 61 | + const endedAttr = $('#itemDiagnostics').attr('data-is-ended'); | |
| 62 | + const image = $('meta[property="og:image"]').attr('content') ?? $('img[src*="/Photo/"]').first().attr('src') ?? null; | |
| 63 | + return { kind: 'item_page', url, itemId, title, category, condition: condition ?? null, currentBid, estimate, ended: endedAttr ? endedAttr === 'True' : null, image: image ? (image.startsWith('http') ? image : BASE + image) : null, recentSales }; | |
| 64 | +} | |
| 65 | + | |
| 66 | +/** "1983 Château Margaux (1.5L)" → { vintage, producer, size } — nothing guessed. */ | |
| 67 | +export function wineFacts(title: string): { vintage: number | null; name: string; size: string | null } { | |
| 68 | + const vintage = title.match(/^(19\d{2}|20\d{2})\b/)?.[1] ?? null; | |
| 69 | + const size = title.match(/\((\d+(?:\.\d+)?\s?(?:L|ml|mL))\)/i)?.[1]?.replace(/\s/g, '') ?? null; | |
| 70 | + const name = title | |
| 71 | + .replace(/^(19\d{2}|20\d{2}|NV)\s+/, '') | |
| 72 | + .replace(/\s*\((\d+(?:\.\d+)?\s?(?:L|ml|mL))\)\s*/i, ' ') | |
| 73 | + .trim(); | |
| 74 | + return { vintage: vintage ? Number(vintage) : null, name, size: size ?? '750ml' }; | |
| 75 | +} | |
| 76 | + | |
| 77 | +export class WineBidConnector extends BaseConnector { | |
| 78 | + readonly version = '1.0.0'; | |
| 79 | + readonly parserVersion = PARSER_VERSION; | |
| 80 | + override readonly urlPatterns = [/winebid\.com\/BuyWine\/Item\/\d+/]; | |
| 81 | + protected override minIntervalMs = 2000; | |
| 82 | + | |
| 83 | + async *crawl(ctx: CrawlContext): AsyncIterable<RawRecordInput> { | |
| 84 | + const categories = z.array(CategorySchema).parse(this.meta.config.categories ?? []); | |
| 85 | + const perRun = Number(this.meta.config.itemsPerRun ?? 24); | |
| 86 | + const cursor = (ctx.options.cursor ?? {}) as { seen?: string[] }; | |
| 87 | + const seen = new Set<string>(cursor.seen ?? []); | |
| 88 | + let count = 0; | |
| 89 | + let fetched = 0; | |
| 90 | + const perCategory = Math.max(2, Math.ceil(perRun / Math.max(1, categories.length))); | |
| 91 | + for (const cat of categories) { | |
| 92 | + if (ctx.signal?.aborted || fetched >= perRun) break; | |
| 93 | + const listUrl = BASE + cat.path; | |
| 94 | + const list = await ctx.fetch(listUrl, { engines: ['firecrawl'], timeoutMs: 60_000, minQuality: 0 }); | |
| 95 | + if (!list.success) { | |
| 96 | + ctx.anomaly('category_fetch_failed', `${listUrl}: ${list.error ?? list.httpStatus}`); | |
| 97 | + continue; | |
| 98 | + } | |
| 99 | + const urls = parseCategoryPage(`${list.markdown ?? ''}\n${list.html ?? ''}`); | |
| 100 | + if (urls.length === 0) { | |
| 101 | + ctx.anomaly('empty_category', listUrl); | |
| 102 | + continue; | |
| 103 | + } | |
| 104 | + let done = 0; | |
| 105 | + for (const url of urls) { | |
| 106 | + if (ctx.signal?.aborted || this.reached(ctx, count) || fetched >= perRun || done >= perCategory) break; | |
| 107 | + const id = url.match(/\/Item\/(\d+)/)?.[1] ?? url; | |
| 108 | + if (seen.has(id) && ctx.options.mode !== 'backfill') continue; | |
| 109 | + await this.throttle(); | |
| 110 | + fetched++; | |
| 111 | + const res = await ctx.fetch(url, { | |
| 112 | + engines: ['api', 'firecrawl'], | |
| 113 | + responseType: 'text', | |
| 114 | + expect: ['title', 'price', 'currency', 'date'], | |
| 115 | + parse: (r) => { | |
| 116 | + const p = r.html ? parseItemPage(r.html, url, cat.label) : null; | |
| 117 | + const s = p?.recentSales[0]; | |
| 118 | + return p ? { title: p.title, price: s?.amountUsd ?? p.currentBid, currency: 'USD', date: s?.soldOn ?? null } : null; | |
| 119 | + }, | |
| 120 | + }); | |
| 121 | + const payload = res.success && res.html ? parseItemPage(res.html, url, cat.label) : null; | |
| 122 | + if (!payload) { | |
| 123 | + ctx.anomaly('item_parse_failed', `${url}: ${res.error ?? res.httpStatus}`); | |
| 124 | + continue; | |
| 125 | + } | |
| 126 | + seen.add(id); | |
| 127 | + done++; | |
| 128 | + count++; | |
| 129 | + yield { url, externalId: `item:${payload.itemId}`, kind: 'sale', engine: res.engine, httpStatus: res.httpStatus, payload, fetchedAt: res.fetchedAt }; | |
| 130 | + } | |
| 131 | + await ctx.setCursor({ seen: [...seen].slice(-3000) }); | |
| 132 | + } | |
| 133 | + } | |
| 134 | + | |
| 135 | + async lookup(url: string, ctx: CrawlContext): Promise<RawRecordInput[]> { | |
| 136 | + const res = await ctx.fetch(url, { engines: ['api', 'firecrawl'], responseType: 'text', minQuality: 0 }); | |
| 137 | + const payload = res.success && res.html ? parseItemPage(res.html, url, null) : null; | |
| 138 | + return payload ? [{ url, externalId: `item:${payload.itemId}`, kind: 'sale', engine: res.engine, httpStatus: res.httpStatus, payload, fetchedAt: res.fetchedAt }] : []; | |
| 139 | + } | |
| 140 | + | |
| 141 | + async normalize(raw: RawRecordLike): Promise<NormalizedRecord[]> { | |
| 142 | + const p = ItemPayloadSchema.parse(raw.payload); | |
| 143 | + const f = wineFacts(p.title); | |
| 144 | + const categorySlug = /whisk|bourbon|scotch/i.test(p.title) ? 'whisky' : 'wine'; | |
| 145 | + const attributes = AssetAttributesSchema.parse({ | |
| 146 | + categorySlug, | |
| 147 | + series: p.category, | |
| 148 | + name: f.name, | |
| 149 | + year: f.vintage, | |
| 150 | + size: f.size, | |
| 151 | + identifiers: { winebid_wine: `${f.vintage ?? 'NV'}|${f.name.toLowerCase()}|${f.size ?? ''}` }, | |
| 152 | + metadata: { category_page: p.category }, | |
| 153 | + }); | |
| 154 | + const common = { | |
| 155 | + connectorId: this.meta.id, | |
| 156 | + sourceId: this.meta.sourceId, | |
| 157 | + attributes, | |
| 158 | + grade: { grader: null, grade: null, qualifier: null, certificationNumber: null }, | |
| 159 | + condition: { condition: null, conditionRaw: p.condition, completeness: null }, | |
| 160 | + observedAt: raw.fetchedAt, | |
| 161 | + confidence: 0.85, | |
| 162 | + parserVersion: PARSER_VERSION, | |
| 163 | + imageUrls: p.image ? [p.image] : [], | |
| 164 | + description: null, | |
| 165 | + }; | |
| 166 | + const out: NormalizedRecord[] = []; | |
| 167 | + for (const s of p.recentSales) { | |
| 168 | + const saleDate = parseSourceDate(s.soldOn.replace(/\s+\d{1,2}:\d{2}:\d{2}\s*(AM|PM)?\s*\([A-Z]{3,4}\)$/i, '')); | |
| 169 | + if (!saleDate) continue; | |
| 170 | + out.push( | |
| 171 | + NormalizedSaleSchema.parse({ | |
| 172 | + kind: 'sale', | |
| 173 | + ...common, | |
| 174 | + sourceUrl: s.url, | |
| 175 | + externalId: s.itemId, | |
| 176 | + rawTitle: p.title, | |
| 177 | + saleType: 'auction', | |
| 178 | + saleDate, | |
| 179 | + price: s.amountUsd, | |
| 180 | + currency: 'USD', | |
| 181 | + buyerPremiumIncluded: false, | |
| 182 | + quantity: s.quantity, | |
| 183 | + isBundle: false, | |
| 184 | + location: 'United States', | |
| 185 | + auctionHouse: 'WineBid', | |
| 186 | + lotNumber: s.itemId, | |
| 187 | + attributes: { ...attributes, metadata: { ...attributes.metadata, price_basis: 'per_bottle', buyer_premium_pct: PREMIUM_PCT } }, | |
| 188 | + }), | |
| 189 | + ); | |
| 190 | + } | |
| 191 | + if (p.currentBid || p.estimate) { | |
| 192 | + out.push( | |
| 193 | + NormalizedListingSchema.parse({ | |
| 194 | + kind: 'listing', | |
| 195 | + ...common, | |
| 196 | + sourceUrl: p.url, | |
| 197 | + externalId: p.itemId, | |
| 198 | + rawTitle: p.title, | |
| 199 | + listingType: 'auction', | |
| 200 | + price: p.currentBid ?? p.estimate, | |
| 201 | + currency: 'USD', | |
| 202 | + seller: 'WineBid', | |
| 203 | + location: 'United States', | |
| 204 | + availability: p.ended === true ? 'ended' : 'available', | |
| 205 | + attributes: { ...attributes, metadata: { ...attributes.metadata, estimate_usd: p.estimate, price_is_estimate: p.currentBid === null } }, | |
| 206 | + }), | |
| 207 | + ); | |
| 208 | + } | |
| 209 | + return out; | |
| 210 | + } | |
| 211 | +} | |
| 212 | + | |
| 213 | +export default function createConnector(meta: ConnectorMeta) { | |
| 214 | + return new WineBidConnector(meta); | |
| 215 | +} | |
added
connectors/api/winebid/meta.json
+40 −0
@@ -0,0 +1,40 @@ | ||
| 1 | +{ | |
| 2 | + "id": "winebid", | |
| 3 | + "displayName": "WineBid (recent sales per wine)", | |
| 4 | + "sourceId": "winebid", | |
| 5 | + "sourceName": "WineBid", | |
| 6 | + "sourceType": "marketplace", | |
| 7 | + "sourceUrl": "https://www.winebid.com", | |
| 8 | + "module": "api/winebid", | |
| 9 | + "enginePriority": ["api", "firecrawl", "scrapfly"], | |
| 10 | + "categories": ["wine", "whisky"], | |
| 11 | + "regions": ["US"], | |
| 12 | + "languages": ["en"], | |
| 13 | + "currency": ["USD"], | |
| 14 | + "supportsListings": true, | |
| 15 | + "supportsSold": true, | |
| 16 | + "supportsAuctions": true, | |
| 17 | + "supportsImages": true, | |
| 18 | + "supportsCatalog": false, | |
| 19 | + "supportsPopulation": false, | |
| 20 | + "supportsLookup": true, | |
| 21 | + "refreshFrequencyMinutes": 1440, | |
| 22 | + "priority": "medium", | |
| 23 | + "trustScore": 0.85, | |
| 24 | + "attributionRequired": true, | |
| 25 | + "termsUrl": "https://www.winebid.com/Help/TermsAndConditions", | |
| 26 | + "accessNotes": "US online wine auction (weekly auctions). Category browse pages (/BuyWine/Items/<region>/<id>) are rendered through Firecrawl (1 credit, plain HTTP returns 403 for list pages) to discover item URLs; each public item page (/BuyWine/Item/<id>/<slug>, plain HTTPS) shows the wine, the current auction lot (estimate / current bid) and a 'Recent sales' table of past winning bids for the same wine: item id, quantity sold, per-bottle amount (USD) and sale date. robots.txt lists rules for named search engines only (no generic group); we still avoid /Sales, /AuctionClosed and account paths. Winning bids exclude WineBid's 17% buyer's premium (buyer_premium_included=false; premium % in metadata). Sale dates come from the table (PDT). 2 s politeness delay; itemsPerRun caps each run.", | |
| 27 | + "enabled": true, | |
| 28 | + "schemaVersion": "1.0", | |
| 29 | + "config": { | |
| 30 | + "categories": [ | |
| 31 | + { "path": "/BuyWine/Items/Bordeaux/18403", "label": "Bordeaux" }, | |
| 32 | + { "path": "/BuyWine/Items/Burgundy/15363", "label": "Burgundy" }, | |
| 33 | + { "path": "/BuyWine/Items/Napa-Valley/2910", "label": "Napa Valley" }, | |
| 34 | + { "path": "/BuyWine/Items/Barolo/16367", "label": "Barolo" }, | |
| 35 | + { "path": "/BuyWine/Items/Brunello-di-Montalcino/7725165", "label": "Brunello di Montalcino" }, | |
| 36 | + { "path": "/BuyWine/Items/Big-Bottles/7902856", "label": "Large formats" } | |
| 37 | + ], | |
| 38 | + "itemsPerRun": 24 | |
| 39 | + } | |
| 40 | +} | |
added
connectors/firecrawl/artcurial/_smoke.ts
+20 −0
@@ -0,0 +1,20 @@ | ||
| 1 | +import { createRouter, createCrawlContext, ConnectorMetaSchema } from '@rareindex/connectors'; | |
| 2 | +import { saveFixture } from '@rareindex/connectors/testing'; | |
| 3 | +import metaJson from './meta.json' with { type: 'json' }; | |
| 4 | +import createConnector from './index.js'; | |
| 5 | + | |
| 6 | +const save = process.argv.includes('--save'); | |
| 7 | +const meta = ConnectorMetaSchema.parse(metaJson); | |
| 8 | +const connector = createConnector(meta); | |
| 9 | +const router = createRouter({ firecrawlApiKey: process.env.FIRECRAWL_API_KEY, scrapflyApiKey: process.env.SCRAPFLY_API_KEY }); | |
| 10 | +const ctx = createCrawlContext({ router, meta, options: { mode: 'probe', limit: 2 } }); | |
| 11 | +let i = 0; | |
| 12 | +for await (const raw of connector.crawl(ctx)) { | |
| 13 | + const out = await connector.normalize({ ...raw, externalId: raw.externalId ?? null, fetchedAt: raw.fetchedAt ?? new Date() }); | |
| 14 | + const sales = out.filter((r) => r.kind === 'sale'); | |
| 15 | + console.log(`raw ${raw.externalId} (${raw.engine}) → ${out.length} records, ${sales.length} sales`); | |
| 16 | + for (const r of sales.slice(0, 3)) console.log(' ', JSON.stringify(r).slice(0, 420)); | |
| 17 | + if (save && i < 2 && sales.length) saveFixture(meta.id, `sale-${raw.externalId}`, { raw: { url: raw.url, externalId: raw.externalId ?? null, kind: raw.kind, engine: raw.engine, fetchedAt: raw.fetchedAt ?? new Date(), payload: raw.payload }, expect: { minCount: 5, kinds: ['sale', 'auction_lot'], requiredFields: ['rawTitle', 'attributes.categorySlug'] }, note: 'Captured live via Firecrawl from artcurial.com' }); | |
| 18 | + i++; | |
| 19 | +} | |
| 20 | +console.log('engineStats', ctx.engineStats, 'anomalies', ctx.anomalies); | |
added
connectors/firecrawl/artcurial/index.test.ts
+39 −0
@@ -0,0 +1,39 @@ | ||
| 1 | +import { describe, expect, it } from 'vitest'; | |
| 2 | +import { ConnectorMetaSchema } from '@rareindex/connectors'; | |
| 3 | +import { listFixtures, loadFixture, runFixtureSuite } from '@rareindex/connectors/testing'; | |
| 4 | +import metaJson from './meta.json' with { type: 'json' }; | |
| 5 | +import createConnector, { categoryForSale, parseResultsIndex, parseSalePage } from './index.js'; | |
| 6 | + | |
| 7 | +const connector = createConnector(ConnectorMetaSchema.parse(metaJson)); | |
| 8 | + | |
| 9 | +describe('artcurial', () => { | |
| 10 | + runFixtureSuite(connector, it, expect); | |
| 11 | + | |
| 12 | + it('emits EUR sales with unknown (null) premium flag and dated by the sale', async () => { | |
| 13 | + const name = listFixtures('artcurial')[0]!; | |
| 14 | + const out = await connector.normalize(loadFixture('artcurial', name).raw); | |
| 15 | + const sales = out.filter((r) => r.kind === 'sale'); | |
| 16 | + expect(sales.length).toBeGreaterThan(3); | |
| 17 | + for (const r of sales) { | |
| 18 | + if (r.kind !== 'sale') continue; | |
| 19 | + expect(r.currency).toBe('EUR'); | |
| 20 | + expect(r.buyerPremiumIncluded).toBeNull(); | |
| 21 | + expect(r.auctionHouse).toBe('Artcurial'); | |
| 22 | + expect(r.sourceUrl).toMatch(/^https:\/\/www\.artcurial\.com\/en\/sales\/[A-Za-z0-9-]+\/lots\//); | |
| 23 | + } | |
| 24 | + }); | |
| 25 | + | |
| 26 | + it('parses the results index and sale pages', () => { | |
| 27 | + const idx = `[- Jul\\\\\n- 3\\\\\n- 2026\\\\\n\\\\\n\\\\\n\\\\\nJul 3, 2026\\\\\n\\\\\n6604\\\\\n\\\\\nLe Mans Classic Legend\\\\\n\\\\\n2:00 PM\\\\\n\\|\\\\\n\\\\\nArtcurial, Paris](https://www.artcurial.com/en/sales/6604)`; | |
| 28 | + const sales = parseResultsIndex(idx); | |
| 29 | + expect(sales).toEqual([{ number: '6604', title: 'Le Mans Classic Legend', subtitle: null, date: '2026-07-03T00:00:00.000Z', location: 'Artcurial, Paris', url: 'https://www.artcurial.com/en/sales/6604', online: false }]); | |
| 30 | + const page = `All Lots (32)\n\n[1\\\\\n\\\\\n\\\\\n\\\\\n24 hours of Le Mans 1971, 1972 and 1973 \\\\\n\\\\\n150 photographs - No reserve\\\\\n\\\\\nEstimate: €300 - 500\\\\\n\\\\\nSold€1,589](https://www.artcurial.com/en/sales/6604/lots/1-a) [15\\\\\n\\\\\nEstimate: €15,000 - 20,000](https://www.artcurial.com/en/sales/6604/lots/15-a)`; | |
| 31 | + const p = parseSalePage(page, '6604'); | |
| 32 | + expect(p.lotCount).toBe(32); | |
| 33 | + expect(p.lots[0]).toMatchObject({ lotNo: '1', title: '24 hours of Le Mans 1971, 1972 and 1973', subtitle: '150 photographs - No reserve', estimateLow: 300, estimateHigh: 500, sold: 1589, image: 'https://x/a.jpg?w=400' }); | |
| 34 | + expect(p.lots).toHaveLength(1); // lot 15 has no title line → skipped | |
| 35 | + expect(categoryForSale('Horlogerie de Collection')).toBe('other_watches'); | |
| 36 | + expect(categoryForSale('Hermès & Luxury Bags')).toBe('luxury_handbags'); | |
| 37 | + expect(categoryForSale('Post-War & Contemporary Art')).toBe('contemporary_art'); | |
| 38 | + }); | |
| 39 | +}); | |
added
connectors/firecrawl/artcurial/index.ts
+216 −0
@@ -0,0 +1,216 @@ | ||
| 1 | +import { z } from 'zod'; | |
| 2 | +import { BaseConnector, type ConnectorMeta, type CrawlContext, type RawRecordInput, type RawRecordLike } from '@rareindex/connectors'; | |
| 3 | +import { AssetAttributesSchema, NormalizedAuctionLotSchema, NormalizedSaleSchema, extractYear, parseSourceDate, type NormalizedRecord } from '@rareindex/shared'; | |
| 4 | + | |
| 5 | +/** | |
| 6 | + * Artcurial sale results. One raw record per sale (compact lot list parsed from the rendered | |
| 7 | + * markdown); normalise → one sale per sold lot (EUR) and one auction_lot for unsold lots. | |
| 8 | + */ | |
| 9 | + | |
| 10 | +const BASE = 'https://www.artcurial.com'; | |
| 11 | +const PARSER_VERSION = '1.0.0'; | |
| 12 | + | |
| 13 | +export const SaleRefSchema = z.object({ number: z.string(), title: z.string(), subtitle: z.string().nullable(), date: z.string().nullable(), location: z.string().nullable(), url: z.string(), online: z.boolean() }); | |
| 14 | +export type SaleRef = z.infer<typeof SaleRefSchema>; | |
| 15 | +export const LotSchema = z.object({ lotNo: z.string(), title: z.string(), subtitle: z.string().nullable(), estimateLow: z.number().nullable(), estimateHigh: z.number().nullable(), sold: z.number().nullable(), url: z.string(), image: z.string().nullable() }); | |
| 16 | +export const SalePayloadSchema = z.object({ kind: z.literal('sale_results'), url: z.string(), sale: SaleRefSchema, lotCount: z.number().nullable(), lots: z.array(LotSchema) }); | |
| 17 | +export type SalePayload = z.infer<typeof SalePayloadSchema>; | |
| 18 | + | |
| 19 | +function lines(block: string): string[] { | |
| 20 | + return block | |
| 21 | + .split(/\\\\\n|\n/) | |
| 22 | + .map((l) => l.replace(/\\$/g, '').replace(/\\\|/g, '|').trim()) | |
| 23 | + .filter((l) => l && l !== '\\' && l !== '|' && !l.startsWith('- ')); | |
| 24 | +} | |
| 25 | + | |
| 26 | +/** Find markdown link blocks "[...](url)" whose URL matches `urlRe`, handling nested image brackets. */ | |
| 27 | +export function linkBlocks(md: string, urlRe: RegExp): Array<{ text: string; url: string }> { | |
| 28 | + const out: Array<{ text: string; url: string }> = []; | |
| 29 | + const re = new RegExp(`\\]\\((${urlRe.source})\\)`, 'g'); | |
| 30 | + let m: RegExpExecArray | null; | |
| 31 | + while ((m = re.exec(md))) { | |
| 32 | + const end = m.index; | |
| 33 | + let depth = 0; | |
| 34 | + let start = -1; | |
| 35 | + for (let i = end - 1; i >= 0; i--) { | |
| 36 | + const ch = md[i]; | |
| 37 | + if (ch === ']') depth++; | |
| 38 | + else if (ch === '[') { | |
| 39 | + if (depth === 0) { | |
| 40 | + start = i; | |
| 41 | + break; | |
| 42 | + } | |
| 43 | + depth--; | |
| 44 | + } | |
| 45 | + } | |
| 46 | + if (start < 0) continue; | |
| 47 | + out.push({ text: md.slice(start + 1, end), url: m[1]! }); | |
| 48 | + } | |
| 49 | + return out; | |
| 50 | +} | |
| 51 | + | |
| 52 | +/** Parse the results index: blocks ending in (https://www.artcurial.com/en/sales/<n>). */ | |
| 53 | +export function parseResultsIndex(md: string): SaleRef[] { | |
| 54 | + const out: SaleRef[] = []; | |
| 55 | + const seen = new Set<string>(); | |
| 56 | + for (const b of linkBlocks(md, /https:\/\/www\.artcurial\.com\/en\/sales\/[A-Za-z0-9-]+/)) { | |
| 57 | + const number = b.url.replace(/.*\/sales\//, ''); | |
| 58 | + if (seen.has(number)) continue; | |
| 59 | + const ls = lines(b.text).filter((l) => !l.startsWith('![')); | |
| 60 | + const dateIdx = ls.findIndex((l) => /^[A-Z][a-z]{2} \d{1,2}, \d{4}$/.test(l)); | |
| 61 | + if (dateIdx < 0) continue; | |
| 62 | + const date = parseSourceDate(ls[dateIdx]!); | |
| 63 | + const numIdx = ls.findIndex((l, i) => i > dateIdx && l.replace(/\s/g, '') === number.replace(/\s/g, '')); | |
| 64 | + const title = ls[numIdx + 1] ?? ls[dateIdx + 2] ?? number; | |
| 65 | + const subtitle = ls[numIdx + 2] && !/^\d{1,2}:\d{2}|Online Only|Sessions/i.test(ls[numIdx + 2]!) ? ls[numIdx + 2]! : null; | |
| 66 | + const online = ls.some((l) => /online only/i.test(l)); | |
| 67 | + const location = ls.find((l) => /Artcurial, |Hôtel|Monte-Carlo|Paris|Marrakech/i.test(l)) ?? (online ? 'Online' : null); | |
| 68 | + seen.add(number); | |
| 69 | + out.push({ number, title, subtitle, date: date ? date.toISOString() : null, location, url: b.url, online }); | |
| 70 | + } | |
| 71 | + return out; | |
| 72 | +} | |
| 73 | + | |
| 74 | +function eur(s: string | undefined): number | null { | |
| 75 | + if (!s) return null; | |
| 76 | + const n = Number(s.replace(/[^\d.]/g, '')); | |
| 77 | + return Number.isFinite(n) && n > 0 ? n : null; | |
| 78 | +} | |
| 79 | + | |
| 80 | +/** Parse a sale page: lot blocks "[1\\ \\ Title\\ Sub\\ Estimate: €300 - 500\\ Sold€1,589](lot url)". */ | |
| 81 | +export function parseSalePage(md: string, saleNumber: string): { lotCount: number | null; lots: z.infer<typeof LotSchema>[] } { | |
| 82 | + const lotCount = Number(md.match(/All Lots \((\d+)\)/)?.[1]) || null; | |
| 83 | + const lots: z.infer<typeof LotSchema>[] = []; | |
| 84 | + const esc = saleNumber.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&'); | |
| 85 | + for (const b of linkBlocks(md, new RegExp(`https://www\\.artcurial\\.com/en/sales/${esc}/lots/[^)\\s]+`))) { | |
| 86 | + const image = b.text.match(/!\[[^\]]*\]\(([^)\s]+)/)?.[1] ?? null; | |
| 87 | + const ls = lines(b.text).filter((l) => !l.startsWith('![')); | |
| 88 | + const lotNo = ls[0] && /^\d{1,4}[A-Za-z]?$/.test(ls[0]) ? ls[0] : null; | |
| 89 | + if (!lotNo) continue; | |
| 90 | + const estLine = ls.find((l) => /^Estimate/i.test(l)) ?? ''; | |
| 91 | + const est = estLine.match(/€\s?([\d,.]+)\s*-\s*€?\s?([\d,.]+)/); | |
| 92 | + const soldLine = ls.find((l) => /^Sold/i.test(l)); | |
| 93 | + const sold = eur(soldLine?.match(/€\s?([\d,.]+)/)?.[1]); | |
| 94 | + const body = ls.slice(1).filter((l) => !/^(Estimate|Sold|No reserve)/i.test(l)); | |
| 95 | + const title = body[0] ?? null; | |
| 96 | + if (!title) continue; | |
| 97 | + lots.push({ lotNo, title, subtitle: body[1] ?? null, estimateLow: eur(est?.[1]), estimateHigh: eur(est?.[2]), sold, url: b.url, image }); | |
| 98 | + } | |
| 99 | + return { lotCount, lots }; | |
| 100 | +} | |
| 101 | + | |
| 102 | +const SALE_CATEGORY: Array<[RegExp, string]> = [ | |
| 103 | + [/horlogerie|watches|montres/i, 'other_watches'], | |
| 104 | + [/hermès|hermes|luxury bags|sacs|handbags|vuitton|chanel/i, 'luxury_handbags'], | |
| 105 | + [/joaillerie|bijoux|jewel/i, 'jewelry'], | |
| 106 | + [/vins|wine|spiritueux|spirits|whisky/i, 'wine'], | |
| 107 | + [/bande dessinée|bandes dessinées|comics|bd\b/i, 'comics'], | |
| 108 | + [/photograph/i, 'photography'], | |
| 109 | + [/design/i, 'design_furniture'], | |
| 110 | + [/livres|books|manuscrits|manuscripts/i, 'books'], | |
| 111 | + [/automobiles|motorcars|le mans|voitures|racing|automobilia/i, 'automobiles'], | |
| 112 | + [/contemporain|contemporary|urban art|street art|post-war|impressionniste|moderne|modern/i, 'contemporary_art'], | |
| 113 | + [/mobilier|furniture|arts décoratifs|decorative|tableaux anciens|old master|asian|asiatique|antiquités|antiquities|orientalist|souvenirs historiques/i, 'antiques'], | |
| 114 | +]; | |
| 115 | +export function categoryForSale(title: string): string { | |
| 116 | + return SALE_CATEGORY.find(([re]) => re.test(title))?.[1] ?? 'art'; | |
| 117 | +} | |
| 118 | +const LOT_CATEGORY: Array<[RegExp, string]> = [ | |
| 119 | + [/\b(poster|affiche|programme|photograph|helmet|casque|trophy|trophée|book|livre|drawing|dessin|sign|plaque|model|maquette|miniature)s?\b/i, 'automotive_memorabilia'], | |
| 120 | + [/rolex|patek|omega|wristwatch|montre/i, 'other_watches'], | |
| 121 | +]; | |
| 122 | +export function categoryForLot(base: string, title: string): string { | |
| 123 | + if (base !== 'automobiles') return base; | |
| 124 | + return LOT_CATEGORY.find(([re]) => re.test(title))?.[1] ?? base; | |
| 125 | +} | |
| 126 | + | |
| 127 | +export class ArtcurialConnector extends BaseConnector { | |
| 128 | + readonly version = '1.0.0'; | |
| 129 | + readonly parserVersion = PARSER_VERSION; | |
| 130 | + protected override minIntervalMs = 3000; | |
| 131 | + | |
| 132 | + async *crawl(ctx: CrawlContext): AsyncIterable<RawRecordInput> { | |
| 133 | + const resultsUrl = String(this.meta.config.resultsUrl ?? `${BASE}/en/results-auctions-sales`); | |
| 134 | + const perRun = Number(this.meta.config.salesPerRun ?? 3); | |
| 135 | + const cursor = (ctx.options.cursor ?? {}) as { done?: string[] }; | |
| 136 | + const done = new Set<string>(cursor.done ?? []); | |
| 137 | + const idx = await ctx.fetch(resultsUrl, { engines: ['firecrawl', 'scrapfly'], waitForMs: 5000, timeoutMs: 90_000, minQuality: 0 }); | |
| 138 | + if (!idx.success || !idx.markdown) { | |
| 139 | + ctx.anomaly('results_index_failed', idx.error ?? String(idx.httpStatus)); | |
| 140 | + return; | |
| 141 | + } | |
| 142 | + const sales = parseResultsIndex(idx.markdown).filter((s) => !s.date || new Date(s.date).getTime() <= Date.now()); | |
| 143 | + sales.sort((a, b) => (b.date ?? '').localeCompare(a.date ?? '')); | |
| 144 | + let fetched = 0; | |
| 145 | + let count = 0; | |
| 146 | + for (const sale of sales) { | |
| 147 | + if (ctx.signal?.aborted || this.reached(ctx, count) || fetched >= perRun) break; | |
| 148 | + if (done.has(sale.number) && ctx.options.mode !== 'backfill') continue; | |
| 149 | + await this.throttle(); | |
| 150 | + fetched++; | |
| 151 | + const res = await ctx.fetch(sale.url, { | |
| 152 | + engines: ['firecrawl', 'scrapfly'], | |
| 153 | + waitForMs: 5000, | |
| 154 | + timeoutMs: 90_000, | |
| 155 | + expect: ['title', 'price', 'currency'], | |
| 156 | + parse: (r) => { | |
| 157 | + const p = r.markdown ? parseSalePage(r.markdown, sale.number) : null; | |
| 158 | + const sold = p?.lots.find((l) => l.sold); | |
| 159 | + return p?.lots.length ? { title: p.lots[0]!.title, price: sold?.sold ?? null, currency: sold ? 'EUR' : null } : null; | |
| 160 | + }, | |
| 161 | + }); | |
| 162 | + const parsed = res.success && res.markdown ? parseSalePage(res.markdown, sale.number) : null; | |
| 163 | + if (!parsed || parsed.lots.length === 0) { | |
| 164 | + ctx.anomaly('sale_parse_failed', `${sale.number}: ${res.error ?? res.httpStatus}`); | |
| 165 | + continue; | |
| 166 | + } | |
| 167 | + if (parsed.lotCount && parsed.lots.length < parsed.lotCount * 0.5) ctx.anomaly('partial_lot_list', `${sale.number}: ${parsed.lots.length}/${parsed.lotCount}`); | |
| 168 | + const payload: SalePayload = { kind: 'sale_results', url: sale.url, sale, lotCount: parsed.lotCount, lots: parsed.lots }; | |
| 169 | + count++; | |
| 170 | + done.add(sale.number); | |
| 171 | + await ctx.setCursor({ done: [...done].slice(-400) }); | |
| 172 | + yield { url: sale.url, externalId: sale.number, kind: 'sale', engine: res.engine, httpStatus: res.httpStatus, payload, fetchedAt: res.fetchedAt }; | |
| 173 | + } | |
| 174 | + } | |
| 175 | + | |
| 176 | + async normalize(raw: RawRecordLike): Promise<NormalizedRecord[]> { | |
| 177 | + const p = SalePayloadSchema.parse(raw.payload); | |
| 178 | + const saleDate = p.sale.date ? new Date(p.sale.date) : null; | |
| 179 | + const base = categoryForSale(`${p.sale.title} ${p.sale.subtitle ?? ''}`); | |
| 180 | + const out: NormalizedRecord[] = []; | |
| 181 | + for (const lot of p.lots) { | |
| 182 | + const text = `${lot.title} ${lot.subtitle ?? ''}`; | |
| 183 | + const attributes = AssetAttributesSchema.parse({ | |
| 184 | + categorySlug: categoryForLot(base, text), | |
| 185 | + name: lot.title, | |
| 186 | + model: lot.subtitle, | |
| 187 | + year: extractYear(text), | |
| 188 | + identifiers: { artcurial_lot: `${p.sale.number}/${lot.lotNo}` }, | |
| 189 | + metadata: { sale_number: p.sale.number, sale_title: p.sale.title, sale_subtitle: p.sale.subtitle, estimate_low: lot.estimateLow, estimate_high: lot.estimateHigh, online_only: p.sale.online }, | |
| 190 | + }); | |
| 191 | + const common = { | |
| 192 | + connectorId: this.meta.id, | |
| 193 | + sourceId: this.meta.sourceId, | |
| 194 | + sourceUrl: lot.url, | |
| 195 | + externalId: `${p.sale.number}:${lot.lotNo}`, | |
| 196 | + rawTitle: lot.subtitle ? `${lot.title} — ${lot.subtitle}` : lot.title, | |
| 197 | + description: null, | |
| 198 | + imageUrls: lot.image ? [lot.image] : [], | |
| 199 | + attributes, | |
| 200 | + grade: { grader: null, grade: null, qualifier: null, certificationNumber: null }, | |
| 201 | + condition: { condition: null, conditionRaw: null, completeness: null }, | |
| 202 | + observedAt: raw.fetchedAt, | |
| 203 | + confidence: 0.88, | |
| 204 | + parserVersion: PARSER_VERSION, | |
| 205 | + }; | |
| 206 | + if (lot.sold && saleDate) { | |
| 207 | + out.push(NormalizedSaleSchema.parse({ kind: 'sale', ...common, saleType: 'auction', saleDate, price: lot.sold, currency: 'EUR', buyerPremiumIncluded: null, quantity: 1, isBundle: /\b(lot of|ensemble de|set of|\d+\s+(pieces|pièces))\b/i.test(text), location: p.sale.location, auctionHouse: 'Artcurial', lotNumber: lot.lotNo })); | |
| 208 | + } else { | |
| 209 | + out.push(NormalizedAuctionLotSchema.parse({ kind: 'auction_lot', ...common, auctionHouse: 'Artcurial', auctionName: p.sale.title, lotNumber: lot.lotNo, startsAt: saleDate, endsAt: saleDate, estimateLow: lot.estimateLow, estimateHigh: lot.estimateHigh, currentBid: null, currency: 'EUR', status: saleDate && saleDate.getTime() < Date.now() ? 'ended' : 'unknown', location: p.sale.location })); | |
| 210 | + } | |
| 211 | + } | |
| 212 | + return out; | |
| 213 | + } | |
| 214 | +} | |
| 215 | + | |
| 216 | +export default (meta: ConnectorMeta) => new ArtcurialConnector(meta); | |
added
connectors/firecrawl/artcurial/meta.json
+33 −0
@@ -0,0 +1,33 @@ | ||
| 1 | +{ | |
| 2 | + "id": "artcurial", | |
| 3 | + "displayName": "Artcurial (sale results)", | |
| 4 | + "sourceId": "artcurial", | |
| 5 | + "sourceName": "Artcurial", | |
| 6 | + "sourceType": "auction_house", | |
| 7 | + "sourceUrl": "https://www.artcurial.com", | |
| 8 | + "module": "firecrawl/artcurial", | |
| 9 | + "enginePriority": ["firecrawl", "scrapfly"], | |
| 10 | + "categories": ["art", "contemporary_art", "photography", "design_furniture", "jewelry", "other_watches", "luxury_handbags", "wine", "comics", "books", "automobiles", "automotive_memorabilia", "antiques"], | |
| 11 | + "regions": ["FR", "MC"], | |
| 12 | + "languages": ["en", "fr"], | |
| 13 | + "currency": ["EUR"], | |
| 14 | + "supportsListings": false, | |
| 15 | + "supportsSold": true, | |
| 16 | + "supportsAuctions": true, | |
| 17 | + "supportsImages": true, | |
| 18 | + "supportsCatalog": false, | |
| 19 | + "supportsPopulation": false, | |
| 20 | + "supportsLookup": false, | |
| 21 | + "refreshFrequencyMinutes": 1440, | |
| 22 | + "priority": "medium", | |
| 23 | + "trustScore": 0.9, | |
| 24 | + "attributionRequired": true, | |
| 25 | + "termsUrl": "https://www.artcurial.com/en/conditions-of-sale", | |
| 26 | + "accessNotes": "Paris/Monaco auction house (Nuxt app). The public results index (/en/results-auctions-sales) and each sale page (/en/sales/<n>) are rendered through Firecrawl (JS wait ~5 s, 1 credit each); the sale page lists every lot with lot number, title, sub-title, estimate and 'Sold €X' plus the public lot URL. robots.txt disallows press, tracking and /motorcars paths only (car sales are listed under /en/sales/<n>, which is allowed). Artcurial does not state on the results list whether the published price includes buyer's premium, so buyer_premium_included is left null (unknown, never assumed). Sale date = the sale date on the results index. 3 s politeness delay; salesPerRun caps each run.", | |
| 27 | + "enabled": true, | |
| 28 | + "schemaVersion": "1.0", | |
| 29 | + "config": { | |
| 30 | + "resultsUrl": "https://www.artcurial.com/en/results-auctions-sales", | |
| 31 | + "salesPerRun": 3 | |
| 32 | + } | |
| 33 | +} | |
added
connectors/firecrawl/phillips-art/_smoke.ts
+20 −0
@@ -0,0 +1,20 @@ | ||
| 1 | +import { createRouter, createCrawlContext, ConnectorMetaSchema } from '@rareindex/connectors'; | |
| 2 | +import { saveFixture } from '@rareindex/connectors/testing'; | |
| 3 | +import metaJson from './meta.json' with { type: 'json' }; | |
| 4 | +import createConnector from './index.js'; | |
| 5 | + | |
| 6 | +const save = process.argv.includes('--save'); | |
| 7 | +const meta = ConnectorMetaSchema.parse(metaJson); | |
| 8 | +const connector = createConnector(meta); | |
| 9 | +const router = createRouter({ firecrawlApiKey: process.env.FIRECRAWL_API_KEY, scrapflyApiKey: process.env.SCRAPFLY_API_KEY }); | |
| 10 | +const ctx = createCrawlContext({ router, meta, options: { mode: 'probe', limit: 2 } }); | |
| 11 | +let i = 0; | |
| 12 | +for await (const raw of connector.crawl(ctx)) { | |
| 13 | + const out = await connector.normalize({ ...raw, externalId: raw.externalId ?? null, fetchedAt: raw.fetchedAt ?? new Date() }); | |
| 14 | + const sales = out.filter((r) => r.kind === 'sale'); | |
| 15 | + console.log(`raw ${raw.externalId} (${raw.engine}) → ${out.length} records, ${sales.length} sales`); | |
| 16 | + for (const r of sales.slice(0, 3)) console.log(' ', JSON.stringify(r).slice(0, 420)); | |
| 17 | + if (save && i < 2 && sales.length) saveFixture(meta.id, `sale-${raw.externalId}`, { raw: { url: raw.url, externalId: raw.externalId ?? null, kind: raw.kind, engine: raw.engine, fetchedAt: raw.fetchedAt ?? new Date(), payload: raw.payload }, expect: { minCount: 10, kinds: ['sale', 'auction_lot'], requiredFields: ['attributes.brand', 'rawTitle'] }, note: 'Captured live via Firecrawl from phillips.com' }); | |
| 18 | + i++; | |
| 19 | +} | |
| 20 | +console.log('engineStats', ctx.engineStats, 'anomalies', ctx.anomalies); | |
added
connectors/firecrawl/phillips-art/index.test.ts
+31 −0
@@ -0,0 +1,31 @@ | ||
| 1 | +import { describe, expect, it } from 'vitest'; | |
| 2 | +import { ConnectorMetaSchema } from '@rareindex/connectors'; | |
| 3 | +import { listFixtures, loadFixture, runFixtureSuite } from '@rareindex/connectors/testing'; | |
| 4 | +import metaJson from './meta.json' with { type: 'json' }; | |
| 5 | +import createConnector, { categoryForLot } from './index.js'; | |
| 6 | + | |
| 7 | +const connector = createConnector(ConnectorMetaSchema.parse(metaJson)); | |
| 8 | + | |
| 9 | +describe('phillips-art', () => { | |
| 10 | + runFixtureSuite(connector, it, expect); | |
| 11 | + | |
| 12 | + it('emits premium-inclusive sales with artist as brand', async () => { | |
| 13 | + const name = listFixtures('phillips-art')[0]!; | |
| 14 | + const out = await connector.normalize(loadFixture('phillips-art', name).raw); | |
| 15 | + const sales = out.filter((r) => r.kind === 'sale'); | |
| 16 | + expect(sales.length).toBeGreaterThan(5); | |
| 17 | + for (const r of sales) { | |
| 18 | + if (r.kind !== 'sale') continue; | |
| 19 | + expect(r.buyerPremiumIncluded).toBe(true); | |
| 20 | + expect(r.auctionHouse).toBe('Phillips'); | |
| 21 | + expect(r.attributes.brand).toBeTruthy(); | |
| 22 | + expect(['art', 'contemporary_art', 'photography', 'design_furniture', 'jewelry', 'luxury_handbags', 'other_watches']).toContain(r.attributes.categorySlug); | |
| 23 | + } | |
| 24 | + }); | |
| 25 | + | |
| 26 | + it('refines lot categories', () => { | |
| 27 | + expect(categoryForLot('contemporary_art', 'Gelatin silver print, 1975')).toBe('photography'); | |
| 28 | + expect(categoryForLot('design_furniture', 'Pair of "Lounge" chairs')).toBe('design_furniture'); | |
| 29 | + expect(categoryForLot('contemporary_art', 'Untitled, screenprint')).toBe('contemporary_art'); | |
| 30 | + }); | |
| 31 | +}); | |
added
connectors/firecrawl/phillips-art/index.ts
+153 −0
@@ -0,0 +1,153 @@ | ||
| 1 | +import { z } from 'zod'; | |
| 2 | +import { BaseConnector, type ConnectorMeta, type CrawlContext, type RawRecordInput, type RawRecordLike } from '@rareindex/connectors'; | |
| 3 | +import { AssetAttributesSchema, NormalizedAuctionLotSchema, NormalizedSaleSchema, extractYear, type NormalizedRecord } from '@rareindex/shared'; | |
| 4 | +import { parseLots, parsePastSales, SalePayloadSchema, type PastSale, type SalePayload } from '../phillips-watches/index.js'; | |
| 5 | + | |
| 6 | +/** | |
| 7 | + * Phillips art-side departments (Editions, Design, 20th Century & Contemporary Art, Photographs, | |
| 8 | + * Jewels, Handbags). Reuses the phillips-watches page parsers; normalisation maps each lot to an | |
| 9 | + * art/design/photography/jewelry/handbag sale with artist/maker as `brand`. | |
| 10 | + */ | |
| 11 | + | |
| 12 | +const PARSER_VERSION = '1.0.0'; | |
| 13 | +const DeptSchema = z.object({ filter: z.string(), category: z.string() }); | |
| 14 | + | |
| 15 | +export const ArtSalePayloadSchema = SalePayloadSchema.extend({ department: DeptSchema }); | |
| 16 | +export type ArtSalePayload = z.infer<typeof ArtSalePayloadSchema>; | |
| 17 | + | |
| 18 | +const LOT_CATEGORY: Array<[RegExp, string]> = [ | |
| 19 | + [/photograph|gelatin silver|c-print|chromogenic|dye transfer|platinum print/i, 'photography'], | |
| 20 | + [/wristwatch|rolex|patek|audemars/i, 'other_watches'], | |
| 21 | + [/hermès|hermes|chanel|louis vuitton|birkin|kelly bag/i, 'luxury_handbags'], | |
| 22 | + [/ring|necklace|bracelet|brooch|earrings|diamond|sapphire|emerald|ruby/i, 'jewelry'], | |
| 23 | + [/chair|table|lamp|cabinet|sofa|desk|stool|vase|bench|sideboard|chandelier/i, 'design_furniture'], | |
| 24 | +]; | |
| 25 | + | |
| 26 | +export function categoryForLot(base: string, text: string): string { | |
| 27 | + return LOT_CATEGORY.find(([re]) => re.test(text))?.[1] ?? base; | |
| 28 | +} | |
| 29 | + | |
| 30 | +export class PhillipsArtConnector extends BaseConnector { | |
| 31 | + readonly version = '1.0.0'; | |
| 32 | + readonly parserVersion = PARSER_VERSION; | |
| 33 | + protected override minIntervalMs = 3000; | |
| 34 | + | |
| 35 | + async *crawl(ctx: CrawlContext): AsyncIterable<RawRecordInput> { | |
| 36 | + const pastUrl = String(this.meta.config.pastAuctionsUrl ?? 'https://www.phillips.com/auctions/past'); | |
| 37 | + const perRun = Number(this.meta.config.salesPerRun ?? 4); | |
| 38 | + const departments = z.array(DeptSchema).parse(this.meta.config.departments ?? []); | |
| 39 | + const cursor = ctx.options.cursor ?? {}; | |
| 40 | + const done = new Set<string>((cursor.doneSales as string[] | undefined) ?? []); | |
| 41 | + const list = await ctx.fetch(pastUrl, { engines: ['api'], responseType: 'text', minQuality: 0, timeoutMs: 60_000 }); | |
| 42 | + if (!list.success || !list.html) { | |
| 43 | + ctx.anomaly('past_list_failed', list.error ?? String(list.httpStatus)); | |
| 44 | + return; | |
| 45 | + } | |
| 46 | + const candidates: Array<{ sale: PastSale; department: z.infer<typeof DeptSchema> }> = []; | |
| 47 | + const seen = new Set<string>(); | |
| 48 | + for (const department of departments) { | |
| 49 | + if (ctx.options.categories?.length && !ctx.options.categories.includes(department.category)) continue; | |
| 50 | + for (const sale of parsePastSales(list.html, department.filter)) { | |
| 51 | + if (seen.has(sale.saleNumber) || /watch/i.test(sale.title)) continue; | |
| 52 | + if (sale.endDate && new Date(sale.endDate).getTime() > Date.now()) continue; | |
| 53 | + seen.add(sale.saleNumber); | |
| 54 | + candidates.push({ sale, department }); | |
| 55 | + } | |
| 56 | + } | |
| 57 | + candidates.sort((a, b) => (b.sale.endDate ?? '').localeCompare(a.sale.endDate ?? '')); | |
| 58 | + let count = 0; | |
| 59 | + let fetched = 0; | |
| 60 | + for (const { sale, department } of candidates) { | |
| 61 | + if (ctx.signal?.aborted || this.reached(ctx, count) || fetched >= perRun) break; | |
| 62 | + if (done.has(sale.saleNumber) && ctx.options.mode !== 'backfill') continue; | |
| 63 | + const url = `https://www.phillips.com/auction/${sale.saleNumber}`; | |
| 64 | + await this.throttle(); | |
| 65 | + fetched++; | |
| 66 | + const res = await ctx.fetch(url, { | |
| 67 | + waitForMs: 6000, | |
| 68 | + timeoutMs: 90_000, | |
| 69 | + expect: ['title', 'price', 'currency'], | |
| 70 | + parse: (r) => { | |
| 71 | + const lots = parseLots(r.markdown ?? ''); | |
| 72 | + const sold = lots.find((l) => l.soldFor); | |
| 73 | + return { title: lots[0]?.maker ?? null, price: sold?.soldFor ?? null, currency: sold?.currency ?? null }; | |
| 74 | + }, | |
| 75 | + }); | |
| 76 | + if (!res.success || !res.markdown) { | |
| 77 | + ctx.anomaly('sale_fetch_failed', `${sale.saleNumber}: ${res.error ?? res.httpStatus}`); | |
| 78 | + continue; | |
| 79 | + } | |
| 80 | + const md = res.markdown; | |
| 81 | + const lotCount = Number(md.match(/##\s+(\d+)\s+Lots/)?.[1]) || null; | |
| 82 | + const concluded = md.match(/Concluded\s*([A-Z][a-z]{2}\s+\d{1,2}\s+\d{4})/)?.[1] ?? null; | |
| 83 | + const lotsStart = md.indexOf('## '); | |
| 84 | + const payload: ArtSalePayload = { | |
| 85 | + kind: 'auction_results', | |
| 86 | + url, | |
| 87 | + saleNumber: sale.saleNumber, | |
| 88 | + title: sale.title || md.match(/^#\s+(.+)$/m)?.[1] || sale.saleNumber, | |
| 89 | + location: sale.location ?? md.match(/\n(Geneva|New York|Hong Kong|London|Paris)\n/)?.[1] ?? null, | |
| 90 | + startDate: sale.startDate, | |
| 91 | + endDate: sale.endDate ?? (concluded ? new Date(`${concluded} UTC`).toISOString() : null), | |
| 92 | + lotCount, | |
| 93 | + markdown: md.slice(lotsStart >= 0 ? lotsStart : 0), | |
| 94 | + department, | |
| 95 | + }; | |
| 96 | + const parsed = parseLots(payload.markdown); | |
| 97 | + if (parsed.length === 0) { | |
| 98 | + ctx.anomaly('parse_failure_lots', sale.saleNumber); | |
| 99 | + continue; | |
| 100 | + } | |
| 101 | + if (lotCount && parsed.length < lotCount * 0.5) ctx.anomaly('partial_lot_list', `${sale.saleNumber}: ${parsed.length}/${lotCount}`); | |
| 102 | + count++; | |
| 103 | + done.add(sale.saleNumber); | |
| 104 | + await ctx.setCursor({ doneSales: [...done].slice(-500), updatedAt: new Date().toISOString() }); | |
| 105 | + yield { url, externalId: sale.saleNumber, kind: 'sale', engine: res.engine, httpStatus: res.httpStatus, payload, fetchedAt: res.fetchedAt }; | |
| 106 | + } | |
| 107 | + } | |
| 108 | + | |
| 109 | + async normalize(raw: RawRecordLike): Promise<NormalizedRecord[]> { | |
| 110 | + const p = ArtSalePayloadSchema.parse(raw.payload) as ArtSalePayload & SalePayload; | |
| 111 | + const lots = parseLots(p.markdown); | |
| 112 | + const saleDate = p.endDate ? new Date(p.endDate) : null; | |
| 113 | + const out: NormalizedRecord[] = []; | |
| 114 | + for (const lot of lots) { | |
| 115 | + // For art lots the "maker" line is the artist; "model" holds the work title; "reference" rarely applies. | |
| 116 | + const artist = lot.maker; | |
| 117 | + const work = lot.model ?? lot.reference ?? null; | |
| 118 | + const text = lot.lines.join(' '); | |
| 119 | + const attributes = AssetAttributesSchema.parse({ | |
| 120 | + categorySlug: categoryForLot(p.department.category, text), | |
| 121 | + brand: artist, | |
| 122 | + name: work ? `${artist} — ${work}` : artist, | |
| 123 | + model: work, | |
| 124 | + year: extractYear(text.replace(/\b(19|20)\d{2}\s*[–-]\s*(19|20)\d{2}\b/g, '')), | |
| 125 | + identifiers: { phillips_lot: lot.url.replace(/.*\/detail\//, '') }, | |
| 126 | + metadata: { sale_number: p.saleNumber, sale_title: p.title, department: p.department.filter, estimate_low: lot.estimateLow, estimate_high: lot.estimateHigh, no_reserve: lot.noReserve, lot_lines: lot.lines.slice(0, 6) }, | |
| 127 | + }); | |
| 128 | + const base = { | |
| 129 | + connectorId: this.meta.id, | |
| 130 | + sourceId: this.meta.sourceId, | |
| 131 | + sourceUrl: lot.url, | |
| 132 | + externalId: `${p.saleNumber}:${lot.lotNumber ?? lot.url}`, | |
| 133 | + rawTitle: work ? `${artist} · ${work}` : artist, | |
| 134 | + description: null, | |
| 135 | + imageUrls: lot.image ? [lot.image] : [], | |
| 136 | + attributes, | |
| 137 | + grade: { grader: null, grade: null, qualifier: null, certificationNumber: null }, | |
| 138 | + condition: { condition: null, conditionRaw: null, completeness: null }, | |
| 139 | + observedAt: raw.fetchedAt, | |
| 140 | + confidence: 0.9, | |
| 141 | + parserVersion: PARSER_VERSION, | |
| 142 | + }; | |
| 143 | + if (lot.soldFor && lot.currency && saleDate) { | |
| 144 | + out.push(NormalizedSaleSchema.parse({ kind: 'sale', ...base, saleType: 'auction', saleDate, price: lot.soldFor, currency: lot.currency, buyerPremiumIncluded: true, quantity: 1, isBundle: false, location: p.location, auctionHouse: 'Phillips', lotNumber: lot.lotNumber })); | |
| 145 | + } else { | |
| 146 | + out.push(NormalizedAuctionLotSchema.parse({ kind: 'auction_lot', ...base, auctionHouse: 'Phillips', auctionName: p.title, lotNumber: lot.lotNumber, startsAt: p.startDate ? new Date(p.startDate) : null, endsAt: saleDate, estimateLow: lot.estimateLow, estimateHigh: lot.estimateHigh, currentBid: null, currency: lot.currency, status: saleDate && saleDate.getTime() < Date.now() ? 'ended' : 'unknown', location: p.location })); | |
| 147 | + } | |
| 148 | + } | |
| 149 | + return out; | |
| 150 | + } | |
| 151 | +} | |
| 152 | + | |
| 153 | +export default (meta: ConnectorMeta) => new PhillipsArtConnector(meta); | |
added
connectors/firecrawl/phillips-art/meta.json
+41 −0
@@ -0,0 +1,41 @@ | ||
| 1 | +{ | |
| 2 | + "id": "phillips-art", | |
| 3 | + "displayName": "Phillips Art, Editions, Design & Photographs (auction results)", | |
| 4 | + "sourceId": "phillips", | |
| 5 | + "sourceName": "Phillips", | |
| 6 | + "sourceType": "auction_house", | |
| 7 | + "sourceUrl": "https://www.phillips.com", | |
| 8 | + "module": "firecrawl/phillips-art", | |
| 9 | + "enginePriority": ["firecrawl", "scrapfly"], | |
| 10 | + "categories": ["art", "contemporary_art", "photography", "design_furniture", "jewelry", "luxury_handbags"], | |
| 11 | + "regions": ["US", "GB", "HK", "CH"], | |
| 12 | + "languages": ["en"], | |
| 13 | + "currency": ["USD", "GBP", "HKD", "CHF", "EUR"], | |
| 14 | + "supportsListings": false, | |
| 15 | + "supportsSold": true, | |
| 16 | + "supportsAuctions": true, | |
| 17 | + "supportsImages": true, | |
| 18 | + "supportsCatalog": false, | |
| 19 | + "supportsPopulation": false, | |
| 20 | + "supportsLookup": false, | |
| 21 | + "refreshFrequencyMinutes": 10080, | |
| 22 | + "priority": "medium", | |
| 23 | + "trustScore": 0.95, | |
| 24 | + "attributionRequired": true, | |
| 25 | + "termsUrl": "https://www.phillips.com/about/terms", | |
| 26 | + "accessNotes": "Same public mechanism as phillips-watches (past-sales JSON on /auctions/past over plain HTTPS, then one Firecrawl render per sale page, 1 credit) applied to the Editions, Design, 20th Century & Contemporary Art, Photographs, Jewels and Handbags departments. Prices realised are published by Phillips including buyer's premium (buyer_premium_included=true). Sale date = sale end date. robots.txt disallows only /search and filter paths; no login, no bidder data. 3 s politeness delay; salesPerRun caps each run.", | |
| 27 | + "enabled": true, | |
| 28 | + "schemaVersion": "1.0", | |
| 29 | + "config": { | |
| 30 | + "pastAuctionsUrl": "https://www.phillips.com/auctions/past", | |
| 31 | + "salesPerRun": 4, | |
| 32 | + "departments": [ | |
| 33 | + { "filter": "editions", "category": "contemporary_art" }, | |
| 34 | + { "filter": "design", "category": "design_furniture" }, | |
| 35 | + { "filter": "photograph", "category": "photography" }, | |
| 36 | + { "filter": "contemporary art", "category": "contemporary_art" }, | |
| 37 | + { "filter": "jewels", "category": "jewelry" }, | |
| 38 | + { "filter": "handbags", "category": "luxury_handbags" } | |
| 39 | + ] | |
| 40 | + } | |
| 41 | +} | |
added
data/fixtures/artcurial/sale-6557.json
+2158 −0
@@ -0,0 +1,2158 @@ | ||
| 1 | +{ | |
| 2 | + "raw": { | |
| 3 | + "url": "https://www.artcurial.com/en/sales/6557", | |
| 4 | + "externalId": "6557", | |
| 5 | + "kind": "sale", | |
| 6 | + "engine": "firecrawl", | |
| 7 | + "fetchedAt": "2026-09-07T06:28:50.367Z", | |
| 8 | + "payload": { | |
| 9 | + "kind": "sale_results", | |
| 10 | + "url": "https://www.artcurial.com/en/sales/6557", | |
| 11 | + "sale": { | |
| 12 | + "number": "6557", | |
| 13 | + "title": "L’œil d’un érudit", | |
| 14 | + "subtitle": "Une collection européenne", | |
| 15 | + "date": "2026-07-10T00:00:00.000Z", | |
| 16 | + "location": "Artcurial, Paris", | |
| 17 | + "url": "https://www.artcurial.com/en/sales/6557", | |
| 18 | + "online": false | |
| 19 | + }, | |
| 20 | + "lotCount": 213, | |
| 21 | + "lots": [ | |
| 22 | + { | |
| 23 | + "lotNo": "1", | |
| 24 | + "title": "PORTE-TORCHÈRE DE STYLE NÉO-POMPÉIEN", | |
| 25 | + "subtitle": null, | |
| 26 | + "estimateLow": 1500, | |
| 27 | + "estimateHigh": 2500, | |
| 28 | + "sold": 3861, | |
| 29 | + "url": "https://www.artcurial.com/en/sales/6557/lots/1-a", | |
| 30 | + "image": "https://www.artcurial.com/item-images/8799c221-5f62-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/1.jpg?w=400&force_webp=true" | |
| 31 | + }, | |
| 32 | + { | |
| 33 | + "lotNo": "2", | |
| 34 | + "title": "CONSOLE DEMI-LUNE SUISSE DE LA FIN DE L'ÉPOQUE LOUIS XVI, BERNE", | |
| 35 | + "subtitle": null, | |
| 36 | + "estimateLow": 4000, | |
| 37 | + "estimateHigh": 6000, | |
| 38 | + "sold": 4158, | |
| 39 | + "url": "https://www.artcurial.com/en/sales/6557/lots/2-a", | |
| 40 | + "image": "https://www.artcurial.com/item-images/bdfb1d52-5f62-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/1.jpg?w=400&force_webp=true" | |
| 41 | + }, | |
| 42 | + { | |
| 43 | + "lotNo": "3", | |
| 44 | + "title": "Ecole suisse vers 1700(Entourage d'Albrecht Kauw le Vieux)", | |
| 45 | + "subtitle": "Scène de vendange au bord d'un lac", | |
| 46 | + "estimateLow": 3000, | |
| 47 | + "estimateHigh": 4000, | |
| 48 | + "sold": 3712, | |
| 49 | + "url": "https://www.artcurial.com/en/sales/6557/lots/3-a", | |
| 50 | + "image": "https://www.artcurial.com/item-images/a0433159-5f4b-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/26112717-049%20B%20CADRE_WEB.jpg?w=400&force_webp=true" | |
| 51 | + }, | |
| 52 | + { | |
| 53 | + "lotNo": "4", | |
| 54 | + "title": "PAIRE D'APPLIQUES SUISSES DE LA FIN DU XVIIIe SIÈCLE, BERNE", | |
| 55 | + "subtitle": null, | |
| 56 | + "estimateLow": 400, | |
| 57 | + "estimateHigh": 600, | |
| 58 | + "sold": 1039, | |
| 59 | + "url": "https://www.artcurial.com/en/sales/6557/lots/4-a", | |
| 60 | + "image": "https://www.artcurial.com/item-images/eb865af5-5f62-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/1.jpg?w=400&force_webp=true" | |
| 61 | + }, | |
| 62 | + { | |
| 63 | + "lotNo": "5", | |
| 64 | + "title": "Italie, vers 1500", | |
| 65 | + "subtitle": "Initiale « A »", | |
| 66 | + "estimateLow": 2000, | |
| 67 | + "estimateHigh": 3000, | |
| 68 | + "sold": 2970, | |
| 69 | + "url": "https://www.artcurial.com/en/sales/6557/lots/5-a", | |
| 70 | + "image": "https://www.artcurial.com/item-images/8e0ff12b-5a8d-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-343%20A_WEB.jpg?w=400&force_webp=true" | |
| 71 | + }, | |
| 72 | + { | |
| 73 | + "lotNo": "6", | |
| 74 | + "title": "PAIRE DE GRANDS PIQUE-CIERGES, TRAVAIL ITALIEN DU XVIIIe SIÈCLE", | |
| 75 | + "subtitle": null, | |
| 76 | + "estimateLow": 1200, | |
| 77 | + "estimateHigh": 1800, | |
| 78 | + "sold": 4158, | |
| 79 | + "url": "https://www.artcurial.com/en/sales/6557/lots/6-a", | |
| 80 | + "image": "https://www.artcurial.com/item-images/65c35105-334f-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_443.jpg?w=400&force_webp=true" | |
| 81 | + }, | |
| 82 | + { | |
| 83 | + "lotNo": "7", | |
| 84 | + "title": "GLOBE CÉLESTE DE TABLE ALLEMAND, DATÉ 1730", | |
| 85 | + "subtitle": null, | |
| 86 | + "estimateLow": 800, | |
| 87 | + "estimateHigh": 1200, | |
| 88 | + "sold": 1188, | |
| 89 | + "url": "https://www.artcurial.com/en/sales/6557/lots/7-a", | |
| 90 | + "image": "https://www.artcurial.com/item-images/1739f268-5f63-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/2.jpg?w=400&force_webp=true" | |
| 91 | + }, | |
| 92 | + { | |
| 93 | + "lotNo": "8", | |
| 94 | + "title": "BOÎTE À PERRUQUE D'ÉPOQUE RÉGENCE", | |
| 95 | + "subtitle": null, | |
| 96 | + "estimateLow": 300, | |
| 97 | + "estimateHigh": 500, | |
| 98 | + "sold": 520, | |
| 99 | + "url": "https://www.artcurial.com/en/sales/6557/lots/8-a", | |
| 100 | + "image": "https://www.artcurial.com/item-images/d2b9b2be-34bc-11f1-a009-2939728b572b/PICTURE_CATALOG/26112717_002.jpg?w=400&force_webp=true" | |
| 101 | + }, | |
| 102 | + { | |
| 103 | + "lotNo": "9", | |
| 104 | + "title": "PAIRE DE VASES MONTÉS D'ÉPOQUE RESTAURATION", | |
| 105 | + "subtitle": null, | |
| 106 | + "estimateLow": 1500, | |
| 107 | + "estimateHigh": 2000, | |
| 108 | + "sold": 2524, | |
| 109 | + "url": "https://www.artcurial.com/en/sales/6557/lots/9-a", | |
| 110 | + "image": "https://www.artcurial.com/item-images/2b68b9ba-5f63-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/2.jpg?w=400&force_webp=true" | |
| 111 | + }, | |
| 112 | + { | |
| 113 | + "lotNo": "10", | |
| 114 | + "title": "Pays-Bas, Anvers, attribué à Carel van der Stijnen, vers 1700", | |
| 115 | + "subtitle": null, | |
| 116 | + "estimateLow": 3000, | |
| 117 | + "estimateHigh": 5000, | |
| 118 | + "sold": 6682, | |
| 119 | + "url": "https://www.artcurial.com/en/sales/6557/lots/10-a", | |
| 120 | + "image": "https://www.artcurial.com/item-images/39fd067b-5f63-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/3.jpg?w=400&force_webp=true" | |
| 121 | + }, | |
| 122 | + { | |
| 123 | + "lotNo": "11", | |
| 124 | + "title": "CHEVALET DE PEINTRE, XXe SIÈCLE", | |
| 125 | + "subtitle": null, | |
| 126 | + "estimateLow": 1000, | |
| 127 | + "estimateHigh": 1500, | |
| 128 | + "sold": 3267, | |
| 129 | + "url": "https://www.artcurial.com/en/sales/6557/lots/11-a", | |
| 130 | + "image": "https://www.artcurial.com/item-images/4b583b6c-5f63-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/3.jpg?w=400&force_webp=true" | |
| 131 | + }, | |
| 132 | + { | |
| 133 | + "lotNo": "12", | |
| 134 | + "title": "CARTEL ET SA CONSOLE D'APPLIQUE SUISSE DE LA FIN DU XVIIIe SIÈCLE, BERNE", | |
| 135 | + "subtitle": null, | |
| 136 | + "estimateLow": 700, | |
| 137 | + "estimateHigh": 1000, | |
| 138 | + "sold": 2673, | |
| 139 | + "url": "https://www.artcurial.com/en/sales/6557/lots/12-a", | |
| 140 | + "image": "https://www.artcurial.com/item-images/5b71536d-5f63-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/3.jpg?w=400&force_webp=true" | |
| 141 | + }, | |
| 142 | + { | |
| 143 | + "lotNo": "13", | |
| 144 | + "title": "DEUX PLATS RONDS ET QUATRE ASSIETTES EN PORCELAINE DE CHINE, COMPAGNIE DES INDES, XVIIIe SIÈCLE, PÉRIODE QIANLONG (1735-1796)", | |
| 145 | + "subtitle": null, | |
| 146 | + "estimateLow": 300, | |
| 147 | + "estimateHigh": 500, | |
| 148 | + "sold": 445, | |
| 149 | + "url": "https://www.artcurial.com/en/sales/6557/lots/13-a", | |
| 150 | + "image": "https://www.artcurial.com/item-images/c8f039f3-61b7-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-023_WEB.jpg?w=400&force_webp=true" | |
| 151 | + }, | |
| 152 | + { | |
| 153 | + "lotNo": "14", | |
| 154 | + "title": "Karl HOWALD (Berne, 1796 – Sigriswil, 1869)", | |
| 155 | + "subtitle": "Vue de la cathédrale de Berne", | |
| 156 | + "estimateLow": 800, | |
| 157 | + "estimateHigh": 1200, | |
| 158 | + "sold": 1114, | |
| 159 | + "url": "https://www.artcurial.com/en/sales/6557/lots/14-a", | |
| 160 | + "image": "https://www.artcurial.com/item-images/c5a72f17-5f4b-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/26112717-045%20A_WEB.jpg?w=400&force_webp=true" | |
| 161 | + }, | |
| 162 | + { | |
| 163 | + "lotNo": "15", | |
| 164 | + "title": "TAZZA ITALIENNE D'ÉPOQUE NÉOCLASSIQUE", | |
| 165 | + "subtitle": null, | |
| 166 | + "estimateLow": 6000, | |
| 167 | + "estimateHigh": 8000, | |
| 168 | + "sold": 16333, | |
| 169 | + "url": "https://www.artcurial.com/en/sales/6557/lots/15-a", | |
| 170 | + "image": "https://www.artcurial.com/item-images/913f2135-5f63-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/4.jpg?w=400&force_webp=true" | |
| 171 | + }, | |
| 172 | + { | |
| 173 | + "lotNo": "17", | |
| 174 | + "title": "Albrecht SCHNIDER(born in 1958)", | |
| 175 | + "subtitle": "Sans titre (Portrait I) - 2007", | |
| 176 | + "estimateLow": 7000, | |
| 177 | + "estimateHigh": 10000, | |
| 178 | + "sold": 10394, | |
| 179 | + "url": "https://www.artcurial.com/en/sales/6557/lots/17-a", | |
| 180 | + "image": "https://www.artcurial.com/item-images/6dfd69d7-3f29-11f1-885b-a56624f1cc36/PICTURE_CATALOG/26112717-043_260422.jpg?w=400&force_webp=true" | |
| 181 | + }, | |
| 182 | + { | |
| 183 | + "lotNo": "18", | |
| 184 | + "title": "VASE COUVERT EN PORCELAINE DE BERLIN DE LA FIN DU XVIIIe SIÈCLE, VERS 1790-1795", | |
| 185 | + "subtitle": null, | |
| 186 | + "estimateLow": 6000, | |
| 187 | + "estimateHigh": 8000, | |
| 188 | + "sold": 20788, | |
| 189 | + "url": "https://www.artcurial.com/en/sales/6557/lots/18-a", | |
| 190 | + "image": "https://www.artcurial.com/item-images/b597f078-5f63-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/5.jpg?w=400&force_webp=true" | |
| 191 | + }, | |
| 192 | + { | |
| 193 | + "lotNo": "19", | |
| 194 | + "title": "VASE COUVERT EN PORCELAINE DE BERLIN DE LA FIN DU XVIIIe SIÈCLE, VERS 1790-1795", | |
| 195 | + "subtitle": null, | |
| 196 | + "estimateLow": 6000, | |
| 197 | + "estimateHigh": 8000, | |
| 198 | + "sold": 8909, | |
| 199 | + "url": "https://www.artcurial.com/en/sales/6557/lots/19-a", | |
| 200 | + "image": "https://www.artcurial.com/item-images/0af38609-5f66-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/5.jpg?w=400&force_webp=true" | |
| 201 | + }, | |
| 202 | + { | |
| 203 | + "lotNo": "20", | |
| 204 | + "title": "MAQUETTE DE CHALET, TRAVAIL SUISSE DU XIXe SIÈCLE, DATÉE 1858", | |
| 205 | + "subtitle": null, | |
| 206 | + "estimateLow": 2000, | |
| 207 | + "estimateHigh": 3000, | |
| 208 | + "sold": 7424, | |
| 209 | + "url": "https://www.artcurial.com/en/sales/6557/lots/20-a", | |
| 210 | + "image": "https://www.artcurial.com/item-images/67e5625c-397e-11f1-bef4-f918d58faf87/PICTURE_CATALOG/Suisse-23.02.25-92428%201.jpg?w=400&force_webp=true" | |
| 211 | + }, | |
| 212 | + { | |
| 213 | + "lotNo": "21", | |
| 214 | + "title": "GAINE DE STYLE NÉOCLASSIQUE, XXe SIÈCLE", | |
| 215 | + "subtitle": null, | |
| 216 | + "estimateLow": 700, | |
| 217 | + "estimateHigh": 1000, | |
| 218 | + "sold": 891, | |
| 219 | + "url": "https://www.artcurial.com/en/sales/6557/lots/21-a", | |
| 220 | + "image": "https://www.artcurial.com/item-images/e4f49959-34bc-11f1-a009-2939728b572b/PICTURE_CATALOG/26112717_013.jpg?w=400&force_webp=true" | |
| 221 | + }, | |
| 222 | + { | |
| 223 | + "lotNo": "22", | |
| 224 | + "title": "MIROIR SUISSE DE LA PREMIÈRE MOITIÉ DU XVIIIe SIÈCLE, BERNE", | |
| 225 | + "subtitle": null, | |
| 226 | + "estimateLow": 1500, | |
| 227 | + "estimateHigh": 2000, | |
| 228 | + "sold": 1188, | |
| 229 | + "url": "https://www.artcurial.com/en/sales/6557/lots/22-a", | |
| 230 | + "image": "https://www.artcurial.com/item-images/f498a8bf-38a4-11f1-bef4-f918d58faf87/PICTURE_CATALOG/26112717_213.jpg?w=400&force_webp=true" | |
| 231 | + }, | |
| 232 | + { | |
| 233 | + "lotNo": "23", | |
| 234 | + "title": "PAIRE DE GIRANDOLES SUISSES DU MILIEU DU XVIIIe SIÈCLE, BERNE", | |
| 235 | + "subtitle": null, | |
| 236 | + "estimateLow": 1500, | |
| 237 | + "estimateHigh": 2000, | |
| 238 | + "sold": 4158, | |
| 239 | + "url": "https://www.artcurial.com/en/sales/6557/lots/23-a", | |
| 240 | + "image": "https://www.artcurial.com/item-images/6d819222-38a5-11f1-bef4-f918d58faf87/PICTURE_CATALOG/26112717_386.jpg?w=400&force_webp=true" | |
| 241 | + }, | |
| 242 | + { | |
| 243 | + "lotNo": "24", | |
| 244 | + "title": "TABLE DE SALLE À MANGER DE STYLE LOUIS XVI", | |
| 245 | + "subtitle": null, | |
| 246 | + "estimateLow": 400, | |
| 247 | + "estimateHigh": 600, | |
| 248 | + "sold": 1336, | |
| 249 | + "url": "https://www.artcurial.com/en/sales/6557/lots/24-a", | |
| 250 | + "image": "https://www.artcurial.com/item-images/efc4b22a-34bc-11f1-a009-2939728b572b/PICTURE_CATALOG/26112717_024.jpg?w=400&force_webp=true" | |
| 251 | + }, | |
| 252 | + { | |
| 253 | + "lotNo": "25", | |
| 254 | + "title": "TONDO EN MAJOLIQUE ITALIENNE DU XIXe SIÈCLE DANS LE STYLE DE LA RENAISSANCE", | |
| 255 | + "subtitle": null, | |
| 256 | + "estimateLow": 400, | |
| 257 | + "estimateHigh": 600, | |
| 258 | + "sold": 742, | |
| 259 | + "url": "https://www.artcurial.com/en/sales/6557/lots/25-a", | |
| 260 | + "image": "https://www.artcurial.com/item-images/bd96fed0-5a8d-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-474_WEB.jpg?w=400&force_webp=true" | |
| 261 | + }, | |
| 262 | + { | |
| 263 | + "lotNo": "26", | |
| 264 | + "title": "CARTEL D'APPLIQUE SUISSE DE LA FIN DU XVIIIe SIÈCLE, BERNE, VERS 1780", | |
| 265 | + "subtitle": null, | |
| 266 | + "estimateLow": 800, | |
| 267 | + "estimateHigh": 1200, | |
| 268 | + "sold": 1485, | |
| 269 | + "url": "https://www.artcurial.com/en/sales/6557/lots/26-a", | |
| 270 | + "image": "https://www.artcurial.com/item-images/47fd977d-5f66-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/6.jpg?w=400&force_webp=true" | |
| 271 | + }, | |
| 272 | + { | |
| 273 | + "lotNo": "27", | |
| 274 | + "title": "Albrecht SCHNIDER(born in 1958)", | |
| 275 | + "subtitle": "Sans titre - 2009", | |
| 276 | + "estimateLow": 8000, | |
| 277 | + "estimateHigh": 10000, | |
| 278 | + "sold": 10394, | |
| 279 | + "url": "https://www.artcurial.com/en/sales/6557/lots/27-a", | |
| 280 | + "image": "https://www.artcurial.com/item-images/879a6b9b-3f29-11f1-885b-a56624f1cc36/PICTURE_CATALOG/26112717-044_260422.jpg?w=400&force_webp=true" | |
| 281 | + }, | |
| 282 | + { | |
| 283 | + "lotNo": "28", | |
| 284 | + "title": "SUCRIER ET SON PRÉSENTOIR EN ARGENT DANS LE STYLE DU XVIIIe SIÈCLE", | |
| 285 | + "subtitle": null, | |
| 286 | + "estimateLow": 300, | |
| 287 | + "estimateHigh": 500, | |
| 288 | + "sold": 891, | |
| 289 | + "url": "https://www.artcurial.com/en/sales/6557/lots/28-a", | |
| 290 | + "image": "https://www.artcurial.com/item-images/6169ec52-5f66-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/6.jpg?w=400&force_webp=true" | |
| 291 | + }, | |
| 292 | + { | |
| 293 | + "lotNo": "29", | |
| 294 | + "title": "PAIRE DE FLAMBEAUX ET LEURS BOBÈCHES", | |
| 295 | + "subtitle": null, | |
| 296 | + "estimateLow": 800, | |
| 297 | + "estimateHigh": 1200, | |
| 298 | + "sold": 1188, | |
| 299 | + "url": "https://www.artcurial.com/en/sales/6557/lots/29-a", | |
| 300 | + "image": "https://www.artcurial.com/item-images/6e4899d3-5f66-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/6.jpg?w=400&force_webp=true" | |
| 301 | + }, | |
| 302 | + { | |
| 303 | + "lotNo": "30", | |
| 304 | + "title": "Johann Valentin Sonnenschein (1749-1828), Berne, fin du XVIIIe siècle", | |
| 305 | + "subtitle": null, | |
| 306 | + "estimateLow": 2000, | |
| 307 | + "estimateHigh": 3000, | |
| 308 | + "sold": 7424, | |
| 309 | + "url": "https://www.artcurial.com/en/sales/6557/lots/30-a", | |
| 310 | + "image": "https://www.artcurial.com/item-images/7c938184-5f66-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/6.jpg?w=400&force_webp=true" | |
| 311 | + }, | |
| 312 | + { | |
| 313 | + "lotNo": "31", | |
| 314 | + "title": "PAIRE DE FLAMBEAUX DE STYLE LOUIS XVI", | |
| 315 | + "subtitle": null, | |
| 316 | + "estimateLow": 1500, | |
| 317 | + "estimateHigh": 2000, | |
| 318 | + "sold": 3267, | |
| 319 | + "url": "https://www.artcurial.com/en/sales/6557/lots/31-a", | |
| 320 | + "image": "https://www.artcurial.com/item-images/8f445b66-5f66-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/7.jpg?w=400&force_webp=true" | |
| 321 | + }, | |
| 322 | + { | |
| 323 | + "lotNo": "32", | |
| 324 | + "title": "PAIRE DE GIRANDOLES DE STYLE NÉOCLASSIQUE", | |
| 325 | + "subtitle": null, | |
| 326 | + "estimateLow": 400, | |
| 327 | + "estimateHigh": 600, | |
| 328 | + "sold": 594, | |
| 329 | + "url": "https://www.artcurial.com/en/sales/6557/lots/32-a", | |
| 330 | + "image": "https://www.artcurial.com/item-images/996c2648-5f66-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/7.jpg?w=400&force_webp=true" | |
| 331 | + }, | |
| 332 | + { | |
| 333 | + "lotNo": "33", | |
| 334 | + "title": "COMMODE SUISSE DE LA DEUXIÈME MOITIÉ DU XVIIIe SIÈCLE, BERNE", | |
| 335 | + "subtitle": null, | |
| 336 | + "estimateLow": 5000, | |
| 337 | + "estimateHigh": 8000, | |
| 338 | + "sold": 6682, | |
| 339 | + "url": "https://www.artcurial.com/en/sales/6557/lots/33-a", | |
| 340 | + "image": "https://www.artcurial.com/item-images/a45b38ca-5f66-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/7.jpg?w=400&force_webp=true" | |
| 341 | + }, | |
| 342 | + { | |
| 343 | + "lotNo": "34", | |
| 344 | + "title": "PAIRE D'APPLIQUES D'ÉPOQUE NÉOCLASSIQUE, TRAVAIL PROBABLEMENT SUÉDOIS DE LA FIN DU XVIIIe SIÈCLE", | |
| 345 | + "subtitle": null, | |
| 346 | + "estimateLow": 1500, | |
| 347 | + "estimateHigh": 2500, | |
| 348 | + "sold": 2970, | |
| 349 | + "url": "https://www.artcurial.com/en/sales/6557/lots/34-a", | |
| 350 | + "image": "https://www.artcurial.com/item-images/0ae62331-5f67-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/26112717_008.jpg?w=400&force_webp=true" | |
| 351 | + }, | |
| 352 | + { | |
| 353 | + "lotNo": "35", | |
| 354 | + "title": "MOBILIER DE SALON ALLEMAND DU DÉBUT DU XIXe SIÈCLE, BERLIN", | |
| 355 | + "subtitle": null, | |
| 356 | + "estimateLow": 6000, | |
| 357 | + "estimateHigh": 8000, | |
| 358 | + "sold": 8167, | |
| 359 | + "url": "https://www.artcurial.com/en/sales/6557/lots/35-a", | |
| 360 | + "image": "https://www.artcurial.com/item-images/db751c62-34bc-11f1-a009-2939728b572b/PICTURE_CATALOG/26112717_007.jpg?w=400&force_webp=true" | |
| 361 | + }, | |
| 362 | + { | |
| 363 | + "lotNo": "36", | |
| 364 | + "title": "D’après le modèle Etrusque, Italie", | |
| 365 | + "subtitle": null, | |
| 366 | + "estimateLow": 6000, | |
| 367 | + "estimateHigh": 8000, | |
| 368 | + "sold": 47515, | |
| 369 | + "url": "https://www.artcurial.com/en/sales/6557/lots/36-a", | |
| 370 | + "image": "https://www.artcurial.com/item-images/008e4ee0-334e-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_164.jpg?w=400&force_webp=true" | |
| 371 | + }, | |
| 372 | + { | |
| 373 | + "lotNo": "37", | |
| 374 | + "title": "PORTE-TORCHÈRE ALLEMANDE D'ÉPOQUE NÉOCLASSIQUE", | |
| 375 | + "subtitle": null, | |
| 376 | + "estimateLow": 3000, | |
| 377 | + "estimateHigh": 5000, | |
| 378 | + "sold": 5197, | |
| 379 | + "url": "https://www.artcurial.com/en/sales/6557/lots/37-a", | |
| 380 | + "image": "https://www.artcurial.com/item-images/5183fcea-5f67-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/8.jpg?w=400&force_webp=true" | |
| 381 | + }, | |
| 382 | + { | |
| 383 | + "lotNo": "38", | |
| 384 | + "title": "TABLE DE SALON DE GOÛT NÉO-ÉTRUSQUE", | |
| 385 | + "subtitle": null, | |
| 386 | + "estimateLow": 1500, | |
| 387 | + "estimateHigh": 2000, | |
| 388 | + "sold": 5939, | |
| 389 | + "url": "https://www.artcurial.com/en/sales/6557/lots/38-a", | |
| 390 | + "image": "https://www.artcurial.com/item-images/4a8410ef-334f-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_449.jpg?w=400&force_webp=true" | |
| 391 | + }, | |
| 392 | + { | |
| 393 | + "lotNo": "39", | |
| 394 | + "title": "PAIRE DE TABOURETS CURULES DE STYLE NÉO-ÉTRUSQUE DE LA PREMIÈRE MOITIÉ DU XXe SIÈCLE", | |
| 395 | + "subtitle": null, | |
| 396 | + "estimateLow": 1500, | |
| 397 | + "estimateHigh": 2000, | |
| 398 | + "sold": 5197, | |
| 399 | + "url": "https://www.artcurial.com/en/sales/6557/lots/39-a", | |
| 400 | + "image": "https://www.artcurial.com/item-images/2850d608-334e-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_212.jpg?w=400&force_webp=true" | |
| 401 | + }, | |
| 402 | + { | |
| 403 | + "lotNo": "40", | |
| 404 | + "title": "COFFRE DE LA FIN DU XVIIIe SIÈCLE, TRAVAIL PROBABLEMENT ALLEMAND", | |
| 405 | + "subtitle": null, | |
| 406 | + "estimateLow": 2500, | |
| 407 | + "estimateHigh": 4000, | |
| 408 | + "sold": 4158, | |
| 409 | + "url": "https://www.artcurial.com/en/sales/6557/lots/40-a", | |
| 410 | + "image": "https://www.artcurial.com/item-images/a2a7eaae-334d-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_050.jpg?w=400&force_webp=true" | |
| 411 | + }, | |
| 412 | + { | |
| 413 | + "lotNo": "42", | |
| 414 | + "title": "Allemagne du Sud ou Italie du Nord, seconde moitié du XVIIe siècle", | |
| 415 | + "subtitle": null, | |
| 416 | + "estimateLow": 500, | |
| 417 | + "estimateHigh": 800, | |
| 418 | + "sold": 1039, | |
| 419 | + "url": "https://www.artcurial.com/en/sales/6557/lots/42-a", | |
| 420 | + "image": "https://www.artcurial.com/item-images/ec612514-5a8d-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-470_WEB.jpg?w=400&force_webp=true" | |
| 421 | + }, | |
| 422 | + { | |
| 423 | + "lotNo": "44", | |
| 424 | + "title": "D’après François Anguier (1612-1686), France, début du XIXe siècle", | |
| 425 | + "subtitle": null, | |
| 426 | + "estimateLow": 500, | |
| 427 | + "estimateHigh": 800, | |
| 428 | + "sold": 742, | |
| 429 | + "url": "https://www.artcurial.com/en/sales/6557/lots/44-a", | |
| 430 | + "image": "https://www.artcurial.com/item-images/a9f342dc-5fe8-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/10.jpg?w=400&force_webp=true" | |
| 431 | + }, | |
| 432 | + { | |
| 433 | + "lotNo": "45", | |
| 434 | + "title": "Italie, dans le style du XVIIe siècle, XIXe siècle ou antérieur", | |
| 435 | + "subtitle": null, | |
| 436 | + "estimateLow": 400, | |
| 437 | + "estimateHigh": 600, | |
| 438 | + "sold": 297, | |
| 439 | + "url": "https://www.artcurial.com/en/sales/6557/lots/45-a", | |
| 440 | + "image": "https://www.artcurial.com/item-images/bf0df0cd-5fe8-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/10.jpg?w=400&force_webp=true" | |
| 441 | + }, | |
| 442 | + { | |
| 443 | + "lotNo": "46", | |
| 444 | + "title": "PETIT BOUGEOIR TROMPETTE EN ARGENT", | |
| 445 | + "subtitle": null, | |
| 446 | + "estimateLow": 200, | |
| 447 | + "estimateHigh": 300, | |
| 448 | + "sold": 148, | |
| 449 | + "url": "https://www.artcurial.com/en/sales/6557/lots/46-a", | |
| 450 | + "image": "https://www.artcurial.com/item-images/bd28c745-630b-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/10.jpg?w=400&force_webp=true" | |
| 451 | + }, | |
| 452 | + { | |
| 453 | + "lotNo": "47", | |
| 454 | + "title": "COMMODE SUISSE DU MILIEU DU XVIIIe SIÈCLE", | |
| 455 | + "subtitle": null, | |
| 456 | + "estimateLow": 6000, | |
| 457 | + "estimateHigh": 8000, | |
| 458 | + "sold": 6682, | |
| 459 | + "url": "https://www.artcurial.com/en/sales/6557/lots/47-a", | |
| 460 | + "image": "https://www.artcurial.com/item-images/f4c7251f-5fe8-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/10.jpg?w=400&force_webp=true" | |
| 461 | + }, | |
| 462 | + { | |
| 463 | + "lotNo": "48", | |
| 464 | + "title": "RARE PAIRE DE VASES CORNETS EN PORCELAINE LAQUÉE", | |
| 465 | + "subtitle": null, | |
| 466 | + "estimateLow": 7000, | |
| 467 | + "estimateHigh": 10000, | |
| 468 | + "sold": 50485, | |
| 469 | + "url": "https://www.artcurial.com/en/sales/6557/lots/48-a", | |
| 470 | + "image": "https://www.artcurial.com/item-images/18604479-5a8e-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-058_WEB.jpg?w=400&force_webp=true" | |
| 471 | + }, | |
| 472 | + { | |
| 473 | + "lotNo": "49", | |
| 474 | + "title": "RÉGULATEUR DE PARQUET ALLEMAND D'ÉPOQUE ROCOCO, PROBABLEMENT BERLIN", | |
| 475 | + "subtitle": null, | |
| 476 | + "estimateLow": 4000, | |
| 477 | + "estimateHigh": 6000, | |
| 478 | + "sold": 3267, | |
| 479 | + "url": "https://www.artcurial.com/en/sales/6557/lots/49-a", | |
| 480 | + "image": "https://www.artcurial.com/item-images/eb81ee22-4958-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_409.jpg?w=400&force_webp=true" | |
| 481 | + }, | |
| 482 | + { | |
| 483 | + "lotNo": "50", | |
| 484 | + "title": "Ecole suisse, 1656", | |
| 485 | + "subtitle": "Portraits de Daniel (1631-1676) et Hans Jacob (1629-1678) Jenner", | |
| 486 | + "estimateLow": 5000, | |
| 487 | + "estimateHigh": 7000, | |
| 488 | + "sold": 8909, | |
| 489 | + "url": "https://www.artcurial.com/en/sales/6557/lots/50-a", | |
| 490 | + "image": "https://www.artcurial.com/item-images/7bb6d6dc-6001-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-147_WEB.jpg?w=400&force_webp=true" | |
| 491 | + }, | |
| 492 | + { | |
| 493 | + "lotNo": "51", | |
| 494 | + "title": "GRANDE POTICHE OCTOGONALE EN PORCELAINE ARITA", | |
| 495 | + "subtitle": null, | |
| 496 | + "estimateLow": 1000, | |
| 497 | + "estimateHigh": 1500, | |
| 498 | + "sold": 4752, | |
| 499 | + "url": "https://www.artcurial.com/en/sales/6557/lots/51-a", | |
| 500 | + "image": "https://www.artcurial.com/item-images/35f0a9e1-5fe9-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/11.jpg?w=400&force_webp=true" | |
| 501 | + }, | |
| 502 | + { | |
| 503 | + "lotNo": "52", | |
| 504 | + "title": "ENSEMBLE DE COQUILLAGES", | |
| 505 | + "subtitle": null, | |
| 506 | + "estimateLow": 1000, | |
| 507 | + "estimateHigh": 1500, | |
| 508 | + "sold": 742, | |
| 509 | + "url": "https://www.artcurial.com/en/sales/6557/lots/52-a", | |
| 510 | + "image": "https://www.artcurial.com/item-images/4d624022-5fe9-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/11.jpg?w=400&force_webp=true" | |
| 511 | + }, | |
| 512 | + { | |
| 513 | + "lotNo": "53", | |
| 514 | + "title": "CABINET DE LA FIN DU XVIIe SIÈCLE, TRAVAIL PROBABLEMENT DE L'ALLEMAGNE DU NORD", | |
| 515 | + "subtitle": null, | |
| 516 | + "estimateLow": 3000, | |
| 517 | + "estimateHigh": 5000, | |
| 518 | + "sold": 5939, | |
| 519 | + "url": "https://www.artcurial.com/en/sales/6557/lots/53-a", | |
| 520 | + "image": "https://www.artcurial.com/item-images/d32cead6-630b-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/11.jpg?w=400&force_webp=true" | |
| 521 | + }, | |
| 522 | + { | |
| 523 | + "lotNo": "54", | |
| 524 | + "title": "GRAND COFFRET DIT \"PETACA\", XVIIe-XVIIIe SIÈCLE", | |
| 525 | + "subtitle": null, | |
| 526 | + "estimateLow": 1000, | |
| 527 | + "estimateHigh": 1500, | |
| 528 | + "sold": 1485, | |
| 529 | + "url": "https://www.artcurial.com/en/sales/6557/lots/54-a", | |
| 530 | + "image": "https://www.artcurial.com/item-images/696915f3-5fe9-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/11.jpg?w=400&force_webp=true" | |
| 531 | + }, | |
| 532 | + { | |
| 533 | + "lotNo": "55", | |
| 534 | + "title": "Ecole suisse du XVIIe siècle", | |
| 535 | + "subtitle": "Portrait du baron Sigmund von Graffenried enfant", | |
| 536 | + "estimateLow": 4000, | |
| 537 | + "estimateHigh": 6000, | |
| 538 | + "sold": 5939, | |
| 539 | + "url": "https://www.artcurial.com/en/sales/6557/lots/55-a", | |
| 540 | + "image": "https://www.artcurial.com/item-images/4f37ba0c-5a8e-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-132%20A_WEB.jpg?w=400&force_webp=true" | |
| 541 | + }, | |
| 542 | + { | |
| 543 | + "lotNo": "56", | |
| 544 | + "title": "Franz Niklaus KÖNIG(Berne, 1765 – 1832)", | |
| 545 | + "subtitle": "Portrait d’Edouard v. Graffenried", | |
| 546 | + "estimateLow": 2000, | |
| 547 | + "estimateHigh": 3000, | |
| 548 | + "sold": 2970, | |
| 549 | + "url": "https://www.artcurial.com/en/sales/6557/lots/56-a", | |
| 550 | + "image": "https://www.artcurial.com/item-images/3b0e92ea-5f4c-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/26112717-141%20A_WEB.jpg?w=400&force_webp=true" | |
| 551 | + }, | |
| 552 | + { | |
| 553 | + "lotNo": "57", | |
| 554 | + "title": "PENDULE \"QUEUE DE VACHE\", TRAVAIL SUISSE DU XVIIIe SIÈCLE", | |
| 555 | + "subtitle": null, | |
| 556 | + "estimateLow": 2500, | |
| 557 | + "estimateHigh": 4000, | |
| 558 | + "sold": 2970, | |
| 559 | + "url": "https://www.artcurial.com/en/sales/6557/lots/57-a", | |
| 560 | + "image": "https://www.artcurial.com/item-images/317960d0-5ff9-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/12.jpg?w=400&force_webp=true" | |
| 561 | + }, | |
| 562 | + { | |
| 563 | + "lotNo": "58", | |
| 564 | + "title": "Ecole suisse du XVIIe siècle", | |
| 565 | + "subtitle": "Portrait de jeune garçon au nœud rouge", | |
| 566 | + "estimateLow": 1500, | |
| 567 | + "estimateHigh": 2000, | |
| 568 | + "sold": 5197, | |
| 569 | + "url": "https://www.artcurial.com/en/sales/6557/lots/58-a", | |
| 570 | + "image": "https://www.artcurial.com/item-images/48f49e52-5f4c-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/26112717-145%20A_WEB.jpg?w=400&force_webp=true" | |
| 571 | + }, | |
| 572 | + { | |
| 573 | + "lotNo": "59", | |
| 574 | + "title": "Bohème, suiveur du Maître des fonds ornementés, début du XVIIIe siècle", | |
| 575 | + "subtitle": null, | |
| 576 | + "estimateLow": 300, | |
| 577 | + "estimateHigh": 500, | |
| 578 | + "sold": 668, | |
| 579 | + "url": "https://www.artcurial.com/en/sales/6557/lots/59-a", | |
| 580 | + "image": "https://www.artcurial.com/item-images/728d3ab4-5ff9-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/12.jpg?w=400&force_webp=true" | |
| 581 | + }, | |
| 582 | + { | |
| 583 | + "lotNo": "60", | |
| 584 | + "title": "VASE COUVERT EN PORCELAINE DU JAPON DU XIXe SIÈCLE", | |
| 585 | + "subtitle": null, | |
| 586 | + "estimateLow": 400, | |
| 587 | + "estimateHigh": 600, | |
| 588 | + "sold": 4009, | |
| 589 | + "url": "https://www.artcurial.com/en/sales/6557/lots/60-a", | |
| 590 | + "image": "https://www.artcurial.com/item-images/ef851852-60b1-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/61_1.jpg?w=400&force_webp=true" | |
| 591 | + }, | |
| 592 | + { | |
| 593 | + "lotNo": "61", | |
| 594 | + "title": "VASE COUVERT EN FAÏENCE DE BERLIN DU XIXe SIÈCLE", | |
| 595 | + "subtitle": null, | |
| 596 | + "estimateLow": 600, | |
| 597 | + "estimateHigh": 800, | |
| 598 | + "sold": 2970, | |
| 599 | + "url": "https://www.artcurial.com/en/sales/6557/lots/61-a", | |
| 600 | + "image": "https://www.artcurial.com/item-images/e1848011-60b1-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/61_1.jpg?w=400&force_webp=true" | |
| 601 | + }, | |
| 602 | + { | |
| 603 | + "lotNo": "62", | |
| 604 | + "title": "MIROIR SUISSE DU MILIEU DU XVIIIe SIÈCLE, BERNE", | |
| 605 | + "subtitle": null, | |
| 606 | + "estimateLow": 4000, | |
| 607 | + "estimateHigh": 6000, | |
| 608 | + "sold": 4455, | |
| 609 | + "url": "https://www.artcurial.com/en/sales/6557/lots/62-a", | |
| 610 | + "image": "https://www.artcurial.com/item-images/85580536-5ff9-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/13.jpg?w=400&force_webp=true" | |
| 611 | + }, | |
| 612 | + { | |
| 613 | + "lotNo": "63", | |
| 614 | + "title": "CONSOLE SUISSE DU MILIEU DU XVIIIe SIÈCLE, BERNE", | |
| 615 | + "subtitle": null, | |
| 616 | + "estimateLow": 4000, | |
| 617 | + "estimateHigh": 6000, | |
| 618 | + "sold": 4752, | |
| 619 | + "url": "https://www.artcurial.com/en/sales/6557/lots/63-a", | |
| 620 | + "image": "https://www.artcurial.com/item-images/9a34e6d8-5ff9-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/13.jpg?w=400&force_webp=true" | |
| 621 | + }, | |
| 622 | + { | |
| 623 | + "lotNo": "64", | |
| 624 | + "title": "FRAGMENT DE TAPISSERIE DITE « AUX FEUILLES DE CHOUX », DEUXIÈME MOITIÉ DU XVIe SIÈCLE, PROBABLEMENT ATELIERS DE LA MARCHE", | |
| 625 | + "subtitle": null, | |
| 626 | + "estimateLow": 3000, | |
| 627 | + "estimateHigh": 5000, | |
| 628 | + "sold": 6682, | |
| 629 | + "url": "https://www.artcurial.com/en/sales/6557/lots/64-a", | |
| 630 | + "image": "https://www.artcurial.com/item-images/31124f77-4959-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_413.jpg?w=400&force_webp=true" | |
| 631 | + }, | |
| 632 | + { | |
| 633 | + "lotNo": "65", | |
| 634 | + "title": "DEUX STATUETTES DE CHINOIS EN FAÏENCE BLANCHE, XIXe SIÈCLE", | |
| 635 | + "subtitle": null, | |
| 636 | + "estimateLow": 300, | |
| 637 | + "estimateHigh": 500, | |
| 638 | + "sold": 445, | |
| 639 | + "url": "https://www.artcurial.com/en/sales/6557/lots/65-a", | |
| 640 | + "image": "https://www.artcurial.com/item-images/b0ce1e7f-5ff9-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/14.jpg?w=400&force_webp=true" | |
| 641 | + }, | |
| 642 | + { | |
| 643 | + "lotNo": "66", | |
| 644 | + "title": "CUILLÈRE EN VERRE OPALIN DU PREMIER TIERS DU XVIIIe SIÈCLE, VERS 1720-1730", | |
| 645 | + "subtitle": null, | |
| 646 | + "estimateLow": 700, | |
| 647 | + "estimateHigh": 1000, | |
| 648 | + "sold": 1782, | |
| 649 | + "url": "https://www.artcurial.com/en/sales/6557/lots/66-a", | |
| 650 | + "image": "https://www.artcurial.com/item-images/be026610-5ff9-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/14.jpg?w=400&force_webp=true" | |
| 651 | + }, | |
| 652 | + { | |
| 653 | + "lotNo": "67", | |
| 654 | + "title": "POTICHE COUVERTE EN PORCELAINE IMARI", | |
| 655 | + "subtitle": null, | |
| 656 | + "estimateLow": 600, | |
| 657 | + "estimateHigh": 800, | |
| 658 | + "sold": 5939, | |
| 659 | + "url": "https://www.artcurial.com/en/sales/6557/lots/67-a", | |
| 660 | + "image": "https://www.artcurial.com/item-images/cd364e33-5ff9-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/14.jpg?w=400&force_webp=true" | |
| 661 | + }, | |
| 662 | + { | |
| 663 | + "lotNo": "68", | |
| 664 | + "title": "STATUETTE DE SHISHI EN PORCELAINE HIRADO", | |
| 665 | + "subtitle": null, | |
| 666 | + "estimateLow": 200, | |
| 667 | + "estimateHigh": 300, | |
| 668 | + "sold": 668, | |
| 669 | + "url": "https://www.artcurial.com/en/sales/6557/lots/68-a", | |
| 670 | + "image": "https://www.artcurial.com/item-images/db8e0725-5ff9-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/14.jpg?w=400&force_webp=true" | |
| 671 | + }, | |
| 672 | + { | |
| 673 | + "lotNo": "69", | |
| 674 | + "title": "PAIRE D’ÉLÉPHANTS EN FAÏENCE DE DESVRES DE LA FIN DU XIXe SIÈCLE-DÉBUT DU XXe SIÈCLE, ATELIER DE GEO MARTEL", | |
| 675 | + "subtitle": null, | |
| 676 | + "estimateLow": 600, | |
| 677 | + "estimateHigh": 800, | |
| 678 | + "sold": 1188, | |
| 679 | + "url": "https://www.artcurial.com/en/sales/6557/lots/69-a", | |
| 680 | + "image": "https://www.artcurial.com/item-images/e987c197-5ff9-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/14.jpg?w=400&force_webp=true" | |
| 681 | + }, | |
| 682 | + { | |
| 683 | + "lotNo": "70", | |
| 684 | + "title": "PAIRE DE BOUQUETIÈRES DU XIXe SIÈCLE, TRAVAIL PROBABLEMENT DE LA FORÊT NOIRE", | |
| 685 | + "subtitle": null, | |
| 686 | + "estimateLow": 400, | |
| 687 | + "estimateHigh": 600, | |
| 688 | + "sold": 4455, | |
| 689 | + "url": "https://www.artcurial.com/en/sales/6557/lots/70-a", | |
| 690 | + "image": "https://www.artcurial.com/item-images/d22b27c7-334d-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_086_087.jpg?w=400&force_webp=true" | |
| 691 | + }, | |
| 692 | + { | |
| 693 | + "lotNo": "71", | |
| 694 | + "title": "DEUX GUÉRIDONS PORTE-LUMIÈRE DU XVIIIe SIÈCLE", | |
| 695 | + "subtitle": null, | |
| 696 | + "estimateLow": 200, | |
| 697 | + "estimateHigh": 300, | |
| 698 | + "sold": 2673, | |
| 699 | + "url": "https://www.artcurial.com/en/sales/6557/lots/71-a", | |
| 700 | + "image": "https://www.artcurial.com/item-images/db08e0fe-5a8e-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717_086_087.jpg?w=400&force_webp=true" | |
| 701 | + }, | |
| 702 | + { | |
| 703 | + "lotNo": "72", | |
| 704 | + "title": "Johannes DÜNZ (Brugg, 1645 – Berne, 1736)", | |
| 705 | + "subtitle": "Fleurs et fruits sur un entablement", | |
| 706 | + "estimateLow": 4000, | |
| 707 | + "estimateHigh": 6000, | |
| 708 | + "sold": 7424, | |
| 709 | + "url": "https://www.artcurial.com/en/sales/6557/lots/72-a", | |
| 710 | + "image": "https://www.artcurial.com/item-images/65e1dc85-5f4c-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/26112717-130%20A_WEB.jpg?w=400&force_webp=true" | |
| 711 | + }, | |
| 712 | + { | |
| 713 | + "lotNo": "73", | |
| 714 | + "title": "PAIRE DE GIRANDOLES SUISSES DU MILIEU DU XVIIIe SIÈCLE, BERNE", | |
| 715 | + "subtitle": null, | |
| 716 | + "estimateLow": 500, | |
| 717 | + "estimateHigh": 800, | |
| 718 | + "sold": 4158, | |
| 719 | + "url": "https://www.artcurial.com/en/sales/6557/lots/73-a", | |
| 720 | + "image": "https://www.artcurial.com/item-images/14d67cc4-5ffa-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/15.jpg?w=400&force_webp=true" | |
| 721 | + }, | |
| 722 | + { | |
| 723 | + "lotNo": "74", | |
| 724 | + "title": "Johannes DÜNZ( Brugg, 1645 – Berne, 1736)", | |
| 725 | + "subtitle": "Composition à la coupe de fruits et au bouquet de fleurs sur un entablement", | |
| 726 | + "estimateLow": 3000, | |
| 727 | + "estimateHigh": 4000, | |
| 728 | + "sold": 6682, | |
| 729 | + "url": "https://www.artcurial.com/en/sales/6557/lots/74-a", | |
| 730 | + "image": "https://www.artcurial.com/item-images/711b1768-5f4c-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/26112717-131%20A_WEB.jpg?w=400&force_webp=true" | |
| 731 | + }, | |
| 732 | + { | |
| 733 | + "lotNo": "75", | |
| 734 | + "title": "COFFRET À BIJOUX, ALLEMAGNE DU SUD, XVIIe SIÈCLE, PROBABLEMENT AUGSBOURG", | |
| 735 | + "subtitle": null, | |
| 736 | + "estimateLow": 4000, | |
| 737 | + "estimateHigh": 6000, | |
| 738 | + "sold": 7721, | |
| 739 | + "url": "https://www.artcurial.com/en/sales/6557/lots/75-a", | |
| 740 | + "image": "https://www.artcurial.com/item-images/d97bd3b9-5ffa-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-075%20A_WEB.jpg?w=400&force_webp=true" | |
| 741 | + }, | |
| 742 | + { | |
| 743 | + "lotNo": "76", | |
| 744 | + "title": "ENSEMBLE DE TROIS PIÈCES DE JEU EN BOIS SCULPTÉ ET TEINTÉ, ALLEMAGNE, EGER, DEUXIÈME MOITIÉ DU XVIIe SIÈCLE", | |
| 745 | + "subtitle": null, | |
| 746 | + "estimateLow": 300, | |
| 747 | + "estimateHigh": 500, | |
| 748 | + "sold": 2227, | |
| 749 | + "url": "https://www.artcurial.com/en/sales/6557/lots/76-a", | |
| 750 | + "image": "https://www.artcurial.com/item-images/ea1284cf-5a8e-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-097_WEB.jpg?w=400&force_webp=true" | |
| 751 | + }, | |
| 752 | + { | |
| 753 | + "lotNo": "78", | |
| 754 | + "title": "CONSOLE D'ÉPOQUE ROCOCO, ALLEMAGNE DU SUD", | |
| 755 | + "subtitle": null, | |
| 756 | + "estimateLow": 2500, | |
| 757 | + "estimateHigh": 4000, | |
| 758 | + "sold": 2376, | |
| 759 | + "url": "https://www.artcurial.com/en/sales/6557/lots/78-a", | |
| 760 | + "image": "https://www.artcurial.com/item-images/5a30f242-495e-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_447.jpg?w=400&force_webp=true" | |
| 761 | + }, | |
| 762 | + { | |
| 763 | + "lotNo": "79", | |
| 764 | + "title": "TABLE DE SALON, TRAVAIL ALLEMAND DE LA PREMIÈRE MOITIÉ DU XVIIIe SIÈCLE", | |
| 765 | + "subtitle": null, | |
| 766 | + "estimateLow": 2000, | |
| 767 | + "estimateHigh": 3000, | |
| 768 | + "sold": 2227, | |
| 769 | + "url": "https://www.artcurial.com/en/sales/6557/lots/79-a", | |
| 770 | + "image": "https://www.artcurial.com/item-images/a3e7fa43-334f-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_428.jpg?w=400&force_webp=true" | |
| 771 | + }, | |
| 772 | + { | |
| 773 | + "lotNo": "80", | |
| 774 | + "title": "Italie, fin XVIe-début XVIIe siècle, d'après un modèle original d'Italie du Nord vers 1500", | |
| 775 | + "subtitle": null, | |
| 776 | + "estimateLow": 5000, | |
| 777 | + "estimateHigh": 8000, | |
| 778 | + "sold": 25242, | |
| 779 | + "url": "https://www.artcurial.com/en/sales/6557/lots/80-a", | |
| 780 | + "image": "https://www.artcurial.com/item-images/50cdf071-5ffb-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-057_WEB.jpg?w=400&force_webp=true" | |
| 781 | + }, | |
| 782 | + { | |
| 783 | + "lotNo": "81", | |
| 784 | + "title": "BOL EN LAQUE ROUGE ET DÉCOR OR", | |
| 785 | + "subtitle": null, | |
| 786 | + "estimateLow": 80, | |
| 787 | + "estimateHigh": 120, | |
| 788 | + "sold": 742, | |
| 789 | + "url": "https://www.artcurial.com/en/sales/6557/lots/81-a", | |
| 790 | + "image": "https://www.artcurial.com/item-images/f7b1c333-5a8e-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-129%20A_WEB.jpg?w=400&force_webp=true" | |
| 791 | + }, | |
| 792 | + { | |
| 793 | + "lotNo": "82", | |
| 794 | + "title": "PETIT COFFRET INDIEN DU XIXe SIÈCLE", | |
| 795 | + "subtitle": null, | |
| 796 | + "estimateLow": 600, | |
| 797 | + "estimateHigh": 800, | |
| 798 | + "sold": 1039, | |
| 799 | + "url": "https://www.artcurial.com/en/sales/6557/lots/82-a", | |
| 800 | + "image": "https://www.artcurial.com/item-images/15ce0b87-5a8f-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-091_WEB.jpg?w=400&force_webp=true" | |
| 801 | + }, | |
| 802 | + { | |
| 803 | + "lotNo": "83", | |
| 804 | + "title": "MIROIR ALLEMAND D'ÉPOQUE ROCOCO, MUNICH", | |
| 805 | + "subtitle": null, | |
| 806 | + "estimateLow": 4000, | |
| 807 | + "estimateHigh": 6000, | |
| 808 | + "sold": 7721, | |
| 809 | + "url": "https://www.artcurial.com/en/sales/6557/lots/83-a", | |
| 810 | + "image": "https://www.artcurial.com/item-images/82b82c84-38a5-11f1-bef4-f918d58faf87/PICTURE_CATALOG/26112717_400.jpg?w=400&force_webp=true" | |
| 811 | + }, | |
| 812 | + { | |
| 813 | + "lotNo": "84", | |
| 814 | + "title": "TABLE DE MILIEU, TRAVAIL ALLEMAND DE LA DEUXIÈME MOITIÉ DU XVIIIe SIÈCLE, PROBABLEMENT EICHSTÄTT", | |
| 815 | + "subtitle": null, | |
| 816 | + "estimateLow": 4000, | |
| 817 | + "estimateHigh": 6000, | |
| 818 | + "sold": 5939, | |
| 819 | + "url": "https://www.artcurial.com/en/sales/6557/lots/84-a", | |
| 820 | + "image": "https://www.artcurial.com/item-images/ba349886-334f-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_425.jpg?w=400&force_webp=true" | |
| 821 | + }, | |
| 822 | + { | |
| 823 | + "lotNo": "85", | |
| 824 | + "title": "TABLE À JEUX SUISSE DU MILIEU DU XVIIIe SIÈCLE, BERNE", | |
| 825 | + "subtitle": null, | |
| 826 | + "estimateLow": 600, | |
| 827 | + "estimateHigh": 800, | |
| 828 | + "sold": 891, | |
| 829 | + "url": "https://www.artcurial.com/en/sales/6557/lots/85-a", | |
| 830 | + "image": "https://www.artcurial.com/item-images/faa0b1db-34bc-11f1-a009-2939728b572b/PICTURE_CATALOG/26112717_068.jpg?w=400&force_webp=true" | |
| 831 | + }, | |
| 832 | + { | |
| 833 | + "lotNo": "86", | |
| 834 | + "title": "BOÎTE À THÉ, TRAVAIL ALLEMAND DE LA DEUXIÈME MOITIÉ DU XVIIIe SIÈCLE", | |
| 835 | + "subtitle": null, | |
| 836 | + "estimateLow": 1000, | |
| 837 | + "estimateHigh": 1500, | |
| 838 | + "sold": 1188, | |
| 839 | + "url": "https://www.artcurial.com/en/sales/6557/lots/86-a", | |
| 840 | + "image": "https://www.artcurial.com/item-images/202e7132-4952-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_183.jpg?w=400&force_webp=true" | |
| 841 | + }, | |
| 842 | + { | |
| 843 | + "lotNo": "87", | |
| 844 | + "title": "BOÎTE À THÉ, TRAVAIL ALLEMAND DE LA DEUXIEME MOITIÉ DU XVIIIe SIÈCLE", | |
| 845 | + "subtitle": null, | |
| 846 | + "estimateLow": 1200, | |
| 847 | + "estimateHigh": 1800, | |
| 848 | + "sold": 1188, | |
| 849 | + "url": "https://www.artcurial.com/en/sales/6557/lots/87-a", | |
| 850 | + "image": "https://www.artcurial.com/item-images/eca81d16-52a4-11f1-a35b-affe5ba35167/PICTURE_CATALOG/26112717_183.jpg?w=400&force_webp=true" | |
| 851 | + }, | |
| 852 | + { | |
| 853 | + "lotNo": "88", | |
| 854 | + "title": "ENSEMBLE DE MINÉRAUX BRUTS", | |
| 855 | + "subtitle": null, | |
| 856 | + "estimateLow": 1500, | |
| 857 | + "estimateHigh": 2500, | |
| 858 | + "sold": 5494, | |
| 859 | + "url": "https://www.artcurial.com/en/sales/6557/lots/88-a", | |
| 860 | + "image": "https://www.artcurial.com/item-images/ac402053-5ffb-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/17.jpg?w=400&force_webp=true" | |
| 861 | + }, | |
| 862 | + { | |
| 863 | + "lotNo": "89", | |
| 864 | + "title": "CONSOLE D'ÉPOQUE RÉGENCE", | |
| 865 | + "subtitle": null, | |
| 866 | + "estimateLow": 10000, | |
| 867 | + "estimateHigh": 15000, | |
| 868 | + "sold": 7424, | |
| 869 | + "url": "https://www.artcurial.com/en/sales/6557/lots/89-a", | |
| 870 | + "image": "https://www.artcurial.com/item-images/35372404-2db5-11f1-8fc6-afcd4e9863e0/PICTURE_CATALOG/26112717_177.jpg?w=400&force_webp=true" | |
| 871 | + }, | |
| 872 | + { | |
| 873 | + "lotNo": "90", | |
| 874 | + "title": "MIROIR PORTATIF, LA PLAQUE ARRIÈRE XVIIe SIÈCLE, ATTRIBUÉE A VICTOR BIELER, LE CADRE PAR ALFRED ANDRÉ, PARIS, XIXe SIÈCLE", | |
| 875 | + "subtitle": null, | |
| 876 | + "estimateLow": 4000, | |
| 877 | + "estimateHigh": 6000, | |
| 878 | + "sold": 11136, | |
| 879 | + "url": "https://www.artcurial.com/en/sales/6557/lots/90-a", | |
| 880 | + "image": "https://www.artcurial.com/item-images/2596b9a1-5a8f-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-076%20A_WEB.jpg?w=400&force_webp=true" | |
| 881 | + }, | |
| 882 | + { | |
| 883 | + "lotNo": "91", | |
| 884 | + "title": "MIROIR SUISSE DE LA PREMIÈRE MOITIÉ DU XVIIIe SIÈCLE, PROBABLEMENT BÂLE", | |
| 885 | + "subtitle": null, | |
| 886 | + "estimateLow": 2000, | |
| 887 | + "estimateHigh": 3000, | |
| 888 | + "sold": 3267, | |
| 889 | + "url": "https://www.artcurial.com/en/sales/6557/lots/91-a", | |
| 890 | + "image": "https://www.artcurial.com/item-images/873b206c-334f-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_437.jpg?w=400&force_webp=true" | |
| 891 | + }, | |
| 892 | + { | |
| 893 | + "lotNo": "92", | |
| 894 | + "title": "CABINET D'ÉPOQUE RENAISSANCE, BOURGOGNE, XVIe SIÈCLE", | |
| 895 | + "subtitle": null, | |
| 896 | + "estimateLow": 4000, | |
| 897 | + "estimateHigh": 6000, | |
| 898 | + "sold": 3712, | |
| 899 | + "url": "https://www.artcurial.com/en/sales/6557/lots/92-a", | |
| 900 | + "image": "https://www.artcurial.com/item-images/0ea92c7d-34bd-11f1-a009-2939728b572b/PICTURE_CATALOG/26112717_182.jpg?w=400&force_webp=true" | |
| 901 | + }, | |
| 902 | + { | |
| 903 | + "lotNo": "93", | |
| 904 | + "title": "COFFRE SUISSE DU XVIIe SIÈCLE, DATÉ 1618", | |
| 905 | + "subtitle": null, | |
| 906 | + "estimateLow": 3000, | |
| 907 | + "estimateHigh": 5000, | |
| 908 | + "sold": 2227, | |
| 909 | + "url": "https://www.artcurial.com/en/sales/6557/lots/93-a", | |
| 910 | + "image": "https://www.artcurial.com/item-images/5135804c-34be-11f1-a009-2939728b572b/PICTURE_CATALOG/2611271727_451.jpg?w=400&force_webp=true" | |
| 911 | + }, | |
| 912 | + { | |
| 913 | + "lotNo": "94", | |
| 914 | + "title": "TABLE DE MILIEU, TRAVAIL ALLEMAND, PROBABLEMENT BERLIN, FIN DU XVIIe-DÉBUT DU XVIIIe SIÈCLE", | |
| 915 | + "subtitle": null, | |
| 916 | + "estimateLow": 3000, | |
| 917 | + "estimateHigh": 5000, | |
| 918 | + "sold": 3712, | |
| 919 | + "url": "https://www.artcurial.com/en/sales/6557/lots/94-a", | |
| 920 | + "image": "https://www.artcurial.com/item-images/c27d0692-334d-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_074.jpg?w=400&force_webp=true" | |
| 921 | + }, | |
| 922 | + { | |
| 923 | + "lotNo": "95", | |
| 924 | + "title": "GUÉRIDON QAJAR, PERSE, XIXe SIÈCLE", | |
| 925 | + "subtitle": null, | |
| 926 | + "estimateLow": 600, | |
| 927 | + "estimateHigh": 800, | |
| 928 | + "sold": 5939, | |
| 929 | + "url": "https://www.artcurial.com/en/sales/6557/lots/95-a", | |
| 930 | + "image": "https://www.artcurial.com/item-images/05e2783c-34bd-11f1-a009-2939728b572b/PICTURE_CATALOG/26112717_109.jpg?w=400&force_webp=true" | |
| 931 | + }, | |
| 932 | + { | |
| 933 | + "lotNo": "96", | |
| 934 | + "title": "TABLE D'APPOINT, TRAVAIL PROBABLEMENT INDIEN DE LA FIN DU XIXe SIÈCLE", | |
| 935 | + "subtitle": null, | |
| 936 | + "estimateLow": 400, | |
| 937 | + "estimateHigh": 600, | |
| 938 | + "sold": 1782, | |
| 939 | + "url": "https://www.artcurial.com/en/sales/6557/lots/96-a", | |
| 940 | + "image": "https://www.artcurial.com/item-images/d9f7eba8-334d-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_090.jpg?w=400&force_webp=true" | |
| 941 | + }, | |
| 942 | + { | |
| 943 | + "lotNo": "97", | |
| 944 | + "title": "STATUETTE DE VAISHNAVI EN BRONZE DORÉ", | |
| 945 | + "subtitle": null, | |
| 946 | + "estimateLow": 2000, | |
| 947 | + "estimateHigh": 4000, | |
| 948 | + "sold": 2970, | |
| 949 | + "url": "https://www.artcurial.com/en/sales/6557/lots/97-a", | |
| 950 | + "image": "https://www.artcurial.com/item-images/315a3323-5a8f-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-121_WEB.jpg?w=400&force_webp=true" | |
| 951 | + }, | |
| 952 | + { | |
| 953 | + "lotNo": "98", | |
| 954 | + "title": "PANNEAU DE QUATRE CARREAUX HISPANO-MAURESQUES", | |
| 955 | + "subtitle": null, | |
| 956 | + "estimateLow": 400, | |
| 957 | + "estimateHigh": 600, | |
| 958 | + "sold": 891, | |
| 959 | + "url": "https://www.artcurial.com/en/sales/6557/lots/98-a", | |
| 960 | + "image": "https://www.artcurial.com/item-images/e1db6c71-5ffb-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/18.jpg?w=400&force_webp=true" | |
| 961 | + }, | |
| 962 | + { | |
| 963 | + "lotNo": "99", | |
| 964 | + "title": "Ecole suisse du XVIIIe siècle", | |
| 965 | + "subtitle": "Portrait de chien portant sur son collier les initiales E. L. H. de son maître", | |
| 966 | + "estimateLow": 400, | |
| 967 | + "estimateHigh": 600, | |
| 968 | + "sold": 3861, | |
| 969 | + "url": "https://www.artcurial.com/en/sales/6557/lots/99-a", | |
| 970 | + "image": "https://www.artcurial.com/item-images/8196e8df-5f4c-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/26112717-138%20A_WEB.jpg?w=400&force_webp=true" | |
| 971 | + }, | |
| 972 | + { | |
| 973 | + "lotNo": "100", | |
| 974 | + "title": "PORTE-TORCHÈRE ITALIENNE D'ÉPOQUE BAROQUE, TRAVAIL PROBABLEMENT ROMAIN", | |
| 975 | + "subtitle": null, | |
| 976 | + "estimateLow": 4000, | |
| 977 | + "estimateHigh": 6000, | |
| 978 | + "sold": 12918, | |
| 979 | + "url": "https://www.artcurial.com/en/sales/6557/lots/100-a", | |
| 980 | + "image": "https://www.artcurial.com/item-images/b92186b7-39a5-11f1-bef4-f918d58faf87/PICTURE_CATALOG/Suisse-26.02.25-92921.jpg?w=400&force_webp=true" | |
| 981 | + }, | |
| 982 | + { | |
| 983 | + "lotNo": "101", | |
| 984 | + "title": "TROPHÉE DE CHASSE DE LA FIN DU XVIIe-DÉBUT DU XVIIIe SIÈCLE", | |
| 985 | + "subtitle": null, | |
| 986 | + "estimateLow": 2000, | |
| 987 | + "estimateHigh": 3000, | |
| 988 | + "sold": 3861, | |
| 989 | + "url": "https://www.artcurial.com/en/sales/6557/lots/101-a", | |
| 990 | + "image": "https://www.artcurial.com/item-images/5940b0f5-4951-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_156.jpg?w=400&force_webp=true" | |
| 991 | + }, | |
| 992 | + { | |
| 993 | + "lotNo": "102", | |
| 994 | + "title": "PAIRE DE GIRANDOLES SUISSES DU MILIEU DU XVIIIe SIÈCLE, BERNE", | |
| 995 | + "subtitle": null, | |
| 996 | + "estimateLow": 1500, | |
| 997 | + "estimateHigh": 2000, | |
| 998 | + "sold": 4455, | |
| 999 | + "url": "https://www.artcurial.com/en/sales/6557/lots/102-a", | |
| 1000 | + "image": "https://www.artcurial.com/item-images/75455553-38a5-11f1-bef4-f918d58faf87/PICTURE_CATALOG/26112717_387.jpg?w=400&force_webp=true" | |
| 1001 | + }, | |
| 1002 | + { | |
| 1003 | + "lotNo": "103", | |
| 1004 | + "title": "BANQUETTE NÉO-GOTHIQUE DU MILIEU DU XIXe SIÈCLE, PROBABLEMENT SUISSE", | |
| 1005 | + "subtitle": null, | |
| 1006 | + "estimateLow": 700, | |
| 1007 | + "estimateHigh": 1000, | |
| 1008 | + "sold": 1930, | |
| 1009 | + "url": "https://www.artcurial.com/en/sales/6557/lots/103-a", | |
| 1010 | + "image": "https://www.artcurial.com/item-images/d983d7e3-334e-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_444.jpg?w=400&force_webp=true" | |
| 1011 | + }, | |
| 1012 | + { | |
| 1013 | + "lotNo": "104", | |
| 1014 | + "title": "PLATEAU DE TABLE, ALLEMAGNE DU SUD, PROBABLEMENT AUGSBOURG, FIN DU XVIe SIÈCLE", | |
| 1015 | + "subtitle": null, | |
| 1016 | + "estimateLow": 1500, | |
| 1017 | + "estimateHigh": 2000, | |
| 1018 | + "sold": 6682, | |
| 1019 | + "url": "https://www.artcurial.com/en/sales/6557/lots/104-a", | |
| 1020 | + "image": "https://www.artcurial.com/item-images/287eb24b-3350-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_230.jpg?w=400&force_webp=true" | |
| 1021 | + }, | |
| 1022 | + { | |
| 1023 | + "lotNo": "105", | |
| 1024 | + "title": "MIROIR SUISSE DU PREMIER QUART DU XIXe SIÈCLE, BERNE", | |
| 1025 | + "subtitle": null, | |
| 1026 | + "estimateLow": 1200, | |
| 1027 | + "estimateHigh": 1800, | |
| 1028 | + "sold": 1485, | |
| 1029 | + "url": "https://www.artcurial.com/en/sales/6557/lots/105-a", | |
| 1030 | + "image": "https://www.artcurial.com/item-images/e3e6fa38-38a4-11f1-bef4-f918d58faf87/PICTURE_CATALOG/26112717_154.jpg?w=400&force_webp=true" | |
| 1031 | + }, | |
| 1032 | + { | |
| 1033 | + "lotNo": "106", | |
| 1034 | + "title": "CONSOLE SUISSE DE LA FIN DU XVIIIe SIÈCLE, BERNE", | |
| 1035 | + "subtitle": null, | |
| 1036 | + "estimateLow": 2500, | |
| 1037 | + "estimateHigh": 4000, | |
| 1038 | + "sold": 2970, | |
| 1039 | + "url": "https://www.artcurial.com/en/sales/6557/lots/106-a", | |
| 1040 | + "image": "https://www.artcurial.com/item-images/ef62b56c-334d-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_151.jpg?w=400&force_webp=true" | |
| 1041 | + }, | |
| 1042 | + { | |
| 1043 | + "lotNo": "107", | |
| 1044 | + "title": "SUITE DE QUATRE APPLIQUES DONT DEUX DU XVIIIe SIÈCLE", | |
| 1045 | + "subtitle": null, | |
| 1046 | + "estimateLow": 1000, | |
| 1047 | + "estimateHigh": 1500, | |
| 1048 | + "sold": 1782, | |
| 1049 | + "url": "https://www.artcurial.com/en/sales/6557/lots/107-a", | |
| 1050 | + "image": "https://www.artcurial.com/item-images/eb1007e5-334e-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_468.jpg?w=400&force_webp=true" | |
| 1051 | + }, | |
| 1052 | + { | |
| 1053 | + "lotNo": "109", | |
| 1054 | + "title": "Germán GEDOVIUS(Mexico, 1867 - 1937)", | |
| 1055 | + "subtitle": "Autoportrait de l'artiste", | |
| 1056 | + "estimateLow": 3000, | |
| 1057 | + "estimateHigh": 4000, | |
| 1058 | + "sold": 4455, | |
| 1059 | + "url": "https://www.artcurial.com/en/sales/6557/lots/109-a", | |
| 1060 | + "image": "https://www.artcurial.com/item-images/40fd57da-5a8f-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-354%20A_WEB.jpg?w=400&force_webp=true" | |
| 1061 | + }, | |
| 1062 | + { | |
| 1063 | + "lotNo": "110", | |
| 1064 | + "title": "Giovanni Pichler (Italie, 1734-1791) ou Luigi Pichler (Italie, 1773-1854)", | |
| 1065 | + "subtitle": null, | |
| 1066 | + "estimateLow": 300, | |
| 1067 | + "estimateHigh": 500, | |
| 1068 | + "sold": 6236, | |
| 1069 | + "url": "https://www.artcurial.com/en/sales/6557/lots/110-a", | |
| 1070 | + "image": "https://www.artcurial.com/item-images/52c690e1-5a8f-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-081_WEB.jpg?w=400&force_webp=true" | |
| 1071 | + }, | |
| 1072 | + { | |
| 1073 | + "lotNo": "111", | |
| 1074 | + "title": "PAIRE DE FLAMBEAUX-TROMPETTES EN ARGENT, AVEC LEUR BOBÈCHE", | |
| 1075 | + "subtitle": null, | |
| 1076 | + "estimateLow": 500, | |
| 1077 | + "estimateHigh": 800, | |
| 1078 | + "sold": 1336, | |
| 1079 | + "url": "https://www.artcurial.com/en/sales/6557/lots/111-a", | |
| 1080 | + "image": "https://www.artcurial.com/item-images/69ca4a25-5a8f-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-010_WEB.jpg?w=400&force_webp=true" | |
| 1081 | + }, | |
| 1082 | + { | |
| 1083 | + "lotNo": "112", | |
| 1084 | + "title": "CRUCIFIX EN ARGENT ET BOIS NOIRCI", | |
| 1085 | + "subtitle": null, | |
| 1086 | + "estimateLow": 1500, | |
| 1087 | + "estimateHigh": 2000, | |
| 1088 | + "sold": 1188, | |
| 1089 | + "url": "https://www.artcurial.com/en/sales/6557/lots/112-a", | |
| 1090 | + "image": "https://www.artcurial.com/item-images/db5229cb-5a8f-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-149%20A_WEB.jpg?w=400&force_webp=true" | |
| 1091 | + }, | |
| 1092 | + { | |
| 1093 | + "lotNo": "113", | |
| 1094 | + "title": "CALICE VÉNITIEN DANS LE STYLE DU XVIIe SIÈCLE, XXe SIÈCLE", | |
| 1095 | + "subtitle": null, | |
| 1096 | + "estimateLow": 300, | |
| 1097 | + "estimateHigh": 500, | |
| 1098 | + "sold": 297, | |
| 1099 | + "url": "https://www.artcurial.com/en/sales/6557/lots/113-a", | |
| 1100 | + "image": "https://www.artcurial.com/item-images/f421c96d-5a8f-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-077_WEB.jpg?w=400&force_webp=true" | |
| 1101 | + }, | |
| 1102 | + { | |
| 1103 | + "lotNo": "114", | |
| 1104 | + "title": "CONSOLE ALLEMANDE DE LA PREMIÈRE MOITIÉ DU XVIIIe SIÈCLE, PROBABLEMENT ALLEMAGNE DU SUD", | |
| 1105 | + "subtitle": null, | |
| 1106 | + "estimateLow": 1000, | |
| 1107 | + "estimateHigh": 1500, | |
| 1108 | + "sold": 1485, | |
| 1109 | + "url": "https://www.artcurial.com/en/sales/6557/lots/114-a", | |
| 1110 | + "image": "https://www.artcurial.com/item-images/06aab928-3350-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_416.jpg?w=400&force_webp=true" | |
| 1111 | + }, | |
| 1112 | + { | |
| 1113 | + "lotNo": "115", | |
| 1114 | + "title": "PORTE-CARTES ANGLAIS DE STYLE REGENCY", | |
| 1115 | + "subtitle": null, | |
| 1116 | + "estimateLow": 700, | |
| 1117 | + "estimateHigh": 1000, | |
| 1118 | + "sold": 3712, | |
| 1119 | + "url": "https://www.artcurial.com/en/sales/6557/lots/115-a", | |
| 1120 | + "image": "https://www.artcurial.com/item-images/6e1fe727-4952-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_204.jpg?w=400&force_webp=true" | |
| 1121 | + }, | |
| 1122 | + { | |
| 1123 | + "lotNo": "116", | |
| 1124 | + "title": "PAIRE DE CHAISES SUISSES DU MILIEU DU XVIIIe SIÈCLE, BERNE", | |
| 1125 | + "subtitle": null, | |
| 1126 | + "estimateLow": 200, | |
| 1127 | + "estimateHigh": 300, | |
| 1128 | + "sold": 297, | |
| 1129 | + "url": "https://www.artcurial.com/en/sales/6557/lots/116-a", | |
| 1130 | + "image": "https://www.artcurial.com/item-images/21ec0697-334e-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_209.jpg?w=400&force_webp=true" | |
| 1131 | + }, | |
| 1132 | + { | |
| 1133 | + "lotNo": "117", | |
| 1134 | + "title": "Albrecht SCHNIDER(born in 1958)", | |
| 1135 | + "subtitle": "Sans titre - 1998", | |
| 1136 | + "estimateLow": 2000, | |
| 1137 | + "estimateHigh": 3000, | |
| 1138 | + "sold": 4752, | |
| 1139 | + "url": "https://www.artcurial.com/en/sales/6557/lots/117-a", | |
| 1140 | + "image": "https://www.artcurial.com/item-images/ddd02540-3fb6-11f1-885b-a56624f1cc36/PICTURE_CATALOG/26112717-162A_260422.jpg?w=400&force_webp=true" | |
| 1141 | + }, | |
| 1142 | + { | |
| 1143 | + "lotNo": "118", | |
| 1144 | + "title": "Allemagne, début du XIXe siècle", | |
| 1145 | + "subtitle": null, | |
| 1146 | + "estimateLow": 300, | |
| 1147 | + "estimateHigh": 500, | |
| 1148 | + "sold": 445, | |
| 1149 | + "url": "https://www.artcurial.com/en/sales/6557/lots/118-a", | |
| 1150 | + "image": "https://www.artcurial.com/item-images/5700be23-5ffc-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/19.jpg?w=400&force_webp=true" | |
| 1151 | + }, | |
| 1152 | + { | |
| 1153 | + "lotNo": "119", | |
| 1154 | + "title": "Ecole européenne, 1830", | |
| 1155 | + "subtitle": "Vue d’un intérieur à Saint Pétersbourg", | |
| 1156 | + "estimateLow": 300, | |
| 1157 | + "estimateHigh": 500, | |
| 1158 | + "sold": 3712, | |
| 1159 | + "url": "https://www.artcurial.com/en/sales/6557/lots/119-a", | |
| 1160 | + "image": "https://www.artcurial.com/item-images/524cfeca-5a90-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-344%20A_WEB.jpg?w=400&force_webp=true" | |
| 1161 | + }, | |
| 1162 | + { | |
| 1163 | + "lotNo": "120", | |
| 1164 | + "title": "Ecole européenne du XIXe siècle", | |
| 1165 | + "subtitle": null, | |
| 1166 | + "estimateLow": 400, | |
| 1167 | + "estimateHigh": 600, | |
| 1168 | + "sold": 6682, | |
| 1169 | + "url": "https://www.artcurial.com/en/sales/6557/lots/120-a", | |
| 1170 | + "image": "https://www.artcurial.com/item-images/649d692f-5a90-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-358%20A_WEB.jpg?w=400&force_webp=true" | |
| 1171 | + }, | |
| 1172 | + { | |
| 1173 | + "lotNo": "121", | |
| 1174 | + "title": "LUSTRE D'ÉPOQUE NÉOCLASSIQUE, TRAVAIL ALLEMAND OU SUÉDOIS", | |
| 1175 | + "subtitle": null, | |
| 1176 | + "estimateLow": 2500, | |
| 1177 | + "estimateHigh": 4000, | |
| 1178 | + "sold": 4455, | |
| 1179 | + "url": "https://www.artcurial.com/en/sales/6557/lots/121-a", | |
| 1180 | + "image": "https://www.artcurial.com/item-images/65fcde82-4958-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_395.jpg?w=400&force_webp=true" | |
| 1181 | + }, | |
| 1182 | + { | |
| 1183 | + "lotNo": "122", | |
| 1184 | + "title": "BUREAU-SCRIBAN SUISSE DE LA PREMIÈRE MOITIÉ DU XVIIIe SIÈCLE, BERNE", | |
| 1185 | + "subtitle": null, | |
| 1186 | + "estimateLow": 5000, | |
| 1187 | + "estimateHigh": 8000, | |
| 1188 | + "sold": 4158, | |
| 1189 | + "url": "https://www.artcurial.com/en/sales/6557/lots/122-a", | |
| 1190 | + "image": "https://www.artcurial.com/item-images/23d873e4-34bd-11f1-a009-2939728b572b/PICTURE_CATALOG/26112717_206.jpg?w=400&force_webp=true" | |
| 1191 | + }, | |
| 1192 | + { | |
| 1193 | + "lotNo": "123", | |
| 1194 | + "title": "MAQUETTE DE PORCHE D’ENTRÉE, TRAVAIL ANGLAIS DU PREMIER QUART DU XIXe SIÈCLE", | |
| 1195 | + "subtitle": null, | |
| 1196 | + "estimateLow": 2500, | |
| 1197 | + "estimateHigh": 4000, | |
| 1198 | + "sold": 3712, | |
| 1199 | + "url": "https://www.artcurial.com/en/sales/6557/lots/123-a", | |
| 1200 | + "image": "https://www.artcurial.com/item-images/2a10b515-34bd-11f1-a009-2939728b572b/PICTURE_CATALOG/26112717_210.jpg?w=400&force_webp=true" | |
| 1201 | + }, | |
| 1202 | + { | |
| 1203 | + "lotNo": "124", | |
| 1204 | + "title": "TABLE DE MILIEU, TRAVAIL ANGLAIS DE LA FIN DU XVIIIe SIÈCLE", | |
| 1205 | + "subtitle": null, | |
| 1206 | + "estimateLow": 2000, | |
| 1207 | + "estimateHigh": 3000, | |
| 1208 | + "sold": 2970, | |
| 1209 | + "url": "https://www.artcurial.com/en/sales/6557/lots/124-a", | |
| 1210 | + "image": "https://www.artcurial.com/item-images/ff668635-334f-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_417.jpg?w=400&force_webp=true" | |
| 1211 | + }, | |
| 1212 | + { | |
| 1213 | + "lotNo": "125", | |
| 1214 | + "title": "BIBLIOTHÈQUE BASSE ALLEMANDE DE LA FIN DU XVIIIe SIÈCLE, KARLSRUHE", | |
| 1215 | + "subtitle": null, | |
| 1216 | + "estimateLow": 2000, | |
| 1217 | + "estimateHigh": 3000, | |
| 1218 | + "sold": 1262, | |
| 1219 | + "url": "https://www.artcurial.com/en/sales/6557/lots/125-a", | |
| 1220 | + "image": "https://www.artcurial.com/item-images/00833ca4-34be-11f1-a009-2939728b572b/PICTURE_CATALOG/26112717_414.jpg?w=400&force_webp=true" | |
| 1221 | + }, | |
| 1222 | + { | |
| 1223 | + "lotNo": "126", | |
| 1224 | + "title": "ENCRIER D'ÉPOQUE NÉOCLASSIQUE, TRAVAIL PROBABLEMENT ANGLAIS", | |
| 1225 | + "subtitle": null, | |
| 1226 | + "estimateLow": 400, | |
| 1227 | + "estimateHigh": 600, | |
| 1228 | + "sold": 2970, | |
| 1229 | + "url": "https://www.artcurial.com/en/sales/6557/lots/126-a", | |
| 1230 | + "image": "https://www.artcurial.com/item-images/fb0f0d73-5a90-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717_476.jpg?w=400&force_webp=true" | |
| 1231 | + }, | |
| 1232 | + { | |
| 1233 | + "lotNo": "127", | |
| 1234 | + "title": "GUÉRIDON ANGLAIS DE LA FIN DE L'ÉPOQUE GEORGE III, VERS 1800", | |
| 1235 | + "subtitle": null, | |
| 1236 | + "estimateLow": 300, | |
| 1237 | + "estimateHigh": 500, | |
| 1238 | + "sold": 445, | |
| 1239 | + "url": "https://www.artcurial.com/en/sales/6557/lots/127-a", | |
| 1240 | + "image": "https://www.artcurial.com/item-images/4800b6ab-334e-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_217.jpg?w=400&force_webp=true" | |
| 1241 | + }, | |
| 1242 | + { | |
| 1243 | + "lotNo": "128", | |
| 1244 | + "title": "CONSOLE ANGLAISE D'ÉPOQUE GEORGE III", | |
| 1245 | + "subtitle": null, | |
| 1246 | + "estimateLow": 1500, | |
| 1247 | + "estimateHigh": 2000, | |
| 1248 | + "sold": 3267, | |
| 1249 | + "url": "https://www.artcurial.com/en/sales/6557/lots/128-a", | |
| 1250 | + "image": "https://www.artcurial.com/item-images/7b7228a9-334f-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_440.jpg?w=400&force_webp=true" | |
| 1251 | + }, | |
| 1252 | + { | |
| 1253 | + "lotNo": "129", | |
| 1254 | + "title": "TABLE D'APPOINT ANGLAISE D'ÉPOQUE GEORGE II", | |
| 1255 | + "subtitle": null, | |
| 1256 | + "estimateLow": 700, | |
| 1257 | + "estimateHigh": 1000, | |
| 1258 | + "sold": 1188, | |
| 1259 | + "url": "https://www.artcurial.com/en/sales/6557/lots/129-a", | |
| 1260 | + "image": "https://www.artcurial.com/item-images/0cdd2df9-3350-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_415.jpg?w=400&force_webp=true" | |
| 1261 | + }, | |
| 1262 | + { | |
| 1263 | + "lotNo": "130", | |
| 1264 | + "title": "FAUTEUIL D'ÉPOQUE NÉOCLASSIQUE", | |
| 1265 | + "subtitle": null, | |
| 1266 | + "estimateLow": 600, | |
| 1267 | + "estimateHigh": 800, | |
| 1268 | + "sold": 2673, | |
| 1269 | + "url": "https://www.artcurial.com/en/sales/6557/lots/130-a", | |
| 1270 | + "image": "https://www.artcurial.com/item-images/75a15bd8-334f-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_441.jpg?w=400&force_webp=true" | |
| 1271 | + }, | |
| 1272 | + { | |
| 1273 | + "lotNo": "131", | |
| 1274 | + "title": "James Isaac ANDERSON (1813-1877)", | |
| 1275 | + "subtitle": null, | |
| 1276 | + "estimateLow": 200, | |
| 1277 | + "estimateHigh": 300, | |
| 1278 | + "sold": 5939, | |
| 1279 | + "url": "https://www.artcurial.com/en/sales/6557/lots/131-a", | |
| 1280 | + "image": "https://www.artcurial.com/item-images/9cee0c85-5ffc-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/20.jpg?w=400&force_webp=true" | |
| 1281 | + }, | |
| 1282 | + { | |
| 1283 | + "lotNo": "132", | |
| 1284 | + "title": "ENSEMBLE DE TROIS « SOUVENIRS DE GRAND TOUR » EN BRONZE ET MARBRE, ITALIE, D’APRÈS L’ANTIQUE", | |
| 1285 | + "subtitle": null, | |
| 1286 | + "estimateLow": 600, | |
| 1287 | + "estimateHigh": 800, | |
| 1288 | + "sold": 297, | |
| 1289 | + "url": "https://www.artcurial.com/en/sales/6557/lots/132-a", | |
| 1290 | + "image": "https://www.artcurial.com/item-images/ab176276-5ffc-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/20.jpg?w=400&force_webp=true" | |
| 1291 | + }, | |
| 1292 | + { | |
| 1293 | + "lotNo": "133", | |
| 1294 | + "title": "Italie, fin du XIXe siècle", | |
| 1295 | + "subtitle": null, | |
| 1296 | + "estimateLow": 300, | |
| 1297 | + "estimateHigh": 500, | |
| 1298 | + "sold": 371, | |
| 1299 | + "url": "https://www.artcurial.com/en/sales/6557/lots/133-a", | |
| 1300 | + "image": "https://www.artcurial.com/item-images/b70d5daa-5ffc-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/20.jpg?w=400&force_webp=true" | |
| 1301 | + }, | |
| 1302 | + { | |
| 1303 | + "lotNo": "134", | |
| 1304 | + "title": "BOÎTE MÉCANIQUE DE LA FIN DU XVIIIe SIÈCLE, TRAVAIL DE L'EUROPE DU NORD", | |
| 1305 | + "subtitle": null, | |
| 1306 | + "estimateLow": 2500, | |
| 1307 | + "estimateHigh": 4000, | |
| 1308 | + "sold": 1485, | |
| 1309 | + "url": "https://www.artcurial.com/en/sales/6557/lots/134-a", | |
| 1310 | + "image": "https://www.artcurial.com/item-images/c5e8505c-5ffc-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/20.jpg?w=400&force_webp=true" | |
| 1311 | + }, | |
| 1312 | + { | |
| 1313 | + "lotNo": "135", | |
| 1314 | + "title": "Italie, fin du XIVe siècle", | |
| 1315 | + "subtitle": "Page d'antiphonaire avec une lettrine S représentant le couronnement de la Vierge", | |
| 1316 | + "estimateLow": 2000, | |
| 1317 | + "estimateHigh": 3000, | |
| 1318 | + "sold": 2970, | |
| 1319 | + "url": "https://www.artcurial.com/en/sales/6557/lots/135-a", | |
| 1320 | + "image": "https://www.artcurial.com/item-images/3f344612-5a91-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-222%20A_WEB.jpg?w=400&force_webp=true" | |
| 1321 | + }, | |
| 1322 | + { | |
| 1323 | + "lotNo": "136", | |
| 1324 | + "title": "TENTURE BARGELLO, ITALIE, XVIIe-XVIIIe SIÈCLE", | |
| 1325 | + "subtitle": null, | |
| 1326 | + "estimateLow": 2000, | |
| 1327 | + "estimateHigh": 4000, | |
| 1328 | + "sold": 5197, | |
| 1329 | + "url": "https://www.artcurial.com/en/sales/6557/lots/136-a", | |
| 1330 | + "image": "https://www.artcurial.com/item-images/dfb1f175-4963-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_471.jpg?w=400&force_webp=true" | |
| 1331 | + }, | |
| 1332 | + { | |
| 1333 | + "lotNo": "138", | |
| 1334 | + "title": "MIROIR DE LA FIN DU XVIIIe SIÈCLE, ALLEMAGNE DU NORD", | |
| 1335 | + "subtitle": null, | |
| 1336 | + "estimateLow": 2000, | |
| 1337 | + "estimateHigh": 3000, | |
| 1338 | + "sold": 2970, | |
| 1339 | + "url": "https://www.artcurial.com/en/sales/6557/lots/138-a", | |
| 1340 | + "image": "https://www.artcurial.com/item-images/f0fb9363-334f-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_419.jpg?w=400&force_webp=true" | |
| 1341 | + }, | |
| 1342 | + { | |
| 1343 | + "lotNo": "139", | |
| 1344 | + "title": "Ecole suisse du début du XVIIIe siècle", | |
| 1345 | + "subtitle": "Portrait de femme et portrait d’homme", | |
| 1346 | + "estimateLow": 2000, | |
| 1347 | + "estimateHigh": 3000, | |
| 1348 | + "sold": 4455, | |
| 1349 | + "url": "https://www.artcurial.com/en/sales/6557/lots/139-a", | |
| 1350 | + "image": "https://www.artcurial.com/item-images/917ae42e-6001-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-199_WEB.jpg?w=400&force_webp=true" | |
| 1351 | + }, | |
| 1352 | + { | |
| 1353 | + "lotNo": "140", | |
| 1354 | + "title": "SECRÉTAIRE À ABATTANT SUISSE DE LA FIN DU XVIIIe SIÈCLE, BERNE", | |
| 1355 | + "subtitle": null, | |
| 1356 | + "estimateLow": 2000, | |
| 1357 | + "estimateHigh": 3000, | |
| 1358 | + "sold": 1930, | |
| 1359 | + "url": "https://www.artcurial.com/en/sales/6557/lots/140-a", | |
| 1360 | + "image": "https://www.artcurial.com/item-images/2fc85496-34bd-11f1-a009-2939728b572b/PICTURE_CATALOG/26112717_211.jpg?w=400&force_webp=true" | |
| 1361 | + }, | |
| 1362 | + { | |
| 1363 | + "lotNo": "141", | |
| 1364 | + "title": "PANNEAU DE LA DEUXIÈME MOITIÉ DU XVIIIe SIÈCLE, ATTRIBUÉ À THOMAS COMPIGNÉ", | |
| 1365 | + "subtitle": null, | |
| 1366 | + "estimateLow": 600, | |
| 1367 | + "estimateHigh": 800, | |
| 1368 | + "sold": 5642, | |
| 1369 | + "url": "https://www.artcurial.com/en/sales/6557/lots/141-a", | |
| 1370 | + "image": "https://www.artcurial.com/item-images/6256df4e-5a91-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-337_WEB.jpg?w=400&force_webp=true" | |
| 1371 | + }, | |
| 1372 | + { | |
| 1373 | + "lotNo": "142", | |
| 1374 | + "title": "Attribué à Maximilien de MEURON( Corcelles-près-Concise, 1785 - Neuchâtel, 1868)", | |
| 1375 | + "subtitle": "Chalet d'alpage au pied d'une cascade de montagne dans la vallée de Meiringen", | |
| 1376 | + "estimateLow": 800, | |
| 1377 | + "estimateHigh": 1200, | |
| 1378 | + "sold": 1039, | |
| 1379 | + "url": "https://www.artcurial.com/en/sales/6557/lots/142-a", | |
| 1380 | + "image": "https://www.artcurial.com/item-images/6ce00410-5a91-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-348%20A_WEB.jpg?w=400&force_webp=true" | |
| 1381 | + }, | |
| 1382 | + { | |
| 1383 | + "lotNo": "143", | |
| 1384 | + "title": "TAPIS D’AUBUSSON DE LA PREMIÈRE MOITIÉ DU XIXe SIÈCLE, FRANCE, VERS 1840", | |
| 1385 | + "subtitle": null, | |
| 1386 | + "estimateLow": 1500, | |
| 1387 | + "estimateHigh": 2000, | |
| 1388 | + "sold": 2524, | |
| 1389 | + "url": "https://www.artcurial.com/en/sales/6557/lots/143-a", | |
| 1390 | + "image": "https://www.artcurial.com/item-images/ac3c1a10-4954-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_308.jpg?w=400&force_webp=true" | |
| 1391 | + }, | |
| 1392 | + { | |
| 1393 | + "lotNo": "144", | |
| 1394 | + "title": "BOÎTE À LETTRES, TRAVAIL ALLEMAND DE LA FIN DU XVIIIe SIÈCLE", | |
| 1395 | + "subtitle": null, | |
| 1396 | + "estimateLow": 2500, | |
| 1397 | + "estimateHigh": 4000, | |
| 1398 | + "sold": 2524, | |
| 1399 | + "url": "https://www.artcurial.com/en/sales/6557/lots/144-a", | |
| 1400 | + "image": "https://www.artcurial.com/item-images/14d29dbd-4953-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_235.jpg?w=400&force_webp=true" | |
| 1401 | + }, | |
| 1402 | + { | |
| 1403 | + "lotNo": "145", | |
| 1404 | + "title": "BOÎTE MÉCANIQUE, TRAVAIL ALLEMAND DE LA FIN DU XVIIIe SIÈCLE", | |
| 1405 | + "subtitle": null, | |
| 1406 | + "estimateLow": 3000, | |
| 1407 | + "estimateHigh": 4000, | |
| 1408 | + "sold": 5197, | |
| 1409 | + "url": "https://www.artcurial.com/en/sales/6557/lots/145-a", | |
| 1410 | + "image": "https://www.artcurial.com/item-images/46d95160-4953-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_240.jpg?w=400&force_webp=true" | |
| 1411 | + }, | |
| 1412 | + { | |
| 1413 | + "lotNo": "146", | |
| 1414 | + "title": "PAIRE DE FAUTEUILS À CHÂSSIS DE STYLE LOUIS XV", | |
| 1415 | + "subtitle": null, | |
| 1416 | + "estimateLow": 1500, | |
| 1417 | + "estimateHigh": 2000, | |
| 1418 | + "sold": 1485, | |
| 1419 | + "url": "https://www.artcurial.com/en/sales/6557/lots/146-a", | |
| 1420 | + "image": "https://www.artcurial.com/item-images/1221aad4-334e-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_180.jpg?w=400&force_webp=true" | |
| 1421 | + }, | |
| 1422 | + { | |
| 1423 | + "lotNo": "147", | |
| 1424 | + "title": "BUREAU-SCRIBAN SUISSE DU TROISIÈME QUART DU XVIIIe SIÈCLE, BERNE", | |
| 1425 | + "subtitle": null, | |
| 1426 | + "estimateLow": 3000, | |
| 1427 | + "estimateHigh": 5000, | |
| 1428 | + "sold": 2376, | |
| 1429 | + "url": "https://www.artcurial.com/en/sales/6557/lots/147-a", | |
| 1430 | + "image": "https://www.artcurial.com/item-images/1ad74816-334e-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_185.jpg?w=400&force_webp=true" | |
| 1431 | + }, | |
| 1432 | + { | |
| 1433 | + "lotNo": "148", | |
| 1434 | + "title": "COMMODE À VANTAUX ALLEMANDE DE LA FIN DU XVIIIe SIÈCLE, BRUNSWICK OU BERLIN", | |
| 1435 | + "subtitle": null, | |
| 1436 | + "estimateLow": 8000, | |
| 1437 | + "estimateHigh": 12000, | |
| 1438 | + "sold": 9652, | |
| 1439 | + "url": "https://www.artcurial.com/en/sales/6557/lots/148-a", | |
| 1440 | + "image": "https://www.artcurial.com/item-images/34c5b3ac-3350-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_178.jpg?w=400&force_webp=true" | |
| 1441 | + }, | |
| 1442 | + { | |
| 1443 | + "lotNo": "149", | |
| 1444 | + "title": "SUSPENSION D’ÉPOQUE NÉOCLASSIQUE, TRAVAIL PROBABLEMENT SUÉDOIS DU PREMIER QUART DU XIXe SIÈCLE", | |
| 1445 | + "subtitle": null, | |
| 1446 | + "estimateLow": 3000, | |
| 1447 | + "estimateHigh": 5000, | |
| 1448 | + "sold": 2524, | |
| 1449 | + "url": "https://www.artcurial.com/en/sales/6557/lots/149-a", | |
| 1450 | + "image": "https://www.artcurial.com/item-images/9d71901e-4961-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_459.jpg?w=400&force_webp=true" | |
| 1451 | + }, | |
| 1452 | + { | |
| 1453 | + "lotNo": "150", | |
| 1454 | + "title": "MIROIR D’ENTRE-FENÊTRE, TRAVAIL ALLEMAND DE LA FIN DU XVIIIe SIÈCLE, BRUNSWICK OU BERLIN", | |
| 1455 | + "subtitle": null, | |
| 1456 | + "estimateLow": 5000, | |
| 1457 | + "estimateHigh": 8000, | |
| 1458 | + "sold": 3712, | |
| 1459 | + "url": "https://www.artcurial.com/en/sales/6557/lots/150-a", | |
| 1460 | + "image": "https://www.artcurial.com/item-images/f6f740c4-334f-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_418.jpg?w=400&force_webp=true" | |
| 1461 | + }, | |
| 1462 | + { | |
| 1463 | + "lotNo": "153", | |
| 1464 | + "title": "RÉDUCTION DE LA COLONNE DE PHOCAS, TRAVAIL PROBABLEMENT ROMAIN DU XIXe SIÈCLE", | |
| 1465 | + "subtitle": null, | |
| 1466 | + "estimateLow": 3000, | |
| 1467 | + "estimateHigh": 5000, | |
| 1468 | + "sold": 3712, | |
| 1469 | + "url": "https://www.artcurial.com/en/sales/6557/lots/153-a", | |
| 1470 | + "image": "https://www.artcurial.com/item-images/6d5b22af-5ffd-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/21.jpg?w=400&force_webp=true" | |
| 1471 | + }, | |
| 1472 | + { | |
| 1473 | + "lotNo": "156", | |
| 1474 | + "title": "Ecole autrichienne vers 1800(Entourage de Joseph Anton Koch)", | |
| 1475 | + "subtitle": "Léda et le cygne devant Capri", | |
| 1476 | + "estimateLow": 8000, | |
| 1477 | + "estimateHigh": 12000, | |
| 1478 | + "sold": 10394, | |
| 1479 | + "url": "https://www.artcurial.com/en/sales/6557/lots/156-a", | |
| 1480 | + "image": "https://www.artcurial.com/item-images/e4e575eb-5a92-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-338%20A_WEB.jpg?w=400&force_webp=true" | |
| 1481 | + }, | |
| 1482 | + { | |
| 1483 | + "lotNo": "157", | |
| 1484 | + "title": "TAZZA ANGLAISE DE LA PREMIÈRE MOITIÉ DU XIXe SIÈCLE", | |
| 1485 | + "subtitle": null, | |
| 1486 | + "estimateLow": 3000, | |
| 1487 | + "estimateHigh": 5000, | |
| 1488 | + "sold": 6682, | |
| 1489 | + "url": "https://www.artcurial.com/en/sales/6557/lots/157-a", | |
| 1490 | + "image": "https://www.artcurial.com/item-images/8d434631-334e-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_285D.jpg?w=400&force_webp=true" | |
| 1491 | + }, | |
| 1492 | + { | |
| 1493 | + "lotNo": "158", | |
| 1494 | + "title": "GUÉRIDON ANGLAIS D'ÉPOQUE REGENCY", | |
| 1495 | + "subtitle": null, | |
| 1496 | + "estimateLow": 1000, | |
| 1497 | + "estimateHigh": 1500, | |
| 1498 | + "sold": 2227, | |
| 1499 | + "url": "https://www.artcurial.com/en/sales/6557/lots/158-a", | |
| 1500 | + "image": "https://www.artcurial.com/item-images/1d6868ba-3350-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_243.jpg?w=400&force_webp=true" | |
| 1501 | + }, | |
| 1502 | + { | |
| 1503 | + "lotNo": "159", | |
| 1504 | + "title": "TABLE DE BIBLIOTHÈQUE, TRAVAIL SUISSE D’ÉPOQUE NÉOCLASSIQUE, BERNE", | |
| 1505 | + "subtitle": null, | |
| 1506 | + "estimateLow": 2500, | |
| 1507 | + "estimateHigh": 4000, | |
| 1508 | + "sold": 4455, | |
| 1509 | + "url": "https://www.artcurial.com/en/sales/6557/lots/159-a", | |
| 1510 | + "image": "https://www.artcurial.com/item-images/471a5f9b-34be-11f1-a009-2939728b572b/PICTURE_CATALOG/26112717_476.jpg?w=400&force_webp=true" | |
| 1511 | + }, | |
| 1512 | + { | |
| 1513 | + "lotNo": "162", | |
| 1514 | + "title": "D’après l’Antique, Italie, XXe siècle", | |
| 1515 | + "subtitle": null, | |
| 1516 | + "estimateLow": 2000, | |
| 1517 | + "estimateHigh": 3000, | |
| 1518 | + "sold": 2673, | |
| 1519 | + "url": "https://www.artcurial.com/en/sales/6557/lots/162-a", | |
| 1520 | + "image": "https://www.artcurial.com/item-images/a22d7974-5ffd-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/22.jpg?w=400&force_webp=true" | |
| 1521 | + }, | |
| 1522 | + { | |
| 1523 | + "lotNo": "164", | |
| 1524 | + "title": "ENSEMBLE DE SEPT PRESSE-PAPIERS D'ÉPOQUE NÉOCLASSIQUE", | |
| 1525 | + "subtitle": null, | |
| 1526 | + "estimateLow": 2000, | |
| 1527 | + "estimateHigh": 3000, | |
| 1528 | + "sold": 742, | |
| 1529 | + "url": "https://www.artcurial.com/en/sales/6557/lots/164-a", | |
| 1530 | + "image": "https://www.artcurial.com/item-images/9a81b61f-7458-11f1-bffc-518c9d0eae04/PICTURE_CATALOG/MOA%2038475_WEB.jpg?w=400&force_webp=true" | |
| 1531 | + }, | |
| 1532 | + { | |
| 1533 | + "lotNo": "166", | |
| 1534 | + "title": "LUSTRE D’ÉPOQUE NÉOCLASSIQUE, TRAVAIL VIENNOIS DU DÉBUT DU XIXe SIECLE", | |
| 1535 | + "subtitle": null, | |
| 1536 | + "estimateLow": 4000, | |
| 1537 | + "estimateHigh": 6000, | |
| 1538 | + "sold": 5197, | |
| 1539 | + "url": "https://www.artcurial.com/en/sales/6557/lots/166-a", | |
| 1540 | + "image": "https://www.artcurial.com/item-images/28365776-4954-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_293.jpg?w=400&force_webp=true" | |
| 1541 | + }, | |
| 1542 | + { | |
| 1543 | + "lotNo": "167", | |
| 1544 | + "title": "PENDULE NEUCHÂTELOISE D'ÉPOQUE NÉOCLASSIQUE", | |
| 1545 | + "subtitle": null, | |
| 1546 | + "estimateLow": 1500, | |
| 1547 | + "estimateHigh": 2000, | |
| 1548 | + "sold": 1188, | |
| 1549 | + "url": "https://www.artcurial.com/en/sales/6557/lots/167-a", | |
| 1550 | + "image": "https://www.artcurial.com/item-images/428ef82d-5a93-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/Suisse-25.02.25-92704%201.jpg?w=400&force_webp=true" | |
| 1551 | + }, | |
| 1552 | + { | |
| 1553 | + "lotNo": "168", | |
| 1554 | + "title": "PAIRE DE CANDÉLABRES D'ÉPOQUE NÉOCLASSIQUE, TRAVAIL PROBABLEMENT SUÉDOIS DU DÉBUT DU XIXe SIÈCLE", | |
| 1555 | + "subtitle": null, | |
| 1556 | + "estimateLow": 2000, | |
| 1557 | + "estimateHigh": 3000, | |
| 1558 | + "sold": 2970, | |
| 1559 | + "url": "https://www.artcurial.com/en/sales/6557/lots/168-a", | |
| 1560 | + "image": "https://www.artcurial.com/item-images/d541a57a-5ffd-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/23.jpg?w=400&force_webp=true" | |
| 1561 | + }, | |
| 1562 | + { | |
| 1563 | + "lotNo": "169", | |
| 1564 | + "title": "D’après Leonhard Posch (1750-1831)", | |
| 1565 | + "subtitle": null, | |
| 1566 | + "estimateLow": 400, | |
| 1567 | + "estimateHigh": 600, | |
| 1568 | + "sold": 2079, | |
| 1569 | + "url": "https://www.artcurial.com/en/sales/6557/lots/169-a", | |
| 1570 | + "image": "https://www.artcurial.com/item-images/864267d5-397f-11f1-bef4-f918d58faf87/PICTURE_CATALOG/Suisse-25.02.25-92704%201.jpg?w=400&force_webp=true" | |
| 1571 | + }, | |
| 1572 | + { | |
| 1573 | + "lotNo": "173", | |
| 1574 | + "title": "DEUX LAMPADAIRES DE STYLE NÉOCLASSIQUE FORMANT PAIRE", | |
| 1575 | + "subtitle": null, | |
| 1576 | + "estimateLow": 400, | |
| 1577 | + "estimateHigh": 600, | |
| 1578 | + "sold": 2376, | |
| 1579 | + "url": "https://www.artcurial.com/en/sales/6557/lots/173-a", | |
| 1580 | + "image": "https://www.artcurial.com/item-images/adae5ee2-5a93-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717_330.jpg?w=400&force_webp=true" | |
| 1581 | + }, | |
| 1582 | + { | |
| 1583 | + "lotNo": "174", | |
| 1584 | + "title": "PAIRE DE GUÉRIDONS DE STYLE NÉO-ÉTRUSQUE", | |
| 1585 | + "subtitle": null, | |
| 1586 | + "estimateLow": 400, | |
| 1587 | + "estimateHigh": 600, | |
| 1588 | + "sold": 3712, | |
| 1589 | + "url": "https://www.artcurial.com/en/sales/6557/lots/174-a", | |
| 1590 | + "image": "https://www.artcurial.com/item-images/b3da93cd-334e-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_309.jpg?w=400&force_webp=true" | |
| 1591 | + }, | |
| 1592 | + { | |
| 1593 | + "lotNo": "175", | |
| 1594 | + "title": "Ecole néoclassique", | |
| 1595 | + "subtitle": "Etude de vase Borghese", | |
| 1596 | + "estimateLow": 600, | |
| 1597 | + "estimateHigh": 800, | |
| 1598 | + "sold": 2376, | |
| 1599 | + "url": "https://www.artcurial.com/en/sales/6557/lots/175-a", | |
| 1600 | + "image": "https://www.artcurial.com/item-images/db30e9f9-5a93-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-353%20A_WEB.jpg?w=400&force_webp=true" | |
| 1601 | + }, | |
| 1602 | + { | |
| 1603 | + "lotNo": "176", | |
| 1604 | + "title": "PAIRE DE TABOURETS CURULES SUISSES D'ÉPOQUE NÉOCLASSIQUE, BERNE, PREMIÈRE MOITIÉ DU XIXe SIÈCLE", | |
| 1605 | + "subtitle": null, | |
| 1606 | + "estimateLow": 500, | |
| 1607 | + "estimateHigh": 800, | |
| 1608 | + "sold": 1782, | |
| 1609 | + "url": "https://www.artcurial.com/en/sales/6557/lots/176-a", | |
| 1610 | + "image": "https://www.artcurial.com/item-images/a7fa1c69-334e-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_306.jpg?w=400&force_webp=true" | |
| 1611 | + }, | |
| 1612 | + { | |
| 1613 | + "lotNo": "177", | |
| 1614 | + "title": "PAIRE DE PIEDS DE LAMPE, TRAVAIL MODERNE", | |
| 1615 | + "subtitle": null, | |
| 1616 | + "estimateLow": 200, | |
| 1617 | + "estimateHigh": 300, | |
| 1618 | + "sold": 2079, | |
| 1619 | + "url": "https://www.artcurial.com/en/sales/6557/lots/177-a", | |
| 1620 | + "image": "https://www.artcurial.com/item-images/fdc72e7f-5ffd-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/24.jpg?w=400&force_webp=true" | |
| 1621 | + }, | |
| 1622 | + { | |
| 1623 | + "lotNo": "178", | |
| 1624 | + "title": "SPHÈRE DITE \"DOOR STOPPER\" D'ÉPOQUE NÉOCLASSIQUE", | |
| 1625 | + "subtitle": null, | |
| 1626 | + "estimateLow": 1500, | |
| 1627 | + "estimateHigh": 2000, | |
| 1628 | + "sold": 2227, | |
| 1629 | + "url": "https://www.artcurial.com/en/sales/6557/lots/178-a", | |
| 1630 | + "image": "https://www.artcurial.com/item-images/09168970-5ffe-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/24.jpg?w=400&force_webp=true" | |
| 1631 | + }, | |
| 1632 | + { | |
| 1633 | + "lotNo": "179", | |
| 1634 | + "title": "VASE, TRAVAIL ITALIEN D'ÉPOQUE NÉOCLASSIQUE, PREMIÈRE MOITIÉ DU XIXe SIÈCLE", | |
| 1635 | + "subtitle": null, | |
| 1636 | + "estimateLow": 1000, | |
| 1637 | + "estimateHigh": 1500, | |
| 1638 | + "sold": 1782, | |
| 1639 | + "url": "https://www.artcurial.com/en/sales/6557/lots/179-a", | |
| 1640 | + "image": "https://www.artcurial.com/item-images/13c42627-5ffe-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/24.jpg?w=400&force_webp=true" | |
| 1641 | + }, | |
| 1642 | + { | |
| 1643 | + "lotNo": "180", | |
| 1644 | + "title": "CHAISE NÉOGOTHIQUE, TRAVAIL ANGLAIS D'ÉPOQUE VICTORIENNE", | |
| 1645 | + "subtitle": null, | |
| 1646 | + "estimateLow": 700, | |
| 1647 | + "estimateHigh": 1000, | |
| 1648 | + "sold": 742, | |
| 1649 | + "url": "https://www.artcurial.com/en/sales/6557/lots/180-a", | |
| 1650 | + "image": "https://www.artcurial.com/item-images/7acbb2fa-4954-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_302.jpg?w=400&force_webp=true" | |
| 1651 | + }, | |
| 1652 | + { | |
| 1653 | + "lotNo": "181", | |
| 1654 | + "title": "CONSOLE DE STYLE NÉOCLASSIQUE", | |
| 1655 | + "subtitle": null, | |
| 1656 | + "estimateLow": 2000, | |
| 1657 | + "estimateHigh": 3000, | |
| 1658 | + "sold": 3712, | |
| 1659 | + "url": "https://www.artcurial.com/en/sales/6557/lots/181-a", | |
| 1660 | + "image": "https://www.artcurial.com/item-images/e2eb4ec8-5ffe-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/24.jpg?w=400&force_webp=true" | |
| 1661 | + }, | |
| 1662 | + { | |
| 1663 | + "lotNo": "182", | |
| 1664 | + "title": "TIRAGE PARTIEL EN PLÂTRE REPRÉSENTANT UN CHAPITEAU IONIQUE DE L'ERECHTEION À ATHÈNES", | |
| 1665 | + "subtitle": null, | |
| 1666 | + "estimateLow": 300, | |
| 1667 | + "estimateHigh": 500, | |
| 1668 | + "sold": 1188, | |
| 1669 | + "url": "https://www.artcurial.com/en/sales/6557/lots/182-a", | |
| 1670 | + "image": "https://www.artcurial.com/item-images/ee0d0a0a-5ffe-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/24.jpg?w=400&force_webp=true" | |
| 1671 | + }, | |
| 1672 | + { | |
| 1673 | + "lotNo": "183", | |
| 1674 | + "title": "BOÎTE À BEURRE SUÉDOISE DU DÉBUT DU XIXe SIÈCLE", | |
| 1675 | + "subtitle": null, | |
| 1676 | + "estimateLow": 1500, | |
| 1677 | + "estimateHigh": 2000, | |
| 1678 | + "sold": 3267, | |
| 1679 | + "url": "https://www.artcurial.com/en/sales/6557/lots/183-a", | |
| 1680 | + "image": "https://www.artcurial.com/item-images/fbbe70db-5ffe-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/25.jpg?w=400&force_webp=true" | |
| 1681 | + }, | |
| 1682 | + { | |
| 1683 | + "lotNo": "184", | |
| 1684 | + "title": "D’après l’Antique, Italie, XIXe siècle", | |
| 1685 | + "subtitle": null, | |
| 1686 | + "estimateLow": 800, | |
| 1687 | + "estimateHigh": 1200, | |
| 1688 | + "sold": 3712, | |
| 1689 | + "url": "https://www.artcurial.com/en/sales/6557/lots/184-a", | |
| 1690 | + "image": "https://www.artcurial.com/item-images/06be9a5c-5fff-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/25.jpg?w=400&force_webp=true" | |
| 1691 | + }, | |
| 1692 | + { | |
| 1693 | + "lotNo": "185", | |
| 1694 | + "title": "TAZZA SUÉDOISE D'ÉPOQUE NÉOCLASSIQUE, VERS 1830", | |
| 1695 | + "subtitle": null, | |
| 1696 | + "estimateLow": 3000, | |
| 1697 | + "estimateHigh": 5000, | |
| 1698 | + "sold": 8167, | |
| 1699 | + "url": "https://www.artcurial.com/en/sales/6557/lots/185-a", | |
| 1700 | + "image": "https://www.artcurial.com/item-images/838fba60-5fff-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/25.jpg?w=400&force_webp=true" | |
| 1701 | + }, | |
| 1702 | + { | |
| 1703 | + "lotNo": "186", | |
| 1704 | + "title": "Ecole néoclassique", | |
| 1705 | + "subtitle": "Le renvoi d’Agar", | |
| 1706 | + "estimateLow": 7000, | |
| 1707 | + "estimateHigh": 10000, | |
| 1708 | + "sold": 20045, | |
| 1709 | + "url": "https://www.artcurial.com/en/sales/6557/lots/186-a", | |
| 1710 | + "image": "https://www.artcurial.com/item-images/6c1dbe8d-5a94-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-350%20A_WEB.jpg?w=400&force_webp=true" | |
| 1711 | + }, | |
| 1712 | + { | |
| 1713 | + "lotNo": "187", | |
| 1714 | + "title": "CINQ MÉDAILLONS EN BISCUIT DE COPENHAGUE DU XIXe ET XXe SIÈCLE", | |
| 1715 | + "subtitle": null, | |
| 1716 | + "estimateLow": 500, | |
| 1717 | + "estimateHigh": 800, | |
| 1718 | + "sold": 297, | |
| 1719 | + "url": "https://www.artcurial.com/en/sales/6557/lots/187-a", | |
| 1720 | + "image": "https://www.artcurial.com/item-images/7729a7e2-5a94-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-295_WEB.jpg?w=400&force_webp=true" | |
| 1721 | + }, | |
| 1722 | + { | |
| 1723 | + "lotNo": "188", | |
| 1724 | + "title": "LUSTRE RUSSE DE LA FIN DU XVIIIe SIÈCLE", | |
| 1725 | + "subtitle": null, | |
| 1726 | + "estimateLow": 4000, | |
| 1727 | + "estimateHigh": 6000, | |
| 1728 | + "sold": 3712, | |
| 1729 | + "url": "https://www.artcurial.com/en/sales/6557/lots/188-a", | |
| 1730 | + "image": "https://www.artcurial.com/item-images/6cf46a12-4953-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_261.jpg?w=400&force_webp=true" | |
| 1731 | + }, | |
| 1732 | + { | |
| 1733 | + "lotNo": "189", | |
| 1734 | + "title": "Angleterre, fin du XVIIIe-début du XIXe siècle", | |
| 1735 | + "subtitle": null, | |
| 1736 | + "estimateLow": 3000, | |
| 1737 | + "estimateHigh": 5000, | |
| 1738 | + "sold": 6682, | |
| 1739 | + "url": "https://www.artcurial.com/en/sales/6557/lots/189-a", | |
| 1740 | + "image": "https://www.artcurial.com/item-images/93ad1822-5fff-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26.jpg?w=400&force_webp=true" | |
| 1741 | + }, | |
| 1742 | + { | |
| 1743 | + "lotNo": "190", | |
| 1744 | + "title": "PAIRE DE GAINES DE LA FIN DU XVIIIe SIÈCLE, TRAVAIL PROBABLEMENT SUÉDOIS", | |
| 1745 | + "subtitle": null, | |
| 1746 | + "estimateLow": 5000, | |
| 1747 | + "estimateHigh": 8000, | |
| 1748 | + "sold": 6682, | |
| 1749 | + "url": "https://www.artcurial.com/en/sales/6557/lots/190-a", | |
| 1750 | + "image": "https://www.artcurial.com/item-images/3fb79d79-34bd-11f1-a009-2939728b572b/PICTURE_CATALOG/26112717_300.jpg?w=400&force_webp=true" | |
| 1751 | + }, | |
| 1752 | + { | |
| 1753 | + "lotNo": "191", | |
| 1754 | + "title": "PLATEAU ROMAIN D'ÉPOQUE NÉOCLASSIQUE, VERS 1820-1825", | |
| 1755 | + "subtitle": null, | |
| 1756 | + "estimateLow": 20000, | |
| 1757 | + "estimateHigh": 30000, | |
| 1758 | + "sold": 22273, | |
| 1759 | + "url": "https://www.artcurial.com/en/sales/6557/lots/191-a", | |
| 1760 | + "image": "https://www.artcurial.com/item-images/9aa4b846-334e-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_298D.jpg?w=400&force_webp=true" | |
| 1761 | + }, | |
| 1762 | + { | |
| 1763 | + "lotNo": "192", | |
| 1764 | + "title": "Pierre-Nicolas SICOT, dit LEGRAND DE LERANT ou SERANT(Pont-l’Evêque, 1758 – Berne, 1829)", | |
| 1765 | + "subtitle": "Portrait de Philipp Rudolf v. Sinner (1760-1820) et de son épouse Henriette v. Mutach (1768-1841)", | |
| 1766 | + "estimateLow": 3000, | |
| 1767 | + "estimateHigh": 4000, | |
| 1768 | + "sold": 3712, | |
| 1769 | + "url": "https://www.artcurial.com/en/sales/6557/lots/192-a", | |
| 1770 | + "image": "https://www.artcurial.com/item-images/a8d3260f-6001-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-340_WEB.jpg?w=400&force_webp=true" | |
| 1771 | + }, | |
| 1772 | + { | |
| 1773 | + "lotNo": "193", | |
| 1774 | + "title": "MOBILIER DE SALLE À MANGER, TRAVAIL SUISSE DE LA FIN DU XVIIIe SIÈCLE, BERNE", | |
| 1775 | + "subtitle": null, | |
| 1776 | + "estimateLow": 4000, | |
| 1777 | + "estimateHigh": 6000, | |
| 1778 | + "sold": 5642, | |
| 1779 | + "url": "https://www.artcurial.com/en/sales/6557/lots/193-a", | |
| 1780 | + "image": "https://www.artcurial.com/item-images/ad9aff9b-334e-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_307.jpg?w=400&force_webp=true" | |
| 1781 | + }, | |
| 1782 | + { | |
| 1783 | + "lotNo": "194", | |
| 1784 | + "title": "GUÉRIDON SUISSE D'ÉPOQUE NÉOCLASSIQUE, PREMIÈRE MOITIÉ DU XIXe SIÈCLE", | |
| 1785 | + "subtitle": null, | |
| 1786 | + "estimateLow": 2000, | |
| 1787 | + "estimateHigh": 3000, | |
| 1788 | + "sold": 1188, | |
| 1789 | + "url": "https://www.artcurial.com/en/sales/6557/lots/194-a", | |
| 1790 | + "image": "https://www.artcurial.com/item-images/56df326d-34bd-11f1-a009-2939728b572b/PICTURE_CATALOG/26112717_329.jpg?w=400&force_webp=true" | |
| 1791 | + }, | |
| 1792 | + { | |
| 1793 | + "lotNo": "195", | |
| 1794 | + "title": "BONHEUR-DU-JOUR D'ÉPOQUE DIRECTOIRE", | |
| 1795 | + "subtitle": null, | |
| 1796 | + "estimateLow": 2000, | |
| 1797 | + "estimateHigh": 3000, | |
| 1798 | + "sold": 1782, | |
| 1799 | + "url": "https://www.artcurial.com/en/sales/6557/lots/195-a", | |
| 1800 | + "image": "https://www.artcurial.com/item-images/d407ec90-334f-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_422.jpg?w=400&force_webp=true" | |
| 1801 | + }, | |
| 1802 | + { | |
| 1803 | + "lotNo": "197", | |
| 1804 | + "title": "Attribué à Baldassare CATTRANI(Actif entre 1776 et 1810)", | |
| 1805 | + "subtitle": "Suite de onze études de fleurs", | |
| 1806 | + "estimateLow": 4000, | |
| 1807 | + "estimateHigh": 6000, | |
| 1808 | + "sold": 14849, | |
| 1809 | + "url": "https://www.artcurial.com/en/sales/6557/lots/197-a", | |
| 1810 | + "image": "https://www.artcurial.com/item-images/09a76ad4-5aa2-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-475%2001-11%20A_WEB.jpg?w=400&force_webp=true" | |
| 1811 | + }, | |
| 1812 | + { | |
| 1813 | + "lotNo": "198", | |
| 1814 | + "title": "SUSPENSION DE LA FIN DU XVIIIe SIÈCLE, TRAVAIL DE L'ITALIE DU NORD, PROBABLEMENT PIÉMONT OU VENISE", | |
| 1815 | + "subtitle": null, | |
| 1816 | + "estimateLow": 2000, | |
| 1817 | + "estimateHigh": 3000, | |
| 1818 | + "sold": 9652, | |
| 1819 | + "url": "https://www.artcurial.com/en/sales/6557/lots/198-a", | |
| 1820 | + "image": "https://www.artcurial.com/item-images/b3c62c25-334f-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_426.jpg?w=400&force_webp=true" | |
| 1821 | + }, | |
| 1822 | + { | |
| 1823 | + "lotNo": "199", | |
| 1824 | + "title": "SUITE DE QUATRE POTS À ORANGERS DE LA FIN DU XIXe SIÈCLE", | |
| 1825 | + "subtitle": null, | |
| 1826 | + "estimateLow": 1500, | |
| 1827 | + "estimateHigh": 2000, | |
| 1828 | + "sold": 11136, | |
| 1829 | + "url": "https://www.artcurial.com/en/sales/6557/lots/199-a", | |
| 1830 | + "image": "https://www.artcurial.com/item-images/97545f7f-334f-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_432.jpg?w=400&force_webp=true" | |
| 1831 | + }, | |
| 1832 | + { | |
| 1833 | + "lotNo": "200", | |
| 1834 | + "title": "SUSPENSION DE STYLE NEO-ÉTRUSQUE", | |
| 1835 | + "subtitle": null, | |
| 1836 | + "estimateLow": 2000, | |
| 1837 | + "estimateHigh": 3000, | |
| 1838 | + "sold": 7424, | |
| 1839 | + "url": "https://www.artcurial.com/en/sales/6557/lots/200-a", | |
| 1840 | + "image": "https://www.artcurial.com/item-images/adecacc4-334f-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_427.jpg?w=400&force_webp=true" | |
| 1841 | + }, | |
| 1842 | + { | |
| 1843 | + "lotNo": "201", | |
| 1844 | + "title": "GUÉRIDON, TRAVAIL ITALIEN D'ÉPOQUE NÉOCLASSIQUE, PREMIÈRE MOITIÉ DU XIXe SIÈCLE", | |
| 1845 | + "subtitle": null, | |
| 1846 | + "estimateLow": 3000, | |
| 1847 | + "estimateHigh": 5000, | |
| 1848 | + "sold": 2673, | |
| 1849 | + "url": "https://www.artcurial.com/en/sales/6557/lots/201-a", | |
| 1850 | + "image": "https://www.artcurial.com/item-images/2b765b0b-5aa2-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717_327.jpg?w=400&force_webp=true" | |
| 1851 | + }, | |
| 1852 | + { | |
| 1853 | + "lotNo": "202", | |
| 1854 | + "title": "CHAISE DU TROISIÈME QUART DU XIXe SIÈCLE, TRAVAIL PROBABLEMENT AUTRICHIEN", | |
| 1855 | + "subtitle": null, | |
| 1856 | + "estimateLow": 2000, | |
| 1857 | + "estimateHigh": 3000, | |
| 1858 | + "sold": 6682, | |
| 1859 | + "url": "https://www.artcurial.com/en/sales/6557/lots/202-a", | |
| 1860 | + "image": "https://www.artcurial.com/item-images/ff97c8c2-6000-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/28.jpg?w=400&force_webp=true" | |
| 1861 | + }, | |
| 1862 | + { | |
| 1863 | + "lotNo": "203", | |
| 1864 | + "title": "John Henning (1771-1851), vers 1820", | |
| 1865 | + "subtitle": null, | |
| 1866 | + "estimateLow": 300, | |
| 1867 | + "estimateHigh": 500, | |
| 1868 | + "sold": 891, | |
| 1869 | + "url": "https://www.artcurial.com/en/sales/6557/lots/203-a", | |
| 1870 | + "image": "https://www.artcurial.com/item-images/f5fde601-6000-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/28.jpg?w=400&force_webp=true" | |
| 1871 | + }, | |
| 1872 | + { | |
| 1873 | + "lotNo": "204", | |
| 1874 | + "title": "PAIRE DE GIRANDOLES SUISSES DE LA FIN DU XVIIIe SIÈCLE, BERNE", | |
| 1875 | + "subtitle": null, | |
| 1876 | + "estimateLow": 700, | |
| 1877 | + "estimateHigh": 1000, | |
| 1878 | + "sold": 2970, | |
| 1879 | + "url": "https://www.artcurial.com/en/sales/6557/lots/204-a", | |
| 1880 | + "image": "https://www.artcurial.com/item-images/ece87580-6000-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/28.jpg?w=400&force_webp=true" | |
| 1881 | + }, | |
| 1882 | + { | |
| 1883 | + "lotNo": "206", | |
| 1884 | + "title": "FAUTEUIL ITALIEN DE LA FIN DU XIXe SIÈCLE, VENISE", | |
| 1885 | + "subtitle": null, | |
| 1886 | + "estimateLow": 1500, | |
| 1887 | + "estimateHigh": 2000, | |
| 1888 | + "sold": 4158, | |
| 1889 | + "url": "https://www.artcurial.com/en/sales/6557/lots/206-a", | |
| 1890 | + "image": "https://www.artcurial.com/item-images/d30b6afe-4958-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_406.jpg?w=400&force_webp=true" | |
| 1891 | + }, | |
| 1892 | + { | |
| 1893 | + "lotNo": "207", | |
| 1894 | + "title": "LAMPE DE LECTURE DE STYLE NÉOCLASSIQUE, TRAVAIL MODERNE", | |
| 1895 | + "subtitle": null, | |
| 1896 | + "estimateLow": 600, | |
| 1897 | + "estimateHigh": 800, | |
| 1898 | + "sold": 1633, | |
| 1899 | + "url": "https://www.artcurial.com/en/sales/6557/lots/207-a", | |
| 1900 | + "image": "https://www.artcurial.com/item-images/c3c67a4a-4952-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_225.jpg?w=400&force_webp=true" | |
| 1901 | + }, | |
| 1902 | + { | |
| 1903 | + "lotNo": "208", | |
| 1904 | + "title": "John Henning (1771-1851), vers 1820", | |
| 1905 | + "subtitle": null, | |
| 1906 | + "estimateLow": 700, | |
| 1907 | + "estimateHigh": 1000, | |
| 1908 | + "sold": 5642, | |
| 1909 | + "url": "https://www.artcurial.com/en/sales/6557/lots/208-a", | |
| 1910 | + "image": "https://www.artcurial.com/item-images/8dfd4969-5aa2-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717-464_WEB.jpg?w=400&force_webp=true" | |
| 1911 | + }, | |
| 1912 | + { | |
| 1913 | + "lotNo": "209", | |
| 1914 | + "title": "PAIRE DE CANDÉLABRES DE STYLE NÉOCLASSIQUE, TRAVAIL DE L'EUROPE DU NORD", | |
| 1915 | + "subtitle": null, | |
| 1916 | + "estimateLow": 2000, | |
| 1917 | + "estimateHigh": 3000, | |
| 1918 | + "sold": 6682, | |
| 1919 | + "url": "https://www.artcurial.com/en/sales/6557/lots/209-a", | |
| 1920 | + "image": "https://www.artcurial.com/item-images/d649235e-6000-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/29.jpg?w=400&force_webp=true" | |
| 1921 | + }, | |
| 1922 | + { | |
| 1923 | + "lotNo": "210", | |
| 1924 | + "title": "VASE OVOÏDE EN MARBRE SCULPTE REPRÉSENTANT LA FABLE D’ÉSOPE « LE RENARD ET LA CIGOGNE »", | |
| 1925 | + "subtitle": null, | |
| 1926 | + "estimateLow": 2000, | |
| 1927 | + "estimateHigh": 3000, | |
| 1928 | + "sold": 7424, | |
| 1929 | + "url": "https://www.artcurial.com/en/sales/6557/lots/210-a", | |
| 1930 | + "image": "https://www.artcurial.com/item-images/cc1b8c1c-6000-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/29.jpg?w=400&force_webp=true" | |
| 1931 | + }, | |
| 1932 | + { | |
| 1933 | + "lotNo": "211", | |
| 1934 | + "title": "BARBIÈRE ITALIENNE DU PREMIER QUART DU XIXe SIÈCLE", | |
| 1935 | + "subtitle": null, | |
| 1936 | + "estimateLow": 2500, | |
| 1937 | + "estimateHigh": 4000, | |
| 1938 | + "sold": 2970, | |
| 1939 | + "url": "https://www.artcurial.com/en/sales/6557/lots/211-a", | |
| 1940 | + "image": "https://www.artcurial.com/item-images/753a51e2-334e-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_270.jpg?w=400&force_webp=true" | |
| 1941 | + }, | |
| 1942 | + { | |
| 1943 | + "lotNo": "212", | |
| 1944 | + "title": "RARE MAQUETTE DE GRUE DE LA DEUXIÈME MOITIÉ DU XVIIIe SIÈCLE", | |
| 1945 | + "subtitle": null, | |
| 1946 | + "estimateLow": 3000, | |
| 1947 | + "estimateHigh": 5000, | |
| 1948 | + "sold": 5939, | |
| 1949 | + "url": "https://www.artcurial.com/en/sales/6557/lots/212-a", | |
| 1950 | + "image": "https://www.artcurial.com/item-images/80625263-4953-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_266.jpg?w=400&force_webp=true" | |
| 1951 | + }, | |
| 1952 | + { | |
| 1953 | + "lotNo": "214", | |
| 1954 | + "title": "Albrecht SCHNIDER(born in 1958)", | |
| 1955 | + "subtitle": "Sans titre - 2010", | |
| 1956 | + "estimateLow": 2000, | |
| 1957 | + "estimateHigh": 3000, | |
| 1958 | + "sold": 2673, | |
| 1959 | + "url": "https://www.artcurial.com/en/sales/6557/lots/214-a", | |
| 1960 | + "image": "https://www.artcurial.com/item-images/1c3b9592-3f2a-11f1-885b-a56624f1cc36/PICTURE_CATALOG/26112717-257_260422.jpg?w=400&force_webp=true" | |
| 1961 | + }, | |
| 1962 | + { | |
| 1963 | + "lotNo": "215", | |
| 1964 | + "title": "PENDULE D’ÉPOQUE EMPIRE \"LA DÉLIVRANCE DE L'INDIEN NATCHEZ CHACTAS PAR ATALA\"", | |
| 1965 | + "subtitle": null, | |
| 1966 | + "estimateLow": 2000, | |
| 1967 | + "estimateHigh": 3000, | |
| 1968 | + "sold": 14849, | |
| 1969 | + "url": "https://www.artcurial.com/en/sales/6557/lots/215-a", | |
| 1970 | + "image": "https://www.artcurial.com/item-images/27a0eb2f-6000-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/30.jpg?w=400&force_webp=true" | |
| 1971 | + }, | |
| 1972 | + { | |
| 1973 | + "lotNo": "216", | |
| 1974 | + "title": "SUSPENSION ALLEMANDE D'ÉPOQUE NÉOCLASSIQUE, PROBABLEMENT DRESDE", | |
| 1975 | + "subtitle": null, | |
| 1976 | + "estimateLow": 3000, | |
| 1977 | + "estimateHigh": 5000, | |
| 1978 | + "sold": 2376, | |
| 1979 | + "url": "https://www.artcurial.com/en/sales/6557/lots/216-a", | |
| 1980 | + "image": "https://www.artcurial.com/item-images/afc5f223-4961-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_461.jpg?w=400&force_webp=true" | |
| 1981 | + }, | |
| 1982 | + { | |
| 1983 | + "lotNo": "217", | |
| 1984 | + "title": "IMPORTANT PLATEAU D'ÉCHANTILLONS DE PORPHYRES SUÉDOIS, ÄLVADEN, PREMIÈRE MOITIÉ DU XIXe SIÈCLE", | |
| 1985 | + "subtitle": null, | |
| 1986 | + "estimateLow": 5000, | |
| 1987 | + "estimateHigh": 8000, | |
| 1988 | + "sold": 16927, | |
| 1989 | + "url": "https://www.artcurial.com/en/sales/6557/lots/217-a", | |
| 1990 | + "image": "https://www.artcurial.com/item-images/af4035ab-4963-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_467.jpg?w=400&force_webp=true" | |
| 1991 | + }, | |
| 1992 | + { | |
| 1993 | + "lotNo": "219", | |
| 1994 | + "title": "Ecole nazaréenne du XIXe siècle", | |
| 1995 | + "subtitle": "La mort de Siegfried", | |
| 1996 | + "estimateLow": 3000, | |
| 1997 | + "estimateHigh": 4000, | |
| 1998 | + "sold": 4752, | |
| 1999 | + "url": "https://www.artcurial.com/en/sales/6557/lots/219-a", | |
| 2000 | + "image": "https://www.artcurial.com/item-images/143739db-5f4d-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/26112717-357%20A_WEB.jpg?w=400&force_webp=true" | |
| 2001 | + }, | |
| 2002 | + { | |
| 2003 | + "lotNo": "220", | |
| 2004 | + "title": "Pierre-Nicolas SICOT, dit LEGRAND DE LERANT ou SERANT(Pont-l’Evêque, 1758 – Berne, 1829)", | |
| 2005 | + "subtitle": "Portrait de femme et portrait d’homme", | |
| 2006 | + "estimateLow": 3000, | |
| 2007 | + "estimateHigh": 4000, | |
| 2008 | + "sold": 4455, | |
| 2009 | + "url": "https://www.artcurial.com/en/sales/6557/lots/220-a", | |
| 2010 | + "image": "https://www.artcurial.com/item-images/b9a750b0-6001-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-341_WEB.jpg?w=400&force_webp=true" | |
| 2011 | + }, | |
| 2012 | + { | |
| 2013 | + "lotNo": "221", | |
| 2014 | + "title": "GRAND MIROIR SUISSE DU MILIEU DU XVIIIe SIÈCLE, BERNE", | |
| 2015 | + "subtitle": null, | |
| 2016 | + "estimateLow": 4000, | |
| 2017 | + "estimateHigh": 6000, | |
| 2018 | + "sold": 5939, | |
| 2019 | + "url": "https://www.artcurial.com/en/sales/6557/lots/221-a", | |
| 2020 | + "image": "https://www.artcurial.com/item-images/ca43a542-4963-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_469.jpg?w=400&force_webp=true" | |
| 2021 | + }, | |
| 2022 | + { | |
| 2023 | + "lotNo": "223", | |
| 2024 | + "title": "D’après l’Antique, Italie, XIXe siècle", | |
| 2025 | + "subtitle": null, | |
| 2026 | + "estimateLow": 4000, | |
| 2027 | + "estimateHigh": 6000, | |
| 2028 | + "sold": 10394, | |
| 2029 | + "url": "https://www.artcurial.com/en/sales/6557/lots/223-a", | |
| 2030 | + "image": "https://www.artcurial.com/item-images/8bf023d3-4963-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_463.jpg?w=400&force_webp=true" | |
| 2031 | + }, | |
| 2032 | + { | |
| 2033 | + "lotNo": "225", | |
| 2034 | + "title": "TABLE DE SALON ALLEMANDE DE LA FIN DU XVIIIe SIÈCLE", | |
| 2035 | + "subtitle": null, | |
| 2036 | + "estimateLow": 1500, | |
| 2037 | + "estimateHigh": 2500, | |
| 2038 | + "sold": 1485, | |
| 2039 | + "url": "https://www.artcurial.com/en/sales/6557/lots/225-a", | |
| 2040 | + "image": "https://www.artcurial.com/item-images/6f9f892f-334e-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_269.jpg?w=400&force_webp=true" | |
| 2041 | + }, | |
| 2042 | + { | |
| 2043 | + "lotNo": "226", | |
| 2044 | + "title": "Deux groupes en biscuit de Minton du XIXe siècle", | |
| 2045 | + "subtitle": null, | |
| 2046 | + "estimateLow": 600, | |
| 2047 | + "estimateHigh": 800, | |
| 2048 | + "sold": 2376, | |
| 2049 | + "url": "https://www.artcurial.com/en/sales/6557/lots/226-a", | |
| 2050 | + "image": "https://www.artcurial.com/item-images/3e361c78-5f4d-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/26112717-403_WEB.jpg?w=400&force_webp=true" | |
| 2051 | + }, | |
| 2052 | + { | |
| 2053 | + "lotNo": "227", | |
| 2054 | + "title": "TABLE DE TOILETTE DE STYLE EMPIRE", | |
| 2055 | + "subtitle": null, | |
| 2056 | + "estimateLow": 1200, | |
| 2057 | + "estimateHigh": 1800, | |
| 2058 | + "sold": 1188, | |
| 2059 | + "url": "https://www.artcurial.com/en/sales/6557/lots/227-a", | |
| 2060 | + "image": "https://www.artcurial.com/item-images/fa2c76f0-34bd-11f1-a009-2939728b572b/PICTURE_CATALOG/26112717_412.jpg?w=400&force_webp=true" | |
| 2061 | + }, | |
| 2062 | + { | |
| 2063 | + "lotNo": "228", | |
| 2064 | + "title": "SUSPENSION D'ÉPOQUE NÉOCLASSIQUE, TRAVAIL PROBABLEMENT SUÉDOIS DE LA FIN DU XVIIIe-DÉBUT DU XIXe SIÈCLE", | |
| 2065 | + "subtitle": null, | |
| 2066 | + "estimateLow": 3000, | |
| 2067 | + "estimateHigh": 5000, | |
| 2068 | + "sold": 2227, | |
| 2069 | + "url": "https://www.artcurial.com/en/sales/6557/lots/228-a", | |
| 2070 | + "image": "https://www.artcurial.com/item-images/82795adc-39ac-11f1-bef4-f918d58faf87/PICTURE_CATALOG/Suisse-25.02.25-92816.jpg?w=400&force_webp=true" | |
| 2071 | + }, | |
| 2072 | + { | |
| 2073 | + "lotNo": "230", | |
| 2074 | + "title": "PAIRE DE GIRANDOLES ALLEMANDES D'ÉPOQUE NÉOCLASSIQUE", | |
| 2075 | + "subtitle": null, | |
| 2076 | + "estimateLow": 8000, | |
| 2077 | + "estimateHigh": 12000, | |
| 2078 | + "sold": 10394, | |
| 2079 | + "url": "https://www.artcurial.com/en/sales/6557/lots/230-a", | |
| 2080 | + "image": "https://www.artcurial.com/item-images/0b7460b3-334e-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_170.jpg?w=400&force_webp=true" | |
| 2081 | + }, | |
| 2082 | + { | |
| 2083 | + "lotNo": "232", | |
| 2084 | + "title": "Plan de Paris, par Michel-Etienne Turgot, Paris 1734-1736, paru en 1739", | |
| 2085 | + "subtitle": null, | |
| 2086 | + "estimateLow": 2000, | |
| 2087 | + "estimateHigh": 3000, | |
| 2088 | + "sold": 2970, | |
| 2089 | + "url": "https://www.artcurial.com/en/sales/6557/lots/232-a", | |
| 2090 | + "image": "https://www.artcurial.com/item-images/55a80475-4952-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_192.jpg?w=400&force_webp=true" | |
| 2091 | + }, | |
| 2092 | + { | |
| 2093 | + "lotNo": "233", | |
| 2094 | + "title": "MIROIR ET CONSOLE D’ENTRE-FENÊTRE, TRAVAIL SUISSE D’ÉPOQUE EMPIRE", | |
| 2095 | + "subtitle": null, | |
| 2096 | + "estimateLow": 4000, | |
| 2097 | + "estimateHigh": 6000, | |
| 2098 | + "sold": 4455, | |
| 2099 | + "url": "https://www.artcurial.com/en/sales/6557/lots/233-a", | |
| 2100 | + "image": "https://www.artcurial.com/item-images/6670e2a7-5aa1-11f1-94b2-ebd05b4932bc/PICTURE_CATALOG/26112717_228.jpg?w=400&force_webp=true" | |
| 2101 | + }, | |
| 2102 | + { | |
| 2103 | + "lotNo": "234", | |
| 2104 | + "title": "MONUMENTAL ÉCRAN DE CHEMINÉE, TRAVAIL ITALIEN DU XVIIIe SIÈCLE", | |
| 2105 | + "subtitle": null, | |
| 2106 | + "estimateLow": 2000, | |
| 2107 | + "estimateHigh": 3000, | |
| 2108 | + "sold": 1930, | |
| 2109 | + "url": "https://www.artcurial.com/en/sales/6557/lots/234-a", | |
| 2110 | + "image": "https://www.artcurial.com/item-images/caa08b7d-334f-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_423.jpg?w=400&force_webp=true" | |
| 2111 | + }, | |
| 2112 | + { | |
| 2113 | + "lotNo": "235", | |
| 2114 | + "title": "PAIRE DE COMMODES ITALIENNES D'ÉPOQUE NÉOCLASSIQUE, VERS 1820", | |
| 2115 | + "subtitle": null, | |
| 2116 | + "estimateLow": 6000, | |
| 2117 | + "estimateHigh": 8000, | |
| 2118 | + "sold": 6236, | |
| 2119 | + "url": "https://www.artcurial.com/en/sales/6557/lots/235-a", | |
| 2120 | + "image": "https://www.artcurial.com/item-images/816dd60b-334f-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_439.jpg?w=400&force_webp=true" | |
| 2121 | + }, | |
| 2122 | + { | |
| 2123 | + "lotNo": "236", | |
| 2124 | + "title": "Allemagne, suiveur de Hans Multscher (circa 1400-1467), fin du XVe-début du XVIe siècle", | |
| 2125 | + "subtitle": null, | |
| 2126 | + "estimateLow": 6000, | |
| 2127 | + "estimateHigh": 8000, | |
| 2128 | + "sold": 5939, | |
| 2129 | + "url": "https://www.artcurial.com/en/sales/6557/lots/236-a", | |
| 2130 | + "image": "https://www.artcurial.com/item-images/d5432484-4953-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_271.jpg?w=400&force_webp=true" | |
| 2131 | + }, | |
| 2132 | + { | |
| 2133 | + "lotNo": "237", | |
| 2134 | + "title": "COMMODE MINIATURE SUISSE DE LA DEUXIÈME MOITIÉ DU XVIIIe SIÈCLE", | |
| 2135 | + "subtitle": null, | |
| 2136 | + "estimateLow": 1500, | |
| 2137 | + "estimateHigh": 2000, | |
| 2138 | + "sold": 2227, | |
| 2139 | + "url": "https://www.artcurial.com/en/sales/6557/lots/237-a", | |
| 2140 | + "image": "https://www.artcurial.com/item-images/a8d04d93-5f4d-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/Suisse-26.02.25-92909.jpg?w=400&force_webp=true" | |
| 2141 | + } | |
| 2142 | + ] | |
| 2143 | + } | |
| 2144 | + }, | |
| 2145 | + "expect": { | |
| 2146 | + "minCount": 5, | |
| 2147 | + "kinds": [ | |
| 2148 | + "sale", | |
| 2149 | + "auction_lot" | |
| 2150 | + ], | |
| 2151 | + "requiredFields": [ | |
| 2152 | + "rawTitle", | |
| 2153 | + "attributes.categorySlug" | |
| 2154 | + ] | |
| 2155 | + }, | |
| 2156 | + "note": "Captured live via Firecrawl from artcurial.com", | |
| 2157 | + "capturedAt": "2026-09-07T06:28:50.373Z" | |
| 2158 | +} | |
| \ No newline at end of file | ||
added
data/fixtures/artcurial/sale-IT6558.json
+558 −0
@@ -0,0 +1,558 @@ | ||
| 1 | +{ | |
| 2 | + "raw": { | |
| 3 | + "url": "https://www.artcurial.com/en/sales/IT6558", | |
| 4 | + "externalId": "IT6558", | |
| 5 | + "kind": "sale", | |
| 6 | + "engine": "firecrawl", | |
| 7 | + "fetchedAt": "2026-09-07T06:28:36.842Z", | |
| 8 | + "payload": { | |
| 9 | + "kind": "sale_results", | |
| 10 | + "url": "https://www.artcurial.com/en/sales/IT6558", | |
| 11 | + "sale": { | |
| 12 | + "number": "IT6558", | |
| 13 | + "title": "L’œil d’un érudit Online", | |
| 14 | + "subtitle": "Une collection européenne", | |
| 15 | + "date": "2026-07-13T00:00:00.000Z", | |
| 16 | + "location": "Online", | |
| 17 | + "url": "https://www.artcurial.com/en/sales/IT6558", | |
| 18 | + "online": true | |
| 19 | + }, | |
| 20 | + "lotCount": 67, | |
| 21 | + "lots": [ | |
| 22 | + { | |
| 23 | + "lotNo": "242", | |
| 24 | + "title": "PAIRE DE FLAMBEAUX DE STYLE RÉGENCE ET DES BOBÈCHES", | |
| 25 | + "subtitle": null, | |
| 26 | + "estimateLow": 200, | |
| 27 | + "estimateHigh": 300, | |
| 28 | + "sold": 148, | |
| 29 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/242-a", | |
| 30 | + "image": "https://www.artcurial.com/item-images/196fec4f-600e-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-148_WEB.jpg?w=400&force_webp=true" | |
| 31 | + }, | |
| 32 | + { | |
| 33 | + "lotNo": "244", | |
| 34 | + "title": "DEUX PANNEAUX EN BROCART BIZARRE, FRANCE, VERS 1710-1720", | |
| 35 | + "subtitle": null, | |
| 36 | + "estimateLow": 500, | |
| 37 | + "estimateHigh": 800, | |
| 38 | + "sold": 520, | |
| 39 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/244-a", | |
| 40 | + "image": "https://www.artcurial.com/item-images/9d8a59b5-60b2-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/montage.jpg?w=400&force_webp=true" | |
| 41 | + }, | |
| 42 | + { | |
| 43 | + "lotNo": "246", | |
| 44 | + "title": "PLATEAU, TRAVAIL ALLEMAND D'ÉPOQUE LOUIS XVI, BRUNSWICK OU BERLIN", | |
| 45 | + "subtitle": null, | |
| 46 | + "estimateLow": 200, | |
| 47 | + "estimateHigh": 300, | |
| 48 | + "sold": 1039, | |
| 49 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/246-a", | |
| 50 | + "image": "https://www.artcurial.com/item-images/d9ff4ffb-34bd-11f1-a009-2939728b572b/PICTURE_CATALOG/26112717_390.jpg?w=400&force_webp=true" | |
| 51 | + }, | |
| 52 | + { | |
| 53 | + "lotNo": "247", | |
| 54 | + "title": "D’après John WEBBER (Londres, 1751 - 1793)", | |
| 55 | + "subtitle": "\"The death of Captain Cook\"", | |
| 56 | + "estimateLow": 200, | |
| 57 | + "estimateHigh": 300, | |
| 58 | + "sold": 119, | |
| 59 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/247-a", | |
| 60 | + "image": "https://www.artcurial.com/item-images/50f2f616-5f5e-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/26112717-167%20A_WEB.jpg?w=400&force_webp=true" | |
| 61 | + }, | |
| 62 | + { | |
| 63 | + "lotNo": "249", | |
| 64 | + "title": "MIROIR DE TOILETTE D'ÉPOQUE LOUIS XIV, FIN DU XVIIe-DÉBUT DU XVIIIe SIÈCLE", | |
| 65 | + "subtitle": null, | |
| 66 | + "estimateLow": 800, | |
| 67 | + "estimateHigh": 1200, | |
| 68 | + "sold": 668, | |
| 69 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/249-a", | |
| 70 | + "image": "https://www.artcurial.com/item-images/a654bf3a-4951-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_169.jpg?w=400&force_webp=true" | |
| 71 | + }, | |
| 72 | + { | |
| 73 | + "lotNo": "250", | |
| 74 | + "title": "PAIRE DE VASES CORNET EN FAÏENCE DE BERLIN DU XIXe SIÈCLE", | |
| 75 | + "subtitle": null, | |
| 76 | + "estimateLow": 500, | |
| 77 | + "estimateHigh": 800, | |
| 78 | + "sold": 668, | |
| 79 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/250-a", | |
| 80 | + "image": "https://www.artcurial.com/item-images/84e56242-600e-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-171_WEB.jpg?w=400&force_webp=true" | |
| 81 | + }, | |
| 82 | + { | |
| 83 | + "lotNo": "251", | |
| 84 | + "title": "GRAND VASE EN FAÏENCE DE BERLIN DU XIXe SIÈCLE", | |
| 85 | + "subtitle": null, | |
| 86 | + "estimateLow": 200, | |
| 87 | + "estimateHigh": 300, | |
| 88 | + "sold": 238, | |
| 89 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/251-a", | |
| 90 | + "image": "https://www.artcurial.com/item-images/930d7fb4-600e-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-172_WEB.jpg?w=400&force_webp=true" | |
| 91 | + }, | |
| 92 | + { | |
| 93 | + "lotNo": "255", | |
| 94 | + "title": "ENCRIER SUISSE DE LA PREMIÈRE MOITIÉ DU XVIIIe SIÈCLE, BERNE", | |
| 95 | + "subtitle": null, | |
| 96 | + "estimateLow": 400, | |
| 97 | + "estimateHigh": 600, | |
| 98 | + "sold": 297, | |
| 99 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/255-a", | |
| 100 | + "image": "https://www.artcurial.com/item-images/0ddb0ec5-4954-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_277.jpg?w=400&force_webp=true" | |
| 101 | + }, | |
| 102 | + { | |
| 103 | + "lotNo": "256", | |
| 104 | + "title": "MIROIR D'ÉPOQUE BAROQUE", | |
| 105 | + "subtitle": null, | |
| 106 | + "estimateLow": 600, | |
| 107 | + "estimateHigh": 800, | |
| 108 | + "sold": 668, | |
| 109 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/256-a", | |
| 110 | + "image": "https://www.artcurial.com/item-images/4d06241d-38a5-11f1-bef4-f918d58faf87/PICTURE_CATALOG/26112717_399.jpg?w=400&force_webp=true" | |
| 111 | + }, | |
| 112 | + { | |
| 113 | + "lotNo": "260", | |
| 114 | + "title": "COUVERT EN ARGENT COMPRENANT FOURCHETTE, CUILLÈRE ET COUTEAU", | |
| 115 | + "subtitle": null, | |
| 116 | + "estimateLow": 100, | |
| 117 | + "estimateHigh": 150, | |
| 118 | + "sold": 59, | |
| 119 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/260-a", | |
| 120 | + "image": "https://www.artcurial.com/item-images/94eb2126-506f-11f1-ab01-53364ae5824d/PICTURE_CATALOG/26112717-006_WEB.jpg?w=400&force_webp=true" | |
| 121 | + }, | |
| 122 | + { | |
| 123 | + "lotNo": "261", | |
| 124 | + "title": "COMMODE SUISSE DU XVIIIe SIÈCLE", | |
| 125 | + "subtitle": null, | |
| 126 | + "estimateLow": 700, | |
| 127 | + "estimateHigh": 1000, | |
| 128 | + "sold": 594, | |
| 129 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/261-a", | |
| 130 | + "image": "https://www.artcurial.com/item-images/b2ffc403-495a-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_430.jpg?w=400&force_webp=true" | |
| 131 | + }, | |
| 132 | + { | |
| 133 | + "lotNo": "262", | |
| 134 | + "title": "Heinrich Poscharsky(Dresde, 1802 - 1880)", | |
| 135 | + "subtitle": "Le combat de boucs", | |
| 136 | + "estimateLow": 800, | |
| 137 | + "estimateHigh": 1200, | |
| 138 | + "sold": 1336, | |
| 139 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/262-a", | |
| 140 | + "image": "https://www.artcurial.com/item-images/0c0d303a-6010-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-346%20A_WEB.jpg?w=400&force_webp=true" | |
| 141 | + }, | |
| 142 | + { | |
| 143 | + "lotNo": "263", | |
| 144 | + "title": "Ecole néoclassique", | |
| 145 | + "subtitle": "Paysage animé d'un berger et son troupeau", | |
| 146 | + "estimateLow": 600, | |
| 147 | + "estimateHigh": 800, | |
| 148 | + "sold": 416, | |
| 149 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/263-a", | |
| 150 | + "image": "https://www.artcurial.com/item-images/159d32b7-6011-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-356%20A_WEB.jpg?w=400&force_webp=true" | |
| 151 | + }, | |
| 152 | + { | |
| 153 | + "lotNo": "264", | |
| 154 | + "title": "ÉCRAN DE CHEMINÉE DE STYLE LOUIS XV", | |
| 155 | + "subtitle": null, | |
| 156 | + "estimateLow": 200, | |
| 157 | + "estimateHigh": 300, | |
| 158 | + "sold": 119, | |
| 159 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/264-a", | |
| 160 | + "image": "https://www.artcurial.com/item-images/d3e390c8-495a-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_431%20copie.jpg?w=400&force_webp=true" | |
| 161 | + }, | |
| 162 | + { | |
| 163 | + "lotNo": "265", | |
| 164 | + "title": "SUITE DE CINQ GIRANDOLES DE LA PREMIÈRE MOITIÉ DU XVIIIe SIECLE, TRAVAIL PROBABLEMENT SUISSE", | |
| 165 | + "subtitle": null, | |
| 166 | + "estimateLow": 300, | |
| 167 | + "estimateHigh": 500, | |
| 168 | + "sold": 1485, | |
| 169 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/265-a", | |
| 170 | + "image": "https://www.artcurial.com/item-images/399ad3da-38a5-11f1-bef4-f918d58faf87/PICTURE_CATALOG/26112717_388.jpg?w=400&force_webp=true" | |
| 171 | + }, | |
| 172 | + { | |
| 173 | + "lotNo": "266", | |
| 174 | + "title": "ÉPÉE DE COUR, VERS 1780-1800", | |
| 175 | + "subtitle": null, | |
| 176 | + "estimateLow": 300, | |
| 177 | + "estimateHigh": 500, | |
| 178 | + "sold": 178, | |
| 179 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/266-a", | |
| 180 | + "image": "https://www.artcurial.com/item-images/ff624e6c-600d-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-124_WEB.jpg?w=400&force_webp=true" | |
| 181 | + }, | |
| 182 | + { | |
| 183 | + "lotNo": "267", | |
| 184 | + "title": "COUPE EN ACIER DAMASQUINÉ, IRAN, QAJAR, DEUXIÈME MOITIÉ DU XIXe SIÈCLE", | |
| 185 | + "subtitle": null, | |
| 186 | + "estimateLow": 400, | |
| 187 | + "estimateHigh": 600, | |
| 188 | + "sold": 445, | |
| 189 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/267-a", | |
| 190 | + "image": "https://www.artcurial.com/item-images/de5c6447-60bc-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/1.jpg?w=400&force_webp=true" | |
| 191 | + }, | |
| 192 | + { | |
| 193 | + "lotNo": "269", | |
| 194 | + "title": "PAIRE DE FLAMBEAUX, INDE DU NORD, FIN DU XIXe SIÈCLE", | |
| 195 | + "subtitle": null, | |
| 196 | + "estimateLow": 300, | |
| 197 | + "estimateHigh": 500, | |
| 198 | + "sold": 178, | |
| 199 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/269-a", | |
| 200 | + "image": "https://www.artcurial.com/item-images/29139f70-6014-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/Suisse-24.02.25-92562.jpg?w=400&force_webp=true" | |
| 201 | + }, | |
| 202 | + { | |
| 203 | + "lotNo": "270", | |
| 204 | + "title": "TÊTE DE BOUDDHA EN BOIS LAQUÉ", | |
| 205 | + "subtitle": null, | |
| 206 | + "estimateLow": 300, | |
| 207 | + "estimateHigh": 500, | |
| 208 | + "sold": 445, | |
| 209 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/270-a", | |
| 210 | + "image": "https://www.artcurial.com/item-images/ef255abb-600d-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-123_WEB.jpg?w=400&force_webp=true" | |
| 211 | + }, | |
| 212 | + { | |
| 213 | + "lotNo": "271", | |
| 214 | + "title": "BOL EN PORCELAINE FAMILLE ROSE", | |
| 215 | + "subtitle": null, | |
| 216 | + "estimateLow": 80, | |
| 217 | + "estimateHigh": 120, | |
| 218 | + "sold": 48, | |
| 219 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/271-a", | |
| 220 | + "image": "https://www.artcurial.com/item-images/c0b8e4d6-600d-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-119%20A_WEB.jpg?w=400&force_webp=true" | |
| 221 | + }, | |
| 222 | + { | |
| 223 | + "lotNo": "272", | |
| 224 | + "title": "CARREAU FIGURATIF EN CÉRAMIQUE, IRAN QAJAR, DEUXIÈME MOITIÉ DU XIXe SIÈCLE", | |
| 225 | + "subtitle": null, | |
| 226 | + "estimateLow": 500, | |
| 227 | + "estimateHigh": 800, | |
| 228 | + "sold": 297, | |
| 229 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/272-a", | |
| 230 | + "image": "https://www.artcurial.com/item-images/b40035e3-600d-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-116_WEB.jpg?w=400&force_webp=true" | |
| 231 | + }, | |
| 232 | + { | |
| 233 | + "lotNo": "274", | |
| 234 | + "title": "TABLE D'APPOINT, TRAVAIL SUISSE DU XVIIIe SIÈCLE, PROBABLEMENT ZURICH OU WINTERTHUR", | |
| 235 | + "subtitle": null, | |
| 236 | + "estimateLow": 200, | |
| 237 | + "estimateHigh": 300, | |
| 238 | + "sold": 119, | |
| 239 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/274-a", | |
| 240 | + "image": "https://www.artcurial.com/item-images/e842100a-334d-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_102.jpg?w=400&force_webp=true" | |
| 241 | + }, | |
| 242 | + { | |
| 243 | + "lotNo": "275", | |
| 244 | + "title": "PLAQUE DE CABINET DE LA PREMIÈRE MOITIÉ DU XVIIe SIÈCLE", | |
| 245 | + "subtitle": null, | |
| 246 | + "estimateLow": 500, | |
| 247 | + "estimateHigh": 800, | |
| 248 | + "sold": 2079, | |
| 249 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/275-a", | |
| 250 | + "image": "https://www.artcurial.com/item-images/ba6f7edc-6013-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-089_WEB.jpg?w=400&force_webp=true" | |
| 251 | + }, | |
| 252 | + { | |
| 253 | + "lotNo": "276", | |
| 254 | + "title": "CRUCIFIX EN BOIS ET NACRE, JÉRUSALEM, FIN DU XIXe SIÈCLE", | |
| 255 | + "subtitle": null, | |
| 256 | + "estimateLow": 200, | |
| 257 | + "estimateHigh": 300, | |
| 258 | + "sold": 208, | |
| 259 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/276-a", | |
| 260 | + "image": "https://www.artcurial.com/item-images/efbf1f18-600c-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-079%20A_WEB.jpg?w=400&force_webp=true" | |
| 261 | + }, | |
| 262 | + { | |
| 263 | + "lotNo": "277", | |
| 264 | + "title": "TABLE À JEUX, TRAVAIL SYRIEN DU DÉBUT DU XXe SIÈCLE", | |
| 265 | + "subtitle": null, | |
| 266 | + "estimateLow": 200, | |
| 267 | + "estimateHigh": 300, | |
| 268 | + "sold": 178, | |
| 269 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/277-a", | |
| 270 | + "image": "https://www.artcurial.com/item-images/c80d79d0-334e-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_411.jpg?w=400&force_webp=true" | |
| 271 | + }, | |
| 272 | + { | |
| 273 | + "lotNo": "279", | |
| 274 | + "title": "PAIRE DE FLAMBEAUX EN CUIVRE ÉTAMÉ, IRAN QAJAR, FIN DU XVIIIe-DÉBUT DU XIXe SIÈCLE", | |
| 275 | + "subtitle": null, | |
| 276 | + "estimateLow": 150, | |
| 277 | + "estimateHigh": 200, | |
| 278 | + "sold": 267, | |
| 279 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/279-a", | |
| 280 | + "image": "https://www.artcurial.com/item-images/3eb1633c-600d-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-096_WEB.jpg?w=400&force_webp=true" | |
| 281 | + }, | |
| 282 | + { | |
| 283 | + "lotNo": "280", | |
| 284 | + "title": "GRANDE COUPE EN PORCELAINE BLEU BLANC", | |
| 285 | + "subtitle": null, | |
| 286 | + "estimateLow": 80, | |
| 287 | + "estimateHigh": 120, | |
| 288 | + "sold": 59, | |
| 289 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/280-a", | |
| 290 | + "image": "https://www.artcurial.com/item-images/a1415242-600d-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-110_WEB.jpg?w=400&force_webp=true" | |
| 291 | + }, | |
| 292 | + { | |
| 293 | + "lotNo": "281", | |
| 294 | + "title": "STATUETTE DE BOUDDHA EN BRONZE", | |
| 295 | + "subtitle": null, | |
| 296 | + "estimateLow": 80, | |
| 297 | + "estimateHigh": 120, | |
| 298 | + "sold": 48, | |
| 299 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/281-a", | |
| 300 | + "image": "https://www.artcurial.com/item-images/dec8f829-600d-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-122_WEB.jpg?w=400&force_webp=true" | |
| 301 | + }, | |
| 302 | + { | |
| 303 | + "lotNo": "284", | |
| 304 | + "title": "GRAND BOL ET SON PLAT DE PRÉSENTATION EN PORCELAINE GRISAILLE ET REHAUSSÉE D’OR", | |
| 305 | + "subtitle": null, | |
| 306 | + "estimateLow": 200, | |
| 307 | + "estimateHigh": 300, | |
| 308 | + "sold": 148, | |
| 309 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/284-a", | |
| 310 | + "image": "https://www.artcurial.com/item-images/ece86dd8-5f60-11f1-a17d-2b6f9d758fd3/PICTURE_CATALOG/26112717-067_WEB.jpg?w=400&force_webp=true" | |
| 311 | + }, | |
| 312 | + { | |
| 313 | + "lotNo": "285", | |
| 314 | + "title": "BOL EN PORCELAINE FAMILLE ROSE", | |
| 315 | + "subtitle": null, | |
| 316 | + "estimateLow": 60, | |
| 317 | + "estimateHigh": 80, | |
| 318 | + "sold": 89, | |
| 319 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/285-a", | |
| 320 | + "image": "https://www.artcurial.com/item-images/cf5f8117-600d-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-120%20A_WEB.jpg?w=400&force_webp=true" | |
| 321 | + }, | |
| 322 | + { | |
| 323 | + "lotNo": "287", | |
| 324 | + "title": "Ecole européenne vers 1830", | |
| 325 | + "subtitle": "Vue d’intérieur d’une maison de campagne russe", | |
| 326 | + "estimateLow": 400, | |
| 327 | + "estimateHigh": 600, | |
| 328 | + "sold": 1930, | |
| 329 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/287-a", | |
| 330 | + "image": "https://www.artcurial.com/item-images/55559b51-6011-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-360%20A_WEB.jpg?w=400&force_webp=true" | |
| 331 | + }, | |
| 332 | + { | |
| 333 | + "lotNo": "288", | |
| 334 | + "title": "MIROIR SUISSE DU PREMIER QUART DU XIXe SIÈCLE, BERNE", | |
| 335 | + "subtitle": null, | |
| 336 | + "estimateLow": 200, | |
| 337 | + "estimateHigh": 300, | |
| 338 | + "sold": 594, | |
| 339 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/288-a", | |
| 340 | + "image": "https://www.artcurial.com/item-images/58d86ab0-38a5-11f1-bef4-f918d58faf87/PICTURE_CATALOG/26112717_401D.jpg?w=400&force_webp=true" | |
| 341 | + }, | |
| 342 | + { | |
| 343 | + "lotNo": "291", | |
| 344 | + "title": "ENSEMBLE DE QUARANTE-HUIT OEUFS DÉCORATIFS", | |
| 345 | + "subtitle": null, | |
| 346 | + "estimateLow": 100, | |
| 347 | + "estimateHigh": 150, | |
| 348 | + "sold": 238, | |
| 349 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/291-a", | |
| 350 | + "image": "https://www.artcurial.com/item-images/586c6943-60b2-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/291_1.jpg?w=400&force_webp=true" | |
| 351 | + }, | |
| 352 | + { | |
| 353 | + "lotNo": "292", | |
| 354 | + "title": "ENSEMBLE DE COUPES \"GRAND TOUR\"", | |
| 355 | + "subtitle": null, | |
| 356 | + "estimateLow": 400, | |
| 357 | + "estimateHigh": 600, | |
| 358 | + "sold": 416, | |
| 359 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/292-a", | |
| 360 | + "image": "https://www.artcurial.com/item-images/644cb994-60b2-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/291_1.jpg?w=400&force_webp=true" | |
| 361 | + }, | |
| 362 | + { | |
| 363 | + "lotNo": "293", | |
| 364 | + "title": "FLAMBEAU DE STYLE NÉOCLASSIQUE", | |
| 365 | + "subtitle": null, | |
| 366 | + "estimateLow": 300, | |
| 367 | + "estimateHigh": 500, | |
| 368 | + "sold": 267, | |
| 369 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/293-a", | |
| 370 | + "image": "https://www.artcurial.com/item-images/cffe6eb3-600f-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-335%20A_WEB.jpg?w=400&force_webp=true" | |
| 371 | + }, | |
| 372 | + { | |
| 373 | + "lotNo": "295", | |
| 374 | + "title": "Jean-Jules Salmson (1823-1902)", | |
| 375 | + "subtitle": null, | |
| 376 | + "estimateLow": 400, | |
| 377 | + "estimateHigh": 600, | |
| 378 | + "sold": 1782, | |
| 379 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/295-a", | |
| 380 | + "image": "https://www.artcurial.com/item-images/4bdd1179-6013-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-445_WEB.jpg?w=400&force_webp=true" | |
| 381 | + }, | |
| 382 | + { | |
| 383 | + "lotNo": "296", | |
| 384 | + "title": "COMMODE-SCRIBAN D'ÉPOQUE EMPIRE", | |
| 385 | + "subtitle": null, | |
| 386 | + "estimateLow": 600, | |
| 387 | + "estimateHigh": 800, | |
| 388 | + "sold": 594, | |
| 389 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/296-a", | |
| 390 | + "image": "https://www.artcurial.com/item-images/5baec004-334f-11f1-b343-3f3d53aa782b/PICTURE_CATALOG/26112717_446.jpg?w=400&force_webp=true" | |
| 391 | + }, | |
| 392 | + { | |
| 393 | + "lotNo": "297", | |
| 394 | + "title": "Ecole flamande vers 1800", | |
| 395 | + "subtitle": "Paysage animé d'un convoi au pied d'une cascade", | |
| 396 | + "estimateLow": 1000, | |
| 397 | + "estimateHigh": 1500, | |
| 398 | + "sold": 668, | |
| 399 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/297-a", | |
| 400 | + "image": "https://www.artcurial.com/item-images/46992258-6010-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-347%20A_WEB.jpg?w=400&force_webp=true" | |
| 401 | + }, | |
| 402 | + { | |
| 403 | + "lotNo": "298", | |
| 404 | + "title": "Ecole européenne, 1816((Julie D.))", | |
| 405 | + "subtitle": "La couture dans un intérieur bourgeois", | |
| 406 | + "estimateLow": 1000, | |
| 407 | + "estimateHigh": 1500, | |
| 408 | + "sold": 1633, | |
| 409 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/298-a", | |
| 410 | + "image": "https://www.artcurial.com/item-images/e9ebda66-600f-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-339%20A_WEB.jpg?w=400&force_webp=true" | |
| 411 | + }, | |
| 412 | + { | |
| 413 | + "lotNo": "304", | |
| 414 | + "title": "MÉDAILLON EN BISCUIT DE BERLIN DE LA FIN DU XVIIIe SIÈCLE", | |
| 415 | + "subtitle": null, | |
| 416 | + "estimateLow": 400, | |
| 417 | + "estimateHigh": 600, | |
| 418 | + "sold": 238, | |
| 419 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/304-a", | |
| 420 | + "image": "https://www.artcurial.com/item-images/7c3fae4b-600f-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-290_WEB.jpg?w=400&force_webp=true" | |
| 421 | + }, | |
| 422 | + { | |
| 423 | + "lotNo": "305", | |
| 424 | + "title": "DEUX MÉDAILLONS EN BISCUIT DE BERLIN DU DÉBUT DU XIXe SIÈCLE", | |
| 425 | + "subtitle": null, | |
| 426 | + "estimateLow": 300, | |
| 427 | + "estimateHigh": 500, | |
| 428 | + "sold": 178, | |
| 429 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/305-a", | |
| 430 | + "image": "https://www.artcurial.com/item-images/8d035e33-600f-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-291_WEB.jpg?w=400&force_webp=true" | |
| 431 | + }, | |
| 432 | + { | |
| 433 | + "lotNo": "306", | |
| 434 | + "title": "Médaillon ovale en porcelaine de Paris du XIXe siècle", | |
| 435 | + "subtitle": null, | |
| 436 | + "estimateLow": 300, | |
| 437 | + "estimateHigh": 500, | |
| 438 | + "sold": 594, | |
| 439 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/306-a", | |
| 440 | + "image": "https://www.artcurial.com/item-images/9af884c6-600f-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-324_WEB.jpg?w=400&force_webp=true" | |
| 441 | + }, | |
| 442 | + { | |
| 443 | + "lotNo": "307", | |
| 444 | + "title": "Médaillon ovale en porcelaine de Paris du XIXe siècle", | |
| 445 | + "subtitle": null, | |
| 446 | + "estimateLow": 150, | |
| 447 | + "estimateHigh": 200, | |
| 448 | + "sold": 386, | |
| 449 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/307-a", | |
| 450 | + "image": "https://www.artcurial.com/item-images/b1df191e-600f-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-325_WEB.jpg?w=400&force_webp=true" | |
| 451 | + }, | |
| 452 | + { | |
| 453 | + "lotNo": "309", | |
| 454 | + "title": "Pierre-Louis de LA RIVE(Genève, 1753 – Presinge, 1811)", | |
| 455 | + "subtitle": "Le passage du gué et Couple de bergers et leurs troupeaux au pied d'un grand arbre", | |
| 456 | + "estimateLow": 2000, | |
| 457 | + "estimateHigh": 3000, | |
| 458 | + "sold": 1782, | |
| 459 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/309-a", | |
| 460 | + "image": "https://www.artcurial.com/item-images/ecdd3ef8-60b3-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-352_WEB.jpg?w=400&force_webp=true" | |
| 461 | + }, | |
| 462 | + { | |
| 463 | + "lotNo": "311", | |
| 464 | + "title": "MOBILIER DE SALLE À MANGER SUISSE D'ÉPOQUE NÉOCLASSIQUE", | |
| 465 | + "subtitle": null, | |
| 466 | + "estimateLow": 800, | |
| 467 | + "estimateHigh": 1200, | |
| 468 | + "sold": 4158, | |
| 469 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/311-a", | |
| 470 | + "image": "https://www.artcurial.com/item-images/37b46047-34bd-11f1-a009-2939728b572b/PICTURE_CATALOG/26112717_244.jpg?w=400&force_webp=true" | |
| 471 | + }, | |
| 472 | + { | |
| 473 | + "lotNo": "312", | |
| 474 | + "title": "Balthazar Anton DUNKER(Saal, 1746 - Berne, 1807)", | |
| 475 | + "subtitle": "Pêcheurs ouvrant leur nasse au pied d'une architecture en ruine", | |
| 476 | + "estimateLow": 500, | |
| 477 | + "estimateHigh": 700, | |
| 478 | + "sold": 520, | |
| 479 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/312-a", | |
| 480 | + "image": "https://www.artcurial.com/item-images/f0e887cc-6010-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-355%20A_WEB.jpg?w=400&force_webp=true" | |
| 481 | + }, | |
| 482 | + { | |
| 483 | + "lotNo": "315", | |
| 484 | + "title": "FAUTEUIL DE BUREAU D'ÉPOQUE RESTAURATION", | |
| 485 | + "subtitle": null, | |
| 486 | + "estimateLow": 200, | |
| 487 | + "estimateHigh": 300, | |
| 488 | + "sold": 148, | |
| 489 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/315-a", | |
| 490 | + "image": "https://www.artcurial.com/item-images/d4363dcb-4952-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_226.jpg?w=400&force_webp=true" | |
| 491 | + }, | |
| 492 | + { | |
| 493 | + "lotNo": "316", | |
| 494 | + "title": "Attribué à Johan Rudolf SCHELLENBERG( Bâle, 1740 – Töss, 1806)", | |
| 495 | + "subtitle": "Etude d'insectes et papillons", | |
| 496 | + "estimateLow": 400, | |
| 497 | + "estimateHigh": 600, | |
| 498 | + "sold": 356, | |
| 499 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/316-a", | |
| 500 | + "image": "https://www.artcurial.com/item-images/56e5def9-600e-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-166%201-2%20A_WEB.jpg?w=400&force_webp=true" | |
| 501 | + }, | |
| 502 | + { | |
| 503 | + "lotNo": "317", | |
| 504 | + "title": "VASE EN CÉRAMIQUE ÉMAILLEE DE LA PREMIÈRE MOITIÉ DU XXe SIÈCLE", | |
| 505 | + "subtitle": null, | |
| 506 | + "estimateLow": 100, | |
| 507 | + "estimateHigh": 150, | |
| 508 | + "sold": 89, | |
| 509 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/317-a", | |
| 510 | + "image": "https://www.artcurial.com/item-images/881b1234-6019-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717_331.jpg?w=400&force_webp=true" | |
| 511 | + }, | |
| 512 | + { | |
| 513 | + "lotNo": "318", | |
| 514 | + "title": "COMMODE, VERS 1927", | |
| 515 | + "subtitle": null, | |
| 516 | + "estimateLow": 800, | |
| 517 | + "estimateHigh": 1200, | |
| 518 | + "sold": 520, | |
| 519 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/318-a", | |
| 520 | + "image": "https://www.artcurial.com/item-images/e267b454-495e-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_450.jpg?w=400&force_webp=true" | |
| 521 | + }, | |
| 522 | + { | |
| 523 | + "lotNo": "320", | |
| 524 | + "title": "CANDÉLABRE \"SIMON\"", | |
| 525 | + "subtitle": null, | |
| 526 | + "estimateLow": 300, | |
| 527 | + "estimateHigh": 500, | |
| 528 | + "sold": 594, | |
| 529 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/320-a", | |
| 530 | + "image": "https://www.artcurial.com/item-images/3b135f94-600e-11f1-92a7-b5aa2838988b/PICTURE_CATALOG/26112717-158_WEB.jpg?w=400&force_webp=true" | |
| 531 | + }, | |
| 532 | + { | |
| 533 | + "lotNo": "321", | |
| 534 | + "title": "ENSEMBLE DE QUATRE NAINS DE JARDIN, TCHÉCOSLOVAQUIE, XXe SIÈCLE", | |
| 535 | + "subtitle": null, | |
| 536 | + "estimateLow": 200, | |
| 537 | + "estimateHigh": 300, | |
| 538 | + "sold": 742, | |
| 539 | + "url": "https://www.artcurial.com/en/sales/IT6558/lots/321-a", | |
| 540 | + "image": "https://www.artcurial.com/item-images/0329d70b-494e-11f1-898e-757c509afcd0/PICTURE_CATALOG/26112717_032.jpg?w=400&force_webp=true" | |
| 541 | + } | |
| 542 | + ] | |
| 543 | + } | |
| 544 | + }, | |
| 545 | + "expect": { | |
| 546 | + "minCount": 5, | |
| 547 | + "kinds": [ | |
| 548 | + "sale", | |
| 549 | + "auction_lot" | |
| 550 | + ], | |
| 551 | + "requiredFields": [ | |
| 552 | + "rawTitle", | |
| 553 | + "attributes.categorySlug" | |
| 554 | + ] | |
| 555 | + }, | |
| 556 | + "note": "Captured live via Firecrawl from artcurial.com", | |
| 557 | + "capturedAt": "2026-09-07T06:28:36.848Z" | |
| 558 | +} | |
| \ No newline at end of file | ||
added
data/fixtures/idealwine/bordeaux-page-1.json
+718 −0
@@ -0,0 +1,718 @@ | ||
| 1 | +{ | |
| 2 | + "raw": { | |
| 3 | + "url": "https://www.idealwine.com/en/cote/bordeaux", | |
| 4 | + "externalId": "cote:bordeaux:1", | |
| 5 | + "kind": "price_observation", | |
| 6 | + "engine": "api", | |
| 7 | + "fetchedAt": "2026-09-07T06:24:02.965Z", | |
| 8 | + "payload": { | |
| 9 | + "kind": "cote_page", | |
| 10 | + "url": "https://www.idealwine.com/en/cote/bordeaux", | |
| 11 | + "region": "bordeaux", | |
| 12 | + "page": 1, | |
| 13 | + "totalPages": 58, | |
| 14 | + "wines": [ | |
| 15 | + { | |
| 16 | + "wineId": "120055", | |
| 17 | + "name": "Abeille de Fieuzal", | |
| 18 | + "color": "Red", | |
| 19 | + "region": "Bordeaux", | |
| 20 | + "appellation": "Pessac-Léognan", | |
| 21 | + "producerSlug": "Bordeaux-Pessac-Leognan-Chateau-de-Fieuzal-red", | |
| 22 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/120055.jpg", | |
| 23 | + "vintages": [ | |
| 24 | + { | |
| 25 | + "vintage": 2021, | |
| 26 | + "priceEur": 13, | |
| 27 | + "url": "https://www.idealwine.com/en/wine-prices/120055-2021-Bottle-Bordeaux-Pessac-Leognan-Chateau-de-Fieuzal-red", | |
| 28 | + "ref": "120055-2021" | |
| 29 | + }, | |
| 30 | + { | |
| 31 | + "vintage": 2020, | |
| 32 | + "priceEur": 14, | |
| 33 | + "url": "https://www.idealwine.com/en/wine-prices/120055-2020-Bottle-Bordeaux-Pessac-Leognan-Chateau-de-Fieuzal-red", | |
| 34 | + "ref": "120055-2020" | |
| 35 | + }, | |
| 36 | + { | |
| 37 | + "vintage": 2019, | |
| 38 | + "priceEur": 13, | |
| 39 | + "url": "https://www.idealwine.com/en/wine-prices/120055-2019-Bottle-Bordeaux-Pessac-Leognan-Chateau-de-Fieuzal-red", | |
| 40 | + "ref": "120055-2019" | |
| 41 | + }, | |
| 42 | + { | |
| 43 | + "vintage": 2018, | |
| 44 | + "priceEur": 20, | |
| 45 | + "url": "https://www.idealwine.com/en/wine-prices/120055-2018-Bottle-Bordeaux-Pessac-Leognan-Chateau-de-Fieuzal-red", | |
| 46 | + "ref": "120055-2018" | |
| 47 | + } | |
| 48 | + ] | |
| 49 | + }, | |
| 50 | + { | |
| 51 | + "wineId": "154049", | |
| 52 | + "name": "Abeille de Fieuzal Second Vin", | |
| 53 | + "color": "White", | |
| 54 | + "region": "Bordeaux", | |
| 55 | + "appellation": "Pessac-Léognan", | |
| 56 | + "producerSlug": "Bordeaux-Pessac-Leognan-Second-Wine-Chateau-de-Fieuzal-white", | |
| 57 | + "image": null, | |
| 58 | + "vintages": [ | |
| 59 | + { | |
| 60 | + "vintage": 2018, | |
| 61 | + "priceEur": 16, | |
| 62 | + "url": "https://www.idealwine.com/en/wine-prices/154049-2018-Bottle-Bordeaux-Pessac-Leognan-Second-Wine-Chateau-de-Fieuzal-white", | |
| 63 | + "ref": "154049-2018" | |
| 64 | + }, | |
| 65 | + { | |
| 66 | + "vintage": 2003, | |
| 67 | + "priceEur": 20, | |
| 68 | + "url": "https://www.idealwine.com/en/wine-prices/154049-2003-Bottle-Bordeaux-Pessac-Leognan-Second-Wine-Chateau-de-Fieuzal-white", | |
| 69 | + "ref": "154049-2003" | |
| 70 | + }, | |
| 71 | + { | |
| 72 | + "vintage": 1996, | |
| 73 | + "priceEur": 14, | |
| 74 | + "url": "https://www.idealwine.com/en/wine-prices/154049-1996-Bottle-Bordeaux-Pessac-Leognan-Second-Wine-Chateau-de-Fieuzal-white", | |
| 75 | + "ref": "154049-1996" | |
| 76 | + } | |
| 77 | + ] | |
| 78 | + }, | |
| 79 | + { | |
| 80 | + "wineId": "109082", | |
| 81 | + "name": "Château d' Agassac Cru Bourgeois", | |
| 82 | + "color": "Red", | |
| 83 | + "region": "Bordeaux", | |
| 84 | + "appellation": "Haut Médoc", | |
| 85 | + "producerSlug": "Bordeaux-Haut-Medoc-Cru-bourgeois-Chateau-dAgassac-red", | |
| 86 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/109082.jpg", | |
| 87 | + "vintages": [ | |
| 88 | + { | |
| 89 | + "vintage": 2021, | |
| 90 | + "priceEur": 11, | |
| 91 | + "url": "https://www.idealwine.com/en/wine-prices/109082-2021-Bottle-Bordeaux-Haut-Medoc-Cru-bourgeois-Chateau-dAgassac-red", | |
| 92 | + "ref": "109082-2021" | |
| 93 | + }, | |
| 94 | + { | |
| 95 | + "vintage": 2020, | |
| 96 | + "priceEur": 9, | |
| 97 | + "url": "https://www.idealwine.com/en/wine-prices/109082-2020-Bottle-Bordeaux-Haut-Medoc-Cru-bourgeois-Chateau-dAgassac-red", | |
| 98 | + "ref": "109082-2020" | |
| 99 | + }, | |
| 100 | + { | |
| 101 | + "vintage": 2019, | |
| 102 | + "priceEur": 13, | |
| 103 | + "url": "https://www.idealwine.com/en/wine-prices/109082-2019-Bottle-Bordeaux-Haut-Medoc-Cru-bourgeois-Chateau-dAgassac-red", | |
| 104 | + "ref": "109082-2019" | |
| 105 | + }, | |
| 106 | + { | |
| 107 | + "vintage": 2018, | |
| 108 | + "priceEur": 13, | |
| 109 | + "url": "https://www.idealwine.com/en/wine-prices/109082-2018-Bottle-Bordeaux-Haut-Medoc-Cru-bourgeois-Chateau-dAgassac-red", | |
| 110 | + "ref": "109082-2018" | |
| 111 | + } | |
| 112 | + ] | |
| 113 | + }, | |
| 114 | + { | |
| 115 | + "wineId": "103722", | |
| 116 | + "name": "Château d' Aiguilhe", | |
| 117 | + "color": "Red", | |
| 118 | + "region": "Bordeaux", | |
| 119 | + "appellation": "Castillon Côtes de Bordeaux", | |
| 120 | + "producerSlug": "Bordeaux-Castillon-Cotes-de-Bordeaux-Chateau-dAiguilhe-red", | |
| 121 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/103722.jpg", | |
| 122 | + "vintages": [ | |
| 123 | + { | |
| 124 | + "vintage": 2021, | |
| 125 | + "priceEur": 15, | |
| 126 | + "url": "https://www.idealwine.com/en/wine-prices/103722-2021-Bottle-Bordeaux-Castillon-Cotes-de-Bordeaux-Chateau-dAiguilhe-red", | |
| 127 | + "ref": "103722-2021" | |
| 128 | + }, | |
| 129 | + { | |
| 130 | + "vintage": 2020, | |
| 131 | + "priceEur": 21, | |
| 132 | + "url": "https://www.idealwine.com/en/wine-prices/103722-2020-Bottle-Bordeaux-Castillon-Cotes-de-Bordeaux-Chateau-dAiguilhe-red", | |
| 133 | + "ref": "103722-2020" | |
| 134 | + }, | |
| 135 | + { | |
| 136 | + "vintage": 2019, | |
| 137 | + "priceEur": 11, | |
| 138 | + "url": "https://www.idealwine.com/en/wine-prices/103722-2019-Bottle-Bordeaux-Castillon-Cotes-de-Bordeaux-Chateau-dAiguilhe-red", | |
| 139 | + "ref": "103722-2019" | |
| 140 | + }, | |
| 141 | + { | |
| 142 | + "vintage": 2018, | |
| 143 | + "priceEur": 19, | |
| 144 | + "url": "https://www.idealwine.com/en/wine-prices/103722-2018-Bottle-Bordeaux-Castillon-Cotes-de-Bordeaux-Chateau-dAiguilhe-red", | |
| 145 | + "ref": "103722-2018" | |
| 146 | + } | |
| 147 | + ] | |
| 148 | + }, | |
| 149 | + { | |
| 150 | + "wineId": "103004", | |
| 151 | + "name": "Aile d'Argent", | |
| 152 | + "color": "White", | |
| 153 | + "region": "Bordeaux", | |
| 154 | + "appellation": "Bordeaux", | |
| 155 | + "producerSlug": "Bordeaux-Bordeaux-Chateau-Mouton-Rothschild-white", | |
| 156 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/103004.jpg", | |
| 157 | + "vintages": [ | |
| 158 | + { | |
| 159 | + "vintage": 2023, | |
| 160 | + "priceEur": 113, | |
| 161 | + "url": "https://www.idealwine.com/en/wine-prices/103004-2023-Bottle-Bordeaux-Bordeaux-Chateau-Mouton-Rothschild-white", | |
| 162 | + "ref": "103004-2023" | |
| 163 | + }, | |
| 164 | + { | |
| 165 | + "vintage": 2022, | |
| 166 | + "priceEur": 126, | |
| 167 | + "url": "https://www.idealwine.com/en/wine-prices/103004-2022-Bottle-Bordeaux-Bordeaux-Chateau-Mouton-Rothschild-white", | |
| 168 | + "ref": "103004-2022" | |
| 169 | + }, | |
| 170 | + { | |
| 171 | + "vintage": 2021, | |
| 172 | + "priceEur": 111, | |
| 173 | + "url": "https://www.idealwine.com/en/wine-prices/103004-2021-Bottle-Bordeaux-Bordeaux-Chateau-Mouton-Rothschild-white", | |
| 174 | + "ref": "103004-2021" | |
| 175 | + }, | |
| 176 | + { | |
| 177 | + "vintage": 2020, | |
| 178 | + "priceEur": 90, | |
| 179 | + "url": "https://www.idealwine.com/en/wine-prices/103004-2020-Bottle-Bordeaux-Bordeaux-Chateau-Mouton-Rothschild-white", | |
| 180 | + "ref": "103004-2020" | |
| 181 | + } | |
| 182 | + ] | |
| 183 | + }, | |
| 184 | + { | |
| 185 | + "wineId": "167430", | |
| 186 | + "name": "Château Alcée", | |
| 187 | + "color": "Red", | |
| 188 | + "region": "Bordeaux", | |
| 189 | + "appellation": "Castillon Côtes de Bordeaux", | |
| 190 | + "producerSlug": "Bordeaux-Castillon-Cotes-de-Bordeaux-Chateau-les-Charmes-Godard-red", | |
| 191 | + "image": null, | |
| 192 | + "vintages": [ | |
| 193 | + { | |
| 194 | + "vintage": 2021, | |
| 195 | + "priceEur": 11, | |
| 196 | + "url": "https://www.idealwine.com/en/wine-prices/167430-2021-Bottle-Bordeaux-Castillon-Cotes-de-Bordeaux-Chateau-les-Charmes-Godard-red", | |
| 197 | + "ref": "167430-2021" | |
| 198 | + }, | |
| 199 | + { | |
| 200 | + "vintage": 2020, | |
| 201 | + "priceEur": 14, | |
| 202 | + "url": "https://www.idealwine.com/en/wine-prices/167430-2020-Bottle-Bordeaux-Castillon-Cotes-de-Bordeaux-Chateau-les-Charmes-Godard-red", | |
| 203 | + "ref": "167430-2020" | |
| 204 | + }, | |
| 205 | + { | |
| 206 | + "vintage": 2019, | |
| 207 | + "priceEur": 9, | |
| 208 | + "url": "https://www.idealwine.com/en/wine-prices/167430-2019-Bottle-Bordeaux-Castillon-Cotes-de-Bordeaux-Chateau-les-Charmes-Godard-red", | |
| 209 | + "ref": "167430-2019" | |
| 210 | + }, | |
| 211 | + { | |
| 212 | + "vintage": 2018, | |
| 213 | + "priceEur": 12, | |
| 214 | + "url": "https://www.idealwine.com/en/wine-prices/167430-2018-Bottle-Bordeaux-Castillon-Cotes-de-Bordeaux-Chateau-les-Charmes-Godard-red", | |
| 215 | + "ref": "167430-2018" | |
| 216 | + } | |
| 217 | + ] | |
| 218 | + }, | |
| 219 | + { | |
| 220 | + "wineId": "108161", | |
| 221 | + "name": "Allées de Cantemerle Second Vin", | |
| 222 | + "color": "Red", | |
| 223 | + "region": "Bordeaux", | |
| 224 | + "appellation": "Haut Médoc", | |
| 225 | + "producerSlug": "Bordeaux-Haut-Medoc-Second-Wine-Chateau-Cantemerle-red", | |
| 226 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/108161.jpg", | |
| 227 | + "vintages": [ | |
| 228 | + { | |
| 229 | + "vintage": 2018, | |
| 230 | + "priceEur": 12, | |
| 231 | + "url": "https://www.idealwine.com/en/wine-prices/108161-2018-Bottle-Bordeaux-Haut-Medoc-Second-Wine-Chateau-Cantemerle-red", | |
| 232 | + "ref": "108161-2018" | |
| 233 | + }, | |
| 234 | + { | |
| 235 | + "vintage": 2017, | |
| 236 | + "priceEur": 8, | |
| 237 | + "url": "https://www.idealwine.com/en/wine-prices/108161-2017-Bottle-Bordeaux-Haut-Medoc-Second-Wine-Chateau-Cantemerle-red", | |
| 238 | + "ref": "108161-2017" | |
| 239 | + }, | |
| 240 | + { | |
| 241 | + "vintage": 2016, | |
| 242 | + "priceEur": 12, | |
| 243 | + "url": "https://www.idealwine.com/en/wine-prices/108161-2016-Bottle-Bordeaux-Haut-Medoc-Second-Wine-Chateau-Cantemerle-red", | |
| 244 | + "ref": "108161-2016" | |
| 245 | + }, | |
| 246 | + { | |
| 247 | + "vintage": 2015, | |
| 248 | + "priceEur": 13, | |
| 249 | + "url": "https://www.idealwine.com/en/wine-prices/108161-2015-Bottle-Bordeaux-Haut-Medoc-Second-Wine-Chateau-Cantemerle-red", | |
| 250 | + "ref": "108161-2015" | |
| 251 | + } | |
| 252 | + ] | |
| 253 | + }, | |
| 254 | + { | |
| 255 | + "wineId": "103842", | |
| 256 | + "name": "Alter Ego de Palmer Second Vin", | |
| 257 | + "color": "Red", | |
| 258 | + "region": "Bordeaux", | |
| 259 | + "appellation": "Margaux", | |
| 260 | + "producerSlug": "Bordeaux-Margaux-Second-Wine-Chateau-Palmer-red", | |
| 261 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/103842.jpg", | |
| 262 | + "vintages": [ | |
| 263 | + { | |
| 264 | + "vintage": 2022, | |
| 265 | + "priceEur": 79, | |
| 266 | + "url": "https://www.idealwine.com/en/wine-prices/103842-2022-Bottle-Bordeaux-Margaux-Second-Wine-Chateau-Palmer-red", | |
| 267 | + "ref": "103842-2022" | |
| 268 | + }, | |
| 269 | + { | |
| 270 | + "vintage": 2021, | |
| 271 | + "priceEur": 57, | |
| 272 | + "url": "https://www.idealwine.com/en/wine-prices/103842-2021-Bottle-Bordeaux-Margaux-Second-Wine-Chateau-Palmer-red", | |
| 273 | + "ref": "103842-2021" | |
| 274 | + }, | |
| 275 | + { | |
| 276 | + "vintage": 2020, | |
| 277 | + "priceEur": 69, | |
| 278 | + "url": "https://www.idealwine.com/en/wine-prices/103842-2020-Bottle-Bordeaux-Margaux-Second-Wine-Chateau-Palmer-red", | |
| 279 | + "ref": "103842-2020" | |
| 280 | + }, | |
| 281 | + { | |
| 282 | + "vintage": 2019, | |
| 283 | + "priceEur": 78, | |
| 284 | + "url": "https://www.idealwine.com/en/wine-prices/103842-2019-Bottle-Bordeaux-Margaux-Second-Wine-Chateau-Palmer-red", | |
| 285 | + "ref": "103842-2019" | |
| 286 | + } | |
| 287 | + ] | |
| 288 | + }, | |
| 289 | + { | |
| 290 | + "wineId": "101980", | |
| 291 | + "name": "Amiral de Beychevelle Second Vin", | |
| 292 | + "color": "Red", | |
| 293 | + "region": "Bordeaux", | |
| 294 | + "appellation": "Saint-Julien", | |
| 295 | + "producerSlug": "Bordeaux-Saint-Julien-Second-Wine-Chateau-Beychevelle-red", | |
| 296 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/101980.jpg", | |
| 297 | + "vintages": [ | |
| 298 | + { | |
| 299 | + "vintage": 2021, | |
| 300 | + "priceEur": 35, | |
| 301 | + "url": "https://www.idealwine.com/en/wine-prices/101980-2021-Bottle-Bordeaux-Saint-Julien-Second-Wine-Chateau-Beychevelle-red", | |
| 302 | + "ref": "101980-2021" | |
| 303 | + }, | |
| 304 | + { | |
| 305 | + "vintage": 2020, | |
| 306 | + "priceEur": 48, | |
| 307 | + "url": "https://www.idealwine.com/en/wine-prices/101980-2020-Bottle-Bordeaux-Saint-Julien-Second-Wine-Chateau-Beychevelle-red", | |
| 308 | + "ref": "101980-2020" | |
| 309 | + }, | |
| 310 | + { | |
| 311 | + "vintage": 2019, | |
| 312 | + "priceEur": 36, | |
| 313 | + "url": "https://www.idealwine.com/en/wine-prices/101980-2019-Bottle-Bordeaux-Saint-Julien-Second-Wine-Chateau-Beychevelle-red", | |
| 314 | + "ref": "101980-2019" | |
| 315 | + }, | |
| 316 | + { | |
| 317 | + "vintage": 2018, | |
| 318 | + "priceEur": 33, | |
| 319 | + "url": "https://www.idealwine.com/en/wine-prices/101980-2018-Bottle-Bordeaux-Saint-Julien-Second-Wine-Chateau-Beychevelle-red", | |
| 320 | + "ref": "101980-2018" | |
| 321 | + } | |
| 322 | + ] | |
| 323 | + }, | |
| 324 | + { | |
| 325 | + "wineId": "119821", | |
| 326 | + "name": "Château Ampélia", | |
| 327 | + "color": "Red", | |
| 328 | + "region": "Bordeaux", | |
| 329 | + "appellation": "Castillon Côtes de Bordeaux", | |
| 330 | + "producerSlug": "Bordeaux-Castillon-Cotes-de-Bordeaux-Chateau-Ampelia-red", | |
| 331 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/119821.jpg", | |
| 332 | + "vintages": [ | |
| 333 | + { | |
| 334 | + "vintage": 2021, | |
| 335 | + "priceEur": 11, | |
| 336 | + "url": "https://www.idealwine.com/en/wine-prices/119821-2021-Bottle-Bordeaux-Castillon-Cotes-de-Bordeaux-Chateau-Ampelia-red", | |
| 337 | + "ref": "119821-2021" | |
| 338 | + }, | |
| 339 | + { | |
| 340 | + "vintage": 2020, | |
| 341 | + "priceEur": 8, | |
| 342 | + "url": "https://www.idealwine.com/en/wine-prices/119821-2020-Bottle-Bordeaux-Castillon-Cotes-de-Bordeaux-Chateau-Ampelia-red", | |
| 343 | + "ref": "119821-2020" | |
| 344 | + }, | |
| 345 | + { | |
| 346 | + "vintage": 2019, | |
| 347 | + "priceEur": 6, | |
| 348 | + "url": "https://www.idealwine.com/en/wine-prices/119821-2019-Bottle-Bordeaux-Castillon-Cotes-de-Bordeaux-Chateau-Ampelia-red", | |
| 349 | + "ref": "119821-2019" | |
| 350 | + }, | |
| 351 | + { | |
| 352 | + "vintage": 2018, | |
| 353 | + "priceEur": 8, | |
| 354 | + "url": "https://www.idealwine.com/en/wine-prices/119821-2018-Bottle-Bordeaux-Castillon-Cotes-de-Bordeaux-Chateau-Ampelia-red", | |
| 355 | + "ref": "119821-2018" | |
| 356 | + } | |
| 357 | + ] | |
| 358 | + }, | |
| 359 | + { | |
| 360 | + "wineId": "2", | |
| 361 | + "name": "Château Andoyse", | |
| 362 | + "color": "Sweet and dessert wine", | |
| 363 | + "region": "Bordeaux", | |
| 364 | + "appellation": "Sauternes", | |
| 365 | + "producerSlug": "Bordeaux-Sauternes-Chateau-Andoyse-du-Hayot-sweet-and-dessert-wine", | |
| 366 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/2.jpg", | |
| 367 | + "vintages": [ | |
| 368 | + { | |
| 369 | + "vintage": 2012, | |
| 370 | + "priceEur": 16, | |
| 371 | + "url": "https://www.idealwine.com/en/wine-prices/2-2012-Bottle-Bordeaux-Sauternes-Chateau-Andoyse-du-Hayot-sweet-and-dessert-wine", | |
| 372 | + "ref": "2-2012" | |
| 373 | + }, | |
| 374 | + { | |
| 375 | + "vintage": 2001, | |
| 376 | + "priceEur": 28, | |
| 377 | + "url": "https://www.idealwine.com/en/wine-prices/2-2001-Bottle-Bordeaux-Sauternes-Chateau-Andoyse-du-Hayot-sweet-and-dessert-wine", | |
| 378 | + "ref": "2-2001" | |
| 379 | + }, | |
| 380 | + { | |
| 381 | + "vintage": 1997, | |
| 382 | + "priceEur": 25, | |
| 383 | + "url": "https://www.idealwine.com/en/wine-prices/2-1997-Bottle-Bordeaux-Sauternes-Chateau-Andoyse-du-Hayot-sweet-and-dessert-wine", | |
| 384 | + "ref": "2-1997" | |
| 385 | + }, | |
| 386 | + { | |
| 387 | + "vintage": 1996, | |
| 388 | + "priceEur": 24, | |
| 389 | + "url": "https://www.idealwine.com/en/wine-prices/2-1996-Bottle-Bordeaux-Sauternes-Chateau-Andoyse-du-Hayot-sweet-and-dessert-wine", | |
| 390 | + "ref": "2-1996" | |
| 391 | + } | |
| 392 | + ] | |
| 393 | + }, | |
| 394 | + { | |
| 395 | + "wineId": "103030", | |
| 396 | + "name": "Château Andréas", | |
| 397 | + "color": "Red", | |
| 398 | + "region": "Bordeaux", | |
| 399 | + "appellation": "Saint-Émilion", | |
| 400 | + "producerSlug": "Bordeaux-Saint-Emilion-Chateau-Andreas-red", | |
| 401 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/103030.jpg", | |
| 402 | + "vintages": [ | |
| 403 | + { | |
| 404 | + "vintage": 2000, | |
| 405 | + "priceEur": 41, | |
| 406 | + "url": "https://www.idealwine.com/en/wine-prices/103030-2000-Bottle-Bordeaux-Saint-Emilion-Chateau-Andreas-red", | |
| 407 | + "ref": "103030-2000" | |
| 408 | + }, | |
| 409 | + { | |
| 410 | + "vintage": 1999, | |
| 411 | + "priceEur": 30, | |
| 412 | + "url": "https://www.idealwine.com/en/wine-prices/103030-1999-Bottle-Bordeaux-Saint-Emilion-Chateau-Andreas-red", | |
| 413 | + "ref": "103030-1999" | |
| 414 | + }, | |
| 415 | + { | |
| 416 | + "vintage": 1998, | |
| 417 | + "priceEur": 25, | |
| 418 | + "url": "https://www.idealwine.com/en/wine-prices/103030-1998-Bottle-Bordeaux-Saint-Emilion-Chateau-Andreas-red", | |
| 419 | + "ref": "103030-1998" | |
| 420 | + } | |
| 421 | + ] | |
| 422 | + }, | |
| 423 | + { | |
| 424 | + "wineId": "3", | |
| 425 | + "name": "Château Andron Blanquet Cru Bourgeois", | |
| 426 | + "color": "Red", | |
| 427 | + "region": "Bordeaux", | |
| 428 | + "appellation": "Saint-Estèphe", | |
| 429 | + "producerSlug": "Bordeaux-Saint-Estephe-Cru-bourgeois-Chateau-Andron-Blanquet-red", | |
| 430 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/3.jpg", | |
| 431 | + "vintages": [ | |
| 432 | + { | |
| 433 | + "vintage": 2021, | |
| 434 | + "priceEur": 13, | |
| 435 | + "url": "https://www.idealwine.com/en/wine-prices/3-2021-Bottle-Bordeaux-Saint-Estephe-Cru-bourgeois-Chateau-Andron-Blanquet-red", | |
| 436 | + "ref": "3-2021" | |
| 437 | + }, | |
| 438 | + { | |
| 439 | + "vintage": 2020, | |
| 440 | + "priceEur": 11, | |
| 441 | + "url": "https://www.idealwine.com/en/wine-prices/3-2020-Bottle-Bordeaux-Saint-Estephe-Cru-bourgeois-Chateau-Andron-Blanquet-red", | |
| 442 | + "ref": "3-2020" | |
| 443 | + }, | |
| 444 | + { | |
| 445 | + "vintage": 2019, | |
| 446 | + "priceEur": 11, | |
| 447 | + "url": "https://www.idealwine.com/en/wine-prices/3-2019-Bottle-Bordeaux-Saint-Estephe-Cru-bourgeois-Chateau-Andron-Blanquet-red", | |
| 448 | + "ref": "3-2019" | |
| 449 | + }, | |
| 450 | + { | |
| 451 | + "vintage": 2018, | |
| 452 | + "priceEur": 13, | |
| 453 | + "url": "https://www.idealwine.com/en/wine-prices/3-2018-Bottle-Bordeaux-Saint-Estephe-Cru-bourgeois-Chateau-Andron-Blanquet-red", | |
| 454 | + "ref": "3-2018" | |
| 455 | + } | |
| 456 | + ] | |
| 457 | + }, | |
| 458 | + { | |
| 459 | + "wineId": "4", | |
| 460 | + "name": "Château Angélus 1er Grand Cru Classé A", | |
| 461 | + "color": "Red", | |
| 462 | + "region": "Bordeaux", | |
| 463 | + "appellation": "Saint-Émilion Grand Cru", | |
| 464 | + "producerSlug": "Bordeaux-Saint-Emilion-Grand-Cru-Premier-Grand-Cru-Classe-A-Chateau-Angelus-red", | |
| 465 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/4.jpg", | |
| 466 | + "vintages": [ | |
| 467 | + { | |
| 468 | + "vintage": 2022, | |
| 469 | + "priceEur": 426, | |
| 470 | + "url": "https://www.idealwine.com/en/wine-prices/4-2022-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Premier-Grand-Cru-Classe-A-Chateau-Angelus-red", | |
| 471 | + "ref": "4-2022" | |
| 472 | + }, | |
| 473 | + { | |
| 474 | + "vintage": 2021, | |
| 475 | + "priceEur": 245, | |
| 476 | + "url": "https://www.idealwine.com/en/wine-prices/4-2021-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Premier-Grand-Cru-Classe-A-Chateau-Angelus-red", | |
| 477 | + "ref": "4-2021" | |
| 478 | + }, | |
| 479 | + { | |
| 480 | + "vintage": 2020, | |
| 481 | + "priceEur": 245, | |
| 482 | + "url": "https://www.idealwine.com/en/wine-prices/4-2020-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Premier-Grand-Cru-Classe-A-Chateau-Angelus-red", | |
| 483 | + "ref": "4-2020" | |
| 484 | + }, | |
| 485 | + { | |
| 486 | + "vintage": 2019, | |
| 487 | + "priceEur": 263, | |
| 488 | + "url": "https://www.idealwine.com/en/wine-prices/4-2019-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Premier-Grand-Cru-Classe-A-Chateau-Angelus-red", | |
| 489 | + "ref": "4-2019" | |
| 490 | + } | |
| 491 | + ] | |
| 492 | + }, | |
| 493 | + { | |
| 494 | + "wineId": "175309", | |
| 495 | + "name": "Angélus - Hommage à Elisabeth Bouchet", | |
| 496 | + "color": "Red", | |
| 497 | + "region": "Bordeaux", | |
| 498 | + "appellation": "Saint-Émilion Grand Cru", | |
| 499 | + "producerSlug": "Bordeaux-Saint-Emilion-Grand-Cru-Chateau-Angelus-red", | |
| 500 | + "image": null, | |
| 501 | + "vintages": [ | |
| 502 | + { | |
| 503 | + "vintage": 2020, | |
| 504 | + "priceEur": 1.033, | |
| 505 | + "url": "https://www.idealwine.com/en/wine-prices/175309-2020-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Chateau-Angelus-red", | |
| 506 | + "ref": "175309-2020" | |
| 507 | + }, | |
| 508 | + { | |
| 509 | + "vintage": 2019, | |
| 510 | + "priceEur": 944, | |
| 511 | + "url": "https://www.idealwine.com/en/wine-prices/175309-2019-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Chateau-Angelus-red", | |
| 512 | + "ref": "175309-2019" | |
| 513 | + }, | |
| 514 | + { | |
| 515 | + "vintage": 2018, | |
| 516 | + "priceEur": 916, | |
| 517 | + "url": "https://www.idealwine.com/en/wine-prices/175309-2018-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Chateau-Angelus-red", | |
| 518 | + "ref": "175309-2018" | |
| 519 | + }, | |
| 520 | + { | |
| 521 | + "vintage": 2016, | |
| 522 | + "priceEur": 1.032, | |
| 523 | + "url": "https://www.idealwine.com/en/wine-prices/175309-2016-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Chateau-Angelus-red", | |
| 524 | + "ref": "175309-2016" | |
| 525 | + } | |
| 526 | + ] | |
| 527 | + }, | |
| 528 | + { | |
| 529 | + "wineId": "5", | |
| 530 | + "name": "Château d' Angludet Cru Bourgeois", | |
| 531 | + "color": "Red", | |
| 532 | + "region": "Bordeaux", | |
| 533 | + "appellation": "Margaux", | |
| 534 | + "producerSlug": "Bordeaux-Margaux-Cru-bourgeois-Chateau-dAngludet-red", | |
| 535 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/5.jpg", | |
| 536 | + "vintages": [ | |
| 537 | + { | |
| 538 | + "vintage": 2021, | |
| 539 | + "priceEur": 20, | |
| 540 | + "url": "https://www.idealwine.com/en/wine-prices/5-2021-Bottle-Bordeaux-Margaux-Cru-bourgeois-Chateau-dAngludet-red", | |
| 541 | + "ref": "5-2021" | |
| 542 | + }, | |
| 543 | + { | |
| 544 | + "vintage": 2020, | |
| 545 | + "priceEur": 23, | |
| 546 | + "url": "https://www.idealwine.com/en/wine-prices/5-2020-Bottle-Bordeaux-Margaux-Cru-bourgeois-Chateau-dAngludet-red", | |
| 547 | + "ref": "5-2020" | |
| 548 | + }, | |
| 549 | + { | |
| 550 | + "vintage": 2019, | |
| 551 | + "priceEur": 25, | |
| 552 | + "url": "https://www.idealwine.com/en/wine-prices/5-2019-Bottle-Bordeaux-Margaux-Cru-bourgeois-Chateau-dAngludet-red", | |
| 553 | + "ref": "5-2019" | |
| 554 | + }, | |
| 555 | + { | |
| 556 | + "vintage": 2018, | |
| 557 | + "priceEur": 24, | |
| 558 | + "url": "https://www.idealwine.com/en/wine-prices/5-2018-Bottle-Bordeaux-Margaux-Cru-bourgeois-Chateau-dAngludet-red", | |
| 559 | + "ref": "5-2018" | |
| 560 | + } | |
| 561 | + ] | |
| 562 | + }, | |
| 563 | + { | |
| 564 | + "wineId": "104523", | |
| 565 | + "name": "Château Annereaux", | |
| 566 | + "color": "Red", | |
| 567 | + "region": "Bordeaux", | |
| 568 | + "appellation": "Lalande de Pomerol", | |
| 569 | + "producerSlug": "Bordeaux-Lalande-de-Pomerol-Chateau-Annereaux-red", | |
| 570 | + "image": null, | |
| 571 | + "vintages": [ | |
| 572 | + { | |
| 573 | + "vintage": 2021, | |
| 574 | + "priceEur": 5, | |
| 575 | + "url": "https://www.idealwine.com/en/wine-prices/104523-2021-Bottle-Bordeaux-Lalande-de-Pomerol-Chateau-Annereaux-red", | |
| 576 | + "ref": "104523-2021" | |
| 577 | + }, | |
| 578 | + { | |
| 579 | + "vintage": 2020, | |
| 580 | + "priceEur": 11, | |
| 581 | + "url": "https://www.idealwine.com/en/wine-prices/104523-2020-Bottle-Bordeaux-Lalande-de-Pomerol-Chateau-Annereaux-red", | |
| 582 | + "ref": "104523-2020" | |
| 583 | + }, | |
| 584 | + { | |
| 585 | + "vintage": 2019, | |
| 586 | + "priceEur": 14, | |
| 587 | + "url": "https://www.idealwine.com/en/wine-prices/104523-2019-Bottle-Bordeaux-Lalande-de-Pomerol-Chateau-Annereaux-red", | |
| 588 | + "ref": "104523-2019" | |
| 589 | + }, | |
| 590 | + { | |
| 591 | + "vintage": 2018, | |
| 592 | + "priceEur": 14, | |
| 593 | + "url": "https://www.idealwine.com/en/wine-prices/104523-2018-Bottle-Bordeaux-Lalande-de-Pomerol-Chateau-Annereaux-red", | |
| 594 | + "ref": "104523-2018" | |
| 595 | + } | |
| 596 | + ] | |
| 597 | + }, | |
| 598 | + { | |
| 599 | + "wineId": "6", | |
| 600 | + "name": "Château Anthonic Cru Bourgeois", | |
| 601 | + "color": "Red", | |
| 602 | + "region": "Bordeaux", | |
| 603 | + "appellation": "Moulis-en-Médoc", | |
| 604 | + "producerSlug": "Bordeaux-Moulis-en-Medoc-Cru-bourgeois-Chateau-Anthonic-red", | |
| 605 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/6.jpg", | |
| 606 | + "vintages": [ | |
| 607 | + { | |
| 608 | + "vintage": 2020, | |
| 609 | + "priceEur": 19, | |
| 610 | + "url": "https://www.idealwine.com/en/wine-prices/6-2020-Bottle-Bordeaux-Moulis-en-Medoc-Cru-bourgeois-Chateau-Anthonic-red", | |
| 611 | + "ref": "6-2020" | |
| 612 | + }, | |
| 613 | + { | |
| 614 | + "vintage": 2019, | |
| 615 | + "priceEur": 20, | |
| 616 | + "url": "https://www.idealwine.com/en/wine-prices/6-2019-Bottle-Bordeaux-Moulis-en-Medoc-Cru-bourgeois-Chateau-Anthonic-red", | |
| 617 | + "ref": "6-2019" | |
| 618 | + }, | |
| 619 | + { | |
| 620 | + "vintage": 2018, | |
| 621 | + "priceEur": 21, | |
| 622 | + "url": "https://www.idealwine.com/en/wine-prices/6-2018-Bottle-Bordeaux-Moulis-en-Medoc-Cru-bourgeois-Chateau-Anthonic-red", | |
| 623 | + "ref": "6-2018" | |
| 624 | + }, | |
| 625 | + { | |
| 626 | + "vintage": 2017, | |
| 627 | + "priceEur": 7, | |
| 628 | + "url": "https://www.idealwine.com/en/wine-prices/6-2017-Bottle-Bordeaux-Moulis-en-Medoc-Cru-bourgeois-Chateau-Anthonic-red", | |
| 629 | + "ref": "6-2017" | |
| 630 | + } | |
| 631 | + ] | |
| 632 | + }, | |
| 633 | + { | |
| 634 | + "wineId": "8", | |
| 635 | + "name": "Château d' Archambeau", | |
| 636 | + "color": "Red", | |
| 637 | + "region": "Bordeaux", | |
| 638 | + "appellation": "Graves", | |
| 639 | + "producerSlug": "Bordeaux-Graves-Chateau-dArchambeau-red", | |
| 640 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/8.jpg", | |
| 641 | + "vintages": [ | |
| 642 | + { | |
| 643 | + "vintage": 2010, | |
| 644 | + "priceEur": 13, | |
| 645 | + "url": "https://www.idealwine.com/en/wine-prices/8-2010-Bottle-Bordeaux-Graves-Chateau-dArchambeau-red", | |
| 646 | + "ref": "8-2010" | |
| 647 | + }, | |
| 648 | + { | |
| 649 | + "vintage": 2005, | |
| 650 | + "priceEur": 19, | |
| 651 | + "url": "https://www.idealwine.com/en/wine-prices/8-2005-Bottle-Bordeaux-Graves-Chateau-dArchambeau-red", | |
| 652 | + "ref": "8-2005" | |
| 653 | + }, | |
| 654 | + { | |
| 655 | + "vintage": 2000, | |
| 656 | + "priceEur": 11, | |
| 657 | + "url": "https://www.idealwine.com/en/wine-prices/8-2000-Bottle-Bordeaux-Graves-Chateau-dArchambeau-red", | |
| 658 | + "ref": "8-2000" | |
| 659 | + }, | |
| 660 | + { | |
| 661 | + "vintage": 1997, | |
| 662 | + "priceEur": 16, | |
| 663 | + "url": "https://www.idealwine.com/en/wine-prices/8-1997-Bottle-Bordeaux-Graves-Chateau-dArchambeau-red", | |
| 664 | + "ref": "8-1997" | |
| 665 | + } | |
| 666 | + ] | |
| 667 | + }, | |
| 668 | + { | |
| 669 | + "wineId": "7", | |
| 670 | + "name": "Château d' Archambeau", | |
| 671 | + "color": "White", | |
| 672 | + "region": "Bordeaux", | |
| 673 | + "appellation": "Graves", | |
| 674 | + "producerSlug": "Bordeaux-Graves-Chateau-dArchambeau-white", | |
| 675 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/7.jpg", | |
| 676 | + "vintages": [ | |
| 677 | + { | |
| 678 | + "vintage": 1998, | |
| 679 | + "priceEur": 12, | |
| 680 | + "url": "https://www.idealwine.com/en/wine-prices/7-1998-Bottle-Bordeaux-Graves-Chateau-dArchambeau-white", | |
| 681 | + "ref": "7-1998" | |
| 682 | + }, | |
| 683 | + { | |
| 684 | + "vintage": 1997, | |
| 685 | + "priceEur": 19, | |
| 686 | + "url": "https://www.idealwine.com/en/wine-prices/7-1997-Bottle-Bordeaux-Graves-Chateau-dArchambeau-white", | |
| 687 | + "ref": "7-1997" | |
| 688 | + }, | |
| 689 | + { | |
| 690 | + "vintage": 1996, | |
| 691 | + "priceEur": 30, | |
| 692 | + "url": "https://www.idealwine.com/en/wine-prices/7-1996-Bottle-Bordeaux-Graves-Chateau-dArchambeau-white", | |
| 693 | + "ref": "7-1996" | |
| 694 | + }, | |
| 695 | + { | |
| 696 | + "vintage": 1995, | |
| 697 | + "priceEur": 38, | |
| 698 | + "url": "https://www.idealwine.com/en/wine-prices/7-1995-Bottle-Bordeaux-Graves-Chateau-dArchambeau-white", | |
| 699 | + "ref": "7-1995" | |
| 700 | + } | |
| 701 | + ] | |
| 702 | + } | |
| 703 | + ] | |
| 704 | + } | |
| 705 | + }, | |
| 706 | + "expect": { | |
| 707 | + "minCount": 40, | |
| 708 | + "kinds": [ | |
| 709 | + "catalog_item", | |
| 710 | + "price_observation" | |
| 711 | + ], | |
| 712 | + "requiredFields": [ | |
| 713 | + "attributes.name" | |
| 714 | + ] | |
| 715 | + }, | |
| 716 | + "note": "Captured live from idealwine.com /en/cote/bordeaux (plain HTTPS)", | |
| 717 | + "capturedAt": "2026-09-07T06:24:02.999Z" | |
| 718 | +} | |
| \ No newline at end of file | ||
added
data/fixtures/idealwine/bordeaux-page-2.json
+694 −0
@@ -0,0 +1,694 @@ | ||
| 1 | +{ | |
| 2 | + "raw": { | |
| 3 | + "url": "https://www.idealwine.com/en/cote/bordeaux?page=2", | |
| 4 | + "externalId": "cote:bordeaux:2", | |
| 5 | + "kind": "price_observation", | |
| 6 | + "engine": "api", | |
| 7 | + "fetchedAt": "2026-09-07T06:24:04.861Z", | |
| 8 | + "payload": { | |
| 9 | + "kind": "cote_page", | |
| 10 | + "url": "https://www.idealwine.com/en/cote/bordeaux?page=2", | |
| 11 | + "region": "bordeaux", | |
| 12 | + "page": 2, | |
| 13 | + "totalPages": 58, | |
| 14 | + "wines": [ | |
| 15 | + { | |
| 16 | + "wineId": "10", | |
| 17 | + "name": "Château d' Arche 2ème Grand Cru Classé", | |
| 18 | + "color": "Sweet and dessert wine", | |
| 19 | + "region": "Bordeaux", | |
| 20 | + "appellation": "Sauternes", | |
| 21 | + "producerSlug": "Bordeaux-Sauternes-Deuxieme-Grand-Cru-Classe-Chateau-dArche-sweet-and-dessert-wine", | |
| 22 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/10.jpg", | |
| 23 | + "vintages": [ | |
| 24 | + { | |
| 25 | + "vintage": 2020, | |
| 26 | + "priceEur": 17, | |
| 27 | + "url": "https://www.idealwine.com/en/wine-prices/10-2020-Bottle-Bordeaux-Sauternes-Deuxieme-Grand-Cru-Classe-Chateau-dArche-sweet-and-dessert-wine", | |
| 28 | + "ref": "10-2020" | |
| 29 | + }, | |
| 30 | + { | |
| 31 | + "vintage": 2019, | |
| 32 | + "priceEur": 16, | |
| 33 | + "url": "https://www.idealwine.com/en/wine-prices/10-2019-Bottle-Bordeaux-Sauternes-Deuxieme-Grand-Cru-Classe-Chateau-dArche-sweet-and-dessert-wine", | |
| 34 | + "ref": "10-2019" | |
| 35 | + }, | |
| 36 | + { | |
| 37 | + "vintage": 2018, | |
| 38 | + "priceEur": 30, | |
| 39 | + "url": "https://www.idealwine.com/en/wine-prices/10-2018-Bottle-Bordeaux-Sauternes-Deuxieme-Grand-Cru-Classe-Chateau-dArche-sweet-and-dessert-wine", | |
| 40 | + "ref": "10-2018" | |
| 41 | + }, | |
| 42 | + { | |
| 43 | + "vintage": 2017, | |
| 44 | + "priceEur": 25, | |
| 45 | + "url": "https://www.idealwine.com/en/wine-prices/10-2017-Bottle-Bordeaux-Sauternes-Deuxieme-Grand-Cru-Classe-Chateau-dArche-sweet-and-dessert-wine", | |
| 46 | + "ref": "10-2017" | |
| 47 | + } | |
| 48 | + ] | |
| 49 | + }, | |
| 50 | + { | |
| 51 | + "wineId": "11", | |
| 52 | + "name": "Château d' Arcins Cru Bourgeois", | |
| 53 | + "color": "Red", | |
| 54 | + "region": "Bordeaux", | |
| 55 | + "appellation": "Haut Médoc", | |
| 56 | + "producerSlug": "Bordeaux-Haut-Medoc-Cru-bourgeois-Chateau-dArcins-red", | |
| 57 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/11.jpg", | |
| 58 | + "vintages": [ | |
| 59 | + { | |
| 60 | + "vintage": 2021, | |
| 61 | + "priceEur": 14, | |
| 62 | + "url": "https://www.idealwine.com/en/wine-prices/11-2021-Bottle-Bordeaux-Haut-Medoc-Cru-bourgeois-Chateau-dArcins-red", | |
| 63 | + "ref": "11-2021" | |
| 64 | + }, | |
| 65 | + { | |
| 66 | + "vintage": 2020, | |
| 67 | + "priceEur": 9, | |
| 68 | + "url": "https://www.idealwine.com/en/wine-prices/11-2020-Bottle-Bordeaux-Haut-Medoc-Cru-bourgeois-Chateau-dArcins-red", | |
| 69 | + "ref": "11-2020" | |
| 70 | + }, | |
| 71 | + { | |
| 72 | + "vintage": 2019, | |
| 73 | + "priceEur": 10, | |
| 74 | + "url": "https://www.idealwine.com/en/wine-prices/11-2019-Bottle-Bordeaux-Haut-Medoc-Cru-bourgeois-Chateau-dArcins-red", | |
| 75 | + "ref": "11-2019" | |
| 76 | + }, | |
| 77 | + { | |
| 78 | + "vintage": 2017, | |
| 79 | + "priceEur": 9, | |
| 80 | + "url": "https://www.idealwine.com/en/wine-prices/11-2017-Bottle-Bordeaux-Haut-Medoc-Cru-bourgeois-Chateau-dArcins-red", | |
| 81 | + "ref": "11-2017" | |
| 82 | + } | |
| 83 | + ] | |
| 84 | + }, | |
| 85 | + { | |
| 86 | + "wineId": "133157", | |
| 87 | + "name": "Château d' Argan Cru Bourgeois", | |
| 88 | + "color": "Red", | |
| 89 | + "region": "Bordeaux", | |
| 90 | + "appellation": "Médoc", | |
| 91 | + "producerSlug": "Bordeaux-Medoc-Cru-bourgeois-Chateau-dArgan-red", | |
| 92 | + "image": null, | |
| 93 | + "vintages": [ | |
| 94 | + { | |
| 95 | + "vintage": 2019, | |
| 96 | + "priceEur": 9, | |
| 97 | + "url": "https://www.idealwine.com/en/wine-prices/133157-2019-Bottle-Bordeaux-Medoc-Cru-bourgeois-Chateau-dArgan-red", | |
| 98 | + "ref": "133157-2019" | |
| 99 | + }, | |
| 100 | + { | |
| 101 | + "vintage": 2018, | |
| 102 | + "priceEur": 9, | |
| 103 | + "url": "https://www.idealwine.com/en/wine-prices/133157-2018-Bottle-Bordeaux-Medoc-Cru-bourgeois-Chateau-dArgan-red", | |
| 104 | + "ref": "133157-2018" | |
| 105 | + }, | |
| 106 | + { | |
| 107 | + "vintage": 2017, | |
| 108 | + "priceEur": 10, | |
| 109 | + "url": "https://www.idealwine.com/en/wine-prices/133157-2017-Bottle-Bordeaux-Medoc-Cru-bourgeois-Chateau-dArgan-red", | |
| 110 | + "ref": "133157-2017" | |
| 111 | + }, | |
| 112 | + { | |
| 113 | + "vintage": 2016, | |
| 114 | + "priceEur": 11, | |
| 115 | + "url": "https://www.idealwine.com/en/wine-prices/133157-2016-Bottle-Bordeaux-Medoc-Cru-bourgeois-Chateau-dArgan-red", | |
| 116 | + "ref": "133157-2016" | |
| 117 | + } | |
| 118 | + ] | |
| 119 | + }, | |
| 120 | + { | |
| 121 | + "wineId": "12", | |
| 122 | + "name": "Château d' Armailhac - Mouton Baron(ne) Philippe 5ème Grand Cru Classé", | |
| 123 | + "color": "Red", | |
| 124 | + "region": "Bordeaux", | |
| 125 | + "appellation": "Pauillac", | |
| 126 | + "producerSlug": "Bordeaux-Pauillac-Cinquieme-Grand-Cru-Classe-Chateau-dArmailhac---Mouton-Baronne-Philippe-red", | |
| 127 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/12.jpg", | |
| 128 | + "vintages": [ | |
| 129 | + { | |
| 130 | + "vintage": 2021, | |
| 131 | + "priceEur": 33, | |
| 132 | + "url": "https://www.idealwine.com/en/wine-prices/12-2021-Bottle-Bordeaux-Pauillac-Cinquieme-Grand-Cru-Classe-Chateau-dArmailhac---Mouton-Baronne-Philippe-red", | |
| 133 | + "ref": "12-2021" | |
| 134 | + }, | |
| 135 | + { | |
| 136 | + "vintage": 2020, | |
| 137 | + "priceEur": 48, | |
| 138 | + "url": "https://www.idealwine.com/en/wine-prices/12-2020-Bottle-Bordeaux-Pauillac-Cinquieme-Grand-Cru-Classe-Chateau-dArmailhac---Mouton-Baronne-Philippe-red", | |
| 139 | + "ref": "12-2020" | |
| 140 | + }, | |
| 141 | + { | |
| 142 | + "vintage": 2019, | |
| 143 | + "priceEur": 44, | |
| 144 | + "url": "https://www.idealwine.com/en/wine-prices/12-2019-Bottle-Bordeaux-Pauillac-Cinquieme-Grand-Cru-Classe-Chateau-dArmailhac---Mouton-Baronne-Philippe-red", | |
| 145 | + "ref": "12-2019" | |
| 146 | + }, | |
| 147 | + { | |
| 148 | + "vintage": 2018, | |
| 149 | + "priceEur": 45, | |
| 150 | + "url": "https://www.idealwine.com/en/wine-prices/12-2018-Bottle-Bordeaux-Pauillac-Cinquieme-Grand-Cru-Classe-Chateau-dArmailhac---Mouton-Baronne-Philippe-red", | |
| 151 | + "ref": "12-2018" | |
| 152 | + } | |
| 153 | + ] | |
| 154 | + }, | |
| 155 | + { | |
| 156 | + "wineId": "105326", | |
| 157 | + "name": "Château Armens Grand Cru", | |
| 158 | + "color": "Red", | |
| 159 | + "region": "Bordeaux", | |
| 160 | + "appellation": "Saint-Émilion", | |
| 161 | + "producerSlug": "Bordeaux-Saint-Emilion-Grand-Cru-Chateau-Armens-red", | |
| 162 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/105326.jpg", | |
| 163 | + "vintages": [ | |
| 164 | + { | |
| 165 | + "vintage": 2020, | |
| 166 | + "priceEur": 13, | |
| 167 | + "url": "https://www.idealwine.com/en/wine-prices/105326-2020-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Chateau-Armens-red", | |
| 168 | + "ref": "105326-2020" | |
| 169 | + }, | |
| 170 | + { | |
| 171 | + "vintage": 2019, | |
| 172 | + "priceEur": 9, | |
| 173 | + "url": "https://www.idealwine.com/en/wine-prices/105326-2019-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Chateau-Armens-red", | |
| 174 | + "ref": "105326-2019" | |
| 175 | + }, | |
| 176 | + { | |
| 177 | + "vintage": 2018, | |
| 178 | + "priceEur": 16, | |
| 179 | + "url": "https://www.idealwine.com/en/wine-prices/105326-2018-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Chateau-Armens-red", | |
| 180 | + "ref": "105326-2018" | |
| 181 | + }, | |
| 182 | + { | |
| 183 | + "vintage": 2017, | |
| 184 | + "priceEur": 11, | |
| 185 | + "url": "https://www.idealwine.com/en/wine-prices/105326-2017-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Chateau-Armens-red", | |
| 186 | + "ref": "105326-2017" | |
| 187 | + } | |
| 188 | + ] | |
| 189 | + }, | |
| 190 | + { | |
| 191 | + "wineId": "13", | |
| 192 | + "name": "Château Arnauld Cru Bourgeois", | |
| 193 | + "color": "Red", | |
| 194 | + "region": "Bordeaux", | |
| 195 | + "appellation": "Haut Médoc", | |
| 196 | + "producerSlug": "Bordeaux-Haut-Medoc-Cru-bourgeois-Chateau-Arnauld-red", | |
| 197 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/13.jpg", | |
| 198 | + "vintages": [ | |
| 199 | + { | |
| 200 | + "vintage": 2022, | |
| 201 | + "priceEur": 18, | |
| 202 | + "url": "https://www.idealwine.com/en/wine-prices/13-2022-Bottle-Bordeaux-Haut-Medoc-Cru-bourgeois-Chateau-Arnauld-red", | |
| 203 | + "ref": "13-2022" | |
| 204 | + }, | |
| 205 | + { | |
| 206 | + "vintage": 2021, | |
| 207 | + "priceEur": 14, | |
| 208 | + "url": "https://www.idealwine.com/en/wine-prices/13-2021-Bottle-Bordeaux-Haut-Medoc-Cru-bourgeois-Chateau-Arnauld-red", | |
| 209 | + "ref": "13-2021" | |
| 210 | + }, | |
| 211 | + { | |
| 212 | + "vintage": 2020, | |
| 213 | + "priceEur": 13, | |
| 214 | + "url": "https://www.idealwine.com/en/wine-prices/13-2020-Bottle-Bordeaux-Haut-Medoc-Cru-bourgeois-Chateau-Arnauld-red", | |
| 215 | + "ref": "13-2020" | |
| 216 | + }, | |
| 217 | + { | |
| 218 | + "vintage": 2019, | |
| 219 | + "priceEur": 14, | |
| 220 | + "url": "https://www.idealwine.com/en/wine-prices/13-2019-Bottle-Bordeaux-Haut-Medoc-Cru-bourgeois-Chateau-Arnauld-red", | |
| 221 | + "ref": "13-2019" | |
| 222 | + } | |
| 223 | + ] | |
| 224 | + }, | |
| 225 | + { | |
| 226 | + "wineId": "162629", | |
| 227 | + "name": "Arômes de Pavie", | |
| 228 | + "color": "Red", | |
| 229 | + "region": "Bordeaux", | |
| 230 | + "appellation": "Saint-Émilion Grand Cru", | |
| 231 | + "producerSlug": "Bordeaux-Saint-Emilion-Grand-Cru-Chateau-Pavie-red", | |
| 232 | + "image": null, | |
| 233 | + "vintages": [ | |
| 234 | + { | |
| 235 | + "vintage": 2021, | |
| 236 | + "priceEur": 53, | |
| 237 | + "url": "https://www.idealwine.com/en/wine-prices/162629-2021-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Chateau-Pavie-red", | |
| 238 | + "ref": "162629-2021" | |
| 239 | + }, | |
| 240 | + { | |
| 241 | + "vintage": 2020, | |
| 242 | + "priceEur": 65, | |
| 243 | + "url": "https://www.idealwine.com/en/wine-prices/162629-2020-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Chateau-Pavie-red", | |
| 244 | + "ref": "162629-2020" | |
| 245 | + }, | |
| 246 | + { | |
| 247 | + "vintage": 2019, | |
| 248 | + "priceEur": 51, | |
| 249 | + "url": "https://www.idealwine.com/en/wine-prices/162629-2019-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Chateau-Pavie-red", | |
| 250 | + "ref": "162629-2019" | |
| 251 | + }, | |
| 252 | + { | |
| 253 | + "vintage": 2018, | |
| 254 | + "priceEur": 70, | |
| 255 | + "url": "https://www.idealwine.com/en/wine-prices/162629-2018-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Chateau-Pavie-red", | |
| 256 | + "ref": "162629-2018" | |
| 257 | + } | |
| 258 | + ] | |
| 259 | + }, | |
| 260 | + { | |
| 261 | + "wineId": "14", | |
| 262 | + "name": "Château l' Arrosée Grand Cru Classé", | |
| 263 | + "color": "Red", | |
| 264 | + "region": "Bordeaux", | |
| 265 | + "appellation": "Saint-Émilion Grand Cru", | |
| 266 | + "producerSlug": "Bordeaux-Saint-Emilion-Grand-Cru-Grand-Cru-Classe-Chateau-lArrosee-red", | |
| 267 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/14.jpg", | |
| 268 | + "vintages": [ | |
| 269 | + { | |
| 270 | + "vintage": 2012, | |
| 271 | + "priceEur": 29, | |
| 272 | + "url": "https://www.idealwine.com/en/wine-prices/14-2012-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Grand-Cru-Classe-Chateau-lArrosee-red", | |
| 273 | + "ref": "14-2012" | |
| 274 | + }, | |
| 275 | + { | |
| 276 | + "vintage": 2011, | |
| 277 | + "priceEur": 37, | |
| 278 | + "url": "https://www.idealwine.com/en/wine-prices/14-2011-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Grand-Cru-Classe-Chateau-lArrosee-red", | |
| 279 | + "ref": "14-2011" | |
| 280 | + }, | |
| 281 | + { | |
| 282 | + "vintage": 2010, | |
| 283 | + "priceEur": 44, | |
| 284 | + "url": "https://www.idealwine.com/en/wine-prices/14-2010-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Grand-Cru-Classe-Chateau-lArrosee-red", | |
| 285 | + "ref": "14-2010" | |
| 286 | + }, | |
| 287 | + { | |
| 288 | + "vintage": 2009, | |
| 289 | + "priceEur": 45, | |
| 290 | + "url": "https://www.idealwine.com/en/wine-prices/14-2009-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Grand-Cru-Classe-Chateau-lArrosee-red", | |
| 291 | + "ref": "14-2009" | |
| 292 | + } | |
| 293 | + ] | |
| 294 | + }, | |
| 295 | + { | |
| 296 | + "wineId": "15", | |
| 297 | + "name": "Château d' Arsac Cru Bourgeois", | |
| 298 | + "color": "Red", | |
| 299 | + "region": "Bordeaux", | |
| 300 | + "appellation": "Margaux", | |
| 301 | + "producerSlug": "Bordeaux-Margaux-Cru-bourgeois-Chateau-dArsac-red", | |
| 302 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/15.jpg", | |
| 303 | + "vintages": [ | |
| 304 | + { | |
| 305 | + "vintage": 2021, | |
| 306 | + "priceEur": 12, | |
| 307 | + "url": "https://www.idealwine.com/en/wine-prices/15-2021-Bottle-Bordeaux-Margaux-Cru-bourgeois-Chateau-dArsac-red", | |
| 308 | + "ref": "15-2021" | |
| 309 | + }, | |
| 310 | + { | |
| 311 | + "vintage": 2020, | |
| 312 | + "priceEur": 12, | |
| 313 | + "url": "https://www.idealwine.com/en/wine-prices/15-2020-Bottle-Bordeaux-Margaux-Cru-bourgeois-Chateau-dArsac-red", | |
| 314 | + "ref": "15-2020" | |
| 315 | + }, | |
| 316 | + { | |
| 317 | + "vintage": 2019, | |
| 318 | + "priceEur": 13, | |
| 319 | + "url": "https://www.idealwine.com/en/wine-prices/15-2019-Bottle-Bordeaux-Margaux-Cru-bourgeois-Chateau-dArsac-red", | |
| 320 | + "ref": "15-2019" | |
| 321 | + }, | |
| 322 | + { | |
| 323 | + "vintage": 2018, | |
| 324 | + "priceEur": 15, | |
| 325 | + "url": "https://www.idealwine.com/en/wine-prices/15-2018-Bottle-Bordeaux-Margaux-Cru-bourgeois-Chateau-dArsac-red", | |
| 326 | + "ref": "15-2018" | |
| 327 | + } | |
| 328 | + ] | |
| 329 | + }, | |
| 330 | + { | |
| 331 | + "wineId": "105001", | |
| 332 | + "name": "Arthémis", | |
| 333 | + "color": "Red", | |
| 334 | + "region": "Bordeaux", | |
| 335 | + "appellation": "Castillon Côtes de Bordeaux", | |
| 336 | + "producerSlug": "Bordeaux-Castillon-Cotes-de-Bordeaux-Arthemis-red", | |
| 337 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/105001.jpg", | |
| 338 | + "vintages": [ | |
| 339 | + { | |
| 340 | + "vintage": 2003, | |
| 341 | + "priceEur": 38, | |
| 342 | + "url": "https://www.idealwine.com/en/wine-prices/105001-2003-Bottle-Bordeaux-Castillon-Cotes-de-Bordeaux-Arthemis-red", | |
| 343 | + "ref": "105001-2003" | |
| 344 | + } | |
| 345 | + ] | |
| 346 | + }, | |
| 347 | + { | |
| 348 | + "wineId": "503420", | |
| 349 | + "name": "Assortiment Petrus + Saute Loup Réserve de la Famille", | |
| 350 | + "color": "Red", | |
| 351 | + "region": "Bordeaux", | |
| 352 | + "appellation": "Pomerol", | |
| 353 | + "producerSlug": "Bordeaux-Pomerol-Petrus-red", | |
| 354 | + "image": null, | |
| 355 | + "vintages": [ | |
| 356 | + { | |
| 357 | + "vintage": 2009, | |
| 358 | + "priceEur": 4.85, | |
| 359 | + "url": "https://www.idealwine.com/en/wine-prices/503420-2009-Bottle-Bordeaux-Pomerol-Petrus-red", | |
| 360 | + "ref": "503420-2009" | |
| 361 | + } | |
| 362 | + ] | |
| 363 | + }, | |
| 364 | + { | |
| 365 | + "wineId": "121599", | |
| 366 | + "name": "Château d' Aurilhac", | |
| 367 | + "color": "Red", | |
| 368 | + "region": "Bordeaux", | |
| 369 | + "appellation": "Haut Médoc", | |
| 370 | + "producerSlug": "Bordeaux-Haut-Medoc-Chateau-dAurilhac-red", | |
| 371 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/121599.jpg", | |
| 372 | + "vintages": [ | |
| 373 | + { | |
| 374 | + "vintage": 2019, | |
| 375 | + "priceEur": 7, | |
| 376 | + "url": "https://www.idealwine.com/en/wine-prices/121599-2019-Bottle-Bordeaux-Haut-Medoc-Chateau-dAurilhac-red", | |
| 377 | + "ref": "121599-2019" | |
| 378 | + }, | |
| 379 | + { | |
| 380 | + "vintage": 2018, | |
| 381 | + "priceEur": 7, | |
| 382 | + "url": "https://www.idealwine.com/en/wine-prices/121599-2018-Bottle-Bordeaux-Haut-Medoc-Chateau-dAurilhac-red", | |
| 383 | + "ref": "121599-2018" | |
| 384 | + }, | |
| 385 | + { | |
| 386 | + "vintage": 2017, | |
| 387 | + "priceEur": 10, | |
| 388 | + "url": "https://www.idealwine.com/en/wine-prices/121599-2017-Bottle-Bordeaux-Haut-Medoc-Chateau-dAurilhac-red", | |
| 389 | + "ref": "121599-2017" | |
| 390 | + }, | |
| 391 | + { | |
| 392 | + "vintage": 2016, | |
| 393 | + "priceEur": 14, | |
| 394 | + "url": "https://www.idealwine.com/en/wine-prices/121599-2016-Bottle-Bordeaux-Haut-Medoc-Chateau-dAurilhac-red", | |
| 395 | + "ref": "121599-2016" | |
| 396 | + } | |
| 397 | + ] | |
| 398 | + }, | |
| 399 | + { | |
| 400 | + "wineId": "133196", | |
| 401 | + "name": "Aurore de Dauzac", | |
| 402 | + "color": "Red", | |
| 403 | + "region": "Bordeaux", | |
| 404 | + "appellation": "Margaux", | |
| 405 | + "producerSlug": "Bordeaux-Margaux-Chateau-Dauzac-red", | |
| 406 | + "image": null, | |
| 407 | + "vintages": [ | |
| 408 | + { | |
| 409 | + "vintage": 2021, | |
| 410 | + "priceEur": 26, | |
| 411 | + "url": "https://www.idealwine.com/en/wine-prices/133196-2021-Bottle-Bordeaux-Margaux-Chateau-Dauzac-red", | |
| 412 | + "ref": "133196-2021" | |
| 413 | + }, | |
| 414 | + { | |
| 415 | + "vintage": 2020, | |
| 416 | + "priceEur": 15, | |
| 417 | + "url": "https://www.idealwine.com/en/wine-prices/133196-2020-Bottle-Bordeaux-Margaux-Chateau-Dauzac-red", | |
| 418 | + "ref": "133196-2020" | |
| 419 | + }, | |
| 420 | + { | |
| 421 | + "vintage": 2019, | |
| 422 | + "priceEur": 13, | |
| 423 | + "url": "https://www.idealwine.com/en/wine-prices/133196-2019-Bottle-Bordeaux-Margaux-Chateau-Dauzac-red", | |
| 424 | + "ref": "133196-2019" | |
| 425 | + }, | |
| 426 | + { | |
| 427 | + "vintage": 2018, | |
| 428 | + "priceEur": 18, | |
| 429 | + "url": "https://www.idealwine.com/en/wine-prices/133196-2018-Bottle-Bordeaux-Margaux-Chateau-Dauzac-red", | |
| 430 | + "ref": "133196-2018" | |
| 431 | + } | |
| 432 | + ] | |
| 433 | + }, | |
| 434 | + { | |
| 435 | + "wineId": "16", | |
| 436 | + "name": "Château Ausone 1er Grand Cru Classé A", | |
| 437 | + "color": "Red", | |
| 438 | + "region": "Bordeaux", | |
| 439 | + "appellation": "Saint-Émilion Grand Cru", | |
| 440 | + "producerSlug": "Bordeaux-Saint-Emilion-Grand-Cru-Premier-Grand-Cru-Classe-A-Chateau-Ausone-red", | |
| 441 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/16.jpg", | |
| 442 | + "vintages": [ | |
| 443 | + { | |
| 444 | + "vintage": 2022, | |
| 445 | + "priceEur": 601, | |
| 446 | + "url": "https://www.idealwine.com/en/wine-prices/16-2022-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Premier-Grand-Cru-Classe-A-Chateau-Ausone-red", | |
| 447 | + "ref": "16-2022" | |
| 448 | + }, | |
| 449 | + { | |
| 450 | + "vintage": 2021, | |
| 451 | + "priceEur": 401, | |
| 452 | + "url": "https://www.idealwine.com/en/wine-prices/16-2021-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Premier-Grand-Cru-Classe-A-Chateau-Ausone-red", | |
| 453 | + "ref": "16-2021" | |
| 454 | + }, | |
| 455 | + { | |
| 456 | + "vintage": 2020, | |
| 457 | + "priceEur": 476, | |
| 458 | + "url": "https://www.idealwine.com/en/wine-prices/16-2020-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Premier-Grand-Cru-Classe-A-Chateau-Ausone-red", | |
| 459 | + "ref": "16-2020" | |
| 460 | + }, | |
| 461 | + { | |
| 462 | + "vintage": 2019, | |
| 463 | + "priceEur": 491, | |
| 464 | + "url": "https://www.idealwine.com/en/wine-prices/16-2019-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Premier-Grand-Cru-Classe-A-Chateau-Ausone-red", | |
| 465 | + "ref": "16-2019" | |
| 466 | + } | |
| 467 | + ] | |
| 468 | + }, | |
| 469 | + { | |
| 470 | + "wineId": "103721", | |
| 471 | + "name": "Axelle de Valandraud", | |
| 472 | + "color": "Red", | |
| 473 | + "region": "Bordeaux", | |
| 474 | + "appellation": "Saint-Émilion", | |
| 475 | + "producerSlug": "Bordeaux-Saint-Emilion-Chateau-de-Valandraud-red", | |
| 476 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/103721.jpg", | |
| 477 | + "vintages": [ | |
| 478 | + { | |
| 479 | + "vintage": 2021, | |
| 480 | + "priceEur": 13, | |
| 481 | + "url": "https://www.idealwine.com/en/wine-prices/103721-2021-Bottle-Bordeaux-Saint-Emilion-Chateau-de-Valandraud-red", | |
| 482 | + "ref": "103721-2021" | |
| 483 | + }, | |
| 484 | + { | |
| 485 | + "vintage": 2015, | |
| 486 | + "priceEur": 22, | |
| 487 | + "url": "https://www.idealwine.com/en/wine-prices/103721-2015-Bottle-Bordeaux-Saint-Emilion-Chateau-de-Valandraud-red", | |
| 488 | + "ref": "103721-2015" | |
| 489 | + }, | |
| 490 | + { | |
| 491 | + "vintage": 2008, | |
| 492 | + "priceEur": 11, | |
| 493 | + "url": "https://www.idealwine.com/en/wine-prices/103721-2008-Bottle-Bordeaux-Saint-Emilion-Chateau-de-Valandraud-red", | |
| 494 | + "ref": "103721-2008" | |
| 495 | + }, | |
| 496 | + { | |
| 497 | + "vintage": 2005, | |
| 498 | + "priceEur": 13, | |
| 499 | + "url": "https://www.idealwine.com/en/wine-prices/103721-2005-Bottle-Bordeaux-Saint-Emilion-Chateau-de-Valandraud-red", | |
| 500 | + "ref": "103721-2005" | |
| 501 | + } | |
| 502 | + ] | |
| 503 | + }, | |
| 504 | + { | |
| 505 | + "wineId": "18", | |
| 506 | + "name": "Château Balac Cru Bourgeois", | |
| 507 | + "color": "Red", | |
| 508 | + "region": "Bordeaux", | |
| 509 | + "appellation": "Haut Médoc", | |
| 510 | + "producerSlug": "Bordeaux-Haut-Medoc-Cru-bourgeois-Chateau-Balac-red", | |
| 511 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/18.jpg", | |
| 512 | + "vintages": [ | |
| 513 | + { | |
| 514 | + "vintage": 2019, | |
| 515 | + "priceEur": 7, | |
| 516 | + "url": "https://www.idealwine.com/en/wine-prices/18-2019-Bottle-Bordeaux-Haut-Medoc-Cru-bourgeois-Chateau-Balac-red", | |
| 517 | + "ref": "18-2019" | |
| 518 | + }, | |
| 519 | + { | |
| 520 | + "vintage": 2018, | |
| 521 | + "priceEur": 9, | |
| 522 | + "url": "https://www.idealwine.com/en/wine-prices/18-2018-Bottle-Bordeaux-Haut-Medoc-Cru-bourgeois-Chateau-Balac-red", | |
| 523 | + "ref": "18-2018" | |
| 524 | + }, | |
| 525 | + { | |
| 526 | + "vintage": 2016, | |
| 527 | + "priceEur": 8, | |
| 528 | + "url": "https://www.idealwine.com/en/wine-prices/18-2016-Bottle-Bordeaux-Haut-Medoc-Cru-bourgeois-Chateau-Balac-red", | |
| 529 | + "ref": "18-2016" | |
| 530 | + }, | |
| 531 | + { | |
| 532 | + "vintage": 2015, | |
| 533 | + "priceEur": 8, | |
| 534 | + "url": "https://www.idealwine.com/en/wine-prices/18-2015-Bottle-Bordeaux-Haut-Medoc-Cru-bourgeois-Chateau-Balac-red", | |
| 535 | + "ref": "18-2015" | |
| 536 | + } | |
| 537 | + ] | |
| 538 | + }, | |
| 539 | + { | |
| 540 | + "wineId": "102861", | |
| 541 | + "name": "Château Balestard", | |
| 542 | + "color": "Red", | |
| 543 | + "region": "Bordeaux", | |
| 544 | + "appellation": "Bordeaux", | |
| 545 | + "producerSlug": "Bordeaux-Bordeaux-Balestard-red", | |
| 546 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/102861.jpg", | |
| 547 | + "vintages": [ | |
| 548 | + { | |
| 549 | + "vintage": 2017, | |
| 550 | + "priceEur": 14, | |
| 551 | + "url": "https://www.idealwine.com/en/wine-prices/102861-2017-Bottle-Bordeaux-Bordeaux-Balestard-red", | |
| 552 | + "ref": "102861-2017" | |
| 553 | + }, | |
| 554 | + { | |
| 555 | + "vintage": 2016, | |
| 556 | + "priceEur": 19, | |
| 557 | + "url": "https://www.idealwine.com/en/wine-prices/102861-2016-Bottle-Bordeaux-Bordeaux-Balestard-red", | |
| 558 | + "ref": "102861-2016" | |
| 559 | + }, | |
| 560 | + { | |
| 561 | + "vintage": 2015, | |
| 562 | + "priceEur": 18, | |
| 563 | + "url": "https://www.idealwine.com/en/wine-prices/102861-2015-Bottle-Bordeaux-Bordeaux-Balestard-red", | |
| 564 | + "ref": "102861-2015" | |
| 565 | + }, | |
| 566 | + { | |
| 567 | + "vintage": 2010, | |
| 568 | + "priceEur": 18, | |
| 569 | + "url": "https://www.idealwine.com/en/wine-prices/102861-2010-Bottle-Bordeaux-Bordeaux-Balestard-red", | |
| 570 | + "ref": "102861-2010" | |
| 571 | + } | |
| 572 | + ] | |
| 573 | + }, | |
| 574 | + { | |
| 575 | + "wineId": "19", | |
| 576 | + "name": "Château Balestard la Tonnelle Grand Cru Classé", | |
| 577 | + "color": "Red", | |
| 578 | + "region": "Bordeaux", | |
| 579 | + "appellation": "Saint-Émilion Grand Cru", | |
| 580 | + "producerSlug": "Bordeaux-Saint-Emilion-Grand-Cru-Grand-Cru-Classe-Chateau-Balestard-la-Tonnelle-red", | |
| 581 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/19.jpg", | |
| 582 | + "vintages": [ | |
| 583 | + { | |
| 584 | + "vintage": 2021, | |
| 585 | + "priceEur": 23, | |
| 586 | + "url": "https://www.idealwine.com/en/wine-prices/19-2021-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Grand-Cru-Classe-Chateau-Balestard-la-Tonnelle-red", | |
| 587 | + "ref": "19-2021" | |
| 588 | + }, | |
| 589 | + { | |
| 590 | + "vintage": 2020, | |
| 591 | + "priceEur": 24, | |
| 592 | + "url": "https://www.idealwine.com/en/wine-prices/19-2020-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Grand-Cru-Classe-Chateau-Balestard-la-Tonnelle-red", | |
| 593 | + "ref": "19-2020" | |
| 594 | + }, | |
| 595 | + { | |
| 596 | + "vintage": 2019, | |
| 597 | + "priceEur": 30, | |
| 598 | + "url": "https://www.idealwine.com/en/wine-prices/19-2019-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Grand-Cru-Classe-Chateau-Balestard-la-Tonnelle-red", | |
| 599 | + "ref": "19-2019" | |
| 600 | + }, | |
| 601 | + { | |
| 602 | + "vintage": 2018, | |
| 603 | + "priceEur": 29, | |
| 604 | + "url": "https://www.idealwine.com/en/wine-prices/19-2018-Bottle-Bordeaux-Saint-Emilion-Grand-Cru-Grand-Cru-Classe-Chateau-Balestard-la-Tonnelle-red", | |
| 605 | + "ref": "19-2018" | |
| 606 | + } | |
| 607 | + ] | |
| 608 | + }, | |
| 609 | + { | |
| 610 | + "wineId": "137232", | |
| 611 | + "name": "Château la Ballade de la Pointe", | |
| 612 | + "color": "Red", | |
| 613 | + "region": "Bordeaux", | |
| 614 | + "appellation": "Pomerol", | |
| 615 | + "producerSlug": "Bordeaux-Pomerol-Chateau-la-Pointe-red", | |
| 616 | + "image": null, | |
| 617 | + "vintages": [ | |
| 618 | + { | |
| 619 | + "vintage": 2021, | |
| 620 | + "priceEur": 13, | |
| 621 | + "url": "https://www.idealwine.com/en/wine-prices/137232-2021-Bottle-Bordeaux-Pomerol-Chateau-la-Pointe-red", | |
| 622 | + "ref": "137232-2021" | |
| 623 | + }, | |
| 624 | + { | |
| 625 | + "vintage": 2020, | |
| 626 | + "priceEur": 12, | |
| 627 | + "url": "https://www.idealwine.com/en/wine-prices/137232-2020-Bottle-Bordeaux-Pomerol-Chateau-la-Pointe-red", | |
| 628 | + "ref": "137232-2020" | |
| 629 | + }, | |
| 630 | + { | |
| 631 | + "vintage": 2019, | |
| 632 | + "priceEur": 15, | |
| 633 | + "url": "https://www.idealwine.com/en/wine-prices/137232-2019-Bottle-Bordeaux-Pomerol-Chateau-la-Pointe-red", | |
| 634 | + "ref": "137232-2019" | |
| 635 | + }, | |
| 636 | + { | |
| 637 | + "vintage": 2018, | |
| 638 | + "priceEur": 13, | |
| 639 | + "url": "https://www.idealwine.com/en/wine-prices/137232-2018-Bottle-Bordeaux-Pomerol-Chateau-la-Pointe-red", | |
| 640 | + "ref": "137232-2018" | |
| 641 | + } | |
| 642 | + ] | |
| 643 | + }, | |
| 644 | + { | |
| 645 | + "wineId": "20", | |
| 646 | + "name": "Château de Barbe", | |
| 647 | + "color": "Red", | |
| 648 | + "region": "Bordeaux", | |
| 649 | + "appellation": "Côtes de Bourg", | |
| 650 | + "producerSlug": "Bordeaux-Cotes-de-Bourg-Chateau-de-Barbe-red", | |
| 651 | + "image": "https://www.idealwine.com/media/cache/product_current_rating/00-images-etiq/20.jpg", | |
| 652 | + "vintages": [ | |
| 653 | + { | |
| 654 | + "vintage": 1997, | |
| 655 | + "priceEur": 11, | |
| 656 | + "url": "https://www.idealwine.com/en/wine-prices/20-1997-Bottle-Bordeaux-Cotes-de-Bourg-Chateau-de-Barbe-red", | |
| 657 | + "ref": "20-1997" | |
| 658 | + }, | |
| 659 | + { | |
| 660 | + "vintage": 1996, | |
| 661 | + "priceEur": 14, | |
| 662 | + "url": "https://www.idealwine.com/en/wine-prices/20-1996-Bottle-Bordeaux-Cotes-de-Bourg-Chateau-de-Barbe-red", | |
| 663 | + "ref": "20-1996" | |
| 664 | + }, | |
| 665 | + { | |
| 666 | + "vintage": 1995, | |
| 667 | + "priceEur": 15, | |
| 668 | + "url": "https://www.idealwine.com/en/wine-prices/20-1995-Bottle-Bordeaux-Cotes-de-Bourg-Chateau-de-Barbe-red", | |
| 669 | + "ref": "20-1995" | |
| 670 | + }, | |
| 671 | + { | |
| 672 | + "vintage": 1994, | |
| 673 | + "priceEur": 12, | |
| 674 | + "url": "https://www.idealwine.com/en/wine-prices/20-1994-Bottle-Bordeaux-Cotes-de-Bourg-Chateau-de-Barbe-red", | |
| 675 | + "ref": "20-1994" | |
| 676 | + } | |
| 677 | + ] | |
| 678 | + } | |
| 679 | + ] | |
| 680 | + } | |
| 681 | + }, | |
| 682 | + "expect": { | |
| 683 | + "minCount": 40, | |
| 684 | + "kinds": [ | |
| 685 | + "catalog_item", | |
| 686 | + "price_observation" | |
| 687 | + ], | |
| 688 | + "requiredFields": [ | |
| 689 | + "attributes.name" | |
| 690 | + ] | |
| 691 | + }, | |
| 692 | + "note": "Captured live from idealwine.com /en/cote/bordeaux (plain HTTPS)", | |
| 693 | + "capturedAt": "2026-09-07T06:24:04.875Z" | |
| 694 | +} | |
| \ No newline at end of file | ||
added
data/fixtures/lyon-turnbull/auction-907.json
+772 −0
@@ -0,0 +1,772 @@ | ||
| 1 | +{ | |
| 2 | + "raw": { | |
| 3 | + "url": "https://www.lyonandturnbull.com/auctions/form-through-time-907", | |
| 4 | + "externalId": "907", | |
| 5 | + "kind": "sale", | |
| 6 | + "engine": "api", | |
| 7 | + "fetchedAt": "2026-09-07T06:34:02.302Z", | |
| 8 | + "payload": { | |
| 9 | + "kind": "auction_results", | |
| 10 | + "url": "https://www.lyonandturnbull.com/auctions/form-through-time-907", | |
| 11 | + "auction": { | |
| 12 | + "saleNumber": "907", | |
| 13 | + "title": "Ancient, African & Oceanic Art and Natural History", | |
| 14 | + "subtitle": null, | |
| 15 | + "date": "08 July 2026 at 14:00 BST", | |
| 16 | + "amsDate": "2026-07-08T13:00:00.000Z", | |
| 17 | + "link": "/auctions/form-through-time-907" | |
| 18 | + }, | |
| 19 | + "currency": "GBP", | |
| 20 | + "status": "completed", | |
| 21 | + "premiumTiers": [ | |
| 22 | + { | |
| 23 | + "percent": 27, | |
| 24 | + "amount_over": 0 | |
| 25 | + }, | |
| 26 | + { | |
| 27 | + "percent": 26, | |
| 28 | + "amount_over": 20000 | |
| 29 | + }, | |
| 30 | + { | |
| 31 | + "percent": 20, | |
| 32 | + "amount_over": 800000 | |
| 33 | + } | |
| 34 | + ], | |
| 35 | + "lots": [ | |
| 36 | + { | |
| 37 | + "uuid": "c4f7bae5-db32-4f21-b0c5-e8e1527c1371", | |
| 38 | + "lotNo": "1", | |
| 39 | + "title": "A VERY LARGE FRAGMENT OF THE CANYON DIABLO METEORITE", | |
| 40 | + "subTitle": "DISCOVERED IN COCONINO COUNTY, ARIZONA, 1891", | |
| 41 | + "low": 2000, | |
| 42 | + "high": 3000, | |
| 43 | + "hammer": 1500, | |
| 44 | + "status": "sold", | |
| 45 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 46 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/c8bebcc1-f273-48c9-94d9-3526124351a5/a31f586d-780c-4455-8108-9c274b8cf4e4/0001_KMLbHI_original.jpeg" | |
| 47 | + }, | |
| 48 | + { | |
| 49 | + "uuid": "84a61811-0bb2-4da4-a16e-977e19a6e050", | |
| 50 | + "lotNo": "2", | |
| 51 | + "title": "GAO-GUENIE", | |
| 52 | + "subTitle": "FELL GAO, BURKINA FASO, 5TH MARCH 1960", | |
| 53 | + "low": 1000, | |
| 54 | + "high": 1500, | |
| 55 | + "hammer": null, | |
| 56 | + "status": "unsold", | |
| 57 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 58 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/3fa5e912-9b45-4efa-b652-e9c7ea20fc97/8416f64f-20a1-4ec2-a518-061385f5d65c/0001_pgOMcZ_original.jpeg" | |
| 59 | + }, | |
| 60 | + { | |
| 61 | + "uuid": "0e14e92a-e01d-4b2b-a0af-173ab517c9ce", | |
| 62 | + "lotNo": "3", | |
| 63 | + "title": "NWA UNCLASSIFIED", | |
| 64 | + "subTitle": "ERFOUD, MOROCCO, 2001", | |
| 65 | + "low": 800, | |
| 66 | + "high": 1200, | |
| 67 | + "hammer": null, | |
| 68 | + "status": "unsold", | |
| 69 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 70 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/12a99cb2-8325-444f-bf5e-f7cbd97297aa/2256b6eb-e06e-41c9-acf1-04aa3e908a00/0001_hWlILf_original.jpeg" | |
| 71 | + }, | |
| 72 | + { | |
| 73 | + "uuid": "a0c9c7be-008a-4c98-8674-a2f6757f314a", | |
| 74 | + "lotNo": "4", | |
| 75 | + "title": "CAMPOS SALES METEORITE", | |
| 76 | + "subTitle": "FELL 31ST JANUARY 1991, CEARÁ STATE, BRZIL", | |
| 77 | + "low": 1500, | |
| 78 | + "high": 2500, | |
| 79 | + "hammer": 1600, | |
| 80 | + "status": "sold", | |
| 81 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 82 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/5d9c71f1-b39f-427e-8b57-5421358de6c1/5bd425ca-7945-4779-9ae6-d7476f821cfb/0001_SSljsC_original.jpg" | |
| 83 | + }, | |
| 84 | + { | |
| 85 | + "uuid": "cd8bcb30-da52-4f23-95a8-84aa0470f2f3", | |
| 86 | + "lotNo": "5", | |
| 87 | + "title": "A LARGE SLICE OF A PRIMITIVE METEORITE", | |
| 88 | + "subTitle": "FOUND NORTH WEST AFRICA, 2000s,", | |
| 89 | + "low": 1500, | |
| 90 | + "high": 2500, | |
| 91 | + "hammer": 900, | |
| 92 | + "status": "sold", | |
| 93 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 94 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/426d245a-3c4b-4576-a0b1-b6e1b41e49e3/e28aad11-7f79-4a89-8d36-7fe1cad24bee/0001_tjSsRV_original.jpg" | |
| 95 | + }, | |
| 96 | + { | |
| 97 | + "uuid": "6672c1c0-d037-4ec4-900d-304e4d064350", | |
| 98 | + "lotNo": "6", | |
| 99 | + "title": "EXCEPTIONALLY LARGE PIECE OF THE HOLBROOK METEORITE", | |
| 100 | + "subTitle": "FELL 19TH JULY, NAVAJO COUNTY, ARIZONA, USA", | |
| 101 | + "low": 7000, | |
| 102 | + "high": 9000, | |
| 103 | + "hammer": 5000, | |
| 104 | + "status": "sold", | |
| 105 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 106 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/36159785-165e-4ee5-af9c-f6175b47561d/69a37b73-98ee-4be8-9692-e19ee7b5cbba/0001_BEmpID_original.jpeg" | |
| 107 | + }, | |
| 108 | + { | |
| 109 | + "uuid": "481a4aa1-dd2f-41cc-85b4-21683f677460", | |
| 110 | + "lotNo": "7", | |
| 111 | + "title": "EL MILHAS 002, LUNAR METEORITE CROSS SECTION", | |
| 112 | + "subTitle": "FELL TIRIS ZEMMOUR, MAURITANIA, 26°20’37.05’’ N, 07°10’04.55’’ W", | |
| 113 | + "low": 250, | |
| 114 | + "high": 350, | |
| 115 | + "hammer": 200, | |
| 116 | + "status": "sold", | |
| 117 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 118 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/708909b8-dd3b-4f2a-b544-5f31c17fba98/9a84e0e2-1755-4f7a-89e4-e47d7e7738af/0001_KsnAhJ_original.jpg" | |
| 119 | + }, | |
| 120 | + { | |
| 121 | + "uuid": "286a7500-e72f-4239-bba0-a9c809de4279", | |
| 122 | + "lotNo": "8", | |
| 123 | + "title": "OVIRAPTOR DINOSAUR EGG NEST", | |
| 124 | + "subTitle": "EASTERN EURASIA, CRETACEOUS PERIOD, C. 80 - 90 MILLION YEARS B.P.", | |
| 125 | + "low": 1500, | |
| 126 | + "high": 2500, | |
| 127 | + "hammer": null, | |
| 128 | + "status": "unsold", | |
| 129 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 130 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/2faf2c9b-1c2e-4419-aea4-bfabb9159374/15a2d22f-a569-4d1f-bdbe-faacec11a97d/0001_FWMQlA_original.jpg" | |
| 131 | + }, | |
| 132 | + { | |
| 133 | + "uuid": "bf6669e9-2f1a-48cd-a2aa-f5f02fe74a31", | |
| 134 | + "lotNo": "9", | |
| 135 | + "title": "GOGOTTE FORMATION", | |
| 136 | + "subTitle": "FONTAINEBLEAU, NORTHERN FRANCE, OLIGOCEN PERIOD, CIRCA 30 MILLION YEARS B. P.", | |
| 137 | + "low": 500, | |
| 138 | + "high": 800, | |
| 139 | + "hammer": 1100, | |
| 140 | + "status": "sold", | |
| 141 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 142 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/dc16ce64-7647-4fd4-aecb-9b2489f7254b/714d9028-2042-4eba-9b63-3db091475dd3/0001_SmFRSq_original.jpg" | |
| 143 | + }, | |
| 144 | + { | |
| 145 | + "uuid": "88334a51-62f4-4b1b-84e1-aadcf6b1ad89", | |
| 146 | + "lotNo": "10", | |
| 147 | + "title": "SMOKY QUARTZ SPHERE", | |
| 148 | + "subTitle": "ZAMBIA", | |
| 149 | + "low": 2000, | |
| 150 | + "high": 3000, | |
| 151 | + "hammer": null, | |
| 152 | + "status": "unsold", | |
| 153 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 154 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/8ca045dc-7a67-4fa7-9aae-0b167b65904b/b4686ae4-def8-426f-9bc0-32d133bfc316/0001_NhFuTe_original.jpg" | |
| 155 | + }, | |
| 156 | + { | |
| 157 | + "uuid": "0e1f7546-ae04-492e-bdbd-4ea2126176aa", | |
| 158 | + "lotNo": "11", | |
| 159 | + "title": "LAPIS LAZULI SPHERE", | |
| 160 | + "subTitle": "SAR-I-SANG, AFGHANISTAN", | |
| 161 | + "low": 500, | |
| 162 | + "high": 800, | |
| 163 | + "hammer": null, | |
| 164 | + "status": "unsold", | |
| 165 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 166 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/5c1e9e27-a6e6-449c-a41a-679810c37a70/b6ccd27a-1c95-461a-9ef6-3c5d01edef29/0001_nUTDNA_original.jpg" | |
| 167 | + }, | |
| 168 | + { | |
| 169 | + "uuid": "4b200b45-47bd-4c4f-8ee9-103176d5e50d", | |
| 170 | + "lotNo": "12", | |
| 171 | + "title": "AMAZONITE AND SMOKY QUARTZ CRYSTAL CLUSTER", | |
| 172 | + "subTitle": "COLORADO, USA", | |
| 173 | + "low": 1500, | |
| 174 | + "high": 2500, | |
| 175 | + "hammer": null, | |
| 176 | + "status": "unsold", | |
| 177 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 178 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/73bd35ce-f658-4679-8d8a-5bee41f77faa/421542b8-c611-4554-83a7-83f46b02caf9/0001_xSqiGv_original.jpg" | |
| 179 | + }, | |
| 180 | + { | |
| 181 | + "uuid": "a05819df-5be0-4355-9335-36bb32ca0d01", | |
| 182 | + "lotNo": "13", | |
| 183 | + "title": "LARGE AQUAMARINE CRYSTAL", | |
| 184 | + "subTitle": "SKARDU, PAKISTAN", | |
| 185 | + "low": 2500, | |
| 186 | + "high": 3500, | |
| 187 | + "hammer": null, | |
| 188 | + "status": "unsold", | |
| 189 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 190 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/a8b2a743-4723-469c-9e66-3769a6f504be/a9671d4b-3074-4b6a-8236-0dc855a7f3d4/0001_vPslPN_original.jpg" | |
| 191 | + }, | |
| 192 | + { | |
| 193 | + "uuid": "5b706c44-4bdc-41cc-ab62-4c10cef1d5c6", | |
| 194 | + "lotNo": "14", | |
| 195 | + "title": "PYRITE CRYSTAL CLUSTER", | |
| 196 | + "subTitle": "NAVAJUN, SPAIN", | |
| 197 | + "low": 2000, | |
| 198 | + "high": 2500, | |
| 199 | + "hammer": null, | |
| 200 | + "status": "unsold", | |
| 201 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 202 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/58d19951-9a58-4b2c-ac02-cff7522effe7/966c6644-1a02-47af-9b17-3aa7d16d4102/0001_WflWnR_original.jpg" | |
| 203 | + }, | |
| 204 | + { | |
| 205 | + "uuid": "76ad91e9-3ff4-4af8-a71b-2568dc3ce8d8", | |
| 206 | + "lotNo": "15", | |
| 207 | + "title": "FOSSILIZED WOOD SLICE", | |
| 208 | + "subTitle": "MORONDAVA, MADAGASCAR, LATE TRIASSIC, C. 225 MILLION YEARS B.P.", | |
| 209 | + "low": 1000, | |
| 210 | + "high": 1500, | |
| 211 | + "hammer": null, | |
| 212 | + "status": "unsold", | |
| 213 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 214 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/30c9c361-1c44-4cf3-95d3-0fb08804658a/1219b497-6d66-4445-a6db-41fe79d314ff/0001_OmCZSS_original.jpg" | |
| 215 | + }, | |
| 216 | + { | |
| 217 | + "uuid": "1788e6c7-c99e-4fba-980b-a965e0ae3737", | |
| 218 | + "lotNo": "16", | |
| 219 | + "title": "LARGE FRAGMENT OF ROMAN IMPERIAL PORPHYRY", | |
| 220 | + "subTitle": "GEBEL DOKHAN, EGYPT, C. 1ST – 5TH CENTURY A.D.", | |
| 221 | + "low": 2000, | |
| 222 | + "high": 4000, | |
| 223 | + "hammer": 2000, | |
| 224 | + "status": "sold", | |
| 225 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 226 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/eb4fbbfc-0070-4bfd-86fd-edafcc6b7b3a/267dc9de-e5a1-4b80-9e56-7c10f8cc546d/00001_WmZalC_original.jpeg" | |
| 227 | + }, | |
| 228 | + { | |
| 229 | + "uuid": "a2ce6f62-7c68-4a55-a9fb-275a115d7268", | |
| 230 | + "lotNo": "17", | |
| 231 | + "title": "DINOSAUR TOOTH, AFRICAN \"T-REX\", CARCHARODONTOSAURUS SAHARICUS", | |
| 232 | + "subTitle": "NORTHWESTERN AFRICA, CRETAEOUS PERIOD, 96 MYA", | |
| 233 | + "low": 400, | |
| 234 | + "high": 600, | |
| 235 | + "hammer": 400, | |
| 236 | + "status": "sold", | |
| 237 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 238 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/6eb9465d-7f06-440d-b9df-2d87deb7285e/6ae527e0-0f60-4993-91db-9fbadb0abf18/0001_XQxuZA_original.jpg" | |
| 239 | + }, | |
| 240 | + { | |
| 241 | + "uuid": "26379922-64d6-4f32-a54b-c52e2a30742a", | |
| 242 | + "lotNo": "18", | |
| 243 | + "title": "THE TOOTH OF A TYRANNOSAURUS-REX", | |
| 244 | + "subTitle": "HELL CREEK FORMATION, DAWSON COUNTY, MONTANA, LATE CRETACEOUS, C. 67–66 MILLION B.P.", | |
| 245 | + "low": 5000, | |
| 246 | + "high": 8000, | |
| 247 | + "hammer": 3500, | |
| 248 | + "status": "sold", | |
| 249 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 250 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/f10272a6-318b-4c35-9b98-1a57d5da4f9e/9bc97934-193a-4573-805f-7ff950a7711c/00001_bsrYZj_original.jpeg" | |
| 251 | + }, | |
| 252 | + { | |
| 253 | + "uuid": "6a6c32b7-b03f-4f11-9600-165181ffef6b", | |
| 254 | + "lotNo": "19", | |
| 255 | + "title": "SABRE-TOOTH CAT CANINE", | |
| 256 | + "subTitle": "EASTERN EURASIA, LATE MIOCENE TO EARLY PLIOCENE, 12 - 5 MILLION YEARS B.P.", | |
| 257 | + "low": 1500, | |
| 258 | + "high": 2500, | |
| 259 | + "hammer": null, | |
| 260 | + "status": "unsold", | |
| 261 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 262 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/f889dd72-370a-4f80-8137-5e437566d357/d4f2e657-3e97-4685-9ade-6de0d3a56990/0001_CEtMWN_original.jpg" | |
| 263 | + }, | |
| 264 | + { | |
| 265 | + "uuid": "d0c706df-415c-4c51-b69c-84b012d6e94a", | |
| 266 | + "lotNo": "20", | |
| 267 | + "title": "STEGODON JAW", | |
| 268 | + "subTitle": "EARLY PLEISTOCENE, SOUTHEAST ASIA, C. 2 - 1 MILLION YEARS B.P.", | |
| 269 | + "low": 2000, | |
| 270 | + "high": 3000, | |
| 271 | + "hammer": null, | |
| 272 | + "status": "unsold", | |
| 273 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 274 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/ee97ec66-abad-47f8-a09b-da495056e028/6b34681d-16d2-4ad6-a182-ade44e40369a/0001_CcQzEK_original.jpg" | |
| 275 | + }, | |
| 276 | + { | |
| 277 | + "uuid": "1052d41f-a354-4e50-8c0d-7a21d99e4c44", | |
| 278 | + "lotNo": "21", | |
| 279 | + "title": "SPLIT AMMONITE PAIR", | |
| 280 | + "subTitle": "GOULMIMA, MOROCCO, UPPER CRETACEOUS, C. 94 - 90 MILLION YEARS B.P.", | |
| 281 | + "low": 200, | |
| 282 | + "high": 300, | |
| 283 | + "hammer": 460, | |
| 284 | + "status": "sold", | |
| 285 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 286 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/902066ff-5462-4480-9e61-1bf53842af2b/c4a76742-3a54-4437-8584-e5011278a13c/0001_qbaBbm_original.jpg" | |
| 287 | + }, | |
| 288 | + { | |
| 289 | + "uuid": "6a6cd128-58d7-4ba1-813e-518c9a86266f", | |
| 290 | + "lotNo": "22", | |
| 291 | + "title": "SPINY AMMONITE SPECIMEN", | |
| 292 | + "subTitle": "FRANCE, EARLY CRETACEOUS, C. 133-129 MILLION YEARS B.P.", | |
| 293 | + "low": 500, | |
| 294 | + "high": 800, | |
| 295 | + "hammer": 480, | |
| 296 | + "status": "sold", | |
| 297 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 298 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/3890a694-25bc-4311-b761-ba6bbd838beb/15d2daf7-97fb-4119-aa0a-68338a393d92/0002_KtcVNC_original.jpg" | |
| 299 | + }, | |
| 300 | + { | |
| 301 | + "uuid": "4accbba1-e275-4ca9-bacb-9b6a6f66f3cc", | |
| 302 | + "lotNo": "23", | |
| 303 | + "title": "SPINY TRILOBITE FOSSIL", | |
| 304 | + "subTitle": "MOROCCO, DJEBEL OUFATEN, PALAEOZOIC PERIOD, CIRCA 400 MILLION YEARS B. P.", | |
| 305 | + "low": 300, | |
| 306 | + "high": 600, | |
| 307 | + "hammer": 300, | |
| 308 | + "status": "sold", | |
| 309 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 310 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/f144cd7d-c188-4a98-b9c2-032b2ea63248/ae7f74c9-b97f-46d9-b89a-01d716a409ac/0001_XQLHcB_original.jpg" | |
| 311 | + }, | |
| 312 | + { | |
| 313 | + "uuid": "7e560c64-41ba-4bf8-8789-20bec4739c5e", | |
| 314 | + "lotNo": "24", | |
| 315 | + "title": "FOSSIL DRAGONFLY", | |
| 316 | + "subTitle": "SOLNHOFEN, GERMANY, JURASSIC PERIOD, 150 MILLION YEARS BP", | |
| 317 | + "low": 2000, | |
| 318 | + "high": 2500, | |
| 319 | + "hammer": 1283.99, | |
| 320 | + "status": "sold", | |
| 321 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 322 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/2a9a0ce2-a151-4be5-930f-3b9656e3d18e/7f56c8b9-82ae-4881-8096-23f753ad9433/0001_GXHjhH_original.jpg" | |
| 323 | + }, | |
| 324 | + { | |
| 325 | + "uuid": "ea1270b7-fed5-4b12-b5ec-b6bf76f1d3f6", | |
| 326 | + "lotNo": "25", | |
| 327 | + "title": "FOSSIL PALM FROND WITH FISH", | |
| 328 | + "subTitle": "GREEN RIVER FORMATION, WYOMING, EARLY EOCINE, 50 MILLION YEARS B.P.", | |
| 329 | + "low": 20000, | |
| 330 | + "high": 30000, | |
| 331 | + "hammer": 18000, | |
| 332 | + "status": "sold", | |
| 333 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 334 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/d38ba356-ead7-47ef-93e8-1ef056a14ccb/21d402a8-eb62-4298-ab04-66a9d0a63781/00001_SZDpLv_original.jpeg" | |
| 335 | + }, | |
| 336 | + { | |
| 337 | + "uuid": "bc5e2e3a-1967-4775-b4d0-453133d85eb2", | |
| 338 | + "lotNo": "26", | |
| 339 | + "title": "LARGE FOSSILISED FISH SPECIMEN, DIPLOMYSTUS DENTATUS", | |
| 340 | + "subTitle": "GREEN RIVER FORMATION, WYOMING, USA, LOWER EOCENE PERIOD, 50 MILLION YEARS B.P.", | |
| 341 | + "low": 2000, | |
| 342 | + "high": 3000, | |
| 343 | + "hammer": 1800, | |
| 344 | + "status": "sold", | |
| 345 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 346 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/2d37f890-4ac9-4aa6-8700-d01fb1250c1b/90ad37f2-632a-41b0-a1ce-803f184c6fc0/0001_VkEjiK_original.jpg" | |
| 347 | + }, | |
| 348 | + { | |
| 349 | + "uuid": "41bfa15d-4ef2-4887-9fea-b607120a6f23", | |
| 350 | + "lotNo": "27", | |
| 351 | + "title": "FRENCH MEDIEVAL CARVED OAK PANEL, BEARING THE ARMS OF CHARLOTTE OF SAVOY, QUEEN OF FRANCE", | |
| 352 | + "subTitle": "15TH CENTURY", | |
| 353 | + "low": 3000, | |
| 354 | + "high": 5000, | |
| 355 | + "hammer": 2600, | |
| 356 | + "status": "sold", | |
| 357 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 358 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/010b4f17-80af-4e52-b2b0-5e1548f20e0c/067b6d6c-2d45-4f24-b07e-dcaf5f2b625d/0001_enMDhG_original.jpg" | |
| 359 | + }, | |
| 360 | + { | |
| 361 | + "uuid": "007cc868-e895-490e-86bb-ad3399970b3b", | |
| 362 | + "lotNo": "28", | |
| 363 | + "title": "\"CELTIC\" STONE HEAD", | |
| 364 | + "subTitle": "UNITED KINGDOM, EARLY FIRST MILLENNIUM A.D. OR LATER", | |
| 365 | + "low": 300, | |
| 366 | + "high": 500, | |
| 367 | + "hammer": 950, | |
| 368 | + "status": "sold", | |
| 369 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 370 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/bb2e56dd-97d6-4976-9f41-d4638dc8c38a/ed6f2fa4-acc5-4257-822a-93b6f2f543f3/0001_excCkW_original.jpg" | |
| 371 | + }, | |
| 372 | + { | |
| 373 | + "uuid": "1bb78901-08dc-4ea1-9cc2-dde792e43021", | |
| 374 | + "lotNo": "29", | |
| 375 | + "title": "MINIATURE VOTIVE TERRACOTTA MASK", | |
| 376 | + "subTitle": "GREECE, C. 4TH CENTURY B.C.", | |
| 377 | + "low": 300, | |
| 378 | + "high": 500, | |
| 379 | + "hammer": 180, | |
| 380 | + "status": "sold", | |
| 381 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 382 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/ddb8731e-3888-43fd-b333-5813b4bcbdce/8a915455-066b-4f9e-99db-1febaf337fc1/0001_AEVsFG_original.jpg" | |
| 383 | + }, | |
| 384 | + { | |
| 385 | + "uuid": "c0d68d87-54c5-4aee-bf3d-59e535f7225e", | |
| 386 | + "lotNo": "30", | |
| 387 | + "title": "ANCIENT GREEK TERRACOTTA PROTOME OF A LADY", | |
| 388 | + "subTitle": "EASTERN MEDITERNENA, C. 5TH CENTURY B.C.", | |
| 389 | + "low": 1000, | |
| 390 | + "high": 1500, | |
| 391 | + "hammer": 1500, | |
| 392 | + "status": "sold", | |
| 393 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 394 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/2b012163-c952-4023-8203-c44a1a9141a3/23bbb17b-5bb3-43f0-9bd5-84fb5bf3a2a5/0001_JEZXHu_original.jpg" | |
| 395 | + }, | |
| 396 | + { | |
| 397 | + "uuid": "7c29cdcd-fd84-46ab-9e23-fce82066c01d", | |
| 398 | + "lotNo": "31", | |
| 399 | + "title": "CYPRIOT TERRACOTTA DOLPHIN EX CESNOLA COLLECTION", | |
| 400 | + "subTitle": "HELLENISTIC, 4TH CENTURY B. C.", | |
| 401 | + "low": 800, | |
| 402 | + "high": 1200, | |
| 403 | + "hammer": 900, | |
| 404 | + "status": "sold", | |
| 405 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 406 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/9fbd23bc-8a34-4643-8d3b-c8b49284ae33/fc5dcf9f-4d35-416b-a118-c6d9530ecec6/0001_wnzonO_original.jpeg" | |
| 407 | + }, | |
| 408 | + { | |
| 409 | + "uuid": "7f7300fc-6179-491b-8034-4e0efb7e9e3f", | |
| 410 | + "lotNo": "32", | |
| 411 | + "title": "APULIAN RED FIGURE LEKANIS", | |
| 412 | + "subTitle": "SOUTHERN ITALY, 4TH CENTURY B. C.", | |
| 413 | + "low": 400, | |
| 414 | + "high": 600, | |
| 415 | + "hammer": 420, | |
| 416 | + "status": "sold", | |
| 417 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 418 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/fe235664-7ca8-4190-a788-361dceaf3b44/c8c0b225-c444-436c-815f-2973a5c3493b/0001_gPIwxC_original.jpg" | |
| 419 | + }, | |
| 420 | + { | |
| 421 | + "uuid": "733af248-e2e6-4209-9181-130cdb9df1c1", | |
| 422 | + "lotNo": "33", | |
| 423 | + "title": "APULIAN RED-FIGURE OLPE", | |
| 424 | + "subTitle": "SOUTHERN ITALY, 4TH CENTURY B. C.", | |
| 425 | + "low": 300, | |
| 426 | + "high": 500, | |
| 427 | + "hammer": 320, | |
| 428 | + "status": "sold", | |
| 429 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 430 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/5faee6ce-4c19-4ca7-945b-0ec6094bdb6a/d6d285f3-d061-4ef7-adf3-39a206181f62/0001_qTNgbG_original.jpg" | |
| 431 | + }, | |
| 432 | + { | |
| 433 | + "uuid": "ee2dbf13-edbc-429b-b3f1-0bf4199d9806", | |
| 434 | + "lotNo": "34", | |
| 435 | + "title": "APULIAN RED-FIGURE PLATE", | |
| 436 | + "subTitle": "SOUTHERN ITALY, 4TH CENTURY B. C.", | |
| 437 | + "low": 1000, | |
| 438 | + "high": 1500, | |
| 439 | + "hammer": 800, | |
| 440 | + "status": "sold", | |
| 441 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 442 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/339ed100-e2ba-4431-ba6c-21d150adbfcd/69814526-df40-4bab-8bb4-7e506191c193/0001_QSLdcC_original.jpg" | |
| 443 | + }, | |
| 444 | + { | |
| 445 | + "uuid": "41e837ae-23ae-4fda-89bc-76c16529b368", | |
| 446 | + "lotNo": "35", | |
| 447 | + "title": "APULIAN RED FIGURE PYXIS", | |
| 448 | + "subTitle": "SOUTHERN ITALY, LATE 4TH CENTURY B. C.", | |
| 449 | + "low": 350, | |
| 450 | + "high": 550, | |
| 451 | + "hammer": 340, | |
| 452 | + "status": "sold", | |
| 453 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 454 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/a5dd1f10-4699-41da-972e-e14ba047a146/3af43d81-abcb-44b0-a014-c3b369eca01c/0001_tkNoRS_original.jpg" | |
| 455 | + }, | |
| 456 | + { | |
| 457 | + "uuid": "136f2e81-7c8e-4ad1-b375-e362cdcf5a7b", | |
| 458 | + "lotNo": "36", | |
| 459 | + "title": "ANCIENT GREEK STYLE OINOCHOE", | |
| 460 | + "subTitle": "19TH CENTURY", | |
| 461 | + "low": 300, | |
| 462 | + "high": 500, | |
| 463 | + "hammer": 320, | |
| 464 | + "status": "sold", | |
| 465 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 466 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/12270b64-5c19-4a6a-b7df-74530481cd91/2d74b100-3eb6-4a43-9d2a-f8df9b1a0526/00001_dYsfeX_original.jpeg" | |
| 467 | + }, | |
| 468 | + { | |
| 469 | + "uuid": "25a1c03f-b8d4-419c-b02e-1d9a7aaefe25", | |
| 470 | + "lotNo": "37", | |
| 471 | + "title": "LARGE ANCIENT GREEK BLACK-FIGURE LEKYTHOS", | |
| 472 | + "subTitle": "ATTICA, C. 5TH CENTURY B.C.", | |
| 473 | + "low": 1500, | |
| 474 | + "high": 2000, | |
| 475 | + "hammer": null, | |
| 476 | + "status": "unsold", | |
| 477 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 478 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/8cb62aeb-0309-4bb2-bc08-00609edb2ec7/f0688a8e-32cd-4520-8f0c-8eba06a5ca11/0001_bvsBsE_original.jpeg" | |
| 479 | + }, | |
| 480 | + { | |
| 481 | + "uuid": "680dce3b-5258-4f42-85e4-2050541a4081", | |
| 482 | + "lotNo": "38", | |
| 483 | + "title": "TRIO OF OIL LAMPS", | |
| 484 | + "subTitle": "ITALY, 4TH - 5TH CENTURY A. D.", | |
| 485 | + "low": 600, | |
| 486 | + "high": 900, | |
| 487 | + "hammer": 600, | |
| 488 | + "status": "sold", | |
| 489 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 490 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/7253dd68-fd62-4156-b9b4-57320c5c376a/da565e9a-cf5c-4b5c-816e-956314640a41/0001_bgAGmF_original.jpg" | |
| 491 | + }, | |
| 492 | + { | |
| 493 | + "uuid": "ea2d69b0-f488-4188-8797-00e89ce42752", | |
| 494 | + "lotNo": "39", | |
| 495 | + "title": "ROMAN OIL LAMP, ACQUIRED 1939", | |
| 496 | + "subTitle": "EASTERN MEDITERRANEAN, 1ST - 3RD CENTURY A.D.", | |
| 497 | + "low": 600, | |
| 498 | + "high": 800, | |
| 499 | + "hammer": null, | |
| 500 | + "status": "unsold", | |
| 501 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 502 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/497507a5-a67d-422f-a2f4-2423a1f4b593/4f32f1e3-58c2-4c7c-8fa1-27ec494876d1/0001_wHkCJh_original.jpg" | |
| 503 | + }, | |
| 504 | + { | |
| 505 | + "uuid": "b0eab8dd-44e9-41bd-b033-cf06caa8aef0", | |
| 506 | + "lotNo": "40", | |
| 507 | + "title": "COLLECTION OF ROMAN OIL LAMPS", | |
| 508 | + "subTitle": "ITALY, 1ST CENTURY A. D.", | |
| 509 | + "low": 300, | |
| 510 | + "high": 500, | |
| 511 | + "hammer": 300, | |
| 512 | + "status": "sold", | |
| 513 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 514 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/a7c91d50-a753-42e8-8c9c-2a69b4879a5e/5dd83e61-83bc-49d3-bd6d-cfd5af48b2b9/0001_HIhIUS_original.jpeg" | |
| 515 | + }, | |
| 516 | + { | |
| 517 | + "uuid": "f357d1b4-5bbe-4f19-ab7e-f27e34d1627e", | |
| 518 | + "lotNo": "41", | |
| 519 | + "title": "GROUP OF SEVEN ROMAN GLASS VESSELS", | |
| 520 | + "subTitle": "ITALY, 1ST - 3RD CENTURY A. D.", | |
| 521 | + "low": 400, | |
| 522 | + "high": 600, | |
| 523 | + "hammer": 650, | |
| 524 | + "status": "sold", | |
| 525 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 526 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/2034f733-2c2d-40f0-aa1e-74c244a93561/deefda5f-a0c2-4bed-aa2f-88e673fefac8/0001_zVYSWT_original.jpg" | |
| 527 | + }, | |
| 528 | + { | |
| 529 | + "uuid": "943686db-c8d0-469f-b061-e50ebaf6e400", | |
| 530 | + "lotNo": "42", | |
| 531 | + "title": "ANCIENT MARBLE TILE FRAGMENT INSCRIBED \"POMPEI\"", | |
| 532 | + "subTitle": "ITALY, C. 1ST CENTURY A. D. OR LATER", | |
| 533 | + "low": 200, | |
| 534 | + "high": 300, | |
| 535 | + "hammer": 380, | |
| 536 | + "status": "sold", | |
| 537 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 538 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/ddc407de-e641-4df5-aae4-ced482db894c/3937fd81-3281-4afc-a639-24a7bbec4865/0001_KMMOqm_original.jpg" | |
| 539 | + }, | |
| 540 | + { | |
| 541 | + "uuid": "edd1d89b-c11c-4d0f-a1f8-d8dc699bf4c6", | |
| 542 | + "lotNo": "43", | |
| 543 | + "title": "CHIMU MANTLE FRAGMENT", | |
| 544 | + "subTitle": "PERU, C. 1200 A.D.", | |
| 545 | + "low": 400, | |
| 546 | + "high": 600, | |
| 547 | + "hammer": null, | |
| 548 | + "status": "unsold", | |
| 549 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 550 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/5c936d6b-03c7-4317-84d6-7581e391d384/c7130685-48b0-41ef-b10c-2661cd7a7d73/0001_zdPYEJ_original.jpg" | |
| 551 | + }, | |
| 552 | + { | |
| 553 | + "uuid": "4df53200-b6ce-4b24-91dd-f56a19a5da33", | |
| 554 | + "lotNo": "44", | |
| 555 | + "title": "DIQUIS STANDING FIGURE", | |
| 556 | + "subTitle": "COSTA RICA, 600-900 A.D.", | |
| 557 | + "low": 2000, | |
| 558 | + "high": 3000, | |
| 559 | + "hammer": 6500, | |
| 560 | + "status": "sold", | |
| 561 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 562 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/87a54ff3-a570-4a99-a107-96fa6dfb0870/d4558d62-54a6-4c9d-909e-57b921a44f84/00001_pqlSQr_original.jpeg" | |
| 563 | + }, | |
| 564 | + { | |
| 565 | + "uuid": "6ecdc516-2fa4-4eb8-a902-78336cc65ac3", | |
| 566 | + "lotNo": "45", | |
| 567 | + "title": "A PAIR OF PRE-COLUMBIAN GOLD ORNAMENTS", | |
| 568 | + "subTitle": "SOUTH AMERICA, TAIRONA CULTURE, C. 10TH - 17TH CENTURY A. D.", | |
| 569 | + "low": 300, | |
| 570 | + "high": 500, | |
| 571 | + "hammer": 300, | |
| 572 | + "status": "sold", | |
| 573 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 574 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/7656c0a8-1c13-412e-b8c1-6f002581a7e5/f43748cb-cdf5-40b3-ad04-be36661f21d8/0001_YadwOc_original.jpg" | |
| 575 | + }, | |
| 576 | + { | |
| 577 | + "uuid": "1224658d-807b-4c0e-873e-ca9fa17e395b", | |
| 578 | + "lotNo": "46", | |
| 579 | + "title": "LARGE COLLECTION OF ANCIENT (AND LATER) INTAGLIOS & CAMEOS, FORMED EARLY 20TH CENTURY", | |
| 580 | + "subTitle": "NEAR EAST AND EUROPE, 5TH CENTURY B.C., AND LATER", | |
| 581 | + "low": 1000, | |
| 582 | + "high": 1500, | |
| 583 | + "hammer": 1600, | |
| 584 | + "status": "sold", | |
| 585 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 586 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/d3fe4f8b-a6ab-4582-8d1b-fc94eff31075/6e438210-1a24-4a53-a37e-aa55f873731e/0001_bJdtSU_original.jpg" | |
| 587 | + }, | |
| 588 | + { | |
| 589 | + "uuid": "a1e8d89c-6100-43dc-bd31-eb2717a53581", | |
| 590 | + "lotNo": "47", | |
| 591 | + "title": "OLD BABYLONIAN ROCK CRYSTAL CYLINDER SEAL, ACQUIRED EARLY 20TH CENTURY", | |
| 592 | + "subTitle": "NEAR EAST, C. EARLY 2ND MILLENNIUM B.C.", | |
| 593 | + "low": 300, | |
| 594 | + "high": 500, | |
| 595 | + "hammer": 200, | |
| 596 | + "status": "sold", | |
| 597 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 598 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/8019f252-2fb1-482c-aef6-f43f82b512f5/39a4b72b-750b-46a4-aa12-8e8b2f90c582/0002_hqntkg_original.jpg" | |
| 599 | + }, | |
| 600 | + { | |
| 601 | + "uuid": "4ecc0f4d-89fe-4f15-95a2-920d77b3b884", | |
| 602 | + "lotNo": "48", | |
| 603 | + "title": "BABYLONIAN HEMATITE CYLINDER SEAL, ACQUIRED EARLY 20TH CENTURY", | |
| 604 | + "subTitle": "NEAR EAST, C. 1900 - 1700 B.C.", | |
| 605 | + "low": 400, | |
| 606 | + "high": 600, | |
| 607 | + "hammer": 260, | |
| 608 | + "status": "sold", | |
| 609 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 610 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/f29d576a-c11f-4de2-ba7d-39c448c27315/f359bf53-eaaf-4563-a2b4-34ea95f41710/0002_iADizJ_original.jpg" | |
| 611 | + }, | |
| 612 | + { | |
| 613 | + "uuid": "8d5deae0-9b89-4520-bc27-4da8d9785e93", | |
| 614 | + "lotNo": "49", | |
| 615 | + "title": "SUMERIAN LIMESTONE CYLINDER SEAL, ACQUIRED EARLY 20TH CENTURY", | |
| 616 | + "subTitle": "NEAR EAST, C. 3RD MILLENNIUM B.C.", | |
| 617 | + "low": 300, | |
| 618 | + "high": 500, | |
| 619 | + "hammer": 150, | |
| 620 | + "status": "sold", | |
| 621 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 622 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/9c884fff-0e9c-40ea-9c9d-ebe5da9a5124/b8657040-26da-4685-9f51-40b776fb761d/00001_LMtXbE_original.jpeg" | |
| 623 | + }, | |
| 624 | + { | |
| 625 | + "uuid": "ed47ef99-f6b3-42f6-b8bd-9dfb06eb1e1c", | |
| 626 | + "lotNo": "50", | |
| 627 | + "title": "PAIR OF MESOPOTAMIAN CYLINDER SEALS, ACQUIRED EARLY 20TH CENTURY", | |
| 628 | + "subTitle": "NEAR EAST, 3RD - 2ND MILLENNIUM B.C.", | |
| 629 | + "low": 300, | |
| 630 | + "high": 500, | |
| 631 | + "hammer": 1300, | |
| 632 | + "status": "sold", | |
| 633 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 634 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/cfd7149b-8d07-4d79-a7d5-8167532e9ace/108f7318-e9df-475d-81df-ad3f46a49e67/00002_bjElJc_original.jpeg" | |
| 635 | + }, | |
| 636 | + { | |
| 637 | + "uuid": "ff835218-0552-48ac-a2d2-778f85f608b7", | |
| 638 | + "lotNo": "51", | |
| 639 | + "title": "AKKADIAN SERPENTINE CYLINDER SEAL, ACQUIRED EARLY 20TH CENTURY", | |
| 640 | + "subTitle": "NEAR EAST, C. 2350 - 2150 B.C.", | |
| 641 | + "low": 300, | |
| 642 | + "high": 500, | |
| 643 | + "hammer": 240, | |
| 644 | + "status": "sold", | |
| 645 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 646 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/23caa454-cd77-4c8a-ad33-90d526d11873/d2375d7d-de31-4515-837e-59a90c74f69f/0002_lATMjN_original.jpg" | |
| 647 | + }, | |
| 648 | + { | |
| 649 | + "uuid": "67f96140-bf8f-4c03-8cb0-59eebfbe77c4", | |
| 650 | + "lotNo": "52", | |
| 651 | + "title": "PAIR OF PERSIAN SASANIAN STAMP SEALS, ACQUIRED EARLY 20TH CENTURY", | |
| 652 | + "subTitle": "NEAR EAST, C. 3RD - 7TH CENTURY A.D.", | |
| 653 | + "low": 250, | |
| 654 | + "high": 350, | |
| 655 | + "hammer": null, | |
| 656 | + "status": "unsold", | |
| 657 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 658 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/f3731cb2-1487-486b-be42-a045c5faa792/6b8cc1a0-8998-4281-b554-d7720315124a/0002_wFHofK_original.jpg" | |
| 659 | + }, | |
| 660 | + { | |
| 661 | + "uuid": "df4538dd-2663-4aef-b901-44d885261d2d", | |
| 662 | + "lotNo": "53", | |
| 663 | + "title": "LARGE BANDED AGATE SASANIAN STAMP SEAL", | |
| 664 | + "subTitle": "NEAR EAST, C. 3RD - 7TH CENTURY A.D.", | |
| 665 | + "low": 300, | |
| 666 | + "high": 500, | |
| 667 | + "hammer": 200, | |
| 668 | + "status": "sold", | |
| 669 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 670 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/c1706312-17a5-4951-9090-93509ddf84ac/6b1120dc-7053-46a2-bccf-2a7e01618648/0001a_gXUYpb_original.jpeg" | |
| 671 | + }, | |
| 672 | + { | |
| 673 | + "uuid": "50fdc709-dea4-48e8-8560-58a83ff6567c", | |
| 674 | + "lotNo": "54", | |
| 675 | + "title": "PERSIAN SASANIAN AGATE STAMP SEAL, ACQUIRED EARLY 20TH CENTURY", | |
| 676 | + "subTitle": "NEAR EAST, C. 3RD - 7TH CENTURY A.D.", | |
| 677 | + "low": 200, | |
| 678 | + "high": 300, | |
| 679 | + "hammer": 140, | |
| 680 | + "status": "sold", | |
| 681 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 682 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/394f252b-3dd9-49ed-9d9d-18d2051c3227/4b3d4509-842e-4039-8c5a-bd000cb51ab2/00001_FwzwwI_original.jpeg" | |
| 683 | + }, | |
| 684 | + { | |
| 685 | + "uuid": "1ec1ea39-5590-4e9e-be72-211674371a6f", | |
| 686 | + "lotNo": "55C", | |
| 687 | + "title": "HELLENISTIC GOLD AND LAPIS NECKLACE WITH AGATE CENTRE STONE", | |
| 688 | + "subTitle": "EASTERN MEDITERRANEAN, 1ST MILLENNIUM B.C.", | |
| 689 | + "low": 1500, | |
| 690 | + "high": 2500, | |
| 691 | + "hammer": 2200, | |
| 692 | + "status": "sold", | |
| 693 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 694 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/1da094fb-f6bb-487c-b57c-2fd8523c2e9f/b049156b-372d-48bb-8d30-882287bf2b60/0001_OIhkaE_original.jpeg" | |
| 695 | + }, | |
| 696 | + { | |
| 697 | + "uuid": "ca3a2d87-44c5-4947-9011-d871adada4c5", | |
| 698 | + "lotNo": "55A", | |
| 699 | + "title": "GOLD AND LAPIS BEADED NECKLACE", | |
| 700 | + "subTitle": "EASTERN MEDITERRANEAN, 1ST MILLENNIUM B.C", | |
| 701 | + "low": 1500, | |
| 702 | + "high": 2500, | |
| 703 | + "hammer": 3400, | |
| 704 | + "status": "sold", | |
| 705 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 706 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/6ba1bdb4-c673-4aec-b683-2b37e153ade7/45aa2258-be51-4033-97af-55948033aab3/0001_wRPJeO_original.jpeg" | |
| 707 | + }, | |
| 708 | + { | |
| 709 | + "uuid": "54115452-4713-4853-bac3-fd705b74cac1", | |
| 710 | + "lotNo": "55B", | |
| 711 | + "title": "CARNELIAN BEADED NECKLACE", | |
| 712 | + "subTitle": "EASTERN MEDITERRANEAN, 1ST MILLENNIUM B.C.", | |
| 713 | + "low": 800, | |
| 714 | + "high": 1200, | |
| 715 | + "hammer": 2200, | |
| 716 | + "status": "sold", | |
| 717 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 718 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/5185457e-4676-4af7-90ac-d0e8e23a9476/70f358c0-88b6-4b73-8af9-433dd80b57b2/0001_opKygd_original.jpeg" | |
| 719 | + }, | |
| 720 | + { | |
| 721 | + "uuid": "13e090d7-3396-44ff-a4e3-b59ca9e397b0", | |
| 722 | + "lotNo": "55", | |
| 723 | + "title": "OLD SYRIAN HEMATITE CYLINDER SEAL, ACQUIRED EARLY 20TH CENTURY", | |
| 724 | + "subTitle": "NEAR EAST, C. 1820 - 1730 B.C.", | |
| 725 | + "low": 400, | |
| 726 | + "high": 600, | |
| 727 | + "hammer": 650, | |
| 728 | + "status": "sold", | |
| 729 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 730 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/d27285f1-f9b7-4c33-b584-c13a855e2014/75fb60ac-bbb8-4a0b-b1d7-cf882d23b727/0002_SidFoK_original.jpg" | |
| 731 | + }, | |
| 732 | + { | |
| 733 | + "uuid": "e47bdf19-7969-403a-bbac-78a482e69f5b", | |
| 734 | + "lotNo": "56", | |
| 735 | + "title": "DANCE STAFF", | |
| 736 | + "subTitle": "TIWI PEOPLES, MELVILLE ISLANDS, AUSTRALIA", | |
| 737 | + "low": 300, | |
| 738 | + "high": 400, | |
| 739 | + "hammer": 460, | |
| 740 | + "status": "sold", | |
| 741 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 742 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/50510597-2294-4fa5-b6fe-7a5aa96f759f/c24411cd-cebb-4e1d-9c39-52413196cd58/0001_wWmWvs_original.jpg" | |
| 743 | + }, | |
| 744 | + { | |
| 745 | + "uuid": "a3b2687e-bf14-4884-9144-e229920ce884", | |
| 746 | + "lotNo": "57", | |
| 747 | + "title": "MAORI WAHAIKA CLUB", | |
| 748 | + "subTitle": "NEW ZEALAND", | |
| 749 | + "low": 6000, | |
| 750 | + "high": 9000, | |
| 751 | + "hammer": 3587.61, | |
| 752 | + "status": "sold", | |
| 753 | + "sessionDate": "2026-07-08T13:00:00.000Z", | |
| 754 | + "image": "https://media.app.artisio.co/media/104cbde6-0d38-43cb-9e0f-bb721ef57bcf/inventory/2722624d-e943-4683-8f27-e48e30eb9a89/8364784e-eb23-4d14-812e-f3bfd6b567b1/00001_NOIogj_original.jpeg" | |
| 755 | + } | |
| 756 | + ] | |
| 757 | + } | |
| 758 | + }, | |
| 759 | + "expect": { | |
| 760 | + "minCount": 20, | |
| 761 | + "kinds": [ | |
| 762 | + "sale", | |
| 763 | + "auction_lot" | |
| 764 | + ], | |
| 765 | + "requiredFields": [ | |
| 766 | + "attributes.categorySlug", | |
| 767 | + "rawTitle" | |
| 768 | + ] | |
| 769 | + }, | |
| 770 | + "note": "Captured live from lyonandturnbull.com (plain HTTPS, lots trimmed to 60)", | |
| 771 | + "capturedAt": "2026-09-07T06:34:02.309Z" | |
| 772 | +} | |
| \ No newline at end of file | ||
added
data/fixtures/phillips-art/sale-NY011126.json
+37 −0
@@ -0,0 +1,37 @@ | ||
| 1 | +{ | |
| 2 | + "raw": { | |
| 3 | + "url": "https://www.phillips.com/auction/NY011126", | |
| 4 | + "externalId": "NY011126", | |
| 5 | + "kind": "sale", | |
| 6 | + "engine": "firecrawl", | |
| 7 | + "fetchedAt": "2026-09-07T06:28:39.390Z", | |
| 8 | + "payload": { | |
| 9 | + "kind": "auction_results", | |
| 10 | + "url": "https://www.phillips.com/auction/NY011126", | |
| 11 | + "saleNumber": "NY011126", | |
| 12 | + "title": "Modern & Contemporary Art: Online Auction, New York", | |
| 13 | + "location": "NEW YORK", | |
| 14 | + "startDate": "2026-06-16T12:00:00-04:00", | |
| 15 | + "endDate": "2026-06-30T12:00:00-04:00", | |
| 16 | + "lotCount": 206, | |
| 17 | + "markdown": "## Search\n\nSearch\n\nAuctions\n\n- [Calendar](https://www.phillips.com/calendar/upcoming)\n\nDepartments\n\n- [Exhibitions](https://www.phillips.com/exhibitions)\n- [Perpetual](https://perpetual.phillips.com/)\n- [Dropshop](https://dropshop.phillips.com/)\n- [Editorial](https://www.phillips.com/editorial)\n\nClose\n\nOnline Auction\n\n# Modern & Contemporary Art: Online Auction, New York\n\nNew York\n\nConcludedJun 30 2026\n\nBrowse Upcoming Sales[View Calendar](https://www.phillips.com/calendar)\n\n\n\nOverviewBrowse lots\n\nFilters\n\nLot Navigation\n\nShow Lot123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206\n\n## 206 Lots\n\nLots close independently at 1-minute intervals.\n\n[\\\\\n\\\\\n1\\\\\n\\\\\nKatherine Bradford\\\\\n\\\\\nLanterns\\\\\n\\\\\nEstimate\\\\\n\\\\\n$8,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$12,900](https://www.phillips.com/detail/katherine-bradford/234214)\n\n[\\\\\nNo Reserve\\\\\n2\\\\\n\\\\\nMaija Peeples-Bright\\\\\n\\\\\nQuite an Adwrenture\\\\\n\\\\\nEstimate\\\\\n\\\\\n$4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$6,192](https://www.phillips.com/detail/maija-peeples-bright/233356)\n\n[\\\\\n\\\\\n3\\\\\n\\\\\nSayre Gomez\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$12,255](https://www.phillips.com/detail/sayre-gomez/231200)\n\n[\\\\\n\\\\\n4\\\\\n\\\\\nUgo Rondinone\\\\\n\\\\\nOut of reach until it’s magic we are crossing our own stony ocean\\\\\n\\\\\nEstimate\\\\\n\\\\\n$26,000–35,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$45,150](https://www.phillips.com/detail/ugo-rondinone/234722)\n\n[\\\\\n\\\\\n5\\\\\n\\\\\nKatherine Bernhardt\\\\\n\\\\\nLaptops, Apple Computers + Pizza\\\\\n\\\\\nEstimate\\\\\n\\\\\n$18,000–22,000](https://www.phillips.com/detail/katherine-bernhardt/230064)\n\n[\\\\\n\\\\\n6\\\\\n\\\\\nLeda Catunda\\\\\n\\\\\nBlue\\\\\n\\\\\nEstimate\\\\\n\\\\\n$15,000–20,000](https://www.phillips.com/detail/leda-catunda/234514)\n\n[\\\\\n\\\\\n7\\\\\n\\\\\nKatherine Bradford\\\\\n\\\\\nSoprano\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$7,095](https://www.phillips.com/detail/katherine-bradford/234185)\n\n[\\\\\n\\\\\n8\\\\\n\\\\\nAtsushi Kaga\\\\\n\\\\\nUsacchi and his Dad\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000](https://www.phillips.com/detail/atsushi-kaga/232400)\n\n[\\\\\n\\\\\n9\\\\\n\\\\\nAnselm Reyle\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000](https://www.phillips.com/detail/anselm-reyle/235616)\n\n[\\\\\n\\\\\n10\\\\\n\\\\\nJohn Armleder\\\\\n\\\\\nLiberty Dome Vlla\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000](https://www.phillips.com/detail/john-armleder/234724)\n\n[\\\\\n\\\\\n11\\\\\n\\\\\nYoussef Nabil\\\\\n\\\\\nI Will Go To Paradise, Self Portrait, Hyères\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$28,380](https://www.phillips.com/detail/youssef-nabil/230961)\n\n[\\\\\n\\\\\n12\\\\\n\\\\\nBernar Venet\\\\\n\\\\\nUneven Collapse: 11 Arcs\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$16,770](https://www.phillips.com/detail/bernar-venet/231856)\n\n[\\\\\n\\\\\n13\\\\\n\\\\\nJason Martin\\\\\n\\\\\nMaiko\\\\\n\\\\\nEstimate\\\\\n\\\\\n$12,000–18,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$18,060](https://www.phillips.com/detail/jason-martin/234435)\n\n[\\\\\n\\\\\n14\\\\\n\\\\\nPhilippe Decrauzat\\\\\n\\\\\nSlow Motion #1\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000](https://www.phillips.com/detail/philippe-decrauzat/234725)\n\n[\\\\\n\\\\\n15\\\\\n\\\\\nShirazeh Houshiary\\\\\n\\\\\nSkin\\\\\n\\\\\nEstimate\\\\\n\\\\\n$20,000–30,000](https://www.phillips.com/detail/shirazeh-houshiary/234434)\n\n[\\\\\n\\\\\n16\\\\\n\\\\\nKour Pour\\\\\n\\\\\nVector Art\\\\\n\\\\\nEstimate\\\\\n\\\\\n$15,000–20,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$16,770](https://www.phillips.com/detail/kour-pour/230067)\n\n[\\\\\nNo Reserve\\\\\n17\\\\\n\\\\\nKon Trubkovich\\\\\n\\\\\nGolden Ratio (Orange)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$8,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$9,030](https://www.phillips.com/detail/kon-trubkovich/232068)\n\n[\\\\\n\\\\\n18\\\\\n\\\\\nCyprien Gaillard\\\\\n\\\\\nNot yet titled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$12,000–18,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$18,060](https://www.phillips.com/detail/cyprien-gaillard/231223)\n\n[\\\\\n\\\\\n19\\\\\n\\\\\nAndrew Schoultz\\\\\n\\\\\nSnake\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$3,354](https://www.phillips.com/detail/andrew-schoultz/232550)\n\n[\\\\\n\\\\\n20\\\\\n\\\\\nJenny Holzer\\\\\n\\\\\nSurvival Series: What country should you adopt…\\\\\n\\\\\nEstimate\\\\\n\\\\\n$8,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$10,965](https://www.phillips.com/detail/jenny-holzer/234248)\n\n[\\\\\n\\\\\n21\\\\\n\\\\\nTony Matelli\\\\\n\\\\\nFuck Off\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$5,805](https://www.phillips.com/detail/tony-matelli/228091)\n\n[\\\\\n\\\\\n22\\\\\n\\\\\nNick Doyle\\\\\n\\\\\nVictor, Alpha\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$3,612](https://www.phillips.com/detail/nick-doyle/232124)\n\n[\\\\\n\\\\\n23\\\\\n\\\\\nRichard Prince\\\\\n\\\\\nUntitled (Tell Me Everything...)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$20,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$51,600](https://www.phillips.com/detail/richard-prince/207467)\n\n[\\\\\n\\\\\n24\\\\\n\\\\\nEnoc Pérez\\\\\n\\\\\nLever House, NY\\\\\n\\\\\nEstimate\\\\\n\\\\\n$15,000–20,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$12,900](https://www.phillips.com/detail/enoc-p%C3%A9rez/233922)\n\n[\\\\\n\\\\\n25\\\\\n\\\\\nJulio Larraz\\\\\n\\\\\nAutumn at Cumae\\\\\n\\\\\nEstimate\\\\\n\\\\\n$25,000–35,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$33,540](https://www.phillips.com/detail/julio-larraz/234889)\n\n[\\\\\n\\\\\n26\\\\\n\\\\\nJulio Larraz\\\\\n\\\\\nBell Tower\\\\\n\\\\\nEstimate\\\\\n\\\\\n$18,000–22,000](https://www.phillips.com/detail/julio-larraz/234890)\n\n[\\\\\n\\\\\n27\\\\\n\\\\\nEugenio Cuttica\\\\\n\\\\\nLuna and the weed field\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$10,320](https://www.phillips.com/detail/eugenio-cuttica/235075)\n\n[\\\\\n\\\\\n28\\\\\n\\\\\nGustavo Vélez\\\\\n\\\\\nEnlace Geométrico\\\\\n\\\\\nEstimate\\\\\n\\\\\n$18,000–25,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$45,150](https://www.phillips.com/detail/gustavo-v%C3%A9lez/234184)\n\n[\\\\\n\\\\\n29\\\\\n\\\\\nVik Muniz\\\\\n\\\\\nJorge from the series Pictures of Magazines\\\\\n\\\\\nEstimate\\\\\n\\\\\n$8,000–12,000](https://www.phillips.com/detail/vik-muniz/229426)\n\n[\\\\\n\\\\\n30\\\\\n\\\\\nOscar Murillo\\\\\n\\\\\nUntitled (synthetic trash painting)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$12,000–18,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$15,480](https://www.phillips.com/detail/oscar-murillo/230378)\n\n[\\\\\nNo Reserve\\\\\n31\\\\\n\\\\\nAnalia Saban\\\\\n\\\\\nModular Drawing (One 14-inch Line Printed on Tape, Applied in Whole or in Parts): Landscape\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$6,450](https://www.phillips.com/detail/analia-saban/234242)\n\n[\\\\\n\\\\\n32\\\\\n\\\\\nLeandro Erlich\\\\\n\\\\\nBroken Mirror\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$15,480](https://www.phillips.com/detail/leandro-erlich/234726)\n\n[\\\\\n\\\\\n33\\\\\n\\\\\nAnna Weyant\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$18,000–22,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$23,220](https://www.phillips.com/detail/anna-weyant/232126)\n\n[\\\\\n\\\\\n34\\\\\n\\\\\nJaune Quick-to-See Smith (Confederated Salish and Kootenai)\\\\\n\\\\\nI See Red: America Seen from Up Close\\\\\n\\\\\nEstimate\\\\\n\\\\\n$25,000–35,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$25,800](https://www.phillips.com/detail/jaune-quick-to-see-smith-(confederated-salish-and-kootenai)/234316)\n\n[\\\\\n\\\\\n35\\\\\n\\\\\nDeborah Roberts\\\\\n\\\\\nMis-Education of Mimi\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$9,030](https://www.phillips.com/detail/deborah-roberts/232549)\n\n[\\\\\n\\\\\n36\\\\\n\\\\\nHuma Bhabha\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000](https://www.phillips.com/detail/huma-bhabha/235311)\n\n[\\\\\n\\\\\n37\\\\\n\\\\\nClaudio Bravo\\\\\n\\\\\nPaisaje\\\\\n\\\\\nEstimate\\\\\n\\\\\n$15,000–20,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$20,640](https://www.phillips.com/detail/claudio-bravo/227808)\n\n[\\\\\n\\\\\n38\\\\\n\\\\\nLarry Rivers\\\\\n\\\\\nBlue Collar Holiday: Yellow Beam\\\\\n\\\\\nEstimate\\\\\n\\\\\n$7,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$5,160](https://www.phillips.com/detail/larry-rivers/227944)\n\n[\\\\\n\\\\\n39\\\\\n\\\\\nJohn Wesley\\\\\n\\\\\nUntitled (Hand with Bottle)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$7,740](https://www.phillips.com/detail/john-wesley/233441)\n\n[\\\\\n\\\\\n40\\\\\n\\\\\nJulio Galán\\\\\n\\\\\nSin Título\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$12,900](https://www.phillips.com/detail/julio-gal%C3%A1n/233146)\n\n[\\\\\n\\\\\n41\\\\\n\\\\\nJacques Lipchitz\\\\\n\\\\\nMiraculous Catch\\\\\n\\\\\nEstimate\\\\\n\\\\\n$15,000–20,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$15,480](https://www.phillips.com/detail/jacques-lipchitz/227825)\n\n[\\\\\n\\\\\n42\\\\\n\\\\\nHisao Domoto\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$21,930](https://www.phillips.com/detail/hisao-domoto/230256)\n\n[\\\\\n\\\\\n43\\\\\n\\\\\nAnthony Caro\\\\\n\\\\\nTable Piece CCCCXX\\\\\n\\\\\nEstimate\\\\\n\\\\\n$8,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$20,640](https://www.phillips.com/detail/anthony-caro/234396)\n\n[\\\\\nNo Reserve\\\\\n44\\\\\n\\\\\nLouise Nevelson\\\\\n\\\\\nEnd of Day Cryptic XV\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$30,960](https://www.phillips.com/detail/louise-nevelson/235461)\n\n[\\\\\n\\\\\n45\\\\\n\\\\\nNorman Bluhm\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$15,000–20,000](https://www.phillips.com/detail/norman-bluhm/230255)\n\n[\\\\\n\\\\\n46\\\\\n\\\\\nOlivier Debré\\\\\n\\\\\nNotre-Dame blanche\\\\\n\\\\\nEstimate\\\\\n\\\\\n$15,000–20,000](https://www.phillips.com/detail/olivier-debr%C3%A9/235327)\n\n[\\\\\n\\\\\n47\\\\\n\\\\\nRobert Natkin\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$6,450](https://www.phillips.com/detail/robert-natkin/234109)\n\n[\\\\\n\\\\\n48\\\\\n\\\\\nRichard Artschwager\\\\\n\\\\\nRailroad Tracks No. 4 (plural)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$20,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$19,350](https://www.phillips.com/detail/richard-artschwager/232121)\n\n[\\\\\n\\\\\n49\\\\\n\\\\\nBrion Gysin\\\\\n\\\\\nDreamachine\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$25,800](https://www.phillips.com/detail/brion-gysin/225023)\n\n[\\\\\n\\\\\n50\\\\\n\\\\\nGeorge Rickey\\\\\n\\\\\nSix Triangles with Spirals Hexagon II\\\\\n\\\\\nEstimate\\\\\n\\\\\n$7,000–10,000](https://www.phillips.com/detail/george-rickey/230379)\n\n[\\\\\n\\\\\n51\\\\\n\\\\\nBeverly Pepper\\\\\n\\\\\nMatera Scatolata (Sculpture No. 21)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$8,385](https://www.phillips.com/detail/beverly-pepper/227943)\n\n[\\\\\n\\\\\n52\\\\\n\\\\\nJohn McCracken\\\\\n\\\\\nAlpha-2\\\\\n\\\\\nEstimate\\\\\n\\\\\n$20,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$28,380](https://www.phillips.com/detail/john-mccracken/229435)\n\n[\\\\\n\\\\\n53\\\\\n\\\\\nGeorge Condo\\\\\n\\\\\nGlass Man\\\\\n\\\\\nEstimate\\\\\n\\\\\n$15,000–20,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$30,960](https://www.phillips.com/detail/george-condo/231617)\n\n[\\\\\n\\\\\n54\\\\\n\\\\\nHilo Chen\\\\\n\\\\\nFour works: (i) Blossom-19-S-1; (ii) Blossom 20-S; (iii) Untitled; (iv) Untitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$9,675](https://www.phillips.com/detail/hilo-chen/235254)\n\n[\\\\\n\\\\\n55\\\\\n\\\\\nHilo Chen\\\\\n\\\\\nBath Room - 5\\\\\n\\\\\nEstimate\\\\\n\\\\\n$7,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$10,320](https://www.phillips.com/detail/hilo-chen/235253)\n\n[\\\\\n\\\\\n56\\\\\n\\\\\nPeter Dreher\\\\\n\\\\\nTwo works: (i) Tag um Tag Guter Tag, n. 1184 (Day); (ii) Tag um Tag Guter Tag, n. 1928 (Night)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$12,900](https://www.phillips.com/detail/peter-dreher/234939)\n\n[\\\\\n\\\\\n57\\\\\n\\\\\nSusan Hiller\\\\\n\\\\\nSpeaking to the Eye\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$4,515](https://www.phillips.com/detail/susan-hiller/230970)\n\n[\\\\\n\\\\\n58\\\\\n\\\\\nJane Piper\\\\\n\\\\\nStill Life with Bouquet\\\\\n\\\\\nEstimate\\\\\n\\\\\n$8,000–12,000](https://www.phillips.com/detail/jane-piper/234530)\n\n[\\\\\n\\\\\n59\\\\\n\\\\\nTom Otterness\\\\\n\\\\\nBeer Can Bronze\\\\\n\\\\\nEstimate\\\\\n\\\\\n$8,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$15,480](https://www.phillips.com/detail/tom-otterness/234529)\n\n[\\\\\nNo Reserve\\\\\n60\\\\\n\\\\\nRobert Beauchamp\\\\\n\\\\\nChagall like Harpies\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,548](https://www.phillips.com/detail/robert-beauchamp/231360)\n\n[\\\\\n\\\\\n61\\\\\n\\\\\nMary Weatherford\\\\\n\\\\\nCamille\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$12,900](https://www.phillips.com/detail/mary-weatherford/191183)\n\n[\\\\\n\\\\\n62\\\\\n\\\\\nApril Gornik\\\\\n\\\\\nLIGHT IN THE WOODS, STATE II\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000](https://www.phillips.com/detail/april-gornik/227471)\n\n[\\\\\n\\\\\n63\\\\\n\\\\\nJulie Heffernan\\\\\n\\\\\nStudy for Self Portrait as Falling Sky with Shipwreck\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$10,320](https://www.phillips.com/detail/julie-heffernan/230066)\n\n[\\\\\n\\\\\n64\\\\\n\\\\\nJoe Andoe\\\\\n\\\\\nSunflower\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$6,192](https://www.phillips.com/detail/joe-andoe/232120)\n\n[\\\\\n\\\\\n65\\\\\n\\\\\nPeter Anton\\\\\n\\\\\nPlayful Mix\\\\\n\\\\\nEstimate\\\\\n\\\\\n$7,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$7,095](https://www.phillips.com/detail/peter-anton/233288)\n\n[\\\\\n\\\\\n66\\\\\n\\\\\nPeter Anton\\\\\n\\\\\nMilk Chocolate Bar\\\\\n\\\\\nEstimate\\\\\n\\\\\n$4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$9,675](https://www.phillips.com/detail/peter-anton/233289)\n\n[\\\\\n\\\\\n67\\\\\n\\\\\nJosh Sperling\\\\\n\\\\\nUntitled (Orange Pyramid)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$8,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$9,030](https://www.phillips.com/detail/josh-sperling/234581)\n\n[\\\\\n\\\\\n68\\\\\n\\\\\nKAWS\\\\\n\\\\\nPERMANENT THIRTY-THREE (FLASHE GREEN)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$15,000–25,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$36,120](https://www.phillips.com/detail/kaws/234501)\n\n[\\\\\n\\\\\n69\\\\\n\\\\\nKim Dorland\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$6,450](https://www.phillips.com/detail/kim-dorland/229320)\n\n[\\\\\n\\\\\n70\\\\\n\\\\\nDavid Altmejd\\\\\n\\\\\nThe Storms\\\\\n\\\\\nEstimate\\\\\n\\\\\n$8,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$8,385](https://www.phillips.com/detail/david-altmejd/235310)\n\n[\\\\\n\\\\\n71\\\\\n\\\\\nAndrea Marie Breiling\\\\\n\\\\\nTitanium Twist\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000](https://www.phillips.com/detail/andrea-marie-breiling/231355)\n\n[\\\\\n\\\\\n72\\\\\n\\\\\nCorydon Cowansage\\\\\n\\\\\nReds\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$7,095](https://www.phillips.com/detail/corydon-cowansage/234153)\n\n[\\\\\n\\\\\n73\\\\\n\\\\\nEmily Ferguson\\\\\n\\\\\nRefractions in the Plastic Pulse\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000](https://www.phillips.com/detail/emily-ferguson/232397)\n\n[\\\\\n\\\\\n74\\\\\n\\\\\nEmily Mae Smith\\\\\n\\\\\nHunger\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$12,255](https://www.phillips.com/detail/emily-mae-smith/232125)\n\n[\\\\\n\\\\\n75\\\\\n\\\\\nCarter Flachbarth\\\\\n\\\\\nPOW\\\\\n\\\\\nEstimate\\\\\n\\\\\n$4,000–6,000](https://www.phillips.com/detail/carter-flachbarth/232015)\n\n[\\\\\n\\\\\n76\\\\\n\\\\\nJess Valice\\\\\n\\\\\nOutlaw Woman\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$10,320](https://www.phillips.com/detail/jess-valice/232406)\n\n[\\\\\n\\\\\n77\\\\\n\\\\\nNadia Waheed\\\\\n\\\\\nAt Night\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$5,160](https://www.phillips.com/detail/nadia-waheed/232013)\n\n[\\\\\n\\\\\n78\\\\\n\\\\\nIvy Haldeman\\\\\n\\\\\nHeels, Right Foot Up, Wrist Under Shank, Three Fingers\\\\\n\\\\\nEstimate\\\\\n\\\\\n$4,000–6,000](https://www.phillips.com/detail/ivy-haldeman/232009)\n\n[\\\\\n\\\\\n79\\\\\n\\\\\nHaley Josephs\\\\\n\\\\\nLife/Body Cycle\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000](https://www.phillips.com/detail/haley-josephs/232098)\n\n[\\\\\n\\\\\n80\\\\\n\\\\\nTony Toscani\\\\\n\\\\\nWork Break\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000](https://www.phillips.com/detail/tony-toscani/232405)\n\n[\\\\\n\\\\\n81\\\\\n\\\\\nShaina McCoy\\\\\n\\\\\nMandela (Untitled II)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$4,128](https://www.phillips.com/detail/shaina-mccoy/229974)\n\n[\\\\\n\\\\\n82\\\\\n\\\\\nEthan Cook\\\\\n\\\\\nBlue Red 3\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$14,190](https://www.phillips.com/detail/ethan-cook/232014)\n\n[\\\\\n\\\\\n83\\\\\n\\\\\nJosh Smith\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$5,160](https://www.phillips.com/detail/josh-smith/232725)\n\n[\\\\\n\\\\\n84\\\\\n\\\\\nSoiL Thornton\\\\\n\\\\\nWalking On Thin Ice Cubicle\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$6,450](https://www.phillips.com/detail/soil-thornton/230380)\n\n[\\\\\n\\\\\n85\\\\\n\\\\\nMilo Matthieu\\\\\n\\\\\nJC\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000](https://www.phillips.com/detail/milo-matthieu/232011)\n\n[\\\\\n\\\\\n86\\\\\n\\\\\nNikki Maloof\\\\\n\\\\\nBed\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$8,385](https://www.phillips.com/detail/nikki-maloof/227767)\n\n[\\\\\nNo Reserve\\\\\n87\\\\\n\\\\\nBlair Whiteford\\\\\n\\\\\nSilt\\\\\n\\\\\nEstimate\\\\\n\\\\\n$7,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$10,320](https://www.phillips.com/detail/blair-whiteford/234830)\n\n[\\\\\nNo Reserve\\\\\n88\\\\\n\\\\\nSojourner Truth Parsons\\\\\n\\\\\nTell them that it's human nature\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,677](https://www.phillips.com/detail/sojourner-truth-parsons/228153)\n\n[\\\\\n\\\\\n89\\\\\n\\\\\nAmy Lincoln\\\\\n\\\\\nPink Sun, Blue Moon\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$14,190](https://www.phillips.com/detail/amy-lincoln/195179)\n\n[\\\\\n\\\\\n90\\\\\n\\\\\nChino Amobi\\\\\n\\\\\nX.10\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000](https://www.phillips.com/detail/chino-amobi/232016)\n\n[\\\\\nNo Reserve\\\\\n91\\\\\n\\\\\nZoe McGuire\\\\\n\\\\\nSkyscape\\\\\n\\\\\nEstimate\\\\\n\\\\\n$2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$3,354](https://www.phillips.com/detail/zoe-mcguire/230390)\n\n[\\\\\n\\\\\n92\\\\\n\\\\\nClaire Colette\\\\\n\\\\\nAwareness is the sky\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,500–4,500\\\\\n\\\\\nSold For\\\\\n\\\\\n$3,612](https://www.phillips.com/detail/claire-colette/230174)\n\n[\\\\\nNo Reserve\\\\\n93\\\\\n\\\\\nStephen Towns\\\\\n\\\\\nAnatomy of Abundance\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$4,515](https://www.phillips.com/detail/stephen-towns/233355)\n\n[\\\\\nNo Reserve\\\\\n94\\\\\n\\\\\nEmma Stern\\\\\n\\\\\nBrooke (catch more flies with honey)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$8,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$8,385](https://www.phillips.com/detail/emma-stern/236018)\n\n[\\\\\n\\\\\n95\\\\\n\\\\\nSteve DiBenedetto\\\\\n\\\\\nBreakup\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$4,902](https://www.phillips.com/detail/steve-dibenedetto/232655)\n\n[\\\\\nNo Reserve\\\\\n96\\\\\n\\\\\nDevin Troy Strother\\\\\n\\\\\nuntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$3,354](https://www.phillips.com/detail/devin-troy-strother/230387)\n\n[\\\\\n\\\\\n97\\\\\n\\\\\nJeff Elrod\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$19,350](https://www.phillips.com/detail/jeff-elrod/231358)\n\n[\\\\\n\\\\\n98\\\\\n\\\\\nDan Rees\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$11,610](https://www.phillips.com/detail/dan-rees/230068)\n\n[\\\\\n\\\\\n99\\\\\n\\\\\nLucien Smith\\\\\n\\\\\nThose whose love burns, dare not; the love of those who dare, burns not\\\\\n\\\\\nEstimate\\\\\n\\\\\n$1,000–2,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$3,354](https://www.phillips.com/detail/lucien-smith/230069)\n\n[\\\\\n\\\\\n100\\\\\n\\\\\nLucien Smith\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$3,354](https://www.phillips.com/detail/lucien-smith/234241)\n\n[\\\\\n\\\\\n101\\\\\n\\\\\nJohn Henderson\\\\\n\\\\\nProof (wall rip, verso)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$2,838](https://www.phillips.com/detail/john-henderson/228045)\n\n[\\\\\n\\\\\n102\\\\\n\\\\\nRichard Aldrich\\\\\n\\\\\nPeacock with Stripes of Mary Cassatt and Syd Barrett\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000](https://www.phillips.com/detail/richard-aldrich/234937)\n\n[\\\\\n\\\\\n103\\\\\n\\\\\nKelley Walker\\\\\n\\\\\nI See a Teddy Roosevelt-Shaped Thing\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$7,740](https://www.phillips.com/detail/kelley-walker/234731)\n\n[\\\\\n\\\\\n104\\\\\n\\\\\nDaniel Lefcourt\\\\\n\\\\\nDouble Imposition\\\\\n\\\\\nEstimate\\\\\n\\\\\n$2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$645](https://www.phillips.com/detail/daniel-lefcourt/233330)\n\n[\\\\\n\\\\\n105\\\\\n\\\\\nCaroline Walker\\\\\n\\\\\nRelaxation Room\\\\\n\\\\\nEstimate\\\\\n\\\\\n$12,000–18,000](https://www.phillips.com/detail/caroline-walker/235047)\n\n[\\\\\n\\\\\n106\\\\\n\\\\\nLouise Giovanelli\\\\\n\\\\\nTwo Grooves III\\\\\n\\\\\nEstimate\\\\\n\\\\\n$20,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$21,930](https://www.phillips.com/detail/louise-giovanelli/232097)\n\n[\\\\\n\\\\\n107\\\\\n\\\\\nAnia Hobson\\\\\n\\\\\nBurning Love Letters\\\\\n\\\\\nEstimate\\\\\n\\\\\n$7,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$10,965](https://www.phillips.com/detail/ania-hobson/234775)\n\n[\\\\\n\\\\\n108\\\\\n\\\\\nRyan Mosley\\\\\n\\\\\nShaman II\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000](https://www.phillips.com/detail/ryan-mosley/232842)\n\n[\\\\\n\\\\\n109\\\\\n\\\\\nAnastasia Bay\\\\\n\\\\\nThe Stumbler's Parade (Head VI)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000](https://www.phillips.com/detail/anastasia-bay/234938)\n\n[\\\\\n\\\\\n110\\\\\n\\\\\nDjordje Ozbolt\\\\\n\\\\\nBird Magnet\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000](https://www.phillips.com/detail/djordje-ozbolt/227942)\n\n[\\\\\n\\\\\n111\\\\\n\\\\\nBrice Guilbert\\\\\n\\\\\nFournez\\\\\n\\\\\nEstimate\\\\\n\\\\\n$4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$5,160](https://www.phillips.com/detail/brice-guilbert/218847)\n\n[\\\\\n\\\\\n112\\\\\n\\\\\nArjen\\\\\n\\\\\nEaster Fantasy\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$7,740](https://www.phillips.com/detail/arjen/232095)\n\n[\\\\\n\\\\\n113\\\\\n\\\\\nWolfe von Lenkiewicz\\\\\n\\\\\nPierrot\\\\\n\\\\\nEstimate\\\\\n\\\\\n$7,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$25,800](https://www.phillips.com/detail/wolfe-von-lenkiewicz/228611)\n\n[\\\\\n\\\\\n114\\\\\n\\\\\nPaulina Olowska\\\\\n\\\\\nLili with a Pocket Bonnet\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$9,030](https://www.phillips.com/detail/paulina-olowska/233181)\n\n[\\\\\nNo Reserve\\\\\n115\\\\\n\\\\\nJoanna Malinowska\\\\\n\\\\\nFeathers\\\\\n\\\\\nEstimate\\\\\n\\\\\n$1,000–1,500\\\\\n\\\\\nSold For\\\\\n\\\\\n$194](https://www.phillips.com/detail/joanna-malinowska/231363)\n\n[\\\\\n\\\\\n116\\\\\n\\\\\nEva Beresin\\\\\n\\\\\nZoom pilates view\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000](https://www.phillips.com/detail/eva-beresin/232017)\n\n[\\\\\nNo Reserve\\\\\n117\\\\\n\\\\\nPádraig Timoney\\\\\n\\\\\nHydrangea\\\\\n\\\\\nEstimate\\\\\n\\\\\n$1,000–1,500\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,935](https://www.phillips.com/detail/p%C3%A1draig-timoney/231364)\n\n[\\\\\n\\\\\n118\\\\\n\\\\\nFriedrich Kunath\\\\\n\\\\\nDefectus\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$7,740](https://www.phillips.com/detail/friedrich-kunath/232547)\n\n[\\\\\n\\\\\n119\\\\\n\\\\\nWerner Büttner\\\\\n\\\\\nDie Probleme des Minigolfs in der europäischen Malerei\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$18,060](https://www.phillips.com/detail/werner-b%C3%BCttner/227810)\n\n[\\\\\n\\\\\n120\\\\\n\\\\\nFriedrich Kunath\\\\\n\\\\\nThe Past\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$12,900](https://www.phillips.com/detail/friedrich-kunath/230377)\n\n[\\\\\nNo Reserve\\\\\n121\\\\\n\\\\\nUwe Henneken\\\\\n\\\\\nFace to Face with Love\\\\\n\\\\\nEstimate\\\\\n\\\\\n$2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,548](https://www.phillips.com/detail/uwe-henneken/228151)\n\n[\\\\\n\\\\\n122\\\\\n\\\\\nFrank Nitsche\\\\\n\\\\\nBPG-05-2002\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$7,740](https://www.phillips.com/detail/frank-nitsche/235688)\n\n[\\\\\nNo Reserve\\\\\n123\\\\\n\\\\\nEllen Gronemeyer\\\\\n\\\\\npositive skewness\\\\\n\\\\\nEstimate\\\\\n\\\\\n$2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,677](https://www.phillips.com/detail/ellen-gronemeyer/228152)\n\n[\\\\\nNo Reserve\\\\\n124\\\\\n\\\\\nChris Succo\\\\\n\\\\\nUNTITLED (WHEN THE SUN GOES DOWN)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$2,193](https://www.phillips.com/detail/chris-succo/234215)\n\n[\\\\\nNo Reserve\\\\\n125\\\\\n\\\\\nMax Frintrop\\\\\n\\\\\nUntitled (Katzenberg)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,677](https://www.phillips.com/detail/max-frintrop/228044)\n\n[\\\\\nNo Reserve\\\\\n126\\\\\n\\\\\nMichiel Ceulers\\\\\n\\\\\nIf you bow at all, bow low (to know the road ahead ask those coming back)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$2,838](https://www.phillips.com/detail/michiel-ceulers/234240)\n\n[\\\\\n\\\\\n127\\\\\n\\\\\nAndreas Eriksson\\\\\n\\\\\nVisit\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$15,480](https://www.phillips.com/detail/andreas-eriksson/235312)\n\n[\\\\\n\\\\\n128\\\\\n\\\\\nAudun Alvestad\\\\\n\\\\\nThe Water Looks Strange Today\\\\\n\\\\\nEstimate\\\\\n\\\\\n$7,000–10,000](https://www.phillips.com/detail/audun-alvestad/195195)\n\n[\\\\\n\\\\\n129\\\\\n\\\\\nElmgreen & Dragset\\\\\n\\\\\nBall and Chain\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$5,160](https://www.phillips.com/detail/elmgreen-&-dragset/230467)\n\n[\\\\\n\\\\\n130\\\\\n\\\\\nClaire Fontaine\\\\\n\\\\\nLes refusés, V. I\\\\\n\\\\\nEstimate\\\\\n\\\\\n$4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,226](https://www.phillips.com/detail/claire-fontaine/233283)\n\n[\\\\\n\\\\\n131\\\\\n\\\\\nHaim Steinbach\\\\\n\\\\\npops\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$10,965](https://www.phillips.com/detail/haim-steinbach/230969)\n\n[\\\\\n\\\\\n132\\\\\n\\\\\nWangechi Mutu\\\\\n\\\\\nHeeler XIII\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$6,450](https://www.phillips.com/detail/wangechi-mutu/232548)\n\n[\\\\\n\\\\\n133\\\\\n\\\\\nLudovic Nkoth\\\\\n\\\\\nFallen Angel\\\\\n\\\\\nEstimate\\\\\n\\\\\n$4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$8,385](https://www.phillips.com/detail/ludovic-nkoth/231202)\n\n[\\\\\n\\\\\n134\\\\\n\\\\\nEmmanuel Taku\\\\\n\\\\\nTwin Power\\\\\n\\\\\nEstimate\\\\\n\\\\\n$7,000–10,000](https://www.phillips.com/detail/emmanuel-taku/234349)\n\n[\\\\\n\\\\\n135\\\\\n\\\\\nAwol Erizku\\\\\n\\\\\nGuap On Me - Future\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–4,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,806](https://www.phillips.com/detail/awol-erizku/230172)\n\n[\\\\\n\\\\\n136\\\\\n\\\\\nJordy Kerwick\\\\\n\\\\\nTMD #3\\\\\n\\\\\nEstimate\\\\\n\\\\\n$8,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$9,675](https://www.phillips.com/detail/jordy-kerwick/232010)\n\n[\\\\\n\\\\\n137\\\\\n\\\\\nZhang Huan\\\\\n\\\\\nChinese Flag No. 1\\\\\n\\\\\nEstimate\\\\\n\\\\\n$18,000–25,000](https://www.phillips.com/detail/zhang-huan/233921)\n\n[\\\\\n\\\\\n138\\\\\n\\\\\nZhuang Hong Yi\\\\\n\\\\\nB19 - HY - 006\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000](https://www.phillips.com/detail/zhuang-hong-yi/235546)\n\n[\\\\\n\\\\\n139\\\\\n\\\\\nRen Hang\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$4,515](https://www.phillips.com/detail/ren-hang/234243)\n\n[\\\\\nNo Reserve\\\\\n140\\\\\n\\\\\nRen Hang\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,806](https://www.phillips.com/detail/ren-hang/236499)\n\n[\\\\\n\\\\\n141\\\\\n\\\\\nWang Yigang\\\\\n\\\\\nS30\\\\\n\\\\\nEstimate\\\\\n\\\\\n$7,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$10,965](https://www.phillips.com/detail/wang-yigang/226057)\n\n[\\\\\nNo Reserve\\\\\n142\\\\\n\\\\\nXu Qu\\\\\n\\\\\nCurrency Wars - China 50 New\\\\\n\\\\\nEstimate\\\\\n\\\\\n$2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$2,580](https://www.phillips.com/detail/xu-qu/228610)\n\n[\\\\\n\\\\\n143\\\\\n\\\\\nYirui Jia\\\\\n\\\\\nMarfa Ghost\\\\\n\\\\\nEstimate\\\\\n\\\\\n$8,000–12,000](https://www.phillips.com/detail/yirui-jia/234582)\n\n[\\\\\n\\\\\n144\\\\\n\\\\\nWendy Park\\\\\n\\\\\nSecond Hand Fan\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$5,160](https://www.phillips.com/detail/wendy-park/234583)\n\n[\\\\\n\\\\\n145\\\\\n\\\\\nYusuke Hanai\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$7,000–10,000](https://www.phillips.com/detail/yusuke-hanai/234715)\n\n[\\\\\n\\\\\n146\\\\\n\\\\\nYusuke Hanai\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$7,000–10,000](https://www.phillips.com/detail/yusuke-hanai/234716)\n\n[\\\\\n\\\\\n147\\\\\n\\\\\nTomoo Gokita\\\\\n\\\\\nDance\\\\\n\\\\\nEstimate\\\\\n\\\\\n$15,000–20,000](https://www.phillips.com/detail/tomoo-gokita/234580)\n\n[\\\\\n\\\\\n148\\\\\n\\\\\nKoichi Sato\\\\\n\\\\\nLatin Beat Vol. 3\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$9,030](https://www.phillips.com/detail/koichi-sato/234584)\n\n[\\\\\n\\\\\n149\\\\\n\\\\\nMatthew Barney\\\\\n\\\\\nCREMASTER 3: Level\\\\\n\\\\\nEstimate\\\\\n\\\\\n$8,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$8,385](https://www.phillips.com/detail/matthew-barney/234967)\n\n[\\\\\n\\\\\n150\\\\\n\\\\\nWalead Beshty\\\\\n\\\\\nCombine Print (CMY/Six Magnets/2 of 5: Irvine, California, March 26th 2010, Fujicolor Crystal Archive Super Type C, Em. No. 148-006, 80510)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000](https://www.phillips.com/detail/walead-beshty/230707)\n\n[\\\\\n\\\\\n151\\\\\n\\\\\nRoe Ethridge\\\\\n\\\\\nDouble Jess Gold\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$9,675](https://www.phillips.com/detail/roe-ethridge/227811)\n\n[\\\\\n\\\\\n152\\\\\n\\\\\nMike Kelley\\\\\n\\\\\nPin Up Board (7070 Hollywood Blvd)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000](https://www.phillips.com/detail/mike-kelley/234728)\n\n[\\\\\n\\\\\n153\\\\\n\\\\\nDoug Starn and Mike Starn\\\\\n\\\\\nBlot Out the Sun #1\\\\\n\\\\\nEstimate\\\\\n\\\\\n$4,000–6,000](https://www.phillips.com/detail/doug-starn-and-mike-starn/229555)\n\n[\\\\\n\\\\\n154\\\\\n\\\\\nAndres Serrano\\\\\n\\\\\nPieta ll\\\\\n\\\\\nEstimate\\\\\n\\\\\n$12,000–18,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$25,800](https://www.phillips.com/detail/andres-serrano/234968)\n\n[\\\\\n\\\\\n155\\\\\n\\\\\nRyan McGinley\\\\\n\\\\\nAmanda (Breeze Meadow)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$5,418](https://www.phillips.com/detail/ryan-mcginley/229554)\n\n[\\\\\n\\\\\n156\\\\\n\\\\\nMike Kelley\\\\\n\\\\\nExtracurricular Activity Projective Reconstruction #23 (Joseph Supplicates)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$8,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$10,320](https://www.phillips.com/detail/mike-kelley/227816)\n\n[\\\\\nNo Reserve\\\\\n157\\\\\n\\\\\nJohn Beech\\\\\n\\\\\nDumpster Drawing (Silver/Berlin/Through Fence)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,032](https://www.phillips.com/detail/john-beech/232122)\n\n[\\\\\nNo Reserve\\\\\n158\\\\\n\\\\\nKrishnaraj Chonat\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$323](https://www.phillips.com/detail/krishnaraj-chonat/229583)\n\n[\\\\\n\\\\\n159\\\\\n\\\\\nHuma Bhabha\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$6,450](https://www.phillips.com/detail/huma-bhabha/234734)\n\n[\\\\\n\\\\\n160\\\\\n\\\\\nMarcel Dzama\\\\\n\\\\\nThe Hidden, the unknowable and the unthinkable\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$5,160](https://www.phillips.com/detail/marcel-dzama/235156)\n\n[\\\\\n\\\\\n161\\\\\n\\\\\nAna Benaroya\\\\\n\\\\\nMy Heart Burns Cherry Red For You\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000](https://www.phillips.com/detail/ana-benaroya/232148)\n\n[\\\\\n\\\\\n162\\\\\n\\\\\nRobert Nava\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$8,385](https://www.phillips.com/detail/robert-nava/232402)\n\n[\\\\\n\\\\\n163\\\\\n\\\\\nDavid Shrigley\\\\\n\\\\\nUntitled (Unacceptable)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$8,385](https://www.phillips.com/detail/david-shrigley/232012)\n\n[\\\\\n\\\\\n164\\\\\n\\\\\nPat Phillips\\\\\n\\\\\nUntitled “The first line of defense... the only defense... the only LEGAL defense against domestic terrorist”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,806](https://www.phillips.com/detail/pat-phillips/232096)\n\n[\\\\\nNo Reserve\\\\\n165\\\\\n\\\\\nJoe Zucker\\\\\n\\\\\n1980-1985\\\\\n\\\\\nEstimate\\\\\n\\\\\n$2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,419](https://www.phillips.com/detail/joe-zucker/228849)\n\n[\\\\\nNo Reserve\\\\\n166\\\\\n\\\\\nTony Just\\\\\n\\\\\nPasserby, New York City\\\\\n\\\\\nEstimate\\\\\n\\\\\n$1,000–1,500\\\\\n\\\\\nSold For\\\\\n\\\\\n$194](https://www.phillips.com/detail/tony-just/228848)\n\n[\\\\\nNo Reserve\\\\\n167\\\\\n\\\\\nWilhelm Sasnal\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,226](https://www.phillips.com/detail/wilhelm-sasnal/229588)\n\n[\\\\\n\\\\\n168\\\\\n\\\\\nKelley Walker and Wade Guyton\\\\\n\\\\\nThree works: (i-iii) _Untitled_\\\\\n\\\\\nEstimate\\\\\n\\\\\n$2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$710](https://www.phillips.com/detail/kelley-walker-and-wade-guyton/233274)\n\n[\\\\\n\\\\\n169\\\\\n\\\\\nSteven Parrino\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000](https://www.phillips.com/detail/steven-parrino/234941)\n\n[\\\\\n\\\\\n170\\\\\n\\\\\nSteven Parrino\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000](https://www.phillips.com/detail/steven-parrino/234940)\n\n[\\\\\n\\\\\n171\\\\\n\\\\\nGabriel Orozco\\\\\n\\\\\nUntitled (Computer generated circles and squares)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$9,030](https://www.phillips.com/detail/gabriel-orozco/232823)\n\n[\\\\\n\\\\\n172\\\\\n\\\\\nApril Gornik\\\\\n\\\\\nCloud Wall\\\\\n\\\\\nEstimate\\\\\n\\\\\n$4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$14,190](https://www.phillips.com/detail/april-gornik/229553)\n\n[\\\\\n\\\\\n173\\\\\n\\\\\nSol LeWitt\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$7,095](https://www.phillips.com/detail/sol-lewitt/232588)\n\n[\\\\\n\\\\\n174\\\\\n\\\\\nSherrie Levine\\\\\n\\\\\nAfter Man Ray\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$6,450](https://www.phillips.com/detail/sherrie-levine/230690)\n\n[\\\\\n\\\\\n175\\\\\n\\\\\nJames Bishop\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$9,030](https://www.phillips.com/detail/james-bishop/232821)\n\n[\\\\\n\\\\\n176\\\\\n\\\\\nDonald Baechler\\\\\n\\\\\nTwo works: (i) Aspen I; (ii) Aspen II\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$12,255](https://www.phillips.com/detail/donald-baechler/229552)\n\n[\\\\\n\\\\\n177\\\\\n\\\\\nGeorge Condo\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$8,000–12,000](https://www.phillips.com/detail/george-condo/231618)\n\n[\\\\\n\\\\\n178\\\\\n\\\\\nGeorge Condo\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$8,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$12,900](https://www.phillips.com/detail/george-condo/231619)\n\n[\\\\\n\\\\\n179\\\\\n\\\\\nErnie Barnes\\\\\n\\\\\nTwo works: (i) Study Sketch; (ii) Study Sketch II\\\\\n\\\\\nEstimate\\\\\n\\\\\n$18,000–25,000](https://www.phillips.com/detail/ernie-barnes/234181)\n\n[\\\\\n\\\\\n180\\\\\n\\\\\nWilliam N. Copley\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$7,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$7,095](https://www.phillips.com/detail/william-n.-copley/232123)\n\n[\\\\\nNo Reserve\\\\\n181\\\\\n\\\\\nSuzanne Jackson\\\\\n\\\\\nLife Study\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,806](https://www.phillips.com/detail/suzanne-jackson/227773)\n\n[\\\\\n\\\\\n182\\\\\n\\\\\nPat Steir\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$3,870](https://www.phillips.com/detail/pat-steir/230689)\n\n[\\\\\n\\\\\n183\\\\\n\\\\\nTheodoros Stamos\\\\\n\\\\\nInfinity Field, Lefkada Series #II\\\\\n\\\\\nEstimate\\\\\n\\\\\n$7,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$14,190](https://www.phillips.com/detail/theodoros-stamos/235329)\n\n[\\\\\n\\\\\n184\\\\\n\\\\\nPaul Jenkins\\\\\n\\\\\nTwo works: (i) Phenomena for Herman; (ii) Phenomena Black is Magic\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$10,965](https://www.phillips.com/detail/paul-jenkins/230257)\n\n[\\\\\n\\\\\n185\\\\\n\\\\\nNorman Bluhm\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$7,000–10,000](https://www.phillips.com/detail/norman-bluhm/230065)\n\n[\\\\\n\\\\\n186\\\\\n\\\\\nConrad Marca-Relli\\\\\n\\\\\nStanding Figure\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000](https://www.phillips.com/detail/conrad-marca-relli/235328)\n\n[\\\\\n\\\\\n187\\\\\n\\\\\nGino Severini\\\\\n\\\\\nStudio per natura morta con violino\\\\\n\\\\\nEstimate\\\\\n\\\\\n$7,000–10,000](https://www.phillips.com/detail/gino-severini/235330)\n\n[\\\\\n\\\\\n188\\\\\n\\\\\nAmerican Spirit\\\\\n\\\\\nDavid Smith\\\\\n\\\\\nVoltri\\\\\n\\\\\nEstimate\\\\\n\\\\\n$8,000–12,000](https://www.phillips.com/detail/david-smith/225349)\n\n[\\\\\n\\\\\n189\\\\\n\\\\\nAmerican Spirit\\\\\n\\\\\nEdmund Lewandowski\\\\\n\\\\\nAmish Barns\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$7,095](https://www.phillips.com/detail/edmund-lewandowski/226210)\n\n[\\\\\nNo Reserve\\\\\n190\\\\\n\\\\\nAmerican Spirit\\\\\n\\\\\nJohn Marin\\\\\n\\\\\nA Bit of Stonington\\\\\n\\\\\nEstimate\\\\\n\\\\\n$4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$9,675](https://www.phillips.com/detail/john-marin/225361)\n\n[\\\\\n\\\\\n191\\\\\n\\\\\nAmerican Spirit\\\\\n\\\\\nThomas Hart Benton\\\\\n\\\\\nLoading Logs\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$10,320](https://www.phillips.com/detail/thomas-hart-benton/225347)\n\n[\\\\\nNo Reserve\\\\\n192\\\\\n\\\\\nAmerican Spirit\\\\\n\\\\\nGeorge Inness\\\\\n\\\\\nLandscape\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$7,740](https://www.phillips.com/detail/george-inness/226204)\n\n[\\\\\nNo Reserve\\\\\n193\\\\\n\\\\\nAmerican Spirit\\\\\n\\\\\nGeorge Inness\\\\\n\\\\\nPine-Groves of Barberini Villa\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$14,190](https://www.phillips.com/detail/george-inness/225526)\n\n[\\\\\n\\\\\n194\\\\\n\\\\\nAmerican Spirit\\\\\n\\\\\nThomas Eakins\\\\\n\\\\\nStudy for Cowboys in the Badlands\\\\\n\\\\\nEstimate\\\\\n\\\\\n$8,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$10,320](https://www.phillips.com/detail/thomas-eakins/226198)\n\n[\\\\\n\\\\\n195\\\\\n\\\\\nAmerican Spirit\\\\\n\\\\\nThomas Eakins\\\\\n\\\\\nLandscape\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–15,000](https://www.phillips.com/detail/thomas-eakins/226197)\n\n[\\\\\n\\\\\n196\\\\\n\\\\\nAmerican Spirit\\\\\n\\\\\nAlfred Henry Maurer\\\\\n\\\\\nField of Flowers\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$8,385](https://www.phillips.com/detail/alfred-henry-maurer/226211)\n\n[\\\\\nNo Reserve\\\\\n197\\\\\n\\\\\nAmerican Spirit\\\\\n\\\\\nAlfred Henry Maurer\\\\\n\\\\\nA Spanish Woman (Dolores)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$7,740](https://www.phillips.com/detail/alfred-henry-maurer/225365)\n\n[\\\\\n\\\\\n198\\\\\n\\\\\nAmerican Spirit\\\\\n\\\\\nTheodore Robinson\\\\\n\\\\\nTorso of a Man\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$7,095](https://www.phillips.com/detail/theodore-robinson/226217)\n\n[\\\\\nNo Reserve\\\\\n199\\\\\n\\\\\nAmerican Spirit\\\\\n\\\\\nRobert Henri\\\\\n\\\\\nStorm Over Green Trees\\\\\n\\\\\nEstimate\\\\\n\\\\\n$3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$12,255](https://www.phillips.com/detail/robert-henri/225359)\n\n[\\\\\nNo Reserve\\\\\n200\\\\\n\\\\\nAmerican Spirit\\\\\n\\\\\nThomas Doughty\\\\\n\\\\\nView from the Seat of R. Gilmore, Esq\\\\\n\\\\\nEstimate\\\\\n\\\\\n$2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$33,540](https://www.phillips.com/detail/thomas-doughty/225523)\n\n[\\\\\nNo Reserve\\\\\n201\\\\\n\\\\\nAmerican Spirit\\\\\n\\\\\nWilliam Trost Richards\\\\\n\\\\\nCliffs off Rhode Island\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$10,320](https://www.phillips.com/detail/william-trost-richards/225368)\n\n[\\\\\nNo Reserve\\\\\n202\\\\\n\\\\\nAmerican Spirit\\\\\n\\\\\nRalph Albert Blakelock\\\\\n\\\\\nUntitled (Landscape, Sunset)\\\\\n\\\\\nEstimate\\\\\n\\\\\n$1,000–1,500\\\\\n\\\\\nSold For\\\\\n\\\\\n$45,150](https://www.phillips.com/detail/ralph-albert-blakelock/226192)\n\n[\\\\\n\\\\\n203\\\\\n\\\\\nAmerican Spirit\\\\\n\\\\\nHenry Billings\\\\\n\\\\\nTool and Flower\\\\\n\\\\\nEstimate\\\\\n\\\\\n$5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$3,870](https://www.phillips.com/detail/henry-billings/225521)\n\n[\\\\\nNo Reserve\\\\\n204\\\\\n\\\\\nAmerican Spirit\\\\\n\\\\\nThomas Anshutz\\\\\n\\\\\n#5\\\\\n\\\\\nEstimate\\\\\n\\\\\n$1,500–2,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$2,580](https://www.phillips.com/detail/thomas-anshutz/226187)\n\n[\\\\\nNo Reserve\\\\\n205\\\\\n\\\\\nAmerican Spirit\\\\\n\\\\\nLeland Bell\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n$1,000–1,500\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,935](https://www.phillips.com/detail/leland-bell/226189)\n\n[\\\\\nNo Reserve\\\\\n206\\\\\n\\\\\nAmerican Spirit\\\\\n\\\\\nArnold Friedman\\\\\n\\\\\nThe Quarry\\\\\n\\\\\nEstimate\\\\\n\\\\\n$1,000–1,500\\\\\n\\\\\nSold For\\\\\n\\\\\n$7,740](https://www.phillips.com/detail/arnold-friedman/225356)\n\n### About us\n\n- [Our history](https://www.phillips.com/about)\n- [Our team](https://www.phillips.com/team)\n- [Locations](https://www.phillips.com/location)\n- [Press](https://www.phillips.com/press)\n- [Careers](https://www.phillips.com/careers)\n- [Site map](https://www.phillips.com/sitemap)\n\n### Our services\n\n- [How to buy](https://www.phillips.com/buysell/buy)\n- [How to sell](https://www.phillips.com/buysell/sell)\n- [Private services](https://www.phillips.com/buysell/private)\n- [Professional & advisor services](https://www.phillips.com/professional-advisor-services)\n- [Fiduciary services](https://www.phillips.com/fiduciaryservices)\n\n### Policies\n\n- [Privacy policy](https://www.phillips.com/about/privacy)\n- [Cookie policy](https://www.phillips.com/about/cookiepolicy)\n- [Modern slavery policy](https://www.phillips.com/about/modernslaverypolicy)\n\nAbout us\n\nOur services\n\nPolicies\n\n### Never miss a moment\n\nSubscribe to our newsletter\n\n- [insta](https://www.instagram.com/phillipsauction/ \"insta\")\n- [linkedin](https://www.linkedin.com/company/phillips/ \"linkedin\")\n- [wechat](https://weixin.qq.com/r/qDuLk0-EKhJVrQvw9266 \"wechat\")\n- [red](https://www.xiaohongshu.com/user/profile/611e10a8000000000101ddf7 \"red\")\n- [facebook](https://www.facebook.com/phillipsauction/ \"facebook\")\n\n[logoLink](https://www.phillips.com/) © 2026 Phillips Auctioneers, LLC", | |
| 18 | + "department": { | |
| 19 | + "filter": "contemporary art", | |
| 20 | + "category": "contemporary_art" | |
| 21 | + } | |
| 22 | + } | |
| 23 | + }, | |
| 24 | + "expect": { | |
| 25 | + "minCount": 10, | |
| 26 | + "kinds": [ | |
| 27 | + "sale", | |
| 28 | + "auction_lot" | |
| 29 | + ], | |
| 30 | + "requiredFields": [ | |
| 31 | + "attributes.brand", | |
| 32 | + "rawTitle" | |
| 33 | + ] | |
| 34 | + }, | |
| 35 | + "note": "Captured live via Firecrawl from phillips.com", | |
| 36 | + "capturedAt": "2026-09-07T06:28:39.397Z" | |
| 37 | +} | |
| \ No newline at end of file | ||
added
data/fixtures/phillips-art/sale-UK010626.json
+37 −0
@@ -0,0 +1,37 @@ | ||
| 1 | +{ | |
| 2 | + "raw": { | |
| 3 | + "url": "https://www.phillips.com/auction/UK010626", | |
| 4 | + "externalId": "UK010626", | |
| 5 | + "kind": "sale", | |
| 6 | + "engine": "firecrawl", | |
| 7 | + "fetchedAt": "2026-09-07T06:28:38.834Z", | |
| 8 | + "payload": { | |
| 9 | + "kind": "auction_results", | |
| 10 | + "url": "https://www.phillips.com/auction/UK010626", | |
| 11 | + "saleNumber": "UK010626", | |
| 12 | + "title": "Modern & Contemporary Art: Online Auction, London", | |
| 13 | + "location": "LONDON", | |
| 14 | + "startDate": "2026-06-23T12:00:00+01:00", | |
| 15 | + "endDate": "2026-07-07T14:00:00+01:00", | |
| 16 | + "lotCount": 176, | |
| 17 | + "markdown": "## Search\n\nSearch\n\nAuctions\n\n- [Calendar](https://www.phillips.com/calendar/upcoming)\n\nDepartments\n\n- [Exhibitions](https://www.phillips.com/exhibitions)\n- [Perpetual](https://perpetual.phillips.com/)\n- [Dropshop](https://dropshop.phillips.com/)\n- [Editorial](https://www.phillips.com/editorial)\n\nClose\n\nOnline Auction\n\n# Modern & Contemporary Art: Online Auction, London\n\nLondon\n\nConcludedJul 7 2026\n\nBrowse Upcoming Sales[View Calendar](https://www.phillips.com/calendar)\n\n\n\nOverviewBrowse lots\n\nFilters\n\nLot Navigation\n\nShow Lot123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176\n\n## 176 Lots\n\nLots close independently at 1-minute intervals.\n\n[\\\\\n\\\\\n1\\\\\n\\\\\nDing Shilun\\\\\n\\\\\nD47-Gaze\\\\\n\\\\\nEstimate\\\\\n\\\\\n£4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£5,160](https://www.phillips.com/detail/ding-shilun/235439)\n\n[\\\\\n\\\\\n2\\\\\n\\\\\nWilliam Brickel\\\\\n\\\\\nTwo Figures, Blue Box\\\\\n\\\\\nEstimate\\\\\n\\\\\n£8,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£8,385](https://www.phillips.com/detail/william-brickel/233851)\n\n[\\\\\n\\\\\n3\\\\\n\\\\\nCaroline Walker\\\\\n\\\\\nCoronation\\\\\n\\\\\nEstimate\\\\\n\\\\\n£10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£14,190](https://www.phillips.com/detail/caroline-walker/235866)\n\n[\\\\\n\\\\\n4\\\\\n\\\\\nCelia Paul\\\\\n\\\\\nMy Mother and the Window\\\\\n\\\\\nEstimate\\\\\n\\\\\n£15,000–20,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£18,060](https://www.phillips.com/detail/celia-paul/235289)\n\n[\\\\\n\\\\\n5\\\\\n\\\\\nRyan Mosley\\\\\n\\\\\nA King's Return\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£3,870](https://www.phillips.com/detail/ryan-mosley/232356)\n\n[\\\\\n\\\\\n6\\\\\n\\\\\nGeorg Wilson\\\\\n\\\\\nGoblin Burrowed\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000](https://www.phillips.com/detail/georg-wilson/233210)\n\n[\\\\\n\\\\\n7\\\\\n\\\\\nAnastasia Bay\\\\\n\\\\\nMoonwalk\\\\\n\\\\\nEstimate\\\\\n\\\\\n£6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£8,385](https://www.phillips.com/detail/anastasia-bay/234790)\n\n[\\\\\n\\\\\n8\\\\\n\\\\\nBrice Guilbert\\\\\n\\\\\nFournez\\\\\n\\\\\nEstimate\\\\\n\\\\\n£10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£20,640](https://www.phillips.com/detail/brice-guilbert/235379)\n\n[\\\\\n\\\\\n9\\\\\n\\\\\nGeorge Condo\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n£6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£9,030](https://www.phillips.com/detail/george-condo/233170)\n\n[\\\\\n\\\\\n10\\\\\n\\\\\nSterling Ruby\\\\\n\\\\\nAlabaster SR11-55\\\\\n\\\\\nEstimate\\\\\n\\\\\n£15,000–20,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£28,380](https://www.phillips.com/detail/sterling-ruby/234685)\n\n[\\\\\n\\\\\n11\\\\\n\\\\\nSigalit Landau\\\\\n\\\\\nGrand Madonna and Child\\\\\n\\\\\nEstimate\\\\\n\\\\\n£20,000–30,000](https://www.phillips.com/detail/sigalit-landau/234280)\n\n[\\\\\n\\\\\n12\\\\\n\\\\\nJames Turrell\\\\\n\\\\\nThe Irish Sky Garden, Overall site plan (night)\\\\\n\\\\\nEstimate\\\\\n\\\\\n£6,000–8,000](https://www.phillips.com/detail/james-turrell/234690)\n\n[\\\\\n\\\\\n13\\\\\n\\\\\nJordan Wolfson\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n£15,000–25,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£15,480](https://www.phillips.com/detail/jordan-wolfson/231196)\n\n[\\\\\n\\\\\n14\\\\\n\\\\\nMark Manders\\\\\n\\\\\nUntitled (Fragment Landscape)\\\\\n\\\\\nEstimate\\\\\n\\\\\n£15,000–20,000](https://www.phillips.com/detail/mark-manders/231053)\n\n[\\\\\n\\\\\n15\\\\\n\\\\\nZhang Yexing\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n£10,000–15,000](https://www.phillips.com/detail/zhang-yexing/231042)\n\n[\\\\\n\\\\\n16\\\\\n\\\\\nKatja Strunz\\\\\n\\\\\nExtensions III\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£4,902](https://www.phillips.com/detail/katja-strunz/231048)\n\n[\\\\\n\\\\\n17\\\\\n\\\\\nMichael Bauer\\\\\n\\\\\nRed Cave and Blonde\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£11,610](https://www.phillips.com/detail/michael-bauer/233110)\n\n[\\\\\n\\\\\n18\\\\\n\\\\\nEva Beresin\\\\\n\\\\\nCrocodile Tears\\\\\n\\\\\nEstimate\\\\\n\\\\\n£8,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£5,418](https://www.phillips.com/detail/eva-beresin/234784)\n\n[\\\\\n\\\\\n19\\\\\n\\\\\nRainer Fetting\\\\\n\\\\\nCNN\\\\\n\\\\\nEstimate\\\\\n\\\\\n£10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£16,770](https://www.phillips.com/detail/rainer-fetting/234687)\n\n[\\\\\n\\\\\n20\\\\\n\\\\\nWerner Büttner\\\\\n\\\\\nUntitled \\[Bilanzpromenade\\]\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£7,740](https://www.phillips.com/detail/werner-b%C3%BCttner/227692)\n\n[\\\\\n\\\\\n21\\\\\n\\\\\nMatthias Weischer\\\\\n\\\\\nDame\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£5,805](https://www.phillips.com/detail/matthias-weischer/231622)\n\n[\\\\\n\\\\\n22\\\\\n\\\\\nJörg Immendorff\\\\\n\\\\\nSpring of Theory (Immendorff's Favorite Poems)\\\\\n\\\\\nEstimate\\\\\n\\\\\n£10,000–15,000](https://www.phillips.com/detail/j%C3%B6rg-immendorff/231056)\n\n[\\\\\n\\\\\n23\\\\\n\\\\\nTomma Abts\\\\\n\\\\\nUntitled #21\\\\\n\\\\\nEstimate\\\\\n\\\\\n£4,000–6,000](https://www.phillips.com/detail/tomma-abts/231065)\n\n[\\\\\n\\\\\n24\\\\\n\\\\\nTomma Abts\\\\\n\\\\\nTwo works: (i) Untitled; (ii) eeeee\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000](https://www.phillips.com/detail/tomma-abts/231063)\n\n[\\\\\n\\\\\n25\\\\\n\\\\\nJean Fautrier\\\\\n\\\\\nComposition\\\\\n\\\\\nEstimate\\\\\n\\\\\n£7,000–10,000](https://www.phillips.com/detail/jean-fautrier/234935)\n\n[\\\\\n\\\\\n26\\\\\n\\\\\nCarol Bove\\\\\n\\\\\nSmall Celeste\\\\\n\\\\\nEstimate\\\\\n\\\\\n£7,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£7,740](https://www.phillips.com/detail/carol-bove/233019)\n\n[\\\\\n\\\\\n27\\\\\n\\\\\nRebecca Warren\\\\\n\\\\\nCologne\\\\\n\\\\\nEstimate\\\\\n\\\\\n£6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£7,740](https://www.phillips.com/detail/rebecca-warren/232132)\n\n[\\\\\n\\\\\n28\\\\\n\\\\\nDaniel Crews-Chubb\\\\\n\\\\\nZumbi and Belfie (split)\\\\\n\\\\\nEstimate\\\\\n\\\\\n£4,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£7,740](https://www.phillips.com/detail/daniel-crews-chubb/233017)\n\n[\\\\\n\\\\\n29\\\\\n\\\\\nRose Wylie\\\\\n\\\\\nTwo works: (i-ii) Untitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n£5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£5,805](https://www.phillips.com/detail/rose-wylie/236446)\n\n[\\\\\n\\\\\n30\\\\\n\\\\\nRose Wylie\\\\\n\\\\\nZebra and Horse\\\\\n\\\\\nEstimate\\\\\n\\\\\n£6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£10,320](https://www.phillips.com/detail/rose-wylie/236411)\n\n[\\\\\n\\\\\n31\\\\\n\\\\\nTony Cragg\\\\\n\\\\\nStreet Life\\\\\n\\\\\nEstimate\\\\\n\\\\\n£5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£7,095](https://www.phillips.com/detail/tony-cragg/229855)\n\n[\\\\\nNo Reserve\\\\\n32\\\\\n\\\\\nDamien Hirst\\\\\n\\\\\nThe Currency Unique Print (H11-38)\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£7,095](https://www.phillips.com/detail/damien-hirst/236413)\n\n[\\\\\n\\\\\n33\\\\\n\\\\\nDamien Hirst & Michael Joo\\\\\n\\\\\nSkull drawing 2 (untitled)\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£9,675](https://www.phillips.com/detail/damien-hirst-&-michael-joo/235570)\n\n[\\\\\n\\\\\n34\\\\\n\\\\\nDamien Hirst\\\\\n\\\\\nTwo works: (i) Sketch for pendant; (ii) Diamond pendant necklace\\\\\n\\\\\nEstimate\\\\\n\\\\\n£10,000–15,000](https://www.phillips.com/detail/damien-hirst/235511)\n\n[\\\\\n\\\\\n35\\\\\n\\\\\nTed Pim\\\\\n\\\\\nSixth Digit\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,500–2,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£4,128](https://www.phillips.com/detail/ted-pim/225599)\n\n[\\\\\n\\\\\n36\\\\\n\\\\\nNeil Stokoe\\\\\n\\\\\nLying Figure\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000](https://www.phillips.com/detail/neil-stokoe/235701)\n\n[\\\\\n\\\\\n37\\\\\n\\\\\nJosé Maria Sicilia\\\\\n\\\\\nEn Flor\\\\\n\\\\\nEstimate\\\\\n\\\\\n£8,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£14,190](https://www.phillips.com/detail/jos%C3%A9-maria-sicilia/234689)\n\n[\\\\\n\\\\\n38\\\\\n\\\\\nCindy Phenix\\\\\n\\\\\nOwn Destruction\\\\\n\\\\\nEstimate\\\\\n\\\\\n£8,000–12,000](https://www.phillips.com/detail/cindy-phenix/235967)\n\n[\\\\\n\\\\\n39\\\\\n\\\\\nJoy Labinjo\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n£8,000–12,000](https://www.phillips.com/detail/joy-labinjo/234880)\n\n[\\\\\n\\\\\n40\\\\\n\\\\\nNick Goss\\\\\n\\\\\nCommute study\\\\\n\\\\\nEstimate\\\\\n\\\\\n£800–1,200\\\\\n\\\\\nSold For\\\\\n\\\\\n£516](https://www.phillips.com/detail/nick-goss/231621)\n\n[\\\\\n\\\\\n41\\\\\n\\\\\nRyan Mosley\\\\\n\\\\\nA Turncoat's Lot\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£5,805](https://www.phillips.com/detail/ryan-mosley/233111)\n\n[\\\\\nNo Reserve\\\\\n42\\\\\n\\\\\nDidier William\\\\\n\\\\\nMonkonpe\\\\\n\\\\\nEstimate\\\\\n\\\\\n£12,000–18,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£9,030](https://www.phillips.com/detail/didier-william/234817)\n\n[\\\\\n\\\\\n43\\\\\n\\\\\nFarah Atassi\\\\\n\\\\\nSeated Woman\\\\\n\\\\\nEstimate\\\\\n\\\\\n£12,000–18,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£14,190](https://www.phillips.com/detail/farah-atassi/220807)\n\n[\\\\\n\\\\\n44\\\\\n\\\\\nKoen van den Broek\\\\\n\\\\\nCohesion\\\\\n\\\\\nEstimate\\\\\n\\\\\n£8,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£6,450](https://www.phillips.com/detail/koen-van-den-broek/227693)\n\n[\\\\\n\\\\\n45\\\\\n\\\\\nJulian Opie\\\\\n\\\\\nGreat Eastern St. 1.\\\\\n\\\\\nEstimate\\\\\n\\\\\n£6,000–8,000](https://www.phillips.com/detail/julian-opie/234390)\n\n[\\\\\nNo Reserve\\\\\n46\\\\\n\\\\\nAna Benaroya\\\\\n\\\\\nSoftly to Me\\\\\n\\\\\nEstimate\\\\\n\\\\\n£6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£8,385](https://www.phillips.com/detail/ana-benaroya/234819)\n\n[\\\\\nNo Reserve\\\\\n47\\\\\n\\\\\nAustin Lee\\\\\n\\\\\nWith Birds\\\\\n\\\\\nEstimate\\\\\n\\\\\n£5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£3,354](https://www.phillips.com/detail/austin-lee/234822)\n\n[\\\\\nNo Reserve\\\\\n48\\\\\n\\\\\nSam Jablon\\\\\n\\\\\nGlamorous Voids\\\\\n\\\\\nEstimate\\\\\n\\\\\n£5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£4,902](https://www.phillips.com/detail/sam-jablon/234821)\n\n[\\\\\n\\\\\n49\\\\\n\\\\\nJordy Kerwick\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n£8,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£7,740](https://www.phillips.com/detail/jordy-kerwick/234814)\n\n[\\\\\n\\\\\n50\\\\\n\\\\\nSzabolcs Bozó\\\\\n\\\\\nI Got A Name\\\\\n\\\\\nEstimate\\\\\n\\\\\n£8,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£9,030](https://www.phillips.com/detail/szabolcs-boz%C3%B3/234785)\n\n[\\\\\n\\\\\n51\\\\\n\\\\\nMadeleine Bialke\\\\\n\\\\\nTitans\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£3,096](https://www.phillips.com/detail/madeleine-bialke/230318)\n\n[\\\\\nNo Reserve\\\\\n52\\\\\n\\\\\nLaurens Legiers\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£2,064](https://www.phillips.com/detail/laurens-legiers/236087)\n\n[\\\\\n\\\\\n53\\\\\n\\\\\nAlicia Adamerovich\\\\\n\\\\\nAbsolute Position\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£3,870](https://www.phillips.com/detail/alicia-adamerovich/233197)\n\n[\\\\\n\\\\\n54\\\\\n\\\\\nAngela Heisch\\\\\n\\\\\nThrowing It Away Warm\\\\\n\\\\\nEstimate\\\\\n\\\\\n£4,000–6,000](https://www.phillips.com/detail/angela-heisch/233198)\n\n[\\\\\n\\\\\n55\\\\\n\\\\\nPhilip Jackson\\\\\n\\\\\nMistress of the Ca' d'Oro\\\\\n\\\\\nEstimate\\\\\n\\\\\n£10,000–15,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£10,320](https://www.phillips.com/detail/philip-jackson/235512)\n\n[\\\\\n\\\\\n56\\\\\n\\\\\nBernard Meadows\\\\\n\\\\\nSpring 'Seasons' Cock\\\\\n\\\\\nEstimate\\\\\n\\\\\n£5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£11,610](https://www.phillips.com/detail/bernard-meadows/220324)\n\n[\\\\\n\\\\\n57\\\\\n\\\\\nJonathan Meese\\\\\n\\\\\nZeus\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£9,675](https://www.phillips.com/detail/jonathan-meese/233112)\n\n[\\\\\n\\\\\n58\\\\\n\\\\\nEva Rothschild\\\\\n\\\\\nNew Past\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000](https://www.phillips.com/detail/eva-rothschild/231052)\n\n[\\\\\n\\\\\n59\\\\\n\\\\\nAi Weiwei\\\\\n\\\\\nOn Attersee\\\\\n\\\\\nEstimate\\\\\n\\\\\n£7,000–10,000](https://www.phillips.com/detail/ai-weiwei/232799)\n\n[\\\\\n\\\\\n60\\\\\n\\\\\nRichard Pettibone\\\\\n\\\\\nPablo Picasso - Etching from the \"347 Series\" - #312\\\\\n\\\\\nEstimate\\\\\n\\\\\n£5,000–7,000](https://www.phillips.com/detail/richard-pettibone/229277)\n\n[\\\\\n\\\\\n61\\\\\n\\\\\nRaymond Pettibon\\\\\n\\\\\nUntitled (SOMEBODY? ANYBODY?!)\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000](https://www.phillips.com/detail/raymond-pettibon/234165)\n\n[\\\\\n\\\\\n62\\\\\n\\\\\nJosh Smith\\\\\n\\\\\nUntitled No. 2\\\\\n\\\\\nEstimate\\\\\n\\\\\n£5,000–7,000](https://www.phillips.com/detail/josh-smith/231050)\n\n[\\\\\nNo Reserve\\\\\n63\\\\\n\\\\\nDavid Salle\\\\\n\\\\\nLife 81\\\\\n\\\\\nEstimate\\\\\n\\\\\n£4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£3,612](https://www.phillips.com/detail/david-salle/229043)\n\n[\\\\\n\\\\\n64\\\\\n\\\\\nBrice Guilbert\\\\\n\\\\\nFournez\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,500–2,500\\\\\n\\\\\nSold For\\\\\n\\\\\n£4,515](https://www.phillips.com/detail/brice-guilbert/231933)\n\n[\\\\\n\\\\\n65\\\\\n\\\\\nPaola Pivi\\\\\n\\\\\nDo You Know Why Italy Is Shaped Like a Boot? Because So Much Shit Couldn't Fit in a Shoe\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£5,160](https://www.phillips.com/detail/paola-pivi/235577)\n\n[\\\\\n\\\\\n66\\\\\n\\\\\nDonald Sultan\\\\\n\\\\\nBlack Eggs April 20 1988\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000](https://www.phillips.com/detail/donald-sultan/231707)\n\n[\\\\\nNo Reserve\\\\\n67\\\\\n\\\\\nRobert Longo\\\\\n\\\\\nStudy of Uzi\\\\\n\\\\\nEstimate\\\\\n\\\\\n£4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£7,740](https://www.phillips.com/detail/robert-longo/233692)\n\n[\\\\\n\\\\\n68\\\\\n\\\\\nJR\\\\\n\\\\\n28 Millimeters, Portrait of a Generation Ladj ly\\\\\n\\\\\nEstimate\\\\\n\\\\\n£8,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£25,800](https://www.phillips.com/detail/jr/235387)\n\n[\\\\\n\\\\\n69\\\\\n\\\\\nAndy Warhol\\\\\n\\\\\nMale Strippers\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£4,128](https://www.phillips.com/detail/andy-warhol/234332)\n\n[\\\\\n\\\\\n70\\\\\n\\\\\nChris Smith\\\\\n\\\\\nAli and The Beatles\\\\\n\\\\\nEstimate\\\\\n\\\\\n£5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£12,900](https://www.phillips.com/detail/chris-smith/231440)\n\n[\\\\\n\\\\\n71\\\\\n\\\\\nCerith Wyn Evans\\\\\n\\\\\nUntitled (\"Portrait of Greatness\" after Y. Karsh)\\\\\n\\\\\nEstimate\\\\\n\\\\\n£5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£9,030](https://www.phillips.com/detail/cerith-wyn-evans/235198)\n\n[\\\\\n\\\\\n72\\\\\n\\\\\nRichard Mosse\\\\\n\\\\\nCome Out (1966) II\\\\\n\\\\\nEstimate\\\\\n\\\\\n£12,000–18,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£19,350](https://www.phillips.com/detail/richard-mosse/234440)\n\n[\\\\\n\\\\\n73\\\\\n\\\\\nNick Brandt\\\\\n\\\\\nPortrait of Elephant in Dust, Amboseli\\\\\n\\\\\nEstimate\\\\\n\\\\\n£15,000–25,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£18,060](https://www.phillips.com/detail/nick-brandt/231768)\n\n[\\\\\n\\\\\n74\\\\\n\\\\\nPrince Gyasi\\\\\n\\\\\nProtection II\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000](https://www.phillips.com/detail/prince-gyasi/230695)\n\n[\\\\\n\\\\\n75\\\\\n\\\\\nErwin Wurm\\\\\n\\\\\nMontaigne & Descartes\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£6,450](https://www.phillips.com/detail/erwin-wurm/231043)\n\n[\\\\\n\\\\\n76\\\\\n\\\\\nCandida Höfer\\\\\n\\\\\nF. Hoffmann-La Roche AG Basel II\\\\\n\\\\\nEstimate\\\\\n\\\\\n£7,000–9,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£6,450](https://www.phillips.com/detail/candida-h%C3%B6fer/231057)\n\n[\\\\\n\\\\\n77\\\\\n\\\\\nNan Goldin\\\\\n\\\\\nPeter Hujar and Ethyl Eichelberger at Area. NYC. 1985\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£18,060](https://www.phillips.com/detail/nan-goldin/231058)\n\n[\\\\\n\\\\\n78\\\\\n\\\\\nNan Goldin\\\\\n\\\\\nBrian in hotel room with three beds, Merida, Mexico. 1982\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£12,255](https://www.phillips.com/detail/nan-goldin/231060)\n\n[\\\\\n\\\\\n79\\\\\n\\\\\nNan Goldin\\\\\n\\\\\nWriting on my wall, Bowery. NYC. 1988\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£9,030](https://www.phillips.com/detail/nan-goldin/231062)\n\n[\\\\\n\\\\\n80\\\\\n\\\\\nDarren Almond\\\\\n\\\\\nDawn and Dusk\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000](https://www.phillips.com/detail/darren-almond/228835)\n\n[\\\\\n\\\\\n81\\\\\n\\\\\nFrank Thiel\\\\\n\\\\\nStadt 10/05 (Berlin)\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,500–3,500](https://www.phillips.com/detail/frank-thiel/231943)\n\n[\\\\\n\\\\\n82\\\\\n\\\\\nFrank Thiel\\\\\n\\\\\nStadt 10/01 (Berlin)\\\\\n\\\\\nEstimate\\\\\n\\\\\n£4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£4,902](https://www.phillips.com/detail/frank-thiel/234568)\n\n[\\\\\n\\\\\n83\\\\\n\\\\\nFrank Thiel\\\\\n\\\\\nStadt 10/06/A (Berlin)\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,500–3,500](https://www.phillips.com/detail/frank-thiel/231942)\n\n[\\\\\n\\\\\n84\\\\\n\\\\\nDavid Goldblatt\\\\\n\\\\\nIncomplete houses, part of a stalled municipal development of 1,000 houses, Lady Grey, Eastern Cape\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£7,095](https://www.phillips.com/detail/david-goldblatt/231938)\n\n[\\\\\n\\\\\n85\\\\\n\\\\\nLaurie Simmons\\\\\n\\\\\nBlack Bathroom (April 16, 1997)\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£3,870](https://www.phillips.com/detail/laurie-simmons/231934)\n\n[\\\\\n\\\\\n86\\\\\n\\\\\nSantiago Sierra\\\\\n\\\\\nHouse in the Mud\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£2,580](https://www.phillips.com/detail/santiago-sierra/234570)\n\n[\\\\\n\\\\\n87\\\\\n\\\\\nOrlan\\\\\n\\\\\nThree works: (i) African Self-Hybridization Series, Mangbetu Woman Profile and Profile of Euro-Stéphanoise Woman; (ii) African Self-Hybridization Series, Three-Headed Ogoni Mask, Nigeria, with Mutant Face of Franco-European Woman; (iii) African Self-Hybridization Series, Fang initiation Group Mask, Gabon, with Face of Euro-Stéphanoise Woman\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000](https://www.phillips.com/detail/orlan/234569)\n\n[\\\\\n\\\\\n88\\\\\n\\\\\nMark Wallinger\\\\\n\\\\\nSleeper\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£4,515](https://www.phillips.com/detail/mark-wallinger/230222)\n\n[\\\\\n\\\\\n89\\\\\n\\\\\nHiro Ando\\\\\n\\\\\nSamuraiCat DiamondsStrass Black\\\\\n\\\\\nEstimate\\\\\n\\\\\n£6,000–8,000](https://www.phillips.com/detail/hiro-ando/234877)\n\n[\\\\\n\\\\\n90\\\\\n\\\\\nDaniel Arsham\\\\\n\\\\\nDarth Vader: Blue Calcite Crystallized Bust\\\\\n\\\\\nEstimate\\\\\n\\\\\n£7,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£19,350](https://www.phillips.com/detail/daniel-arsham/235233)\n\n[\\\\\n\\\\\n91\\\\\n\\\\\nPeter Collingwood\\\\\n\\\\\nMacrogauze M.49 NO.9\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£7,095](https://www.phillips.com/detail/peter-collingwood/233375)\n\n[\\\\\n\\\\\n92\\\\\n\\\\\nDiogo Pimentão\\\\\n\\\\\nStand Turn (monochrome)\\\\\n\\\\\nEstimate\\\\\n\\\\\n£5,000–7,000](https://www.phillips.com/detail/diogo-piment%C3%A3o/234281)\n\n[\\\\\n\\\\\n93\\\\\n\\\\\nBryan Hunt\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n£4,000–6,000](https://www.phillips.com/detail/bryan-hunt/230098)\n\n[\\\\\n\\\\\n94\\\\\n\\\\\nLiam Gillick\\\\\n\\\\\nElevation Screen\\\\\n\\\\\nEstimate\\\\\n\\\\\n£4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£3,612](https://www.phillips.com/detail/liam-gillick/234174)\n\n[\\\\\nNo Reserve\\\\\n95\\\\\n\\\\\nValerie Snobeck\\\\\n\\\\\nTowards Reverse Movements\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,000–1,500\\\\\n\\\\\nSold For\\\\\n\\\\\n£1,548](https://www.phillips.com/detail/valerie-snobeck/231197)\n\n[\\\\\n\\\\\n96\\\\\n\\\\\nWalead Beshty\\\\\n\\\\\nFour Magnet, Three Color Curl (CMY: Irvine, California, January 3, 2010, Fujicolor Crystal Archive Super Type C, Em. No. 165-021, 01610)\\\\\n\\\\\nEstimate\\\\\n\\\\\n£5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£11,610](https://www.phillips.com/detail/walead-beshty/233208)\n\n[\\\\\nNo Reserve\\\\\n97\\\\\n\\\\\nJosh Smith\\\\\n\\\\\nUntitled (JS0626)\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£1,677](https://www.phillips.com/detail/josh-smith/231941)\n\n[\\\\\n\\\\\n98\\\\\n\\\\\nAllison Zuckerman\\\\\n\\\\\nPassenger\\\\\n\\\\\nEstimate\\\\\n\\\\\n£5,000–7,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£5,160](https://www.phillips.com/detail/allison-zuckerman/234791)\n\n[\\\\\nNo Reserve\\\\\n99\\\\\n\\\\\nCeleste Rapone\\\\\n\\\\\nSave Me\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£387](https://www.phillips.com/detail/celeste-rapone/231495)\n\n[\\\\\n\\\\\n100\\\\\n\\\\\nJordi Ribes\\\\\n\\\\\nPortrait with Green Hat\\\\\n\\\\\nEstimate\\\\\n\\\\\n£12,000–18,000](https://www.phillips.com/detail/jordi-ribes/235564)\n\n[\\\\\n\\\\\n101\\\\\n\\\\\nTania Marmolejo\\\\\n\\\\\nWrong Yet So Right\\\\\n\\\\\nEstimate\\\\\n\\\\\n£8,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£9,030](https://www.phillips.com/detail/tania-marmolejo/235230)\n\n[\\\\\n\\\\\n102\\\\\n\\\\\nAnastasia Bay\\\\\n\\\\\nFille au Miroir\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£7,740](https://www.phillips.com/detail/anastasia-bay/235237)\n\n[\\\\\nNo Reserve\\\\\n103\\\\\n\\\\\nBenjamin Spiers\\\\\n\\\\\nQuarry\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£1,677](https://www.phillips.com/detail/benjamin-spiers/234803)\n\n[\\\\\n\\\\\n104\\\\\n\\\\\nJonathan Wateridge\\\\\n\\\\\nTwo Figures\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£3,612](https://www.phillips.com/detail/jonathan-wateridge/233209)\n\n[\\\\\nNo Reserve\\\\\n105\\\\\n\\\\\nAnthony Cudahy\\\\\n\\\\\nTouch and demon\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£1,290](https://www.phillips.com/detail/anthony-cudahy/234807)\n\n[\\\\\nNo Reserve\\\\\n106\\\\\n\\\\\nLise Stoufflet\\\\\n\\\\\nOmbres III\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£452](https://www.phillips.com/detail/lise-stoufflet/234810)\n\n[\\\\\nNo Reserve\\\\\n107\\\\\n\\\\\nSimphiwe Ndzube\\\\\n\\\\\nThrough the Valley of Nameless Evil\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£3,354](https://www.phillips.com/detail/simphiwe-ndzube/234829)\n\n[\\\\\n\\\\\n108\\\\\n\\\\\nJon Key\\\\\n\\\\\nChosen Family No. 21\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£1,290](https://www.phillips.com/detail/jon-key/233211)\n\n[\\\\\n\\\\\n109\\\\\n\\\\\nTyler Ballon\\\\\n\\\\\nStrengthen the Brethren\\\\\n\\\\\nEstimate\\\\\n\\\\\n£4,000–6,000](https://www.phillips.com/detail/tyler-ballon/232275)\n\n[\\\\\n\\\\\n110\\\\\n\\\\\nAdjei Tawiah\\\\\n\\\\\nWhite Window\\\\\n\\\\\nEstimate\\\\\n\\\\\n£4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£3,870](https://www.phillips.com/detail/adjei-tawiah/236088)\n\n[\\\\\n\\\\\n111\\\\\n\\\\\nSzabolcs Bozó\\\\\n\\\\\nYellow\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,500–3,500\\\\\n\\\\\nSold For\\\\\n\\\\\n£2,838](https://www.phillips.com/detail/szabolcs-boz%C3%B3/234805)\n\n[\\\\\nNo Reserve\\\\\n112\\\\\n\\\\\nJordy Kerwick\\\\\n\\\\\nPaper 6\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,000–2,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£581](https://www.phillips.com/detail/jordy-kerwick/234800)\n\n[\\\\\nNo Reserve\\\\\n113\\\\\n\\\\\nTravis Fish\\\\\n\\\\\nGucci\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,000–1,500\\\\\n\\\\\nSold For\\\\\n\\\\\n£387](https://www.phillips.com/detail/travis-fish/233212)\n\n[\\\\\n\\\\\n114\\\\\n\\\\\nJonathan Chapline\\\\\n\\\\\nThree figures\\\\\n\\\\\nEstimate\\\\\n\\\\\n£4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£5,160](https://www.phillips.com/detail/jonathan-chapline/234792)\n\n[\\\\\n\\\\\n115\\\\\n\\\\\nAlex Foxton\\\\\n\\\\\nEnemy (Indigo)\\\\\n\\\\\nEstimate\\\\\n\\\\\n£4,000–6,000](https://www.phillips.com/detail/alex-foxton/234793)\n\n[\\\\\n\\\\\n116\\\\\n\\\\\nKon Trubkovich\\\\\n\\\\\nShadow Sonata\\\\\n\\\\\nEstimate\\\\\n\\\\\n£4,000–6,000](https://www.phillips.com/detail/kon-trubkovich/235382)\n\n[\\\\\nNo Reserve\\\\\n117\\\\\n\\\\\nYokoteen\\\\\n\\\\\nDrop\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£710](https://www.phillips.com/detail/yokoteen/234811)\n\n[\\\\\nNo Reserve\\\\\n118\\\\\n\\\\\nTony Toscani\\\\\n\\\\\nMorning Light\\\\\n\\\\\nEstimate\\\\\n\\\\\n£7,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£4,515](https://www.phillips.com/detail/tony-toscani/234788)\n\n[\\\\\nNo Reserve\\\\\n119\\\\\n\\\\\nLaure Mary-Couégnias\\\\\n\\\\\nNobody's Hope\\\\\n\\\\\nEstimate\\\\\n\\\\\n£800–1,200\\\\\n\\\\\nSold For\\\\\n\\\\\n£1,806](https://www.phillips.com/detail/laure-mary-cou%C3%A9gnias/235240)\n\n[\\\\\nNo Reserve\\\\\n120\\\\\n\\\\\nAryo Toh Djojo\\\\\n\\\\\nFashion Over Function\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,000–1,500\\\\\n\\\\\nSold For\\\\\n\\\\\n£710](https://www.phillips.com/detail/aryo-toh-djojo/234798)\n\n[\\\\\n\\\\\n121\\\\\n\\\\\nNKSIN\\\\\n\\\\\nNo.3: Revival III\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£2,064](https://www.phillips.com/detail/nksin/234801)\n\n[\\\\\n\\\\\n122\\\\\n\\\\\nStefan Rinck\\\\\n\\\\\nSpace Hippie Death\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£9,030](https://www.phillips.com/detail/stefan-rinck/234802)\n\n[\\\\\n\\\\\n123\\\\\n\\\\\nRobert Nava\\\\\n\\\\\nCrystal Ball Face Punch\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£5,805](https://www.phillips.com/detail/robert-nava/234809)\n\n[\\\\\nNo Reserve\\\\\n124\\\\\n\\\\\nJordy Kerwick\\\\\n\\\\\nPaper 10\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,500–2,500\\\\\n\\\\\nSold For\\\\\n\\\\\n£967](https://www.phillips.com/detail/jordy-kerwick/234804)\n\n[\\\\\n\\\\\n125\\\\\n\\\\\nTomoo Gokita\\\\\n\\\\\nRegina #7\\\\\n\\\\\nEstimate\\\\\n\\\\\n£4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£5,160](https://www.phillips.com/detail/tomoo-gokita/234796)\n\n[\\\\\nNo Reserve\\\\\n126\\\\\n\\\\\nMolly Greene\\\\\n\\\\\nSlackening\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£2,451](https://www.phillips.com/detail/molly-greene/234799)\n\n[\\\\\n\\\\\n127\\\\\n\\\\\nAndrea Marie Breiling\\\\\n\\\\\nGraphium\\\\\n\\\\\nEstimate\\\\\n\\\\\n£7,000–10,000](https://www.phillips.com/detail/andrea-marie-breiling/235231)\n\n[\\\\\n\\\\\n128\\\\\n\\\\\nSue Williams\\\\\n\\\\\nSparse\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000](https://www.phillips.com/detail/sue-williams/231045)\n\n[\\\\\n\\\\\n129\\\\\n\\\\\nDaniel Gibson\\\\\n\\\\\nNature Always Wins\\\\\n\\\\\nEstimate\\\\\n\\\\\n£4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£12,900](https://www.phillips.com/detail/daniel-gibson/235748)\n\n[\\\\\n\\\\\n130\\\\\n\\\\\nCindy Phenix\\\\\n\\\\\nPluralist Tolerance of Delicate Topography of Sounds, Resonances, Echoes and Voices\\\\\n\\\\\nEstimate\\\\\n\\\\\n£7,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£12,900](https://www.phillips.com/detail/cindy-phenix/235235)\n\n[\\\\\nNo Reserve\\\\\n131\\\\\n\\\\\nCope 2 (Fernando Carlo)\\\\\n\\\\\nSavage Art\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,000–2,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£323](https://www.phillips.com/detail/cope-2-(fernando-carlo)/235708)\n\n[\\\\\nNo Reserve\\\\\n132\\\\\n\\\\\nD\\*face\\\\\n\\\\\nSuperman\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£14,190](https://www.phillips.com/detail/d*face/235749)\n\n[\\\\\nNo Reserve\\\\\n133\\\\\n\\\\\nCope 2 (Fernando Carlo)\\\\\n\\\\\nBubble\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,000–2,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£387](https://www.phillips.com/detail/cope-2-(fernando-carlo)/225714)\n\n[\\\\\nNo Reserve\\\\\n134\\\\\n\\\\\nJason Revok\\\\\n\\\\\nTriumph and Tragedy\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,500–2,500\\\\\n\\\\\nSold For\\\\\n\\\\\n£2,193](https://www.phillips.com/detail/jason-revok/235709)\n\n[\\\\\n\\\\\n135\\\\\n\\\\\nGerasimos Floratos\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000](https://www.phillips.com/detail/gerasimos-floratos/235238)\n\n[\\\\\n\\\\\n136\\\\\n\\\\\nThierry Noir\\\\\n\\\\\nMy brand-new shoes give me a nice and cool look\\\\\n\\\\\nEstimate\\\\\n\\\\\n£8,000–12,000](https://www.phillips.com/detail/thierry-noir/230672)\n\n[\\\\\n\\\\\n137\\\\\n\\\\\nStik\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n£7,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£9,030](https://www.phillips.com/detail/stik/232937)\n\n[\\\\\nNo Reserve\\\\\n138\\\\\n\\\\\nPaul Bonnet\\\\\n\\\\\nFortunate Hours\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,500–2,500\\\\\n\\\\\nSold For\\\\\n\\\\\n£710](https://www.phillips.com/detail/paul-bonnet/235239)\n\n[\\\\\nNo Reserve\\\\\n139\\\\\n\\\\\nRhiannon Inman-Simpson\\\\\n\\\\\nAn eruption beneath heavy lids\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£581](https://www.phillips.com/detail/rhiannon-inman-simpson/234808)\n\n[\\\\\nNo Reserve\\\\\n140\\\\\n\\\\\nOscar Murillo\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,000–2,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£967](https://www.phillips.com/detail/oscar-murillo/234166)\n\n[\\\\\nNo Reserve\\\\\n141\\\\\n\\\\\nOscar Murillo\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,000–2,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£1,677](https://www.phillips.com/detail/oscar-murillo/234167)\n\n[\\\\\n\\\\\n142\\\\\n\\\\\nAaron Garber-Maikovska\\\\\n\\\\\nLittle Pearl\\\\\n\\\\\nEstimate\\\\\n\\\\\n£7,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£38,700](https://www.phillips.com/detail/aaron-garber-maikovska/234786)\n\n[\\\\\nNo Reserve\\\\\n143\\\\\n\\\\\nRoya Akhavan\\\\\n\\\\\nThe Marvellous Plunge\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£645](https://www.phillips.com/detail/roya-akhavan/233970)\n\n[\\\\\nNo Reserve\\\\\n144\\\\\n\\\\\nZander Blom\\\\\n\\\\\nUntitled \\[1.492\\]\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,000–2,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£710](https://www.phillips.com/detail/zander-blom/225676)\n\n[\\\\\nNo Reserve\\\\\n145\\\\\n\\\\\nTony DeLap\\\\\n\\\\\nMysterioso II\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£3,870](https://www.phillips.com/detail/tony-delap/230225)\n\n[\\\\\n\\\\\n146\\\\\n\\\\\nGrenville Davey\\\\\n\\\\\nFat Edge\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£5,805](https://www.phillips.com/detail/grenville-davey/233849)\n\n[\\\\\nNo Reserve\\\\\n147\\\\\n\\\\\nJohn Armleder\\\\\n\\\\\nBlack Fire\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£4,515](https://www.phillips.com/detail/john-armleder/233950)\n\n[\\\\\nNo Reserve\\\\\n148\\\\\n\\\\\nWilla Wasserman\\\\\n\\\\\nConvex still life (flat sea holly and rose)\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,500–2,500\\\\\n\\\\\nSold For\\\\\n\\\\\n£452](https://www.phillips.com/detail/willa-wasserman/231748)\n\n[\\\\\n\\\\\n149\\\\\n\\\\\nMiroslaw Balka\\\\\n\\\\\nThe garotte\\\\\n\\\\\nEstimate\\\\\n\\\\\n£4,000–6,000](https://www.phillips.com/detail/miroslaw-balka/227547)\n\n[\\\\\nNo Reserve\\\\\n150\\\\\n\\\\\nMilo Matthieu\\\\\n\\\\\nThe Fruit Salesman\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£581](https://www.phillips.com/detail/milo-matthieu/230437)\n\n[\\\\\nNo Reserve\\\\\n151\\\\\n\\\\\nRomuald Hazoumè\\\\\n\\\\\nTwo works: (i) Pisso-Pisso; (ii) Untitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£8,385](https://www.phillips.com/detail/romuald-hazoum%C3%A8/233960)\n\n[\\\\\n\\\\\n152\\\\\n\\\\\nAxel Salto\\\\\n\\\\\n'Fruit Form' vase, model no. 20818\\\\\n\\\\\nEstimate\\\\\n\\\\\n£4,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£7,740](https://www.phillips.com/detail/axel-salto/233972)\n\n[\\\\\nNo Reserve\\\\\n153\\\\\n\\\\\nZecchin Martinuzzi\\\\\n\\\\\nVase\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,000–2,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£1,419](https://www.phillips.com/detail/zecchin-martinuzzi/233974)\n\n[\\\\\nNo Reserve\\\\\n154\\\\\n\\\\\nHella Jongerius\\\\\n\\\\\nTwo works: (i-ii) Groove Bottle\\\\\n\\\\\nEstimate\\\\\n\\\\\n£700–1,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£1,290](https://www.phillips.com/detail/hella-jongerius/233963)\n\n[\\\\\n\\\\\n155\\\\\n\\\\\nDonald Judd\\\\\n\\\\\nShelf Plywood Stool no. 95-3\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£7,095](https://www.phillips.com/detail/donald-judd/227552)\n\n[\\\\\nNo Reserve\\\\\n156\\\\\n\\\\\nGio Ponti\\\\\n\\\\\nSwivel chair, designed for the Montecatini S.A. offices, Milan\\\\\n\\\\\nEstimate\\\\\n\\\\\n£500–700\\\\\n\\\\\nSold For\\\\\n\\\\\n£258](https://www.phillips.com/detail/gio-ponti/233969)\n\n[\\\\\nNo Reserve\\\\\n157\\\\\n\\\\\nMarcel Breuer\\\\\n\\\\\nChaise Longue\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,500–2,500\\\\\n\\\\\nSold For\\\\\n\\\\\n£903](https://www.phillips.com/detail/marcel-breuer/233954)\n\n[\\\\\nNo Reserve\\\\\n158\\\\\n\\\\\nGio Ponti\\\\\n\\\\\nChair, designed for the Montecatini S.A. offices, Milan\\\\\n\\\\\nEstimate\\\\\n\\\\\n£500–700\\\\\n\\\\\nSold For\\\\\n\\\\\n£516](https://www.phillips.com/detail/gio-ponti/233968)\n\n[\\\\\nNo Reserve\\\\\n159\\\\\n\\\\\nNate Lowman\\\\\n\\\\\nA Girl Can Dream\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£2,838](https://www.phillips.com/detail/nate-lowman/233965)\n\n[\\\\\nNo Reserve\\\\\n160\\\\\n\\\\\nNed Vena\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,000–1,500\\\\\n\\\\\nSold For\\\\\n\\\\\n£387](https://www.phillips.com/detail/ned-vena/233975)\n\n[\\\\\nNo Reserve\\\\\n161\\\\\n\\\\\nMichael Williams\\\\\n\\\\\nErika's Squirrel Cage\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£1,290](https://www.phillips.com/detail/michael-williams/233976)\n\n[\\\\\n\\\\\n162\\\\\n\\\\\nLászló Mulasics\\\\\n\\\\\nKepzeletbeli Ejszaka\\\\\n\\\\\nEstimate\\\\\n\\\\\n£3,000–5,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£3,870](https://www.phillips.com/detail/l%C3%A1szl%C3%B3-mulasics/233966)\n\n[\\\\\nNo Reserve\\\\\n163\\\\\n\\\\\nKika Karadi\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,000–1,500\\\\\n\\\\\nSold For\\\\\n\\\\\n£129](https://www.phillips.com/detail/kika-karadi/234262)\n\n[\\\\\n\\\\\n164\\\\\n\\\\\nMr Doodle\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n£6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£10,320](https://www.phillips.com/detail/mr-doodle/235080)\n\n[\\\\\n\\\\\n165\\\\\n\\\\\nDavid Shrigley\\\\\n\\\\\nTwo works: (i-ii) Untitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,500–2,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£1,935](https://www.phillips.com/detail/david-shrigley/235571)\n\n[\\\\\n\\\\\n166\\\\\n\\\\\nDavid Shrigley\\\\\n\\\\\nTwo works: (i-ii) Untitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,200–1,800\\\\\n\\\\\nSold For\\\\\n\\\\\n£1,419](https://www.phillips.com/detail/david-shrigley/235573)\n\n[\\\\\n\\\\\n167\\\\\n\\\\\nDavid Shrigley\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,500–2,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£2,451](https://www.phillips.com/detail/david-shrigley/235572)\n\n[\\\\\nNo Reserve\\\\\n168\\\\\n\\\\\nAlex Hubbard\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,000–2,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£1,935](https://www.phillips.com/detail/alex-hubbard/235757)\n\n[\\\\\nNo Reserve\\\\\n169\\\\\n\\\\\nMartin Denker\\\\\n\\\\\nHollywood Pest Control Royal Plus\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,000–1,500\\\\\n\\\\\nSold For\\\\\n\\\\\n£129](https://www.phillips.com/detail/martin-denker/235378)\n\n[\\\\\nNo Reserve\\\\\n170\\\\\n\\\\\nStephanie Temma Hier\\\\\n\\\\\nScratch Your Name In The Sand\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£1,032](https://www.phillips.com/detail/stephanie-temma-hier/231747)\n\n[\\\\\n\\\\\n171\\\\\n\\\\\nGenesis Belanger\\\\\n\\\\\nPast your prime\\\\\n\\\\\nEstimate\\\\\n\\\\\n£500–700\\\\\n\\\\\nSold For\\\\\n\\\\\n£516](https://www.phillips.com/detail/genesis-belanger/228525)\n\n[\\\\\n\\\\\n172\\\\\n\\\\\nStefano Arienti\\\\\n\\\\\nUntitled\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£1,290](https://www.phillips.com/detail/stefano-arienti/234164)\n\n[\\\\\nNo Reserve\\\\\n173\\\\\n\\\\\nParker Ito\\\\\n\\\\\nThe Most Infamous Girl in the History of the Internet\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,500–2,500\\\\\n\\\\\nSold For\\\\\n\\\\\n£774](https://www.phillips.com/detail/parker-ito/234261)\n\n[\\\\\nNo Reserve\\\\\n174\\\\\n\\\\\nBorden Capalino\\\\\n\\\\\nAncient Rome\\\\\n\\\\\nEstimate\\\\\n\\\\\n£2,000–3,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£194](https://www.phillips.com/detail/borden-capalino/234260)\n\n[\\\\\nNo Reserve\\\\\n175\\\\\n\\\\\nNamio Harukawa\\\\\n\\\\\n#298\\\\\n\\\\\nEstimate\\\\\n\\\\\n£1,000–1,500\\\\\n\\\\\nSold For\\\\\n\\\\\n£8,385](https://www.phillips.com/detail/namio-harukawa/234797)\n\n[\\\\\n\\\\\n176\\\\\n\\\\\nGisela McDaniel\\\\\n\\\\\nPaloa'an Míhinilat\\\\\n\\\\\nEstimate\\\\\n\\\\\n£6,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n£6,450](https://www.phillips.com/detail/gisela-mcdaniel/220827)\n\n### About us\n\n- [Our history](https://www.phillips.com/about)\n- [Our team](https://www.phillips.com/team)\n- [Locations](https://www.phillips.com/location)\n- [Press](https://www.phillips.com/press)\n- [Careers](https://www.phillips.com/careers)\n- [Site map](https://www.phillips.com/sitemap)\n\n### Our services\n\n- [How to buy](https://www.phillips.com/buysell/buy)\n- [How to sell](https://www.phillips.com/buysell/sell)\n- [Private services](https://www.phillips.com/buysell/private)\n- [Professional & advisor services](https://www.phillips.com/professional-advisor-services)\n- [Fiduciary services](https://www.phillips.com/fiduciaryservices)\n\n### Policies\n\n- [Privacy policy](https://www.phillips.com/about/privacy)\n- [Cookie policy](https://www.phillips.com/about/cookiepolicy)\n- [Modern slavery policy](https://www.phillips.com/about/modernslaverypolicy)\n\nAbout us\n\nOur services\n\nPolicies\n\n### Never miss a moment\n\nSubscribe to our newsletter\n\n- [insta](https://www.instagram.com/phillipsauction/ \"insta\")\n- [linkedin](https://www.linkedin.com/company/phillips/ \"linkedin\")\n- [wechat](https://weixin.qq.com/r/qDuLk0-EKhJVrQvw9266 \"wechat\")\n- [red](https://www.xiaohongshu.com/user/profile/611e10a8000000000101ddf7 \"red\")\n- [facebook](https://www.facebook.com/phillipsauction/ \"facebook\")\n\n[logoLink](https://www.phillips.com/) © 2026 Phillips Auctioneers, LLC", | |
| 18 | + "department": { | |
| 19 | + "filter": "contemporary art", | |
| 20 | + "category": "contemporary_art" | |
| 21 | + } | |
| 22 | + } | |
| 23 | + }, | |
| 24 | + "expect": { | |
| 25 | + "minCount": 10, | |
| 26 | + "kinds": [ | |
| 27 | + "sale", | |
| 28 | + "auction_lot" | |
| 29 | + ], | |
| 30 | + "requiredFields": [ | |
| 31 | + "attributes.brand", | |
| 32 | + "rawTitle" | |
| 33 | + ] | |
| 34 | + }, | |
| 35 | + "note": "Captured live via Firecrawl from phillips.com", | |
| 36 | + "capturedAt": "2026-09-07T06:28:38.845Z" | |
| 37 | +} | |
| \ No newline at end of file | ||
added
data/fixtures/saatchi-art/paintings-page-1.json
+801 −0
@@ -0,0 +1,801 @@ | ||
| 1 | +{ | |
| 2 | + "raw": { | |
| 3 | + "url": "https://www.saatchiart.com/paintings", | |
| 4 | + "externalId": "browse:/paintings:1", | |
| 5 | + "kind": "listing", | |
| 6 | + "engine": "api", | |
| 7 | + "fetchedAt": "2026-09-07T06:24:02.963Z", | |
| 8 | + "payload": { | |
| 9 | + "kind": "browse_page", | |
| 10 | + "url": "https://www.saatchiart.com/paintings", | |
| 11 | + "seed": { | |
| 12 | + "path": "/paintings", | |
| 13 | + "category": "contemporary_art" | |
| 14 | + }, | |
| 15 | + "page": 1, | |
| 16 | + "totalResults": 746701, | |
| 17 | + "works": [ | |
| 18 | + { | |
| 19 | + "artworkId": "10544327", | |
| 20 | + "url": "https://www.saatchiart.com/art/Painting-Octhopuses/626451/10544327/view", | |
| 21 | + "title": "Octhopuses", | |
| 22 | + "artistFirstName": "josep", | |
| 23 | + "artistLastName": "moncada", | |
| 24 | + "artistId": 626451, | |
| 25 | + "category": "Painting", | |
| 26 | + "mediums": [ | |
| 27 | + "oil" | |
| 28 | + ], | |
| 29 | + "materials": [ | |
| 30 | + "canvas" | |
| 31 | + ], | |
| 32 | + "styles": [ | |
| 33 | + "contemporary", | |
| 34 | + "figurative", | |
| 35 | + "other", | |
| 36 | + "realism" | |
| 37 | + ], | |
| 38 | + "subject": "nature", | |
| 39 | + "widthCm": 279.4, | |
| 40 | + "heightCm": 279.4, | |
| 41 | + "depthCm": 19, | |
| 42 | + "listPriceCents": 2198000, | |
| 43 | + "status": "avail", | |
| 44 | + "sku": "P1-U626451-A10544327-T1", | |
| 45 | + "image": "https://images.saatchiart.com/saatchi/626451/art/10544327/9606819-KVVUSTPX-7.jpg", | |
| 46 | + "countryName": "spain", | |
| 47 | + "uploadedAt": 1685441847 | |
| 48 | + }, | |
| 49 | + { | |
| 50 | + "artworkId": "9382443", | |
| 51 | + "url": "https://www.saatchiart.com/art/Painting-Birches-4/958076/9382443/view", | |
| 52 | + "title": "Birches 4", | |
| 53 | + "artistFirstName": "david", | |
| 54 | + "artistLastName": "bowker", | |
| 55 | + "artistId": 958076, | |
| 56 | + "category": "Painting", | |
| 57 | + "mediums": [ | |
| 58 | + "oil" | |
| 59 | + ], | |
| 60 | + "materials": [ | |
| 61 | + "canvas" | |
| 62 | + ], | |
| 63 | + "styles": [ | |
| 64 | + "abstract" | |
| 65 | + ], | |
| 66 | + "subject": "landscape", | |
| 67 | + "widthCm": 121.9, | |
| 68 | + "heightCm": 61, | |
| 69 | + "depthCm": 3.8, | |
| 70 | + "listPriceCents": 128500, | |
| 71 | + "status": "avail", | |
| 72 | + "sku": "P1-U958076-A9382443-T1", | |
| 73 | + "image": "https://images.saatchiart.com/saatchi/958076/art/9382443/8445551-ISPEBVAO-7.jpg", | |
| 74 | + "countryName": "united states", | |
| 75 | + "uploadedAt": 1654199373 | |
| 76 | + }, | |
| 77 | + { | |
| 78 | + "artworkId": "10069427", | |
| 79 | + "url": "https://www.saatchiart.com/art/Painting-Try-not-to-think-so-much/1520623/10069427/view", | |
| 80 | + "title": "Try not to think so much", | |
| 81 | + "artistFirstName": "gazvani", | |
| 82 | + "artistLastName": "art", | |
| 83 | + "artistId": 1520623, | |
| 84 | + "category": "Painting", | |
| 85 | + "mediums": [ | |
| 86 | + "acrylic" | |
| 87 | + ], | |
| 88 | + "materials": [ | |
| 89 | + "canvas" | |
| 90 | + ], | |
| 91 | + "styles": [ | |
| 92 | + "abstract", | |
| 93 | + "abstract expressionism", | |
| 94 | + "contemporary", | |
| 95 | + "other" | |
| 96 | + ], | |
| 97 | + "subject": "abstract", | |
| 98 | + "widthCm": 160, | |
| 99 | + "heightCm": 125, | |
| 100 | + "depthCm": 4, | |
| 101 | + "listPriceCents": 644000, | |
| 102 | + "status": "avail", | |
| 103 | + "sku": "P1-U1520623-A10069427-T1", | |
| 104 | + "image": "https://images.saatchiart.com/saatchi/1520623/art/10069427/9132343-MMHTCNIQ-7.jpg", | |
| 105 | + "countryName": "denmark", | |
| 106 | + "uploadedAt": 1674323847 | |
| 107 | + }, | |
| 108 | + { | |
| 109 | + "artworkId": "13191783", | |
| 110 | + "url": "https://www.saatchiart.com/art/Painting-Landscape-Summer-Painting-miniature/1350175/13191783/view", | |
| 111 | + "title": "Landscape Summer Painting miniature", | |
| 112 | + "artistFirstName": "david", | |
| 113 | + "artistLastName": "kabulashvili", | |
| 114 | + "artistId": 1350175, | |
| 115 | + "category": "Painting", | |
| 116 | + "mediums": [ | |
| 117 | + "oil" | |
| 118 | + ], | |
| 119 | + "materials": [ | |
| 120 | + "hardboard" | |
| 121 | + ], | |
| 122 | + "styles": [ | |
| 123 | + "abstract", | |
| 124 | + "classicism", | |
| 125 | + "contemporary", | |
| 126 | + "impressionism", | |
| 127 | + "realism" | |
| 128 | + ], | |
| 129 | + "subject": "landscape", | |
| 130 | + "widthCm": 15.2, | |
| 131 | + "heightCm": 10.2, | |
| 132 | + "depthCm": 0.5, | |
| 133 | + "listPriceCents": 31200, | |
| 134 | + "status": "avail", | |
| 135 | + "sku": "P1-U1350175-A13191783-T1", | |
| 136 | + "image": "https://images.saatchiart.com/saatchi/1350175/art/13191783/12253919-OVXDEVWK-7.jpg", | |
| 137 | + "countryName": "georgia", | |
| 138 | + "uploadedAt": 1758737118 | |
| 139 | + }, | |
| 140 | + { | |
| 141 | + "artworkId": "13238533", | |
| 142 | + "url": "https://www.saatchiart.com/art/Painting-Wandering-Echoes-I/327735/13238533/view", | |
| 143 | + "title": "Wandering Echoes I", | |
| 144 | + "artistFirstName": "fintan", | |
| 145 | + "artistLastName": "whelan", | |
| 146 | + "artistId": 327735, | |
| 147 | + "category": "Painting", | |
| 148 | + "mediums": [ | |
| 149 | + "oil" | |
| 150 | + ], | |
| 151 | + "materials": [ | |
| 152 | + "canvas" | |
| 153 | + ], | |
| 154 | + "styles": [ | |
| 155 | + "abstract", | |
| 156 | + "abstract expressionism", | |
| 157 | + "contemporary", | |
| 158 | + "conceptual", | |
| 159 | + "minimalism" | |
| 160 | + ], | |
| 161 | + "subject": "abstract", | |
| 162 | + "widthCm": 300, | |
| 163 | + "heightCm": 180, | |
| 164 | + "depthCm": 4, | |
| 165 | + "listPriceCents": 1557500, | |
| 166 | + "status": "avail", | |
| 167 | + "sku": "P1-U327735-A13238533-T1", | |
| 168 | + "image": "https://images.saatchiart.com/saatchi/327735/art/13238533/12300669-QCCTPFFE-7.jpg", | |
| 169 | + "countryName": "ireland", | |
| 170 | + "uploadedAt": 1760133484 | |
| 171 | + }, | |
| 172 | + { | |
| 173 | + "artworkId": "13529889", | |
| 174 | + "url": "https://www.saatchiart.com/art/Painting-Confluent-Ground/2505141/13529889/view", | |
| 175 | + "title": "Confluent Ground", | |
| 176 | + "artistFirstName": "mark", | |
| 177 | + "artistLastName": "engel", | |
| 178 | + "artistId": 2505141, | |
| 179 | + "category": "Painting", | |
| 180 | + "mediums": [ | |
| 181 | + "acrylic", | |
| 182 | + "spray paint" | |
| 183 | + ], | |
| 184 | + "materials": [ | |
| 185 | + "canvas" | |
| 186 | + ], | |
| 187 | + "styles": [ | |
| 188 | + "abstract", | |
| 189 | + "figurative", | |
| 190 | + "surrealism", | |
| 191 | + "expressionism", | |
| 192 | + "contemporary" | |
| 193 | + ], | |
| 194 | + "subject": "landscape", | |
| 195 | + "widthCm": 121.9, | |
| 196 | + "heightCm": 152.4, | |
| 197 | + "depthCm": 3.8, | |
| 198 | + "listPriceCents": 1875000, | |
| 199 | + "status": "avail", | |
| 200 | + "sku": "P1-U2505141-A13529889-T1", | |
| 201 | + "image": "https://images.saatchiart.com/saatchi/2505141/art/13529889/12592019-SVNSRDPF-7.jpg", | |
| 202 | + "countryName": "united states", | |
| 203 | + "uploadedAt": 1768945061 | |
| 204 | + }, | |
| 205 | + { | |
| 206 | + "artworkId": "13827031", | |
| 207 | + "url": "https://www.saatchiart.com/art/Painting-Forest-View-II/958076/13827031/view", | |
| 208 | + "title": "Forest View II", | |
| 209 | + "artistFirstName": "david", | |
| 210 | + "artistLastName": "bowker", | |
| 211 | + "artistId": 958076, | |
| 212 | + "category": "Painting", | |
| 213 | + "mediums": [ | |
| 214 | + "oil" | |
| 215 | + ], | |
| 216 | + "materials": [ | |
| 217 | + "canvas" | |
| 218 | + ], | |
| 219 | + "styles": [ | |
| 220 | + "impressionism" | |
| 221 | + ], | |
| 222 | + "subject": "landscape", | |
| 223 | + "widthCm": 76.2, | |
| 224 | + "heightCm": 101.6, | |
| 225 | + "depthCm": 3.8, | |
| 226 | + "listPriceCents": 208800, | |
| 227 | + "status": "avail", | |
| 228 | + "sku": "P1-U958076-A13827031-T1", | |
| 229 | + "image": "https://images.saatchiart.com/saatchi/958076/art/13827031/12889109-OVXVIBGA-7.jpg", | |
| 230 | + "countryName": "united states", | |
| 231 | + "uploadedAt": 1777576350 | |
| 232 | + }, | |
| 233 | + { | |
| 234 | + "artworkId": "10386607", | |
| 235 | + "url": "https://www.saatchiart.com/art/Painting-Elegance-1127/965350/10386607/view", | |
| 236 | + "title": "Elegance 1127", | |
| 237 | + "artistFirstName": "jingshen", | |
| 238 | + "artistLastName": "you", | |
| 239 | + "artistId": 965350, | |
| 240 | + "category": "Painting", | |
| 241 | + "mediums": [ | |
| 242 | + "acrylic" | |
| 243 | + ], | |
| 244 | + "materials": [ | |
| 245 | + "canvas" | |
| 246 | + ], | |
| 247 | + "styles": [ | |
| 248 | + "abstract", | |
| 249 | + "abstract expressionism", | |
| 250 | + "art deco" | |
| 251 | + ], | |
| 252 | + "subject": "abstract", | |
| 253 | + "widthCm": 100, | |
| 254 | + "heightCm": 75, | |
| 255 | + "depthCm": 0.3, | |
| 256 | + "listPriceCents": 73800, | |
| 257 | + "status": "avail", | |
| 258 | + "sku": "P1-U965350-A10386607-T1", | |
| 259 | + "image": "https://images.saatchiart.com/saatchi/965350/art/10386607/9449201-CSQDWEYI-7.jpg", | |
| 260 | + "countryName": "china", | |
| 261 | + "uploadedAt": 1681786566 | |
| 262 | + }, | |
| 263 | + { | |
| 264 | + "artworkId": "13768617", | |
| 265 | + "url": "https://www.saatchiart.com/art/Painting-Pewter/2969105/13768617/view", | |
| 266 | + "title": "Pewter", | |
| 267 | + "artistFirstName": "sergey", | |
| 268 | + "artistLastName": "harlov", | |
| 269 | + "artistId": 2969105, | |
| 270 | + "category": "Painting", | |
| 271 | + "mediums": [ | |
| 272 | + "oil" | |
| 273 | + ], | |
| 274 | + "materials": [ | |
| 275 | + "canvas" | |
| 276 | + ], | |
| 277 | + "styles": [ | |
| 278 | + "baroque", | |
| 279 | + "realism" | |
| 280 | + ], | |
| 281 | + "subject": "still life", | |
| 282 | + "widthCm": 131.8, | |
| 283 | + "heightCm": 169.4, | |
| 284 | + "depthCm": 1.8, | |
| 285 | + "listPriceCents": 520600, | |
| 286 | + "status": "avail", | |
| 287 | + "sku": "P1-U2969105-A13768617-T1", | |
| 288 | + "image": "https://images.saatchiart.com/saatchi/2969105/art/13768617/12830699-HPZWYGDD-7.jpg", | |
| 289 | + "countryName": "kazakhstan", | |
| 290 | + "uploadedAt": 1775866926 | |
| 291 | + }, | |
| 292 | + { | |
| 293 | + "artworkId": "12347395", | |
| 294 | + "url": "https://www.saatchiart.com/art/Painting-The-Colorado-River/958076/12347395/view", | |
| 295 | + "title": "The Colorado River", | |
| 296 | + "artistFirstName": "david", | |
| 297 | + "artistLastName": "bowker", | |
| 298 | + "artistId": 958076, | |
| 299 | + "category": "Painting", | |
| 300 | + "mediums": [ | |
| 301 | + "oil" | |
| 302 | + ], | |
| 303 | + "materials": [ | |
| 304 | + "canvas" | |
| 305 | + ], | |
| 306 | + "styles": [ | |
| 307 | + "impressionism" | |
| 308 | + ], | |
| 309 | + "subject": "landscape", | |
| 310 | + "widthCm": 91.4, | |
| 311 | + "heightCm": 61, | |
| 312 | + "depthCm": 3.8, | |
| 313 | + "listPriceCents": 105000, | |
| 314 | + "status": "avail", | |
| 315 | + "sku": "P1-U958076-A12347395-T1", | |
| 316 | + "image": "https://images.saatchiart.com/saatchi/958076/art/12347395/11409585-CWPADBOX-7.jpg", | |
| 317 | + "countryName": "united states", | |
| 318 | + "uploadedAt": 1734035673 | |
| 319 | + }, | |
| 320 | + { | |
| 321 | + "artworkId": "13959449", | |
| 322 | + "url": "https://www.saatchiart.com/art/Painting-Evening-Reflections-watercolor-original-painting/2674863/13959449/view", | |
| 323 | + "title": "Evening Reflections, watercolor original painting", | |
| 324 | + "artistFirstName": "oksana", | |
| 325 | + "artistLastName": "shvachka", | |
| 326 | + "artistId": 2674863, | |
| 327 | + "category": "Painting", | |
| 328 | + "mediums": [ | |
| 329 | + "watercolor" | |
| 330 | + ], | |
| 331 | + "materials": [ | |
| 332 | + "paper" | |
| 333 | + ], | |
| 334 | + "styles": [ | |
| 335 | + "abstract", | |
| 336 | + "contemporary", | |
| 337 | + "realism", | |
| 338 | + "impressionism" | |
| 339 | + ], | |
| 340 | + "subject": "water", | |
| 341 | + "widthCm": 38.1, | |
| 342 | + "heightCm": 57, | |
| 343 | + "depthCm": 0.1, | |
| 344 | + "listPriceCents": 59900, | |
| 345 | + "status": "avail", | |
| 346 | + "sku": "P1-U2674863-A13959449-T1", | |
| 347 | + "image": "https://images.saatchiart.com/saatchi/2674863/art/13959449/13021481-GQAKMIYH-7.jpg", | |
| 348 | + "countryName": "poland", | |
| 349 | + "uploadedAt": 1781017091 | |
| 350 | + }, | |
| 351 | + { | |
| 352 | + "artworkId": "13338069", | |
| 353 | + "url": "https://www.saatchiart.com/art/Painting-Summer-pond-Reflections/56416/13338069/view", | |
| 354 | + "title": "Summer pond. Reflections", | |
| 355 | + "artistFirstName": "lilia", | |
| 356 | + "artistLastName": "orlova-holmes", | |
| 357 | + "artistId": 56416, | |
| 358 | + "category": "Painting", | |
| 359 | + "mediums": [ | |
| 360 | + "oil" | |
| 361 | + ], | |
| 362 | + "materials": [ | |
| 363 | + "canvas" | |
| 364 | + ], | |
| 365 | + "styles": [ | |
| 366 | + "abstract", | |
| 367 | + "contemporary", | |
| 368 | + "expressionism", | |
| 369 | + "impressionism", | |
| 370 | + "modernism" | |
| 371 | + ], | |
| 372 | + "subject": "nature", | |
| 373 | + "widthCm": 122, | |
| 374 | + "heightCm": 183, | |
| 375 | + "depthCm": 4, | |
| 376 | + "listPriceCents": 1664000, | |
| 377 | + "status": "avail", | |
| 378 | + "sku": "P1-U56416-A13338069-T1", | |
| 379 | + "image": "https://images.saatchiart.com/saatchi/56416/art/13338069/12400203-OMRRFSFA-7.jpg", | |
| 380 | + "countryName": "united kingdom", | |
| 381 | + "uploadedAt": 1763118644 | |
| 382 | + }, | |
| 383 | + { | |
| 384 | + "artworkId": "13204059", | |
| 385 | + "url": "https://www.saatchiart.com/art/Painting-MOUNT-FUJI/978551/13204059/view", | |
| 386 | + "title": "MOUNT FUJI", | |
| 387 | + "artistFirstName": "daniel", | |
| 388 | + "artistLastName": "bautista", | |
| 389 | + "artistId": 978551, | |
| 390 | + "category": "Painting", | |
| 391 | + "mediums": [ | |
| 392 | + "acrylic", | |
| 393 | + "oil" | |
| 394 | + ], | |
| 395 | + "materials": [ | |
| 396 | + "canvas" | |
| 397 | + ], | |
| 398 | + "styles": [ | |
| 399 | + "abstract", | |
| 400 | + "cubism", | |
| 401 | + "pop art", | |
| 402 | + "contemporary", | |
| 403 | + "modernism" | |
| 404 | + ], | |
| 405 | + "subject": "abstract", | |
| 406 | + "widthCm": 125, | |
| 407 | + "heightCm": 165, | |
| 408 | + "depthCm": 5, | |
| 409 | + "listPriceCents": 373800, | |
| 410 | + "status": "avail", | |
| 411 | + "sku": "P1-U978551-A13204059-T1", | |
| 412 | + "image": "https://images.saatchiart.com/saatchi/978551/art/13204059/12266195-SMGZACJY-7.jpg", | |
| 413 | + "countryName": "spain", | |
| 414 | + "uploadedAt": 1759130964 | |
| 415 | + }, | |
| 416 | + { | |
| 417 | + "artworkId": "13032211", | |
| 418 | + "url": "https://www.saatchiart.com/art/Painting-Oversized-Gold-Textured-Abstract/2279331/13032211/view", | |
| 419 | + "title": "Oversized Gold Textured Abstract", | |
| 420 | + "artistFirstName": "indie", | |
| 421 | + "artistLastName": "ru", | |
| 422 | + "artistId": 2279331, | |
| 423 | + "category": "Painting", | |
| 424 | + "mediums": [ | |
| 425 | + "acrylic", | |
| 426 | + "gesso" | |
| 427 | + ], | |
| 428 | + "materials": [ | |
| 429 | + "canvas" | |
| 430 | + ], | |
| 431 | + "styles": [ | |
| 432 | + "abstract", | |
| 433 | + "contemporary", | |
| 434 | + "minimalism" | |
| 435 | + ], | |
| 436 | + "subject": "abstract", | |
| 437 | + "widthCm": 145, | |
| 438 | + "heightCm": 205, | |
| 439 | + "depthCm": 0.5, | |
| 440 | + "listPriceCents": 197000, | |
| 441 | + "status": "avail", | |
| 442 | + "sku": "P1-U2279331-A13032211-T1", | |
| 443 | + "image": "https://images.saatchiart.com/saatchi/2279331/art/13032211/12094355-IAQPXXFG-7.jpg", | |
| 444 | + "countryName": "croatia", | |
| 445 | + "uploadedAt": 1754051155 | |
| 446 | + }, | |
| 447 | + { | |
| 448 | + "artworkId": "11317341", | |
| 449 | + "url": "https://www.saatchiart.com/art/Painting-Autumn-Morning/958076/11317341/view", | |
| 450 | + "title": "Autumn Morning", | |
| 451 | + "artistFirstName": "david", | |
| 452 | + "artistLastName": "bowker", | |
| 453 | + "artistId": 958076, | |
| 454 | + "category": "Painting", | |
| 455 | + "mediums": [ | |
| 456 | + "oil" | |
| 457 | + ], | |
| 458 | + "materials": [ | |
| 459 | + "canvas" | |
| 460 | + ], | |
| 461 | + "styles": [ | |
| 462 | + "impressionism" | |
| 463 | + ], | |
| 464 | + "subject": "landscape", | |
| 465 | + "widthCm": 76.2, | |
| 466 | + "heightCm": 45.7, | |
| 467 | + "depthCm": 1.8, | |
| 468 | + "listPriceCents": 72000, | |
| 469 | + "status": "avail", | |
| 470 | + "sku": "P1-U958076-A11317341-T1", | |
| 471 | + "image": "https://images.saatchiart.com/saatchi/958076/art/11317341/10379607-JPCUCDMY-7.jpg", | |
| 472 | + "countryName": "united states", | |
| 473 | + "uploadedAt": 1705087244 | |
| 474 | + }, | |
| 475 | + { | |
| 476 | + "artworkId": "13651261", | |
| 477 | + "url": "https://www.saatchiart.com/art/Painting-Eclectic/877744/13651261/view", | |
| 478 | + "title": "Eclectic", | |
| 479 | + "artistFirstName": "paola", | |
| 480 | + "artistLastName": "pugliese", | |
| 481 | + "artistId": 877744, | |
| 482 | + "category": "Painting", | |
| 483 | + "mediums": [ | |
| 484 | + "acrylic" | |
| 485 | + ], | |
| 486 | + "materials": [ | |
| 487 | + "canvas" | |
| 488 | + ], | |
| 489 | + "styles": [ | |
| 490 | + "abstract expressionism", | |
| 491 | + "contemporary", | |
| 492 | + "abstract" | |
| 493 | + ], | |
| 494 | + "subject": "abstract", | |
| 495 | + "widthCm": 100, | |
| 496 | + "heightCm": 140, | |
| 497 | + "depthCm": 5, | |
| 498 | + "listPriceCents": 116000, | |
| 499 | + "status": "avail", | |
| 500 | + "sku": "P1-U877744-A13651261-T1", | |
| 501 | + "image": "https://images.saatchiart.com/saatchi/877744/art/13651261/12713347-NMOZKUPA-7.jpg", | |
| 502 | + "countryName": "mexico", | |
| 503 | + "uploadedAt": 1772493029 | |
| 504 | + }, | |
| 505 | + { | |
| 506 | + "artworkId": "11898561", | |
| 507 | + "url": "https://www.saatchiart.com/art/Painting-The-Emotional-Creation-346-371/311324/11898561/view", | |
| 508 | + "title": "The Emotional Creation #346.371", | |
| 509 | + "artistFirstName": "carla", | |
| 510 | + "artistLastName": "sa fernandes", | |
| 511 | + "artistId": 311324, | |
| 512 | + "category": "Painting", | |
| 513 | + "mediums": [ | |
| 514 | + "acrylic" | |
| 515 | + ], | |
| 516 | + "materials": [ | |
| 517 | + "canvas" | |
| 518 | + ], | |
| 519 | + "styles": [ | |
| 520 | + "abstract", | |
| 521 | + "contemporary", | |
| 522 | + "modernism", | |
| 523 | + "other" | |
| 524 | + ], | |
| 525 | + "subject": "abstract", | |
| 526 | + "widthCm": 400, | |
| 527 | + "heightCm": 100, | |
| 528 | + "depthCm": 2, | |
| 529 | + "listPriceCents": 2194000, | |
| 530 | + "status": "avail", | |
| 531 | + "sku": "P1-U311324-A11898561-T1", | |
| 532 | + "image": "https://images.saatchiart.com/saatchi/311324/art/11898561/10960801-UGWYRBMH-7.jpg", | |
| 533 | + "countryName": "portugal", | |
| 534 | + "uploadedAt": 1720571276 | |
| 535 | + }, | |
| 536 | + { | |
| 537 | + "artworkId": "10034313", | |
| 538 | + "url": "https://www.saatchiart.com/art/Painting-2025-mong-the-hills/1845276/10034313/view", | |
| 539 | + "title": "2025.Аmong the hills", | |
| 540 | + "artistFirstName": "miroslava", | |
| 541 | + "artistLastName": "kuchura", | |
| 542 | + "artistId": 1845276, | |
| 543 | + "category": "Painting", | |
| 544 | + "mediums": [ | |
| 545 | + "oil" | |
| 546 | + ], | |
| 547 | + "materials": [ | |
| 548 | + "canvas" | |
| 549 | + ], | |
| 550 | + "styles": [ | |
| 551 | + "realism", | |
| 552 | + "impressionism", | |
| 553 | + "abstract", | |
| 554 | + "minimalism", | |
| 555 | + "figurative" | |
| 556 | + ], | |
| 557 | + "subject": "landscape", | |
| 558 | + "widthCm": 30, | |
| 559 | + "heightCm": 19.8, | |
| 560 | + "depthCm": 0.3, | |
| 561 | + "listPriceCents": 31100, | |
| 562 | + "status": "avail", | |
| 563 | + "sku": "P1-U1845276-A10034313-T1", | |
| 564 | + "image": "https://images.saatchiart.com/saatchi/1845276/art/10034313/9097231-FICTXZJG-7.jpg", | |
| 565 | + "countryName": "ukraine", | |
| 566 | + "uploadedAt": 1673471167 | |
| 567 | + }, | |
| 568 | + { | |
| 569 | + "artworkId": "11440911", | |
| 570 | + "url": "https://www.saatchiart.com/art/Painting-le-parc-enneige/1422925/11440911/view", | |
| 571 | + "title": "le parc enneigé", | |
| 572 | + "artistFirstName": "patrick", | |
| 573 | + "artistLastName": "marie", | |
| 574 | + "artistId": 1422925, | |
| 575 | + "category": "Painting", | |
| 576 | + "mediums": [ | |
| 577 | + "oil" | |
| 578 | + ], | |
| 579 | + "materials": [ | |
| 580 | + "canvas" | |
| 581 | + ], | |
| 582 | + "styles": [ | |
| 583 | + "figurative", | |
| 584 | + "impressionism", | |
| 585 | + "other" | |
| 586 | + ], | |
| 587 | + "subject": "nature", | |
| 588 | + "widthCm": 100, | |
| 589 | + "heightCm": 130, | |
| 590 | + "depthCm": 2, | |
| 591 | + "listPriceCents": 409000, | |
| 592 | + "status": "avail", | |
| 593 | + "sku": "P1-U1422925-A11440911-T1", | |
| 594 | + "image": "https://images.saatchiart.com/saatchi/1422925/art/11440911/10503165-OEVOWXOU-7.jpg", | |
| 595 | + "countryName": "france", | |
| 596 | + "uploadedAt": 1708253600 | |
| 597 | + }, | |
| 598 | + { | |
| 599 | + "artworkId": "14085459", | |
| 600 | + "url": "https://www.saatchiart.com/art/Painting-Sequoias/958076/14085459/view", | |
| 601 | + "title": "Sequoias", | |
| 602 | + "artistFirstName": "david", | |
| 603 | + "artistLastName": "bowker", | |
| 604 | + "artistId": 958076, | |
| 605 | + "category": "Painting", | |
| 606 | + "mediums": [ | |
| 607 | + "oil" | |
| 608 | + ], | |
| 609 | + "materials": [ | |
| 610 | + "canvas" | |
| 611 | + ], | |
| 612 | + "styles": [ | |
| 613 | + "impressionism" | |
| 614 | + ], | |
| 615 | + "subject": "landscape", | |
| 616 | + "widthCm": 76.2, | |
| 617 | + "heightCm": 101.6, | |
| 618 | + "depthCm": 3.8, | |
| 619 | + "listPriceCents": 293500, | |
| 620 | + "status": "avail", | |
| 621 | + "sku": "P1-U958076-A14085459-T1", | |
| 622 | + "image": "https://images.saatchiart.com/saatchi/958076/art/14085459/13147469-IRNSQHPP-7.jpg", | |
| 623 | + "countryName": "united states", | |
| 624 | + "uploadedAt": 1784994124 | |
| 625 | + }, | |
| 626 | + { | |
| 627 | + "artworkId": "9542703", | |
| 628 | + "url": "https://www.saatchiart.com/art/Painting-YOU-MAKE-ME-FEEL/736657/9542703/view", | |
| 629 | + "title": "YOU MAKE ME FEEL", | |
| 630 | + "artistFirstName": "daniela", | |
| 631 | + "artistLastName": "schweinsberg", | |
| 632 | + "artistId": 736657, | |
| 633 | + "category": "Painting", | |
| 634 | + "mediums": [ | |
| 635 | + "acrylic", | |
| 636 | + "spray paint", | |
| 637 | + "ink" | |
| 638 | + ], | |
| 639 | + "materials": [ | |
| 640 | + "canvas" | |
| 641 | + ], | |
| 642 | + "styles": [ | |
| 643 | + "abstract", | |
| 644 | + "abstract expressionism", | |
| 645 | + "modernism", | |
| 646 | + "other", | |
| 647 | + "street art" | |
| 648 | + ], | |
| 649 | + "subject": "abstract", | |
| 650 | + "widthCm": 160, | |
| 651 | + "heightCm": 200, | |
| 652 | + "depthCm": 2, | |
| 653 | + "listPriceCents": 798900, | |
| 654 | + "status": "avail", | |
| 655 | + "sku": "P1-U736657-A9542703-T1", | |
| 656 | + "image": "https://images.saatchiart.com/saatchi/736657/art/9542703/8605805-ZGKHJOXP-7.jpg", | |
| 657 | + "countryName": "germany", | |
| 658 | + "uploadedAt": 1659351985 | |
| 659 | + }, | |
| 660 | + { | |
| 661 | + "artworkId": "12124655", | |
| 662 | + "url": "https://www.saatchiart.com/art/Painting-Yell-It-Loud-III/1648430/12124655/view", | |
| 663 | + "title": "Yell It Loud III", | |
| 664 | + "artistFirstName": "sobo", | |
| 665 | + "artistLastName": "artz", | |
| 666 | + "artistId": 1648430, | |
| 667 | + "category": "Painting", | |
| 668 | + "mediums": [ | |
| 669 | + "acrylic" | |
| 670 | + ], | |
| 671 | + "materials": [ | |
| 672 | + "canvas" | |
| 673 | + ], | |
| 674 | + "styles": [ | |
| 675 | + "abstract", | |
| 676 | + "abstract expressionism", | |
| 677 | + "contemporary", | |
| 678 | + "expressionism" | |
| 679 | + ], | |
| 680 | + "subject": "abstract", | |
| 681 | + "widthCm": 91.4, | |
| 682 | + "heightCm": 121.9, | |
| 683 | + "depthCm": 3.8, | |
| 684 | + "listPriceCents": 297500, | |
| 685 | + "status": "avail", | |
| 686 | + "sku": "P1-U1648430-A12124655-T1", | |
| 687 | + "image": "https://images.saatchiart.com/saatchi/1648430/art/12124655/11186853-PGIDFDQD-7.jpg", | |
| 688 | + "countryName": "canada", | |
| 689 | + "uploadedAt": 1727558969 | |
| 690 | + }, | |
| 691 | + { | |
| 692 | + "artworkId": "12553083", | |
| 693 | + "url": "https://www.saatchiart.com/art/Painting-Evening-field-5/1010396/12553083/view", | |
| 694 | + "title": "Evening field 5", | |
| 695 | + "artistFirstName": "ivan", | |
| 696 | + "artistLastName": "didovodiuk", | |
| 697 | + "artistId": 1010396, | |
| 698 | + "category": "Painting", | |
| 699 | + "mediums": [ | |
| 700 | + "acrylic" | |
| 701 | + ], | |
| 702 | + "materials": [ | |
| 703 | + "canvas" | |
| 704 | + ], | |
| 705 | + "styles": [ | |
| 706 | + "abstract", | |
| 707 | + "abstract expressionism", | |
| 708 | + "expressionism", | |
| 709 | + "minimalism", | |
| 710 | + "contemporary" | |
| 711 | + ], | |
| 712 | + "subject": "landscape", | |
| 713 | + "widthCm": 119.9, | |
| 714 | + "heightCm": 89.9, | |
| 715 | + "depthCm": 0.3, | |
| 716 | + "listPriceCents": 171000, | |
| 717 | + "status": "avail", | |
| 718 | + "sku": "P1-U1010396-A12553083-T1", | |
| 719 | + "image": "https://images.saatchiart.com/saatchi/1010396/art/12553083/11615273-LNLDECUE-7.jpg", | |
| 720 | + "countryName": "ukraine", | |
| 721 | + "uploadedAt": 1739911505 | |
| 722 | + }, | |
| 723 | + { | |
| 724 | + "artworkId": "5941119", | |
| 725 | + "url": "https://www.saatchiart.com/art/Painting-French-Landscape-oil-painting/1046362/4887342/view", | |
| 726 | + "title": "“French Landscape” -oil painting-", | |
| 727 | + "artistFirstName": "peggy", | |
| 728 | + "artistLastName": "casey-mason", | |
| 729 | + "artistId": 1046362, | |
| 730 | + "category": "Painting", | |
| 731 | + "mediums": [ | |
| 732 | + "oil" | |
| 733 | + ], | |
| 734 | + "materials": [ | |
| 735 | + "canvas" | |
| 736 | + ], | |
| 737 | + "styles": [ | |
| 738 | + "abstract expressionism", | |
| 739 | + "abstract", | |
| 740 | + "expressionism", | |
| 741 | + "impressionism", | |
| 742 | + "contemporary" | |
| 743 | + ], | |
| 744 | + "subject": "landscape", | |
| 745 | + "widthCm": 72.39, | |
| 746 | + "heightCm": 168.28, | |
| 747 | + "depthCm": 0.25, | |
| 748 | + "listPriceCents": 169000, | |
| 749 | + "status": "avail", | |
| 750 | + "sku": "P1-U1046362-A5941119-T1", | |
| 751 | + "image": "https://images.saatchiart.com/saatchi/1046362/art/5941119/5010913-HSC00001-7.jpg", | |
| 752 | + "countryName": "united states", | |
| 753 | + "uploadedAt": 1554568388 | |
| 754 | + }, | |
| 755 | + { | |
| 756 | + "artworkId": "14103885", | |
| 757 | + "url": "https://www.saatchiart.com/art/Painting-Dream-of-Dogwood-Flowers/3036431/14103885/view", | |
| 758 | + "title": "Dream of Dogwood Flowers", | |
| 759 | + "artistFirstName": "natalia", | |
| 760 | + "artistLastName": "shardakova", | |
| 761 | + "artistId": 3036431, | |
| 762 | + "category": "Painting", | |
| 763 | + "mediums": [ | |
| 764 | + "acrylic" | |
| 765 | + ], | |
| 766 | + "materials": [ | |
| 767 | + "canvas" | |
| 768 | + ], | |
| 769 | + "styles": [ | |
| 770 | + "abstract", | |
| 771 | + "contemporary", | |
| 772 | + "abstract expressionism" | |
| 773 | + ], | |
| 774 | + "subject": "floral", | |
| 775 | + "widthCm": 91.4, | |
| 776 | + "heightCm": 121.9, | |
| 777 | + "depthCm": 3.8, | |
| 778 | + "listPriceCents": 225300, | |
| 779 | + "status": "avail", | |
| 780 | + "sku": "P1-U3036431-A14103885-T1", | |
| 781 | + "image": "https://images.saatchiart.com/saatchi/3036431/art/14103885/13165893-QIMGAVPQ-7.jpg", | |
| 782 | + "countryName": "united states", | |
| 783 | + "uploadedAt": 1785523081 | |
| 784 | + } | |
| 785 | + ] | |
| 786 | + } | |
| 787 | + }, | |
| 788 | + "expect": { | |
| 789 | + "minCount": 20, | |
| 790 | + "kinds": [ | |
| 791 | + "listing" | |
| 792 | + ], | |
| 793 | + "requiredFields": [ | |
| 794 | + "price", | |
| 795 | + "currency", | |
| 796 | + "attributes.brand" | |
| 797 | + ] | |
| 798 | + }, | |
| 799 | + "note": "Captured live from saatchiart.com __NEXT_DATA__", | |
| 800 | + "capturedAt": "2026-09-07T06:24:02.968Z" | |
| 801 | +} | |
| \ No newline at end of file | ||
added
data/fixtures/saatchi-art/paintings-page-2.json
+821 −0
@@ -0,0 +1,821 @@ | ||
| 1 | +{ | |
| 2 | + "raw": { | |
| 3 | + "url": "https://www.saatchiart.com/paintings?page=2", | |
| 4 | + "externalId": "browse:/paintings:2", | |
| 5 | + "kind": "listing", | |
| 6 | + "engine": "api", | |
| 7 | + "fetchedAt": "2026-09-07T06:24:05.739Z", | |
| 8 | + "payload": { | |
| 9 | + "kind": "browse_page", | |
| 10 | + "url": "https://www.saatchiart.com/paintings?page=2", | |
| 11 | + "seed": { | |
| 12 | + "path": "/paintings", | |
| 13 | + "category": "contemporary_art" | |
| 14 | + }, | |
| 15 | + "page": 2, | |
| 16 | + "totalResults": 746701, | |
| 17 | + "works": [ | |
| 18 | + { | |
| 19 | + "artworkId": "13737919", | |
| 20 | + "url": "https://www.saatchiart.com/art/Painting-Elegance-1506/965350/13737919/view", | |
| 21 | + "title": "Elegance 1506", | |
| 22 | + "artistFirstName": "jingshen", | |
| 23 | + "artistLastName": "you", | |
| 24 | + "artistId": 965350, | |
| 25 | + "category": "Painting", | |
| 26 | + "mediums": [ | |
| 27 | + "acrylic" | |
| 28 | + ], | |
| 29 | + "materials": [ | |
| 30 | + "canvas" | |
| 31 | + ], | |
| 32 | + "styles": [ | |
| 33 | + "abstract", | |
| 34 | + "abstract expressionism", | |
| 35 | + "art deco" | |
| 36 | + ], | |
| 37 | + "subject": "abstract", | |
| 38 | + "widthCm": 83.8, | |
| 39 | + "heightCm": 109.2, | |
| 40 | + "depthCm": 0.3, | |
| 41 | + "listPriceCents": 59500, | |
| 42 | + "status": "avail", | |
| 43 | + "sku": "P1-U965350-A13737919-T1", | |
| 44 | + "image": "https://images.saatchiart.com/saatchi/965350/art/13737919/12800001-PMMYTAGA-7.jpg", | |
| 45 | + "countryName": "china", | |
| 46 | + "uploadedAt": 1775031202 | |
| 47 | + }, | |
| 48 | + { | |
| 49 | + "artworkId": "12605779", | |
| 50 | + "url": "https://www.saatchiart.com/art/Painting-Meet/2448435/12605779/view", | |
| 51 | + "title": "Meet", | |
| 52 | + "artistFirstName": "joon hwan", | |
| 53 | + "artistLastName": "kim", | |
| 54 | + "artistId": 2448435, | |
| 55 | + "category": "Painting", | |
| 56 | + "mediums": [ | |
| 57 | + "oil" | |
| 58 | + ], | |
| 59 | + "materials": [ | |
| 60 | + "canvas" | |
| 61 | + ], | |
| 62 | + "styles": [ | |
| 63 | + "abstract", | |
| 64 | + "illustration", | |
| 65 | + "modernism", | |
| 66 | + "other", | |
| 67 | + "pop art" | |
| 68 | + ], | |
| 69 | + "subject": "landscape", | |
| 70 | + "widthCm": 162, | |
| 71 | + "heightCm": 97, | |
| 72 | + "depthCm": 3.8, | |
| 73 | + "listPriceCents": 1144000, | |
| 74 | + "status": "avail", | |
| 75 | + "sku": "P1-U2448435-A12605779-T1", | |
| 76 | + "image": "https://images.saatchiart.com/saatchi/2448435/art/12605779/11667967-UZUDLLVV-7.jpg", | |
| 77 | + "countryName": "south korea", | |
| 78 | + "uploadedAt": 1741342786 | |
| 79 | + }, | |
| 80 | + { | |
| 81 | + "artworkId": "14164375", | |
| 82 | + "url": "https://www.saatchiart.com/art/Painting-Horizon-2-Pink/3036431/14164375/view", | |
| 83 | + "title": "Horizon 2 - Pink", | |
| 84 | + "artistFirstName": "natalia", | |
| 85 | + "artistLastName": "shardakova", | |
| 86 | + "artistId": 3036431, | |
| 87 | + "category": "Painting", | |
| 88 | + "mediums": [ | |
| 89 | + "acrylic", | |
| 90 | + "oil stick" | |
| 91 | + ], | |
| 92 | + "materials": [ | |
| 93 | + "canvas" | |
| 94 | + ], | |
| 95 | + "styles": [ | |
| 96 | + "abstract expressionism", | |
| 97 | + "contemporary", | |
| 98 | + "abstract" | |
| 99 | + ], | |
| 100 | + "subject": "landscape", | |
| 101 | + "widthCm": 25.4, | |
| 102 | + "heightCm": 25.4, | |
| 103 | + "depthCm": 3.8, | |
| 104 | + "listPriceCents": 15000, | |
| 105 | + "status": "avail", | |
| 106 | + "sku": "P1-U3036431-A14164375-T1", | |
| 107 | + "image": "https://images.saatchiart.com/saatchi/3036431/art/14164375/13226383-IPSTGPAO-7.jpg", | |
| 108 | + "countryName": "united states", | |
| 109 | + "uploadedAt": 1787317882 | |
| 110 | + }, | |
| 111 | + { | |
| 112 | + "artworkId": "13747395", | |
| 113 | + "url": "https://www.saatchiart.com/art/Painting-In-the-middle-of-spring/2243295/13747395/view", | |
| 114 | + "title": "In the middle of spring", | |
| 115 | + "artistFirstName": "park", | |
| 116 | + "artistLastName": "seon young", | |
| 117 | + "artistId": 2243295, | |
| 118 | + "category": "Painting", | |
| 119 | + "mediums": [ | |
| 120 | + "acrylic" | |
| 121 | + ], | |
| 122 | + "materials": [ | |
| 123 | + "canvas" | |
| 124 | + ], | |
| 125 | + "styles": [ | |
| 126 | + "abstract", | |
| 127 | + "contemporary" | |
| 128 | + ], | |
| 129 | + "subject": "landscape", | |
| 130 | + "widthCm": 30, | |
| 131 | + "heightCm": 30, | |
| 132 | + "depthCm": 1, | |
| 133 | + "listPriceCents": 41000, | |
| 134 | + "status": "avail", | |
| 135 | + "sku": "P1-U2243295-A13747395-T1", | |
| 136 | + "image": "https://images.saatchiart.com/saatchi/2243295/art/13747395/12809477-UWYBJJJZ-7.jpg", | |
| 137 | + "countryName": "france", | |
| 138 | + "uploadedAt": 1775296443 | |
| 139 | + }, | |
| 140 | + { | |
| 141 | + "artworkId": "13498275", | |
| 142 | + "url": "https://www.saatchiart.com/art/Painting-Under-the-bluemoon-2/1438463/13498275/view", | |
| 143 | + "title": "Under the bluemoon_2", | |
| 144 | + "artistFirstName": "amy", | |
| 145 | + "artistLastName": "kim", | |
| 146 | + "artistId": 1438463, | |
| 147 | + "category": "Painting", | |
| 148 | + "mediums": [ | |
| 149 | + "acrylic" | |
| 150 | + ], | |
| 151 | + "materials": [ | |
| 152 | + "other", | |
| 153 | + "canvas" | |
| 154 | + ], | |
| 155 | + "styles": [ | |
| 156 | + "abstract", | |
| 157 | + "contemporary", | |
| 158 | + "minimalism", | |
| 159 | + "symbolism", | |
| 160 | + "street art" | |
| 161 | + ], | |
| 162 | + "subject": "abstract", | |
| 163 | + "widthCm": 67, | |
| 164 | + "heightCm": 80, | |
| 165 | + "depthCm": 4, | |
| 166 | + "listPriceCents": 222000, | |
| 167 | + "status": "avail", | |
| 168 | + "sku": "P1-U1438463-A13498275-T1", | |
| 169 | + "image": "https://images.saatchiart.com/saatchi/1438463/art/13498275/12560407-HKYPLKJW-7.jpg", | |
| 170 | + "countryName": "australia", | |
| 171 | + "uploadedAt": 1768003291 | |
| 172 | + }, | |
| 173 | + { | |
| 174 | + "artworkId": "12796281", | |
| 175 | + "url": "https://www.saatchiart.com/art/Painting-Sansu-Spaceii/2521485/12796281/view", | |
| 176 | + "title": "Sansu Spaceⅱ(山水空間)", | |
| 177 | + "artistFirstName": "wondeuk", | |
| 178 | + "artistLastName": "cho", | |
| 179 | + "artistId": 2521485, | |
| 180 | + "category": "Painting", | |
| 181 | + "mediums": [ | |
| 182 | + "acrylic", | |
| 183 | + "oil" | |
| 184 | + ], | |
| 185 | + "materials": [ | |
| 186 | + "canvas" | |
| 187 | + ], | |
| 188 | + "styles": [ | |
| 189 | + "contemporary", | |
| 190 | + "other", | |
| 191 | + "realism" | |
| 192 | + ], | |
| 193 | + "subject": "landscape", | |
| 194 | + "widthCm": 72.6, | |
| 195 | + "heightCm": 90.9, | |
| 196 | + "depthCm": 3, | |
| 197 | + "listPriceCents": 304800, | |
| 198 | + "status": "avail", | |
| 199 | + "sku": "P1-U2521485-A12796281-T1", | |
| 200 | + "image": "https://images.saatchiart.com/saatchi/2521485/art/12796281/11858459-MMBEDCVT-7.jpg", | |
| 201 | + "countryName": "south korea", | |
| 202 | + "uploadedAt": 1746814906 | |
| 203 | + }, | |
| 204 | + { | |
| 205 | + "artworkId": "9616563", | |
| 206 | + "url": "https://www.saatchiart.com/art/Painting-Infinite/350780/9616563/view", | |
| 207 | + "title": "Infinite", | |
| 208 | + "artistFirstName": "hennie", | |
| 209 | + "artistLastName": "van de lande", | |
| 210 | + "artistId": 350780, | |
| 211 | + "category": "Painting", | |
| 212 | + "mediums": [ | |
| 213 | + "acrylic", | |
| 214 | + "other", | |
| 215 | + "spray paint" | |
| 216 | + ], | |
| 217 | + "materials": [ | |
| 218 | + "canvas", | |
| 219 | + "wood" | |
| 220 | + ], | |
| 221 | + "styles": [ | |
| 222 | + "abstract expressionism", | |
| 223 | + "abstract", | |
| 224 | + "figurative" | |
| 225 | + ], | |
| 226 | + "subject": "landscape", | |
| 227 | + "widthCm": 100, | |
| 228 | + "heightCm": 100, | |
| 229 | + "depthCm": 4, | |
| 230 | + "listPriceCents": 318500, | |
| 231 | + "status": "avail", | |
| 232 | + "sku": "P1-U350780-A9616563-T1", | |
| 233 | + "image": "https://images.saatchiart.com/saatchi/350780/art/9616563/8679663-XNWEVTRV-7.jpg", | |
| 234 | + "countryName": "netherlands", | |
| 235 | + "uploadedAt": 1661680971 | |
| 236 | + }, | |
| 237 | + { | |
| 238 | + "artworkId": "13074535", | |
| 239 | + "url": "https://www.saatchiart.com/art/Painting-LARK/425902/13074535/view", | |
| 240 | + "title": "LARK", | |
| 241 | + "artistFirstName": "adam collier", | |
| 242 | + "artistLastName": "noel", | |
| 243 | + "artistId": 425902, | |
| 244 | + "category": "Painting", | |
| 245 | + "mediums": [ | |
| 246 | + "acrylic", | |
| 247 | + "enamel", | |
| 248 | + "other" | |
| 249 | + ], | |
| 250 | + "materials": [ | |
| 251 | + "canvas", | |
| 252 | + "paper" | |
| 253 | + ], | |
| 254 | + "styles": [ | |
| 255 | + "abstract", | |
| 256 | + "abstract expressionism", | |
| 257 | + "minimalism" | |
| 258 | + ], | |
| 259 | + "subject": "abstract", | |
| 260 | + "widthCm": 152.4, | |
| 261 | + "heightCm": 152.4, | |
| 262 | + "depthCm": 3.8, | |
| 263 | + "listPriceCents": 1160000, | |
| 264 | + "status": "avail", | |
| 265 | + "sku": "P1-U425902-A13074535-T1", | |
| 266 | + "image": "https://images.saatchiart.com/saatchi/425902/art/13074535/12136673-NCPVCDFK-7.jpg", | |
| 267 | + "countryName": "united states", | |
| 268 | + "uploadedAt": 1755295748 | |
| 269 | + }, | |
| 270 | + { | |
| 271 | + "artworkId": "13576341", | |
| 272 | + "url": "https://www.saatchiart.com/art/Painting-Eternal-Flow/793849/13576341/view", | |
| 273 | + "title": "Eternal Flow", | |
| 274 | + "artistFirstName": "eva", | |
| 275 | + "artistLastName": "volf", | |
| 276 | + "artistId": 793849, | |
| 277 | + "category": "Painting", | |
| 278 | + "mediums": [ | |
| 279 | + "oil" | |
| 280 | + ], | |
| 281 | + "materials": [ | |
| 282 | + "canvas" | |
| 283 | + ], | |
| 284 | + "styles": [ | |
| 285 | + "abstract", | |
| 286 | + "realism" | |
| 287 | + ], | |
| 288 | + "subject": "seascape", | |
| 289 | + "widthCm": 152.4, | |
| 290 | + "heightCm": 121.9, | |
| 291 | + "depthCm": 3.8, | |
| 292 | + "listPriceCents": 775000, | |
| 293 | + "status": "avail", | |
| 294 | + "sku": "P1-U793849-A13576341-T1", | |
| 295 | + "image": "https://images.saatchiart.com/saatchi/793849/art/13576341/12638433-LXYUNZFY-7.jpg", | |
| 296 | + "countryName": "united states", | |
| 297 | + "uploadedAt": 1770249754 | |
| 298 | + }, | |
| 299 | + { | |
| 300 | + "artworkId": "14176937", | |
| 301 | + "url": "https://www.saatchiart.com/art/Painting-Daisy-and-Clematis/3036431/14176937/view", | |
| 302 | + "title": "Daisy and Clematis", | |
| 303 | + "artistFirstName": "natalia", | |
| 304 | + "artistLastName": "shardakova", | |
| 305 | + "artistId": 3036431, | |
| 306 | + "category": "Painting", | |
| 307 | + "mediums": [ | |
| 308 | + "acrylic" | |
| 309 | + ], | |
| 310 | + "materials": [ | |
| 311 | + "canvas" | |
| 312 | + ], | |
| 313 | + "styles": [ | |
| 314 | + "abstract expressionism", | |
| 315 | + "contemporary", | |
| 316 | + "abstract" | |
| 317 | + ], | |
| 318 | + "subject": "abstract", | |
| 319 | + "widthCm": 91.4, | |
| 320 | + "heightCm": 91.4, | |
| 321 | + "depthCm": 3.8, | |
| 322 | + "listPriceCents": 150500, | |
| 323 | + "status": "avail", | |
| 324 | + "sku": "P1-U3036431-A14176937-T1", | |
| 325 | + "image": "https://images.saatchiart.com/saatchi/3036431/art/14176937/13238941-KHVPAOOX-7.jpg", | |
| 326 | + "countryName": "united states", | |
| 327 | + "uploadedAt": 1787676071 | |
| 328 | + }, | |
| 329 | + { | |
| 330 | + "artworkId": "12659463", | |
| 331 | + "url": "https://www.saatchiart.com/art/Painting-Kisses-of-Morning-Dew-Fresh-Start/188106/12659463/view", | |
| 332 | + "title": "Kisses of Morning Dew, Fresh Start", | |
| 333 | + "artistFirstName": "misako", | |
| 334 | + "artistLastName": "chida", | |
| 335 | + "artistId": 188106, | |
| 336 | + "category": "Painting", | |
| 337 | + "mediums": [ | |
| 338 | + "acrylic" | |
| 339 | + ], | |
| 340 | + "materials": [ | |
| 341 | + "canvas" | |
| 342 | + ], | |
| 343 | + "styles": [ | |
| 344 | + "abstract", | |
| 345 | + "abstract expressionism", | |
| 346 | + "modernism" | |
| 347 | + ], | |
| 348 | + "subject": "abstract", | |
| 349 | + "widthCm": 59.2, | |
| 350 | + "heightCm": 85.1, | |
| 351 | + "depthCm": 0.3, | |
| 352 | + "listPriceCents": 42100, | |
| 353 | + "status": "avail", | |
| 354 | + "sku": "P1-U188106-A12659463-T1", | |
| 355 | + "image": "https://images.saatchiart.com/saatchi/188106/art/12659463/11721651-PJCNVJEK-7.jpg", | |
| 356 | + "countryName": "china", | |
| 357 | + "uploadedAt": 1742812301 | |
| 358 | + }, | |
| 359 | + { | |
| 360 | + "artworkId": "12465509", | |
| 361 | + "url": "https://www.saatchiart.com/art/Painting-Beyond-the-fields-of-Longing/1192298/12465509/view", | |
| 362 | + "title": "Beyond the fields of Longing", | |
| 363 | + "artistFirstName": "belinda", | |
| 364 | + "artistLastName": "ross", | |
| 365 | + "artistId": 1192298, | |
| 366 | + "category": "Painting", | |
| 367 | + "mediums": [ | |
| 368 | + "oil" | |
| 369 | + ], | |
| 370 | + "materials": [ | |
| 371 | + "canvas" | |
| 372 | + ], | |
| 373 | + "styles": [ | |
| 374 | + "abstract", | |
| 375 | + "abstract expressionism", | |
| 376 | + "contemporary", | |
| 377 | + "expressionism", | |
| 378 | + "impressionism" | |
| 379 | + ], | |
| 380 | + "subject": "landscape", | |
| 381 | + "widthCm": 99.1, | |
| 382 | + "heightCm": 99.1, | |
| 383 | + "depthCm": 3.8, | |
| 384 | + "listPriceCents": 420000, | |
| 385 | + "status": "avail", | |
| 386 | + "sku": "P1-U1192298-A12465509-T1", | |
| 387 | + "image": "https://images.saatchiart.com/saatchi/1192298/art/12465509/11527699-QLWOJOPZ-7.jpg", | |
| 388 | + "countryName": "south africa", | |
| 389 | + "uploadedAt": 1737625814 | |
| 390 | + }, | |
| 391 | + { | |
| 392 | + "artworkId": "12307237", | |
| 393 | + "url": "https://www.saatchiart.com/art/Painting-Powerful-field/350780/12307237/view", | |
| 394 | + "title": "Powerful field", | |
| 395 | + "artistFirstName": "hennie", | |
| 396 | + "artistLastName": "van de lande", | |
| 397 | + "artistId": 350780, | |
| 398 | + "category": "Painting", | |
| 399 | + "mediums": [ | |
| 400 | + "acrylic", | |
| 401 | + "watercolor" | |
| 402 | + ], | |
| 403 | + "materials": [ | |
| 404 | + "aluminum", | |
| 405 | + "canvas" | |
| 406 | + ], | |
| 407 | + "styles": [ | |
| 408 | + "abstract", | |
| 409 | + "abstract expressionism", | |
| 410 | + "contemporary" | |
| 411 | + ], | |
| 412 | + "subject": "landscape", | |
| 413 | + "widthCm": 120, | |
| 414 | + "heightCm": 120, | |
| 415 | + "depthCm": 3.5, | |
| 416 | + "listPriceCents": 559500, | |
| 417 | + "status": "avail", | |
| 418 | + "sku": "P1-U350780-A12307237-T1", | |
| 419 | + "image": "https://images.saatchiart.com/saatchi/350780/art/12307237/11369433-UCPAMRTK-7.jpg", | |
| 420 | + "countryName": "netherlands", | |
| 421 | + "uploadedAt": 1732975009 | |
| 422 | + }, | |
| 423 | + { | |
| 424 | + "artworkId": "13932983", | |
| 425 | + "url": "https://www.saatchiart.com/art/Painting-Garden-of-Quiet-Wonder/2520373/13932983/view", | |
| 426 | + "title": "Garden of Quiet Wonder", | |
| 427 | + "artistFirstName": "elaine", | |
| 428 | + "artistLastName": "wrogemann", | |
| 429 | + "artistId": 2520373, | |
| 430 | + "category": "Painting", | |
| 431 | + "mediums": [ | |
| 432 | + "watercolor", | |
| 433 | + "ink", | |
| 434 | + "glazing" | |
| 435 | + ], | |
| 436 | + "materials": [ | |
| 437 | + "paper" | |
| 438 | + ], | |
| 439 | + "styles": [ | |
| 440 | + "abstract expressionism" | |
| 441 | + ], | |
| 442 | + "subject": "abstract", | |
| 443 | + "widthCm": 420, | |
| 444 | + "heightCm": 594, | |
| 445 | + "depthCm": 2, | |
| 446 | + "listPriceCents": 105000, | |
| 447 | + "status": "avail", | |
| 448 | + "sku": "P1-U2520373-A13932983-T1", | |
| 449 | + "image": "https://images.saatchiart.com/saatchi/2520373/art/13932983/12995015-YSQKTKQG-7.jpg", | |
| 450 | + "countryName": "south africa", | |
| 451 | + "uploadedAt": 1780250216 | |
| 452 | + }, | |
| 453 | + { | |
| 454 | + "artworkId": "14144167", | |
| 455 | + "url": "https://www.saatchiart.com/art/Painting-Teal/3036431/14144167/view", | |
| 456 | + "title": "Teal", | |
| 457 | + "artistFirstName": "natalia", | |
| 458 | + "artistLastName": "shardakova", | |
| 459 | + "artistId": 3036431, | |
| 460 | + "category": "Painting", | |
| 461 | + "mediums": [ | |
| 462 | + "acrylic" | |
| 463 | + ], | |
| 464 | + "materials": [ | |
| 465 | + "canvas" | |
| 466 | + ], | |
| 467 | + "styles": [ | |
| 468 | + "abstract expressionism", | |
| 469 | + "contemporary" | |
| 470 | + ], | |
| 471 | + "subject": "abstract", | |
| 472 | + "widthCm": 55.9, | |
| 473 | + "heightCm": 71.1, | |
| 474 | + "depthCm": 3.8, | |
| 475 | + "listPriceCents": 74200, | |
| 476 | + "status": "avail", | |
| 477 | + "sku": "P1-U3036431-A14144167-T1", | |
| 478 | + "image": "https://images.saatchiart.com/saatchi/3036431/art/14144167/13206175-GKHBARRX-7.jpg", | |
| 479 | + "countryName": "united states", | |
| 480 | + "uploadedAt": 1786723376 | |
| 481 | + }, | |
| 482 | + { | |
| 483 | + "artworkId": "13325307", | |
| 484 | + "url": "https://www.saatchiart.com/art/Painting-Luminous-Symphony/1056452/13325307/view", | |
| 485 | + "title": "Luminous Symphony", | |
| 486 | + "artistFirstName": "svitlana", | |
| 487 | + "artistLastName": "tykhomyrova", | |
| 488 | + "artistId": 1056452, | |
| 489 | + "category": "Painting", | |
| 490 | + "mediums": [ | |
| 491 | + "oil" | |
| 492 | + ], | |
| 493 | + "materials": [ | |
| 494 | + "canvas" | |
| 495 | + ], | |
| 496 | + "styles": [ | |
| 497 | + "abstract", | |
| 498 | + "impressionism", | |
| 499 | + "contemporary", | |
| 500 | + "figurative" | |
| 501 | + ], | |
| 502 | + "subject": "landscape", | |
| 503 | + "widthCm": 153, | |
| 504 | + "heightCm": 90, | |
| 505 | + "depthCm": 3, | |
| 506 | + "listPriceCents": 691000, | |
| 507 | + "status": "avail", | |
| 508 | + "sku": "P1-U1056452-A13325307-T1", | |
| 509 | + "image": "https://images.saatchiart.com/saatchi/1056452/art/13325307/12387441-GZMITFQQ-7.jpg", | |
| 510 | + "countryName": "belgium", | |
| 511 | + "uploadedAt": 1762719109 | |
| 512 | + }, | |
| 513 | + { | |
| 514 | + "artworkId": "12220643", | |
| 515 | + "url": "https://www.saatchiart.com/art/Painting-Powerflowers-featured-arresting-abstracts/350780/12220643/view", | |
| 516 | + "title": "Powerflowers (featured arresting abstracts)", | |
| 517 | + "artistFirstName": "hennie", | |
| 518 | + "artistLastName": "van de lande", | |
| 519 | + "artistId": 350780, | |
| 520 | + "category": "Painting", | |
| 521 | + "mediums": [ | |
| 522 | + "acrylic", | |
| 523 | + "watercolor" | |
| 524 | + ], | |
| 525 | + "materials": [ | |
| 526 | + "aluminum", | |
| 527 | + "canvas" | |
| 528 | + ], | |
| 529 | + "styles": [ | |
| 530 | + "abstract", | |
| 531 | + "abstract expressionism", | |
| 532 | + "figurative", | |
| 533 | + "contemporary" | |
| 534 | + ], | |
| 535 | + "subject": "botanic", | |
| 536 | + "widthCm": 100, | |
| 537 | + "heightCm": 150, | |
| 538 | + "depthCm": 3.5, | |
| 539 | + "listPriceCents": 609500, | |
| 540 | + "status": "avail", | |
| 541 | + "sku": "P1-U350780-A12220643-T1", | |
| 542 | + "image": "https://images.saatchiart.com/saatchi/350780/art/12220643/11282841-DVZYFBVO-7.jpg", | |
| 543 | + "countryName": "netherlands", | |
| 544 | + "uploadedAt": 1730461196 | |
| 545 | + }, | |
| 546 | + { | |
| 547 | + "artworkId": "11814415", | |
| 548 | + "url": "https://www.saatchiart.com/art/Painting-Absent-Minded-Friends/982033/11814415/view", | |
| 549 | + "title": "Absent Minded Friends", | |
| 550 | + "artistFirstName": "lukasz", | |
| 551 | + "artistLastName": "olek", | |
| 552 | + "artistId": 982033, | |
| 553 | + "category": "Painting", | |
| 554 | + "mediums": [ | |
| 555 | + "acrylic" | |
| 556 | + ], | |
| 557 | + "materials": [ | |
| 558 | + "linen", | |
| 559 | + "canvas" | |
| 560 | + ], | |
| 561 | + "styles": [ | |
| 562 | + "abstract", | |
| 563 | + "abstract expressionism", | |
| 564 | + "contemporary", | |
| 565 | + "minimalism" | |
| 566 | + ], | |
| 567 | + "subject": "abstract", | |
| 568 | + "widthCm": 80, | |
| 569 | + "heightCm": 120, | |
| 570 | + "depthCm": 2, | |
| 571 | + "listPriceCents": 477900, | |
| 572 | + "status": "avail", | |
| 573 | + "sku": "P1-U982033-A11814415-T1", | |
| 574 | + "image": "https://images.saatchiart.com/saatchi/982033/art/11814415/10876655-ZZDIAJLL-7.jpg", | |
| 575 | + "countryName": "poland", | |
| 576 | + "uploadedAt": 1718011436 | |
| 577 | + }, | |
| 578 | + { | |
| 579 | + "artworkId": "12537315", | |
| 580 | + "url": "https://www.saatchiart.com/art/Painting-Kaori-III-colorful-textured-painting-on-linen-canvas/1836377/12537315/view", | |
| 581 | + "title": "\"Kaori III\" - colorful textured painting on linen canvas", | |
| 582 | + "artistFirstName": "anastassia", | |
| 583 | + "artistLastName": "skopp", | |
| 584 | + "artistId": 1836377, | |
| 585 | + "category": "Painting", | |
| 586 | + "mediums": [ | |
| 587 | + "acrylic", | |
| 588 | + "spray paint" | |
| 589 | + ], | |
| 590 | + "materials": [ | |
| 591 | + "canvas", | |
| 592 | + "linen" | |
| 593 | + ], | |
| 594 | + "styles": [ | |
| 595 | + "abstract", | |
| 596 | + "impressionism", | |
| 597 | + "contemporary", | |
| 598 | + "figurative", | |
| 599 | + "fractal" | |
| 600 | + ], | |
| 601 | + "subject": "floral", | |
| 602 | + "widthCm": 89.9, | |
| 603 | + "heightCm": 89.9, | |
| 604 | + "depthCm": 2, | |
| 605 | + "listPriceCents": 184000, | |
| 606 | + "status": "avail", | |
| 607 | + "sku": "P1-U1836377-A12537315-T1", | |
| 608 | + "image": "https://images.saatchiart.com/saatchi/1836377/art/12537315/11599505-ZZZZPPLU-7.jpg", | |
| 609 | + "countryName": "germany", | |
| 610 | + "uploadedAt": 1739482884 | |
| 611 | + }, | |
| 612 | + { | |
| 613 | + "artworkId": "12891547", | |
| 614 | + "url": "https://www.saatchiart.com/art/Painting-Spring-forest/385897/12891547/view", | |
| 615 | + "title": "Spring forest", | |
| 616 | + "artistFirstName": "andrii", | |
| 617 | + "artistLastName": "kutsachenko", | |
| 618 | + "artistId": 385897, | |
| 619 | + "category": "Painting", | |
| 620 | + "mediums": [ | |
| 621 | + "oil", | |
| 622 | + "acrylic" | |
| 623 | + ], | |
| 624 | + "materials": [ | |
| 625 | + "canvas" | |
| 626 | + ], | |
| 627 | + "styles": [ | |
| 628 | + "impressionism", | |
| 629 | + "abstract", | |
| 630 | + "contemporary", | |
| 631 | + "fauvism", | |
| 632 | + "realism" | |
| 633 | + ], | |
| 634 | + "subject": "landscape", | |
| 635 | + "widthCm": 70, | |
| 636 | + "heightCm": 50, | |
| 637 | + "depthCm": 3, | |
| 638 | + "listPriceCents": 226500, | |
| 639 | + "status": "avail", | |
| 640 | + "sku": "P1-U385897-A12891547-T1", | |
| 641 | + "image": "https://images.saatchiart.com/saatchi/385897/art/12891547/11953725-ZXCPGOZU-7.jpg", | |
| 642 | + "countryName": "ukraine", | |
| 643 | + "uploadedAt": 1749752052 | |
| 644 | + }, | |
| 645 | + { | |
| 646 | + "artworkId": "10294983", | |
| 647 | + "url": "https://www.saatchiart.com/art/Painting-GAIA/978551/10294983/view", | |
| 648 | + "title": "GAIA", | |
| 649 | + "artistFirstName": "daniel", | |
| 650 | + "artistLastName": "bautista", | |
| 651 | + "artistId": 978551, | |
| 652 | + "category": "Painting", | |
| 653 | + "mediums": [ | |
| 654 | + "oil", | |
| 655 | + "acrylic" | |
| 656 | + ], | |
| 657 | + "materials": [ | |
| 658 | + "canvas" | |
| 659 | + ], | |
| 660 | + "styles": [ | |
| 661 | + "abstract", | |
| 662 | + "art deco", | |
| 663 | + "contemporary", | |
| 664 | + "modernism", | |
| 665 | + "pop art" | |
| 666 | + ], | |
| 667 | + "subject": "abstract", | |
| 668 | + "widthCm": 125, | |
| 669 | + "heightCm": 165, | |
| 670 | + "depthCm": 5, | |
| 671 | + "listPriceCents": 458600, | |
| 672 | + "status": "avail", | |
| 673 | + "sku": "P1-U978551-A10294983-T1", | |
| 674 | + "image": "https://images.saatchiart.com/saatchi/978551/art/10294983/9357607-TQSTHFMW-7.jpg", | |
| 675 | + "countryName": "spain", | |
| 676 | + "uploadedAt": 1679564067 | |
| 677 | + }, | |
| 678 | + { | |
| 679 | + "artworkId": "11286395", | |
| 680 | + "url": "https://www.saatchiart.com/art/Painting-We-Arrived-Onshore-Guided-by-Dance/719498/11286395/view", | |
| 681 | + "title": "We Arrived Onshore, Guided by Dance", | |
| 682 | + "artistFirstName": "jason", | |
| 683 | + "artistLastName": "wright", | |
| 684 | + "artistId": 719498, | |
| 685 | + "category": "Painting", | |
| 686 | + "mediums": [ | |
| 687 | + "oil", | |
| 688 | + "ink", | |
| 689 | + "acrylic", | |
| 690 | + "pastel", | |
| 691 | + "paper" | |
| 692 | + ], | |
| 693 | + "materials": [ | |
| 694 | + "wood" | |
| 695 | + ], | |
| 696 | + "styles": [ | |
| 697 | + "abstract", | |
| 698 | + "conceptual", | |
| 699 | + "modernism", | |
| 700 | + "surrealism" | |
| 701 | + ], | |
| 702 | + "subject": "water", | |
| 703 | + "widthCm": 61, | |
| 704 | + "heightCm": 91.4, | |
| 705 | + "depthCm": 3.8, | |
| 706 | + "listPriceCents": 226000, | |
| 707 | + "status": "avail", | |
| 708 | + "sku": "P1-U719498-A11286395-T1", | |
| 709 | + "image": "https://images.saatchiart.com/saatchi/719498/art/11286395/10348665-GGNSGFCL-7.jpg", | |
| 710 | + "countryName": "united states", | |
| 711 | + "uploadedAt": 1704322037 | |
| 712 | + }, | |
| 713 | + { | |
| 714 | + "artworkId": "12881979", | |
| 715 | + "url": "https://www.saatchiart.com/art/Painting-Sunset-over-the-winter-fields/735758/12881979/view", | |
| 716 | + "title": "Sunset over the winter fields", | |
| 717 | + "artistFirstName": "zoe", | |
| 718 | + "artistLastName": "hattersley", | |
| 719 | + "artistId": 735758, | |
| 720 | + "category": "Painting", | |
| 721 | + "mediums": [ | |
| 722 | + "acrylic" | |
| 723 | + ], | |
| 724 | + "materials": [ | |
| 725 | + "canvas" | |
| 726 | + ], | |
| 727 | + "styles": [ | |
| 728 | + "abstract", | |
| 729 | + "contemporary", | |
| 730 | + "modernism", | |
| 731 | + "minimalism" | |
| 732 | + ], | |
| 733 | + "subject": "landscape", | |
| 734 | + "widthCm": 30, | |
| 735 | + "heightCm": 30, | |
| 736 | + "depthCm": 2, | |
| 737 | + "listPriceCents": 33200, | |
| 738 | + "status": "avail", | |
| 739 | + "sku": "P1-U735758-A12881979-T1", | |
| 740 | + "image": "https://images.saatchiart.com/saatchi/735758/art/12881979/11944157-UOCJGHJY-7.jpg", | |
| 741 | + "countryName": "united kingdom", | |
| 742 | + "uploadedAt": 1749489578 | |
| 743 | + }, | |
| 744 | + { | |
| 745 | + "artworkId": "13757373", | |
| 746 | + "url": "https://www.saatchiart.com/art/Painting-Crystal-dream-IX/2047253/13757373/view", | |
| 747 | + "title": "Crystal dream IX", | |
| 748 | + "artistFirstName": "jonas", | |
| 749 | + "artistLastName": "peres", | |
| 750 | + "artistId": 2047253, | |
| 751 | + "category": "Painting", | |
| 752 | + "mediums": [ | |
| 753 | + "acrylic" | |
| 754 | + ], | |
| 755 | + "materials": [ | |
| 756 | + "fine art paper" | |
| 757 | + ], | |
| 758 | + "styles": [ | |
| 759 | + "abstract", | |
| 760 | + "abstract expressionism", | |
| 761 | + "color field painting", | |
| 762 | + "contemporary", | |
| 763 | + "minimalism" | |
| 764 | + ], | |
| 765 | + "subject": "abstract", | |
| 766 | + "widthCm": 120, | |
| 767 | + "heightCm": 160, | |
| 768 | + "depthCm": 4, | |
| 769 | + "listPriceCents": 2461000, | |
| 770 | + "status": "avail", | |
| 771 | + "sku": "P1-U2047253-A13757373-T1", | |
| 772 | + "image": "https://images.saatchiart.com/saatchi/2047253/art/13757373/12819455-FGRFQOZW-7.jpg", | |
| 773 | + "countryName": "spain", | |
| 774 | + "uploadedAt": 1775566481 | |
| 775 | + }, | |
| 776 | + { | |
| 777 | + "artworkId": "14120321", | |
| 778 | + "url": "https://www.saatchiart.com/art/Painting-Lilac/3036431/14120321/view", | |
| 779 | + "title": "Lilac", | |
| 780 | + "artistFirstName": "natalia", | |
| 781 | + "artistLastName": "shardakova", | |
| 782 | + "artistId": 3036431, | |
| 783 | + "category": "Painting", | |
| 784 | + "mediums": [ | |
| 785 | + "acrylic" | |
| 786 | + ], | |
| 787 | + "materials": [ | |
| 788 | + "canvas" | |
| 789 | + ], | |
| 790 | + "styles": [ | |
| 791 | + "abstract expressionism", | |
| 792 | + "contemporary" | |
| 793 | + ], | |
| 794 | + "subject": "abstract", | |
| 795 | + "widthCm": 61, | |
| 796 | + "heightCm": 61, | |
| 797 | + "depthCm": 3.8, | |
| 798 | + "listPriceCents": 69800, | |
| 799 | + "status": "avail", | |
| 800 | + "sku": "P1-U3036431-A14120321-T1", | |
| 801 | + "image": "https://images.saatchiart.com/saatchi/3036431/art/14120321/13182329-PNDORAKO-7.jpg", | |
| 802 | + "countryName": "united states", | |
| 803 | + "uploadedAt": 1786040238 | |
| 804 | + } | |
| 805 | + ] | |
| 806 | + } | |
| 807 | + }, | |
| 808 | + "expect": { | |
| 809 | + "minCount": 20, | |
| 810 | + "kinds": [ | |
| 811 | + "listing" | |
| 812 | + ], | |
| 813 | + "requiredFields": [ | |
| 814 | + "price", | |
| 815 | + "currency", | |
| 816 | + "attributes.brand" | |
| 817 | + ] | |
| 818 | + }, | |
| 819 | + "note": "Captured live from saatchiart.com __NEXT_DATA__", | |
| 820 | + "capturedAt": "2026-09-07T06:24:05.741Z" | |
| 821 | +} | |
| \ No newline at end of file | ||
added
data/fixtures/scotch-whisky-auctions/auction-page-1.json
+219 −0
@@ -0,0 +1,219 @@ | ||
| 1 | +{ | |
| 2 | + "raw": { | |
| 3 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/", | |
| 4 | + "externalId": "auction:231:page:1", | |
| 5 | + "kind": "sale", | |
| 6 | + "engine": "api", | |
| 7 | + "fetchedAt": "2026-09-07T06:20:09.607Z", | |
| 8 | + "payload": { | |
| 9 | + "kind": "lot_page", | |
| 10 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/", | |
| 11 | + "auction": { | |
| 12 | + "id": "231", | |
| 13 | + "slug": "the-182nd-auction", | |
| 14 | + "title": "The 182nd Auction", | |
| 15 | + "endedOn": "2026-08-09T00:00:00.000Z", | |
| 16 | + "lotCount": 4445, | |
| 17 | + "ended": true | |
| 18 | + }, | |
| 19 | + "page": 1, | |
| 20 | + "totalPages": 223, | |
| 21 | + "lots": [ | |
| 22 | + { | |
| 23 | + "itemId": "891436", | |
| 24 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/891436-a-highland-distillery-2006-15-year-old-error-502-bad-gateway-thompson-bros/", | |
| 25 | + "title": "A Highland Distillery 2006 15 Year Old Error 502 Bad Gateway Thompson Bros", | |
| 26 | + "lotNo": "182-03060", | |
| 27 | + "soldText": "Sold for £80 in August 2026", | |
| 28 | + "priceGbp": 80, | |
| 29 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/f66edd5df1a91183a5c05e5a135fce23-med.jpg" | |
| 30 | + }, | |
| 31 | + { | |
| 32 | + "itemId": "889289", | |
| 33 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/889289-a-highland-distillery-2010-10-year-old-watt-whisky/", | |
| 34 | + "title": "A Highland Distillery 2010 10 Year Old Watt Whisky", | |
| 35 | + "lotNo": "182-00999", | |
| 36 | + "soldText": "Sold for £50 in August 2026", | |
| 37 | + "priceGbp": 50, | |
| 38 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/f03337514396ffe81bcf8190948dbdbe-med.jpg" | |
| 39 | + }, | |
| 40 | + { | |
| 41 | + "itemId": "889649", | |
| 42 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/889649-a-highland-distillery-37-year-old-cadenheads/", | |
| 43 | + "title": "A Highland Distillery 37 Year Old Cadenhead’s", | |
| 44 | + "lotNo": "182-01343", | |
| 45 | + "soldText": "Sold for £210 in August 2026", | |
| 46 | + "priceGbp": 210, | |
| 47 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/6f171987f19f4a65a6db78c72a7f2424-med.jpg" | |
| 48 | + }, | |
| 49 | + { | |
| 50 | + "itemId": "890193", | |
| 51 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/890193-a-mystery-blend-1994-30-year-old-thompson-bros/", | |
| 52 | + "title": "A Mystery Blend 1994 30 Year Old Thompson Bros", | |
| 53 | + "lotNo": "182-01861", | |
| 54 | + "soldText": "Sold for £90 in August 2026", | |
| 55 | + "priceGbp": 90, | |
| 56 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/49a3452ecf6d4502add40e9346bf8bd1-med.jpg" | |
| 57 | + }, | |
| 58 | + { | |
| 59 | + "itemId": "891797", | |
| 60 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/891797-a-secret-speyside-1997-24-year-old-thompson-bros/", | |
| 61 | + "title": "A Secret Speyside 1997 24 Year Old Thompson Bros", | |
| 62 | + "lotNo": "182-03417", | |
| 63 | + "soldText": "Sold for £110 in August 2026", | |
| 64 | + "priceGbp": 110, | |
| 65 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/b370a6a0597687e19af835e5af937962-med.jpg" | |
| 66 | + }, | |
| 67 | + { | |
| 68 | + "itemId": "892319", | |
| 69 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/892319-a-secret-speyside-2006-16-year-old-thompson-bros/", | |
| 70 | + "title": "A Secret Speyside 2006 16 Year Old Thompson Bros", | |
| 71 | + "lotNo": "182-03929", | |
| 72 | + "soldText": "Sold for £60 in August 2026", | |
| 73 | + "priceGbp": 60, | |
| 74 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/901c0d23ebf44fc845093c304c75fdd8-med.jpg" | |
| 75 | + }, | |
| 76 | + { | |
| 77 | + "itemId": "891495", | |
| 78 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/891495-a-speyside-17-year-old-chorlton-whisky/", | |
| 79 | + "title": "A Speyside 17 Year Old Chorlton Whisky", | |
| 80 | + "lotNo": "182-03117", | |
| 81 | + "soldText": "Sold for £75 in August 2026", | |
| 82 | + "priceGbp": 75, | |
| 83 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/4e9270bf98b4c88e2a8cf6cd9b459aa1-med.jpg" | |
| 84 | + }, | |
| 85 | + { | |
| 86 | + "itemId": "891595", | |
| 87 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/891595-a-speyside-distillery-2006-15-year-old-thompson-bros/", | |
| 88 | + "title": "A Speyside Distillery 2006 15 Year Old Thompson Bros", | |
| 89 | + "lotNo": "182-03216", | |
| 90 | + "soldText": "Sold for £50 in August 2026", | |
| 91 | + "priceGbp": 50, | |
| 92 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/ba03132820005bbe724e9c711694eb2e-med.jpg" | |
| 93 | + }, | |
| 94 | + { | |
| 95 | + "itemId": "893025", | |
| 96 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/893025-aberargie-inaugural-release/", | |
| 97 | + "title": "Aberargie Inaugural Release", | |
| 98 | + "lotNo": "182-04616", | |
| 99 | + "soldText": "Sold for £75 in August 2026", | |
| 100 | + "priceGbp": 75, | |
| 101 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/8a35689dd7313432c61161679d716b42-med.jpg" | |
| 102 | + }, | |
| 103 | + { | |
| 104 | + "itemId": "890692", | |
| 105 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/890692-aberfeldy-16-year-old/", | |
| 106 | + "title": "Aberfeldy 16 Year Old", | |
| 107 | + "lotNo": "182-02341", | |
| 108 | + "soldText": "Sold for £45 in August 2026", | |
| 109 | + "priceGbp": 45, | |
| 110 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/ade4e5e0727dc7be1a2774453552f5f1-med.jpg" | |
| 111 | + }, | |
| 112 | + { | |
| 113 | + "itemId": "890691", | |
| 114 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/890691-aberfeldy-18-year-old-red-wine-finish-2924/", | |
| 115 | + "title": "Aberfeldy 18 Year Old Red Wine Finish #2924", | |
| 116 | + "lotNo": "182-02340", | |
| 117 | + "soldText": "Sold for £70 in August 2026", | |
| 118 | + "priceGbp": 70, | |
| 119 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/65a1bf8a0e24aee545e16b3da45109d3-med.jpg" | |
| 120 | + }, | |
| 121 | + { | |
| 122 | + "itemId": "890919", | |
| 123 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/890919-aberfeldy-20-year-old-exceptional-cask-series/", | |
| 124 | + "title": "Aberfeldy 20 Year Old Exceptional Cask Series", | |
| 125 | + "lotNo": "182-02543", | |
| 126 | + "soldText": "Sold for £120 in August 2026", | |
| 127 | + "priceGbp": 120, | |
| 128 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/a25275f0b487e0cb9da2a469f7af4f96-med.jpg" | |
| 129 | + }, | |
| 130 | + { | |
| 131 | + "itemId": "888729", | |
| 132 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/888729-aberfeldy-21-year-old/", | |
| 133 | + "title": "Aberfeldy 21 Year Old", | |
| 134 | + "lotNo": "182-00449", | |
| 135 | + "soldText": "Sold for £110 in August 2026", | |
| 136 | + "priceGbp": 110, | |
| 137 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/3ecbb3058f23f4a031b1e9248c19a2e1-med.jpg" | |
| 138 | + }, | |
| 139 | + { | |
| 140 | + "itemId": "890700", | |
| 141 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/890700-aberfeldy-21-year-old-madeira-cask/", | |
| 142 | + "title": "Aberfeldy 21 Year Old Madeira Cask", | |
| 143 | + "lotNo": "182-02349", | |
| 144 | + "soldText": "Sold for £95 in August 2026", | |
| 145 | + "priceGbp": 95, | |
| 146 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/b463cec2a9b3f79d73921c9b88b950ac-med.jpg" | |
| 147 | + }, | |
| 148 | + { | |
| 149 | + "itemId": "888416", | |
| 150 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/888416-aberlour-10-year-old/", | |
| 151 | + "title": "Aberlour 10 Year Old", | |
| 152 | + "lotNo": "182-00172", | |
| 153 | + "soldText": "Sold for £50 in August 2026", | |
| 154 | + "priceGbp": 50, | |
| 155 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/e1896062f783f30cfc9844dd5b0876bf-med.jpg" | |
| 156 | + }, | |
| 157 | + { | |
| 158 | + "itemId": "889976", | |
| 159 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/889976-aberlour-10-year-old/", | |
| 160 | + "title": "Aberlour 10 Year Old", | |
| 161 | + "lotNo": "182-01647", | |
| 162 | + "soldText": "Sold for £60 in August 2026", | |
| 163 | + "priceGbp": 60, | |
| 164 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/aec32e3643fdcccd7d12285f33b0936f-med.jpg" | |
| 165 | + }, | |
| 166 | + { | |
| 167 | + "itemId": "892133", | |
| 168 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/892133-aberlour-10-year-old-circa-1990s-75cl/", | |
| 169 | + "title": "Aberlour 10 Year Old Circa 1990’s 75cl", | |
| 170 | + "lotNo": "182-03744", | |
| 171 | + "soldText": "Sold for £55 in August 2026", | |
| 172 | + "priceGbp": 55, | |
| 173 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/a4330f065f43e5b69e05a958ff896846-med.jpg" | |
| 174 | + }, | |
| 175 | + { | |
| 176 | + "itemId": "890999", | |
| 177 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/890999-aberlour-11-year-old-oloroso-cask-distillery-exclusive/", | |
| 178 | + "title": "Aberlour 11 Year Old Oloroso Cask Distillery Exclusive", | |
| 179 | + "lotNo": "182-02623", | |
| 180 | + "soldText": "Sold for £65 in August 2026", | |
| 181 | + "priceGbp": 65, | |
| 182 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/493348571655eff6b3cde602b7fdd4f0-med.jpg" | |
| 183 | + }, | |
| 184 | + { | |
| 185 | + "itemId": "889018", | |
| 186 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/889018-aberlour-12-year-old-double-cask-matured/", | |
| 187 | + "title": "Aberlour 12 Year Old Double Cask Matured", | |
| 188 | + "lotNo": "182-00728", | |
| 189 | + "soldText": "Sold for £30 in August 2026", | |
| 190 | + "priceGbp": 30, | |
| 191 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/4da9908314f847b377e8d1277d9dd2bc-med.jpg" | |
| 192 | + }, | |
| 193 | + { | |
| 194 | + "itemId": "891871", | |
| 195 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/891871-aberlour-12-year-old-double-cask-matured/", | |
| 196 | + "title": "Aberlour 12 Year Old Double Cask Matured", | |
| 197 | + "lotNo": "182-03491", | |
| 198 | + "soldText": "Sold for £35 in August 2026", | |
| 199 | + "priceGbp": 35, | |
| 200 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/3a9971cd0d0a3ebfc83ba17b1bbaa210-med.jpg" | |
| 201 | + } | |
| 202 | + ] | |
| 203 | + } | |
| 204 | + }, | |
| 205 | + "expect": { | |
| 206 | + "minCount": 10, | |
| 207 | + "kinds": [ | |
| 208 | + "sale" | |
| 209 | + ], | |
| 210 | + "requiredFields": [ | |
| 211 | + "saleDate", | |
| 212 | + "price", | |
| 213 | + "currency", | |
| 214 | + "attributes.brand" | |
| 215 | + ] | |
| 216 | + }, | |
| 217 | + "note": "Captured live from scotchwhiskyauctions.com (plain HTTPS)", | |
| 218 | + "capturedAt": "2026-09-07T06:20:09.618Z" | |
| 219 | +} | |
| \ No newline at end of file | ||
added
data/fixtures/scotch-whisky-auctions/auction-page-2.json
+219 −0
@@ -0,0 +1,219 @@ | ||
| 1 | +{ | |
| 2 | + "raw": { | |
| 3 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/?page=2", | |
| 4 | + "externalId": "auction:231:page:2", | |
| 5 | + "kind": "sale", | |
| 6 | + "engine": "api", | |
| 7 | + "fetchedAt": "2026-09-07T06:20:11.560Z", | |
| 8 | + "payload": { | |
| 9 | + "kind": "lot_page", | |
| 10 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/?page=2", | |
| 11 | + "auction": { | |
| 12 | + "id": "231", | |
| 13 | + "slug": "the-182nd-auction", | |
| 14 | + "title": "The 182nd Auction", | |
| 15 | + "endedOn": "2026-08-09T00:00:00.000Z", | |
| 16 | + "lotCount": 4445, | |
| 17 | + "ended": true | |
| 18 | + }, | |
| 19 | + "page": 2, | |
| 20 | + "totalPages": 223, | |
| 21 | + "lots": [ | |
| 22 | + { | |
| 23 | + "itemId": "891872", | |
| 24 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/891872-aberlour-12-year-old-double-cask-matured/", | |
| 25 | + "title": "Aberlour 12 Year Old Double Cask Matured", | |
| 26 | + "lotNo": "182-03492", | |
| 27 | + "soldText": "Sold for £35 in August 2026", | |
| 28 | + "priceGbp": 35, | |
| 29 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/5e2eb46fdab16283876f9ee392eceb18-med.jpg" | |
| 30 | + }, | |
| 31 | + { | |
| 32 | + "itemId": "892073", | |
| 33 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/892073-aberlour-13-year-old-oloroso-cask-distillery-exclusive/", | |
| 34 | + "title": "Aberlour 13 Year Old Oloroso Cask Distillery Exclusive", | |
| 35 | + "lotNo": "182-03684", | |
| 36 | + "soldText": "Sold for £140 in August 2026", | |
| 37 | + "priceGbp": 140, | |
| 38 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/52662528ec262d2a313e65923a0d0f0c-med.jpg" | |
| 39 | + }, | |
| 40 | + { | |
| 41 | + "itemId": "889637", | |
| 42 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/889637-aberlour-16-year-old-distillery-reserve-collection-50cl/", | |
| 43 | + "title": "Aberlour 16 Year Old Distillery Reserve Collection 50cl", | |
| 44 | + "lotNo": "182-01331", | |
| 45 | + "soldText": "Sold for £80 in August 2026", | |
| 46 | + "priceGbp": 80, | |
| 47 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/e8dfe9e1ed4bfea50efca858b5f0a949-med.jpg" | |
| 48 | + }, | |
| 49 | + { | |
| 50 | + "itemId": "891870", | |
| 51 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/891870-aberlour-16-year-old-double-cask-matured/", | |
| 52 | + "title": "Aberlour 16 Year Old Double Cask Matured", | |
| 53 | + "lotNo": "182-03490", | |
| 54 | + "soldText": "Sold for £55 in August 2026", | |
| 55 | + "priceGbp": 55, | |
| 56 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/fa3e8bb9f6fe0cba84028f7f4288fb40-med.jpg" | |
| 57 | + }, | |
| 58 | + { | |
| 59 | + "itemId": "890674", | |
| 60 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/890674-aberlour-16-year-old-double-cask-matured/", | |
| 61 | + "title": "Aberlour 16 Year Old Double Cask Matured", | |
| 62 | + "lotNo": "182-02324", | |
| 63 | + "soldText": "Sold for £75 in August 2026", | |
| 64 | + "priceGbp": 75, | |
| 65 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/4983918f868fee45e7c4acdef2d5496d-med.jpg" | |
| 66 | + }, | |
| 67 | + { | |
| 68 | + "itemId": "889825", | |
| 69 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/889825-aberlour-18-year-old-double-sherry-cask-batch-04-75cl/", | |
| 70 | + "title": "Aberlour 18 Year Old Double Sherry Cask Batch #04 75cl", | |
| 71 | + "lotNo": "182-01508", | |
| 72 | + "soldText": "Sold for £95 in August 2026", | |
| 73 | + "priceGbp": 95, | |
| 74 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/15e773eef833b15a29e93140268608dd-med.jpg" | |
| 75 | + }, | |
| 76 | + { | |
| 77 | + "itemId": "889836", | |
| 78 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/889836-aberlour-18-year-old-double-sherry-cask-batch-04-75cl/", | |
| 79 | + "title": "Aberlour 18 Year Old Double Sherry Cask Batch #04 75cl", | |
| 80 | + "lotNo": "182-01519", | |
| 81 | + "soldText": "Sold for £95 in August 2026", | |
| 82 | + "priceGbp": 95, | |
| 83 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/ea891e4aca6658ab27053dd1bcf64eda-med.jpg" | |
| 84 | + }, | |
| 85 | + { | |
| 86 | + "itemId": "889488", | |
| 87 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/889488-aberlour-18-year-old-double-sherry-cask-batch-06/", | |
| 88 | + "title": "Aberlour 18 Year Old Double Sherry Cask Batch #06", | |
| 89 | + "lotNo": "182-01186", | |
| 90 | + "soldText": "Sold for £80 in August 2026", | |
| 91 | + "priceGbp": 80, | |
| 92 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/f6712d6968c03397785378d7016a2d17-med.jpg" | |
| 93 | + }, | |
| 94 | + { | |
| 95 | + "itemId": "891874", | |
| 96 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/891874-aberlour-18-year-old-double-sherry-cask-batch-06/", | |
| 97 | + "title": "Aberlour 18 Year Old Double Sherry Cask Batch #06", | |
| 98 | + "lotNo": "182-03494", | |
| 99 | + "soldText": "Sold for £80 in August 2026", | |
| 100 | + "priceGbp": 80, | |
| 101 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/8249cdd51838a1b9b20414b89c41708e-med.jpg" | |
| 102 | + }, | |
| 103 | + { | |
| 104 | + "itemId": "891758", | |
| 105 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/891758-aberlour-18-year-old-double-sherry-cask-batch-06/", | |
| 106 | + "title": "Aberlour 18 Year Old Double Sherry Cask Batch #06", | |
| 107 | + "lotNo": "182-03379", | |
| 108 | + "soldText": "Sold for £80 in August 2026", | |
| 109 | + "priceGbp": 80, | |
| 110 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/57b232c9076fbf576e94f6f2374b7b15-med.jpg" | |
| 111 | + }, | |
| 112 | + { | |
| 113 | + "itemId": "889491", | |
| 114 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/889491-aberlour-18-year-old-double-sherry-cask-batch-06/", | |
| 115 | + "title": "Aberlour 18 Year Old Double Sherry Cask Batch #06", | |
| 116 | + "lotNo": "182-01189", | |
| 117 | + "soldText": "Sold for £80 in August 2026", | |
| 118 | + "priceGbp": 80, | |
| 119 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/850bdf83c2008e4729a083e36acbb372-med.jpg" | |
| 120 | + }, | |
| 121 | + { | |
| 122 | + "itemId": "889485", | |
| 123 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/889485-aberlour-18-year-old-double-sherry-cask-batch-06/", | |
| 124 | + "title": "Aberlour 18 Year Old Double Sherry Cask Batch #06", | |
| 125 | + "lotNo": "182-01183", | |
| 126 | + "soldText": "Sold for £80 in August 2026", | |
| 127 | + "priceGbp": 80, | |
| 128 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/bdb93fb51d4a780dd904a7b24fe0ef21-med.jpg" | |
| 129 | + }, | |
| 130 | + { | |
| 131 | + "itemId": "889487", | |
| 132 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/889487-aberlour-18-year-old-double-sherry-cask-batch-06/", | |
| 133 | + "title": "Aberlour 18 Year Old Double Sherry Cask Batch #06", | |
| 134 | + "lotNo": "182-01185", | |
| 135 | + "soldText": "Sold for £85 in August 2026", | |
| 136 | + "priceGbp": 85, | |
| 137 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/070e50167605ba7e50999a6396fa3def-med.jpg" | |
| 138 | + }, | |
| 139 | + { | |
| 140 | + "itemId": "889489", | |
| 141 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/889489-aberlour-18-year-old-double-sherry-cask-batch-06/", | |
| 142 | + "title": "Aberlour 18 Year Old Double Sherry Cask Batch #06", | |
| 143 | + "lotNo": "182-01187", | |
| 144 | + "soldText": "Sold for £85 in August 2026", | |
| 145 | + "priceGbp": 85, | |
| 146 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/1edadb12281cb9bcf86177e3b21397d4-med.jpg" | |
| 147 | + }, | |
| 148 | + { | |
| 149 | + "itemId": "891873", | |
| 150 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/891873-aberlour-18-year-old-double-sherry-cask-batch-06/", | |
| 151 | + "title": "Aberlour 18 Year Old Double Sherry Cask Batch #06", | |
| 152 | + "lotNo": "182-03493", | |
| 153 | + "soldText": "Sold for £85 in August 2026", | |
| 154 | + "priceGbp": 85, | |
| 155 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/10a289420b7e84496293303af2d77ed2-med.jpg" | |
| 156 | + }, | |
| 157 | + { | |
| 158 | + "itemId": "891875", | |
| 159 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/891875-aberlour-18-year-old-double-sherry-cask-batch-07/", | |
| 160 | + "title": "Aberlour 18 Year Old Double Sherry Cask Batch #07", | |
| 161 | + "lotNo": "182-03495", | |
| 162 | + "soldText": "Sold for £85 in August 2026", | |
| 163 | + "priceGbp": 85, | |
| 164 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/83aa343ec2da7b840c7d68002333cce5-med.jpg" | |
| 165 | + }, | |
| 166 | + { | |
| 167 | + "itemId": "889493", | |
| 168 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/889493-aberlour-18-year-old-double-sherry-cask-batch-07/", | |
| 169 | + "title": "Aberlour 18 Year Old Double Sherry Cask Batch #07", | |
| 170 | + "lotNo": "182-01191", | |
| 171 | + "soldText": "Sold for £85 in August 2026", | |
| 172 | + "priceGbp": 85, | |
| 173 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/f4c440cbe1c98524de0137ab5033af2b-med.jpg" | |
| 174 | + }, | |
| 175 | + { | |
| 176 | + "itemId": "889490", | |
| 177 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/889490-aberlour-18-year-old-double-sherry-cask-batch-07/", | |
| 178 | + "title": "Aberlour 18 Year Old Double Sherry Cask Batch #07", | |
| 179 | + "lotNo": "182-01188", | |
| 180 | + "soldText": "Sold for £85 in August 2026", | |
| 181 | + "priceGbp": 85, | |
| 182 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/7d40ba23a6c35bc8bfd2fc0d1c86b65a-med.jpg" | |
| 183 | + }, | |
| 184 | + { | |
| 185 | + "itemId": "889492", | |
| 186 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/889492-aberlour-18-year-old-double-sherry-cask-batch-07/", | |
| 187 | + "title": "Aberlour 18 Year Old Double Sherry Cask Batch #07", | |
| 188 | + "lotNo": "182-01190", | |
| 189 | + "soldText": "Sold for £85 in August 2026", | |
| 190 | + "priceGbp": 85, | |
| 191 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/8480e64bff2551c041429c5695232b41-med.jpg" | |
| 192 | + }, | |
| 193 | + { | |
| 194 | + "itemId": "889486", | |
| 195 | + "url": "https://www.scotchwhiskyauctions.com/auctions/231-the-182nd-auction/889486-aberlour-18-year-old-double-sherry-cask-batch-07/", | |
| 196 | + "title": "Aberlour 18 Year Old Double Sherry Cask Batch #07", | |
| 197 | + "lotNo": "182-01184", | |
| 198 | + "soldText": "Sold for £85 in August 2026", | |
| 199 | + "priceGbp": 85, | |
| 200 | + "image": "https://d3suvtcq00dftb.cloudfront.net/images/b650846e68454ddc14617f7e1e05d6ef-med.jpg" | |
| 201 | + } | |
| 202 | + ] | |
| 203 | + } | |
| 204 | + }, | |
| 205 | + "expect": { | |
| 206 | + "minCount": 10, | |
| 207 | + "kinds": [ | |
| 208 | + "sale" | |
| 209 | + ], | |
| 210 | + "requiredFields": [ | |
| 211 | + "saleDate", | |
| 212 | + "price", | |
| 213 | + "currency", | |
| 214 | + "attributes.brand" | |
| 215 | + ] | |
| 216 | + }, | |
| 217 | + "note": "Captured live from scotchwhiskyauctions.com (plain HTTPS)", | |
| 218 | + "capturedAt": "2026-09-07T06:20:11.570Z" | |
| 219 | +} | |
| \ No newline at end of file | ||
added
data/fixtures/winebid/item-10887719.json
+78 −0
@@ -0,0 +1,78 @@ | ||
| 1 | +{ | |
| 2 | + "raw": { | |
| 3 | + "url": "https://www.winebid.com/BuyWine/Item/10887719/2019-Chateau-Haut-Brion-Chateau-Lafite-Rothschild-~", | |
| 4 | + "externalId": "item:10887719", | |
| 5 | + "kind": "sale", | |
| 6 | + "engine": "api", | |
| 7 | + "fetchedAt": "2026-09-07T06:28:32.401Z", | |
| 8 | + "payload": { | |
| 9 | + "kind": "item_page", | |
| 10 | + "url": "https://www.winebid.com/BuyWine/Item/10887719/2019-Chateau-Haut-Brion-Chateau-Lafite-Rothschild-~", | |
| 11 | + "itemId": "10887719", | |
| 12 | + "title": "2019 Château Haut-Brion, Château Lafite-Rothschild, Château Margaux, Château Mouton Rothschild", | |
| 13 | + "category": "Bordeaux", | |
| 14 | + "condition": null, | |
| 15 | + "currentBid": null, | |
| 16 | + "estimate": null, | |
| 17 | + "ended": false, | |
| 18 | + "image": "https://www.winebid.com/BlogPhoto/20200317090006.png", | |
| 19 | + "recentSales": [ | |
| 20 | + { | |
| 21 | + "itemId": "10854183", | |
| 22 | + "url": "https://www.winebid.com/BuyWine/Item/10854183/2019-Chateau-Haut-Brion-Chateau-Lafite-Rothschild-~", | |
| 23 | + "quantity": 1, | |
| 24 | + "amountUsd": 2585, | |
| 25 | + "soldOn": "August 16, 2026 12:00:00 AM (PDT)" | |
| 26 | + }, | |
| 27 | + { | |
| 28 | + "itemId": "10807246", | |
| 29 | + "url": "https://www.winebid.com/BuyWine/Item/10807246/2019-Chateau-Haut-Brion-Chateau-Lafite-Rothschild-~", | |
| 30 | + "quantity": 1, | |
| 31 | + "amountUsd": 2790, | |
| 32 | + "soldOn": "July 12, 2026 12:00:00 AM (PDT)" | |
| 33 | + }, | |
| 34 | + { | |
| 35 | + "itemId": "10751899", | |
| 36 | + "url": "https://www.winebid.com/BuyWine/Item/10751899/2019-Chateau-Haut-Brion-Chateau-Lafite-Rothschild-~", | |
| 37 | + "quantity": 1, | |
| 38 | + "amountUsd": 2485, | |
| 39 | + "soldOn": "May 24, 2026 12:00:00 AM (PDT)" | |
| 40 | + }, | |
| 41 | + { | |
| 42 | + "itemId": "10728809", | |
| 43 | + "url": "https://www.winebid.com/BuyWine/Item/10728809/2019-Chateau-Haut-Brion-Chateau-Lafite-Rothschild-~", | |
| 44 | + "quantity": 1, | |
| 45 | + "amountUsd": 2485, | |
| 46 | + "soldOn": "May 3, 2026 12:00:00 AM (PDT)" | |
| 47 | + }, | |
| 48 | + { | |
| 49 | + "itemId": "10688070", | |
| 50 | + "url": "https://www.winebid.com/BuyWine/Item/10688070/2019-Chateau-Haut-Brion-Chateau-Lafite-Rothschild-~", | |
| 51 | + "quantity": 1, | |
| 52 | + "amountUsd": 2380, | |
| 53 | + "soldOn": "April 5, 2026 12:00:00 AM (PDT)" | |
| 54 | + }, | |
| 55 | + { | |
| 56 | + "itemId": "10688069", | |
| 57 | + "url": "https://www.winebid.com/BuyWine/Item/10688069/2019-Chateau-Haut-Brion-Chateau-Lafite-Rothschild-~", | |
| 58 | + "quantity": 1, | |
| 59 | + "amountUsd": 2480, | |
| 60 | + "soldOn": "April 5, 2026 12:00:00 AM (PDT)" | |
| 61 | + } | |
| 62 | + ] | |
| 63 | + } | |
| 64 | + }, | |
| 65 | + "expect": { | |
| 66 | + "minCount": 2, | |
| 67 | + "kinds": [ | |
| 68 | + "sale", | |
| 69 | + "listing" | |
| 70 | + ], | |
| 71 | + "requiredFields": [ | |
| 72 | + "rawTitle", | |
| 73 | + "attributes.name" | |
| 74 | + ] | |
| 75 | + }, | |
| 76 | + "note": "Captured live from winebid.com item page (plain HTTPS)", | |
| 77 | + "capturedAt": "2026-09-07T06:28:32.420Z" | |
| 78 | +} | |
| \ No newline at end of file | ||
added
data/fixtures/winebid/item-10887720.json
+78 −0
@@ -0,0 +1,78 @@ | ||
| 1 | +{ | |
| 2 | + "raw": { | |
| 3 | + "url": "https://www.winebid.com/BuyWine/Item/10887720/2019-Chateau-Haut-Brion-Chateau-Lafite-Rothschild-~", | |
| 4 | + "externalId": "item:10887720", | |
| 5 | + "kind": "sale", | |
| 6 | + "engine": "api", | |
| 7 | + "fetchedAt": "2026-09-07T06:28:30.481Z", | |
| 8 | + "payload": { | |
| 9 | + "kind": "item_page", | |
| 10 | + "url": "https://www.winebid.com/BuyWine/Item/10887720/2019-Chateau-Haut-Brion-Chateau-Lafite-Rothschild-~", | |
| 11 | + "itemId": "10887720", | |
| 12 | + "title": "2019 Château Haut-Brion, Château Lafite-Rothschild, Château Margaux, Château Mouton Rothschild", | |
| 13 | + "category": "Bordeaux", | |
| 14 | + "condition": null, | |
| 15 | + "currentBid": null, | |
| 16 | + "estimate": null, | |
| 17 | + "ended": false, | |
| 18 | + "image": "https://www.winebid.com/BlogPhoto/20200317090006.png", | |
| 19 | + "recentSales": [ | |
| 20 | + { | |
| 21 | + "itemId": "10854183", | |
| 22 | + "url": "https://www.winebid.com/BuyWine/Item/10854183/2019-Chateau-Haut-Brion-Chateau-Lafite-Rothschild-~", | |
| 23 | + "quantity": 1, | |
| 24 | + "amountUsd": 2585, | |
| 25 | + "soldOn": "August 16, 2026 12:00:00 AM (PDT)" | |
| 26 | + }, | |
| 27 | + { | |
| 28 | + "itemId": "10807246", | |
| 29 | + "url": "https://www.winebid.com/BuyWine/Item/10807246/2019-Chateau-Haut-Brion-Chateau-Lafite-Rothschild-~", | |
| 30 | + "quantity": 1, | |
| 31 | + "amountUsd": 2790, | |
| 32 | + "soldOn": "July 12, 2026 12:00:00 AM (PDT)" | |
| 33 | + }, | |
| 34 | + { | |
| 35 | + "itemId": "10751899", | |
| 36 | + "url": "https://www.winebid.com/BuyWine/Item/10751899/2019-Chateau-Haut-Brion-Chateau-Lafite-Rothschild-~", | |
| 37 | + "quantity": 1, | |
| 38 | + "amountUsd": 2485, | |
| 39 | + "soldOn": "May 24, 2026 12:00:00 AM (PDT)" | |
| 40 | + }, | |
| 41 | + { | |
| 42 | + "itemId": "10728809", | |
| 43 | + "url": "https://www.winebid.com/BuyWine/Item/10728809/2019-Chateau-Haut-Brion-Chateau-Lafite-Rothschild-~", | |
| 44 | + "quantity": 1, | |
| 45 | + "amountUsd": 2485, | |
| 46 | + "soldOn": "May 3, 2026 12:00:00 AM (PDT)" | |
| 47 | + }, | |
| 48 | + { | |
| 49 | + "itemId": "10688070", | |
| 50 | + "url": "https://www.winebid.com/BuyWine/Item/10688070/2019-Chateau-Haut-Brion-Chateau-Lafite-Rothschild-~", | |
| 51 | + "quantity": 1, | |
| 52 | + "amountUsd": 2380, | |
| 53 | + "soldOn": "April 5, 2026 12:00:00 AM (PDT)" | |
| 54 | + }, | |
| 55 | + { | |
| 56 | + "itemId": "10688069", | |
| 57 | + "url": "https://www.winebid.com/BuyWine/Item/10688069/2019-Chateau-Haut-Brion-Chateau-Lafite-Rothschild-~", | |
| 58 | + "quantity": 1, | |
| 59 | + "amountUsd": 2480, | |
| 60 | + "soldOn": "April 5, 2026 12:00:00 AM (PDT)" | |
| 61 | + } | |
| 62 | + ] | |
| 63 | + } | |
| 64 | + }, | |
| 65 | + "expect": { | |
| 66 | + "minCount": 2, | |
| 67 | + "kinds": [ | |
| 68 | + "sale", | |
| 69 | + "listing" | |
| 70 | + ], | |
| 71 | + "requiredFields": [ | |
| 72 | + "rawTitle", | |
| 73 | + "attributes.name" | |
| 74 | + ] | |
| 75 | + }, | |
| 76 | + "note": "Captured live from winebid.com item page (plain HTTPS)", | |
| 77 | + "capturedAt": "2026-09-07T06:28:30.521Z" | |
| 78 | +} | |
| \ No newline at end of file | ||
| 79 | ||