SPB Git forge

spb/rareindex

Public
54commits 1branches 0releases
7.1 MBsize
maindefault branch
10 days agolast push
TypeScript 61.9% HTML 37.2% SQL 0.7%

Connectors (9 sources), pipeline workers, valuation, indices, CLI, docs (agents A–D, G)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Simon-Pierre Boucher committed 17 days ago (Sep 7, 2026) parent ea481cc

75 changed files +19,993 −2

modified .env.example +1 −1
@@ -32,4 +32,4 @@ LOG_LEVEL=info
32 32
33 33 # Transactional email (verification codes, MFA codes, alerts, digests)
34 34 RESEND_API_KEY=
35 −EMAIL_FROM=RareIndex <no-reply@rareindex.io>
35 +EMAIL_FROM="RareIndex <no-reply@rareindex.io>"
added README.md +88 −0
@@ -0,0 +1,88 @@
1 +# RareIndex
2 +
3 +**The global market for collectibles.** RareIndex.io is a market-intelligence, search, pricing and
4 +index platform for collectible assets: trading cards, sports cards, watches, sneakers, LEGO, comics,
5 +video games, toys, coins, art, wine and, over time, every category the collectibles economy contains.
6 +It continuously collects public market data from marketplaces, auction houses, dealers, grading
7 +companies, manufacturer catalogs and archives, resolves it into one canonical asset graph, and turns
8 +it into research-grade data: valuations with confidence levels, comparable sales, live listings,
9 +rarity and liquidity scores, price histories, and the RareIndex family of indices (`RARE` and its
10 +category subindices).
11 +
12 +RareIndex is an intelligence platform, not a marketplace aggregator. Every number shown is traceable
13 +to its source, every estimate carries a sample size and a confidence level, and when the evidence is
14 +insufficient the platform says "Data unavailable" rather than inventing a figure. The full product
15 +mandate is in [`docs/SPEC-original.md`](docs/SPEC-original.md); the condensed working version that
16 +guides implementation is [`CLAUDE.md`](CLAUDE.md).
17 +
18 +## Architecture
19 +
20 +TypeScript end-to-end in a pnpm monorepo: Next.js 16 web app, Fastify public API, PostgreSQL 17
21 +(pg_trgm, unaccent, pgvector) as system of record, pg-boss workers for the ingestion pipeline, and a
22 +connector framework routing Direct API → Firecrawl → Scrapfly with quality scoring and health
23 +metrics. See [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) for the layout and data flow, and
24 +[`docs/adr/`](docs/adr/) for the decisions behind it.
25 +
26 +```
27 +apps/web · apps/api · packages/{shared,database,taxonomy,connectors,valuation,indices,search,ai}
28 +workers/ · connectors/ (+ registry.json) · data/{taxonomy,fixtures} · docs/ · scripts/
29 +```
30 +
31 +Data flow: `raw_records` (immutable) → `normalize()` → `normalized_records` → entity resolution →
32 +`assets` / `asset_variants` → dedupe and price validation (flags + audit log, nothing deleted) →
33 +`sales` / `listings` / `auction_lots` / `price_observations` → valuations and stats → indices.
34 +
35 +## Quick start
36 +
37 +Requirements: Node ≥ 22, pnpm 11, PostgreSQL 17 with the `pgvector` extension available.
38 +
39 +```bash
40 +pnpm install
41 +createdb rareindex
42 +cp .env.example .env # fill DATABASE_URL, FIRECRAWL_API_KEY, SCRAPFLY_API_KEY, AI and Resend keys
43 +pnpm db:migrate && pnpm db:seed # creates extensions + tables, seeds taxonomy, graders, indices, registry
44 +
45 +pnpm dev:web # Next.js on http://localhost:3000
46 +pnpm dev:api # public REST API (/v1)
47 +pnpm worker # pipeline workers (crawl, normalize, resolve, value, index)
48 +pnpm ri --help # operational CLI (run a connector, recompute valuations, health…)
49 +```
50 +
51 +Useful scripts: `pnpm typecheck`, `pnpm test`, `pnpm build`, `pnpm db:generate` (after editing
52 +`packages/database/src/schema/*`), `pnpm tsx scripts/build-registry.ts` (rebuilds
53 +`connectors/registry.json` from per-connector `meta.json` files).
54 +
55 +## Adding a connector
56 +
57 +A new source needs only four things: connector metadata (`meta.json`), an extraction schema, a pure
58 +`normalize()` adapter and real captured fixtures with tests. The rest of the pipeline works
59 +unchanged. Conventions and the module contract are in [`connectors/README.md`](connectors/README.md).
60 +
61 +## Data honesty rules
62 +
63 +- No fabricated data, ever: no invented sales, prices, populations, market caps, auctions or listings.
64 +- Price-guide values are stored as observations, never as transactions.
65 +- Valuations are published only with sample size, confidence, low/high range and timestamp.
66 +- Outliers are flagged and audited, never silently deleted.
67 +- Sale dates come from the source; crawl time is never substituted.
68 +- Historical prices are converted with the exchange rate of the sale date.
69 +
70 +Details: [`docs/adr/0002-data-honesty.md`](docs/adr/0002-data-honesty.md).
71 +
72 +## Deployment
73 +
74 +Production runs on a MacLustr node (PostgreSQL 17 + pgvector) deployed through the `mld` gateway:
75 +PM2 processes `rareindex-web`, `rareindex-api`, `rareindex-worker` and an ngrok tunnel serving
76 +**https://www.rareindex.io**. Secrets live only in the node's `.env` / the `mld` manifest.
77 +
78 +## Disclaimers
79 +
80 +RareIndex is an information platform. Valuations are estimates derived from observed public data.
81 +Listing prices are not confirmed transactions. Past performance does not guarantee future results.
82 +RareIndex does not authenticate items. Third-party names, marks and content belong to their owners
83 +and are attributed to their sources; RareIndex respects source terms, robots policies, rate limits,
84 +copyright, privacy and database rights, and never bypasses authentication, paywalls or CAPTCHAs.
85 +
86 +## License
87 +
88 +Proprietary — © 2026 RareIndex. All rights reserved.
added connectors/api/README.md +23 −0
@@ -0,0 +1,23 @@
1 +# Official-API connectors
2 +
3 +Sources with a public, documented API (engine priority `api`, optional `feed` fallback). They provide
4 +the **catalog backbone** (canonical printings with deterministic identifiers) plus **price-guide
5 +observations** — never transactions.
6 +
7 +| id | source | catalog | prices | full run | notes |
8 +|---|---|---|---|---|---|
9 +| `scryfall` | Scryfall bulk `default_cards` (JSONL gz, daily) | ~110k printings × finishes | USD/EUR market (TCGplayer/Cardmarket aggregates), dated with the bulk `updated_at` | 1 listing call + 1 streamed 78 MB download | cursor `{updatedAt}` skips unchanged bulks; `lookup()` for scryfall.com card URLs |
10 +| `pokemontcg` | api.pokemontcg.io v2 | ~19k cards / 174 sets (× TCGplayer variants) | TCGplayer USD low/mid/high/market per variant + Cardmarket EUR aggregates, each with its own `updatedAt` | 1 sets call + ~190 card pages at ≤28 req/min ≈ 8 min | API is intermittently 5xx → 5 retries w/ backoff, then GitHub mirror (catalog only) |
11 +| `ygoprodeck` | db.ygoprodeck.com v7 `cardinfo.php?misc=yes` | ~14.5k cards / ~44k printings | per-printing `set_price` (USD, `guide_value`) + card-level tcgplayer/cardmarket/ebay/amazon/coolstuffinc | ONE ~21 MB request | no price timestamp → dated at fetch, confidence 0.7 |
12 +
13 +## Identifiers for entity resolution
14 +
15 +- Scryfall: `scryfall_id` (printing, unique) · `oracle_id` (card concept) · `tcgplayer_id` · `cardmarket_id` · `mtgo_id` · `multiverse_id` · `finish` (nonfoil/foil/etched). Canonical printing key ≈ `magic_the_gathering|<setCode>|<number>|<lang>|<variant>`.
16 +- Pokémon: `pokemontcg_id` (e.g. `base1-4`) · `pokemontcg_set_id` · `tcgplayer_url`. Variants: null / Holo / Reverse Holo / 1st Edition / 1st Edition Holo (from TCGplayer price keys). Canonical key ≈ `pokemon|<setCode>|<number>|<variant>`.
17 +- Yu-Gi-Oh!: `ygo_id` (passcode) · `konami_id` · `set_code` (e.g. `LOB-EN001`; same code may exist in several rarities → distinct printings). Canonical key ≈ `yugioh|<set_code>|<rarity>`.
18 +
19 +## Tooling
20 +
21 +- `pnpm tsx connectors/api/_lib/capture.ts` — refresh fixtures from live responses (small, trimmed).
22 +- `pnpm tsx connectors/api/_lib/smoke.ts [id…]` — live probe crawl (limit 5) through the real router/context.
23 +- Tests: `pnpm --filter @rareindex/source-connectors run test` (fixture suite + targeted assertions).
added connectors/api/_lib/capture.ts +74 −0
@@ -0,0 +1,74 @@
1 +/**
2 + * Build fixtures for the official-API connectors from live captures.
3 + * Usage: pnpm tsx connectors/api/_lib/capture.ts (fetches live; keeps fixtures small)
4 + */
5 +import { saveFixture } from '@rareindex/connectors/testing';
6 +import { trimCard as trimScryfall } from '../scryfall/index.js';
7 +import { trimCard as trimPokemon } from '../pokemontcg/index.js';
8 +import { trimCard as trimYgo } from '../ygoprodeck/index.js';
9 +
10 +const UA = { 'user-agent': 'RareIndexBot/0.1 (+https://www.rareindex.io/about/data)', accept: 'application/json' };
11 +
12 +async function getJson<T>(url: string, attempts = 5): Promise<T> {
13 + let last = '';
14 + for (let i = 0; i < attempts; i++) {
15 + const res = await fetch(url, { headers: UA });
16 + if (res.ok) return (await res.json()) as T;
17 + last = `HTTP ${res.status}`;
18 + await new Promise((r) => setTimeout(r, 1500 * 2 ** i));
19 + }
20 + throw new Error(`${url}: ${last}`);
21 +}
22 +
23 +const fetchedAt = new Date().toISOString();
24 +
25 +// ---- Scryfall: single cards via API (same shape as bulk lines) ----
26 +const scry: Array<[string, string, Record<string, unknown>]> = [
27 + ['lea/232', 'black-lotus-alpha', { count: 2, kinds: ['catalog_item', 'price_observation'], 'first.attributes.setCode': 'LEA' }],
28 + ['sld/1145', 'secret-lair-foil-nonfoil', { minCount: 4 }],
29 + ['neo/430', 'neo-showcase-foil-only', { minCount: 2 }],
30 + ['clb/682', 'clb-double-faced', { minCount: 2 }],
31 +];
32 +for (const [path, name, expect] of scry) {
33 + const card = await getJson<Record<string, unknown>>(`https://api.scryfall.com/cards/${path}`);
34 + await new Promise((r) => setTimeout(r, 120));
35 + saveFixture('scryfall', name, {
36 + raw: { url: String(card.scryfall_uri), externalId: String(card.id), kind: 'catalog_item', engine: 'api', fetchedAt: new Date(fetchedAt), payload: { card: trimScryfall(card), bulkUpdatedAt: '2026-09-06T21:05:43.673+00:00' } },
37 + expect: { count: (expect.count as number | undefined), minCount: (expect.minCount as number | undefined), kinds: expect.kinds as string[] | undefined, requiredFields: ['attributes.identifiers.scryfall_id', 'attributes.setCode', 'attributes.number'] },
38 + note: `Live capture of https://api.scryfall.com/cards/${path}; bulkUpdatedAt copied from the bulk-data listing of the same day.`,
39 + });
40 +}
41 +
42 +// ---- Pokémon TCG: base1 (API is flaky → retries) ----
43 +const pk = await getJson<{ data: Record<string, unknown>[] }>('https://api.pokemontcg.io/v2/cards?q=set.id:base1');
44 +const wanted = new Set(['base1-1', 'base1-4', 'base1-58', 'base1-102']);
45 +for (const c of pk.data.filter((x) => wanted.has(String(x.id)))) {
46 + const card = trimPokemon(c);
47 + saveFixture('pokemontcg', String(card.id), {
48 + raw: { url: `https://api.pokemontcg.io/v2/cards/${card.id}`, externalId: card.id, kind: 'catalog_item', engine: 'api', fetchedAt: new Date(fetchedAt), payload: { card, source: 'api' } },
49 + expect: { minCount: 1, kinds: ['catalog_item', 'price_observation'], requiredFields: ['attributes.identifiers.pokemontcg_id', 'attributes.set', 'attributes.number', 'attributes.year'] },
50 + note: 'Live capture of https://api.pokemontcg.io/v2/cards?q=set.id:base1 (trimmed).',
51 + });
52 +}
53 +// GitHub mirror shape (no prices)
54 +const mirror = await getJson<Record<string, unknown>[]>('https://raw.githubusercontent.com/PokemonTCG/pokemon-tcg-data/master/cards/en/base1.json');
55 +const sets = await getJson<Record<string, unknown>[]>('https://raw.githubusercontent.com/PokemonTCG/pokemon-tcg-data/master/sets/en.json');
56 +const base1 = sets.find((s) => s.id === 'base1') as Record<string, unknown>;
57 +const m4 = mirror.find((c) => c.id === 'base1-4')!;
58 +saveFixture('pokemontcg', 'base1-4-mirror', {
59 + raw: { url: 'https://api.pokemontcg.io/v2/cards/base1-4', externalId: 'base1-4', kind: 'catalog_item', engine: 'feed', fetchedAt: new Date(fetchedAt), payload: { card: trimPokemon(m4, base1 as never), source: 'github-mirror' } },
60 + expect: { count: 1, kinds: ['catalog_item'], first: { 'attributes.variant': null } },
61 + note: 'GitHub mirror fallback (PokemonTCG/pokemon-tcg-data): catalog only, no prices.',
62 +});
63 +
64 +// ---- YGOPRODeck ----
65 +const ygo = await getJson<{ data: Record<string, unknown>[] }>('https://db.ygoprodeck.com/api/v7/cardinfo.php?name=Dark%20Magician%7CBlue-Eyes%20White%20Dragon%7CPot%20of%20Greed&misc=yes');
66 +for (const c of ygo.data) {
67 + const card = trimYgo(c);
68 + saveFixture('ygoprodeck', String(card.id), {
69 + raw: { url: String(card.ygoprodeck_url), externalId: String(card.id), kind: 'catalog_item', engine: 'api', fetchedAt: new Date(fetchedAt), payload: { card } },
70 + expect: { minCount: (card.card_sets?.length ?? 1), kinds: ['catalog_item', 'price_observation'], requiredFields: ['attributes.identifiers.ygo_id', 'attributes.set', 'attributes.number'] },
71 + note: 'Live capture of cardinfo.php?name=…&misc=yes (trimmed).',
72 + });
73 +}
74 +console.log('fixtures written');
added connectors/api/_lib/shared.ts +62 −0
@@ -0,0 +1,62 @@
1 +import { z } from 'zod';
2 +import { AssetAttributesSchema, NormalizedCatalogItemSchema, NormalizedPriceObservationSchema, type NormalizedCatalogItem, type NormalizedPriceObservation } from '@rareindex/shared';
3 +
4 +/** Helpers shared by the official-API connectors (kept inside connectors/api, not the framework). */
5 +
6 +export type AttrInput = z.input<typeof AssetAttributesSchema>;
7 +
8 +export function attrs(input: AttrInput) {
9 + return AssetAttributesSchema.parse(input);
10 +}
11 +
12 +export function catalogItem(input: z.input<typeof NormalizedCatalogItemSchema>): NormalizedCatalogItem {
13 + return NormalizedCatalogItemSchema.parse(input);
14 +}
15 +
16 +export function priceObservation(input: z.input<typeof NormalizedPriceObservationSchema>): NormalizedPriceObservation {
17 + return NormalizedPriceObservationSchema.parse(input);
18 +}
19 +
20 +/** "2026/09/06" | "2026-09-06" | "2022/10/10 15:12:00" → UTC Date, else null. */
21 +export function parseSlashDate(s: string | null | undefined): Date | null {
22 + if (!s) return null;
23 + const m = s.match(/^(\d{4})[/-](\d{2})[/-](\d{2})/);
24 + if (!m) return null;
25 + const d = new Date(Date.UTC(Number(m[1]), Number(m[2]) - 1, Number(m[3])));
26 + return Number.isNaN(d.getTime()) ? null : d;
27 +}
28 +
29 +export function yearOf(s: string | null | undefined): number | null {
30 + const d = parseSlashDate(s);
31 + return d ? d.getUTCFullYear() : null;
32 +}
33 +
34 +/** Parse a numeric price from string/number; null when missing, non-finite or ≤ 0. */
35 +export function num(v: unknown): number | null {
36 + if (v === null || v === undefined || v === '') return null;
37 + const n = typeof v === 'number' ? v : Number.parseFloat(String(v));
38 + return Number.isFinite(n) && n > 0 ? n : null;
39 +}
40 +
41 +/** "Charizard · Base Set #4/102 (1999)" style title. */
42 +export function makeTitle(parts: { name: string; set?: string | null; number?: string | null; total?: number | string | null; year?: number | null; variant?: string | null }): string {
43 + let t = parts.name;
44 + const loc: string[] = [];
45 + if (parts.set) loc.push(parts.set);
46 + if (parts.number) loc.push(`#${parts.number}${parts.total ? `/${parts.total}` : ''}`);
47 + if (loc.length) t += ` · ${loc.join(' ')}`;
48 + if (parts.variant) t += ` ${parts.variant}`;
49 + if (parts.year) t += ` (${parts.year})`;
50 + return t;
51 +}
52 +
53 +/** Generic retry wrapper for flaky public APIs (in addition to the HTTP engine's own retries). */
54 +export async function withRetries<T>(fn: () => Promise<T>, isOk: (v: T) => boolean, attempts = 4, baseDelayMs = 1500): Promise<T> {
55 + let last!: T;
56 + for (let i = 0; i < attempts; i++) {
57 + last = await fn();
58 + if (isOk(last)) return last;
59 + await new Promise((r) => setTimeout(r, baseDelayMs * 2 ** i));
60 + }
61 + return last;
62 +}
added connectors/api/_lib/smoke.ts +34 −0
@@ -0,0 +1,34 @@
1 +/**
2 + * Live smoke test for the official-API connectors: real router + crawl context, probe mode, limit 5.
3 + * Usage: pnpm tsx connectors/api/_lib/smoke.ts [scryfall|pokemontcg|ygoprodeck]
4 + */
5 +import { createCrawlContext, createRouter, loadConnector } from '@rareindex/connectors';
6 +import { childLogger } from '@rareindex/shared';
7 +
8 +const ids = process.argv.slice(2).length ? process.argv.slice(2) : ['scryfall', 'pokemontcg', 'ygoprodeck'];
9 +const router = createRouter({});
10 +for (const id of ids) {
11 + const started = Date.now();
12 + const connector = await loadConnector(id);
13 + const ctx = createCrawlContext({ router, meta: connector.meta, options: { mode: 'probe', limit: 5, ...(id === 'pokemontcg' ? { seeds: ['base1'] } : {}) }, log: childLogger({ connector: id, level: 'warn' }) });
14 + let raws = 0;
15 + let normalized = 0;
16 + let firstPrinted = false;
17 + for await (const raw of connector.crawl(ctx)) {
18 + raws++;
19 + const out = await connector.normalize({ ...raw, externalId: raw.externalId ?? null, fetchedAt: raw.fetchedAt ?? new Date() });
20 + normalized += out.length;
21 + if (!firstPrinted) {
22 + firstPrinted = true;
23 + for (const r of out.slice(0, 3)) {
24 + const summary = r.kind === 'price_observation' ? `${r.priceKind} ${r.price} ${r.currency} @ ${r.observationDate.toISOString().slice(0, 10)}` : r.kind === 'catalog_item' ? `variant=${r.attributes.variant ?? '-'} ids=${JSON.stringify(r.attributes.identifiers)}` : '';
25 + console.log(` [${id}] ${r.kind}: ${'rawTitle' in r ? r.rawTitle : ''} → ${summary}`);
26 + }
27 + }
28 + }
29 + if (id === 'scryfall') {
30 + const looked = await connector.lookup?.('https://scryfall.com/card/lea/232/black-lotus', ctx);
31 + console.log(` [${id}] lookup(black lotus) → ${looked?.length ?? 0} raw record(s)`);
32 + }
33 + console.log(`[${id}] raw=${raws} normalized=${normalized} engineStats=${JSON.stringify(ctx.engineStats)} anomalies=${ctx.anomalies.length} ms=${Date.now() - started}`);
34 +}
added connectors/api/comicconnect/_smoke.ts +20 −0
@@ -0,0 +1,20 @@
1 +/** Live smoke: pnpm tsx connectors/api/comicconnect/_smoke.ts (CAPTURE=1 to save fixtures) */
2 +import { createRouter, createCrawlContext, getConnectorMeta } from '@rareindex/connectors';
3 +import { saveFixture } from '@rareindex/connectors/testing';
4 +import { env } from '@rareindex/shared';
5 +import createConnector from './index.js';
6 +
7 +const e = env();
8 +const meta = getConnectorMeta('comicconnect');
9 +const connector = createConnector(meta);
10 +const router = createRouter({ firecrawlApiKey: e.FIRECRAWL_API_KEY, scrapflyApiKey: e.SCRAPFLY_API_KEY });
11 +const ctx = createCrawlContext({ router, meta, options: { mode: 'probe', limit: Number(process.env.LIMIT ?? 2) } });
12 +
13 +for await (const raw of connector.crawl(ctx)) {
14 + const recs = await connector.normalize({ ...raw, externalId: raw.externalId ?? null, fetchedAt: raw.fetchedAt ?? new Date() });
15 + const p = raw.payload as { page: number; totalResults: number | null; cards: unknown[] };
16 + console.log(`\n# page ${p.page} (${p.totalResults} total) — ${p.cards.length} cards → ${recs.length} sales`);
17 + for (const r of recs.slice(0, 3)) console.log(JSON.stringify(r).slice(0, 800));
18 + if (process.env.CAPTURE) saveFixture('comicconnect', `sold-comics-page-${p.page}`, { 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'] }, note: `captured live from ${raw.url}` });
19 +}
20 +console.log('\nengine stats', ctx.engineStats, 'anomalies', ctx.anomalies);
added connectors/api/comicconnect/index.test.ts +51 −0
@@ -0,0 +1,51 @@
1 +import { describe, expect, it } from 'vitest';
2 +import { getConnectorMeta } from '@rareindex/connectors';
3 +import { loadFixture, runFixtureSuite } from '@rareindex/connectors/testing';
4 +import createConnector, { parseComicTitle, parseGradeLine, parseSoldPage } from './index.js';
5 +
6 +const connector = createConnector(getConnectorMeta('comicconnect'));
7 +
8 +describe('comicconnect', () => {
9 + runFixtureSuite(connector, it, expect);
10 +
11 + it('parses titles and grade lines', () => {
12 + expect(parseComicTitle('X-MEN (1963-2011) #282')).toEqual({ series: 'X-Men', seriesYears: '1963-2011', issue: '282', year: null, groupLot: false });
13 + expect(parseComicTitle('AMAZING SPIDER-MAN (1963) #300')).toMatchObject({ series: 'Amazing Spider-Man', issue: '300', year: 1963 });
14 + expect(parseComicTitle('X-MEN GROUP LOT #1 Comic Book Group Lot').groupLot).toBe(true);
15 + expect(parseGradeLine('Marvel CGC NM/M: 9.8')).toEqual({ publisher: 'Marvel', grader: 'cgc', grade: '9.8', label: 'NM/M' });
16 + expect(parseGradeLine('Marvel NM: 9.4')).toEqual({ publisher: 'Marvel', grader: 'raw', grade: '9.4', label: 'NM' });
17 + expect(parseGradeLine('DC CGC NM: 9.4')).toEqual({ publisher: 'DC', grader: 'cgc', grade: '9.4', label: 'NM' });
18 + expect(parseGradeLine('DC VF-: 7.5')).toEqual({ publisher: 'DC', grader: 'raw', grade: '7.5', label: 'VF-' });
19 + expect(parseGradeLine('Robin Snyder/Steve Ditko VF: 8.0')).toMatchObject({ publisher: 'Robin Snyder/Steve Ditko', grader: 'raw', grade: '8.0' });
20 + });
21 +
22 + it('maps sold cards to sales with grader, publisher and hammer price', async () => {
23 + const fx = loadFixture('comicconnect', 'sold-comics-page-1');
24 + const out = await connector.normalize(fx.raw);
25 + expect(out.length).toBe(20);
26 + const graded = out.find((r) => r.kind === 'sale' && r.grade.grader === 'cgc');
27 + if (graded?.kind !== 'sale') throw new Error('expected a CGC sale');
28 + expect(graded.attributes.categorySlug).toMatch(/_comics$/);
29 + expect(graded.attributes.brand).toBeTruthy();
30 + expect(graded.attributes.number).toMatch(/^\d/);
31 + expect(graded.currency).toBe('USD');
32 + expect(graded.buyerPremiumIncluded).toBe(false);
33 + expect(graded.auctionHouse).toBe('ComicConnect');
34 + expect(graded.saleDate.getUTCFullYear()).toBeGreaterThanOrEqual(2020);
35 + const marvel = out.filter((r) => r.kind === 'sale' && r.attributes.categorySlug === 'marvel_comics');
36 + expect(marvel.length).toBeGreaterThan(0);
37 + });
38 +
39 + it('parses the browse page HTML', () => {
40 + const html = `<div class="table_info">479,121 Results</div>
41 + <div class="itempreview details listingbox" data-type="auction" bp="true"><div class="mainimg"><a href="/item/1"><img src="/coverimages/gallery425/a.jpg"></a></div>
42 + <a href="/item/1"><div class="titleline ">BATMAN (1940-2011) #1</div></a><div class="grade">DC CGC VG: 4.0</div>
43 + <div class="comments wrap"><b>A 15% BUYER'S PREMIUM</b><br>off-white pages<div class="ctip">dup</div></div>
44 + <div class="endednotice">Sold on Monday, 06/24/2024 11:46 PM</div><div class="pricing"><span class="lbl">Sold For</span><span class="val prc">$402,500.00</span><span class="reserve">(No Reserve)</span></div></div>`;
45 + const p = parseSoldPage(html, 'https://www.comicconnect.com/browse/comics/?filtertype=Sold&page=1', 1);
46 + expect(p.totalResults).toBe(479121);
47 + expect(p.cards).toEqual([
48 + { itemId: '1', url: 'https://www.comicconnect.com/item/1', title: 'BATMAN (1940-2011) #1', gradeLine: 'DC CGC VG: 4.0', soldOn: 'Monday, 06/24/2024 11:46 PM', soldFor: 402500, saleType: 'auction', buyersPremium: true, noReserve: true, comments: 'off-white pages', image: 'https://www.comicconnect.com/coverimages/gallery425/a.jpg' },
49 + ]);
50 + });
51 +});
added connectors/api/comicconnect/index.ts +214 −0
@@ -0,0 +1,214 @@
1 +import { z } from 'zod';
2 +import { BaseConnector, html as H, type ConnectorMeta, type CrawlContext, type RawRecordInput, type RawRecordLike } from '@rareindex/connectors';
3 +import { getGrader, normalizeCondition } from '@rareindex/taxonomy';
4 +import { parsePrice, type AssetAttributes, type NormalizedRecord, type NormalizedSale } from '@rareindex/shared';
5 +
6 +/**
7 + * ComicConnect sold archive — realised prices for comic books (auctions + fixed-price sales).
8 + * One raw record per browse page (compact parsed cards); normalise → one sale per card.
9 + */
10 +
11 +const BASE = 'https://www.comicconnect.com';
12 +const PARSER_VERSION = '1.0.0';
13 +
14 +export const CardSchema = z.object({
15 + itemId: z.string(),
16 + url: z.string(),
17 + title: z.string(),
18 + gradeLine: z.string(),
19 + soldOn: z.string(),
20 + soldFor: z.number(),
21 + saleType: z.enum(['auction', 'sale', 'unknown']),
22 + buyersPremium: z.boolean(),
23 + noReserve: z.boolean(),
24 + comments: z.string().nullable(),
25 + image: z.string().nullable(),
26 +});
27 +export const PagePayloadSchema = z.object({ kind: z.literal('sold_page'), url: z.string(), page: z.number(), totalResults: z.number().nullable(), cards: z.array(CardSchema) });
28 +export type PagePayload = z.infer<typeof PagePayloadSchema>;
29 +
30 +export function parseSoldPage(htmlText: string, url: string, page: number): PagePayload {
31 + const $ = H.load(htmlText);
32 + const total = $('.table_info').first().text().match(/([\d,]+)\s+Results/)?.[1] ?? null;
33 + const cards: z.infer<typeof CardSchema>[] = [];
34 + $('.itempreview').each((_, el) => {
35 + const $el = $(el);
36 + const href = $el.find('.titleline').closest('a').attr('href') ?? $el.find('.mainimg a').attr('href') ?? '';
37 + const itemId = href.match(/\/item\/(\d+)/)?.[1];
38 + const title = H.text($el.find('.titleline'));
39 + const gradeLine = H.text($el.find('.grade')) ?? '';
40 + const soldOn = (H.text($el.find('.endednotice')) ?? '').replace(/^Sold on\s*/i, '');
41 + const priceTxt = H.text($el.find('.pricing .val.prc'));
42 + const price = parsePrice(priceTxt, 'USD');
43 + if (!itemId || !title || !soldOn || !price || price.amount <= 0) return;
44 + const dataType = $el.attr('data-type') ?? '';
45 + const comments = $el.find('.comments').clone().find('.ctip').remove().end();
46 + comments.find('b').remove();
47 + const commentText = H.text(comments);
48 + const img = $el.find('.mainimg img').attr('src') ?? null;
49 + cards.push({
50 + itemId,
51 + url: `${BASE}/item/${itemId}`,
52 + title,
53 + gradeLine,
54 + soldOn,
55 + soldFor: price.amount,
56 + saleType: dataType === 'auction' ? 'auction' : dataType === 'sale' || dataType === 'buynow' ? 'sale' : 'unknown',
57 + buyersPremium: $el.attr('bp') === 'true',
58 + noReserve: /no reserve/i.test($el.find('.reserve').text()),
59 + comments: commentText,
60 + image: img ? (img.startsWith('http') ? img : BASE + img) : null,
61 + });
62 + });
63 + return { kind: 'sold_page', url, page, totalResults: total ? Number(total.replace(/,/g, '')) : null, cards };
64 +}
65 +
66 +/** "X-MEN (1963-2011) #282" → { series: 'X-Men', seriesYears: '1963-2011', issue: '282', year: 1963 when single year } */
67 +export function parseComicTitle(title: string): { series: string; seriesYears: string | null; issue: string | null; year: number | null; groupLot: boolean } {
68 + const groupLot = /group lot/i.test(title);
69 + let t = title.replace(/\s+Comic Book Group Lot$/i, '').trim();
70 + const issue = t.match(/#\s*([0-9]+[A-Za-z]?(?:\.[0-9]+)?(?:\/[0-9]+)?)/)?.[1] ?? null;
71 + const yearsM = t.match(/\((\d{4})(?:-(\d{2,4}))?\)/);
72 + const seriesYears = yearsM ? yearsM[0].slice(1, -1) : null;
73 + const year = yearsM && !yearsM[2] ? Number(yearsM[1]) : null;
74 + if (yearsM) t = t.replace(yearsM[0], ' ');
75 + if (issue) t = t.replace(/#\s*[0-9]+[A-Za-z]?(?:\.[0-9]+)?(?:\/[0-9]+)?/, ' ');
76 + const series = t
77 + .replace(/\s+/g, ' ')
78 + .trim()
79 + .toLowerCase()
80 + .replace(/(^|[\s(/-])([a-z])/g, (m, pre: string, c: string) => pre + c.toUpperCase());
81 + return { series, seriesYears, issue, year, groupLot };
82 +}
83 +
84 +/** "Marvel CGC NM/M: 9.8" → { publisher: 'Marvel', grader: 'cgc', grade: '9.8', label: 'NM/M' } ; "Marvel VF/NM: 9.0" → raw grade */
85 +const GRADE_LABEL = '(?:GEM MT|GEM|MT|NM/M|NM\\+|NM-|NM|VF/NM|VF\\+|VF-|VF|FN/VF|FN\\+|FN-|FN|VG/FN|VG\\+|VG-|VG|GD/VG|GD\\+|GD-|GD|FR/GD|FR|PR|M)';
86 +const GRADE_LINE_RE = new RegExp(`^(.*?)\\s*(?:\\b(CGC|CBCS|PGX|EGS)\\b\\s*)?(${GRADE_LABEL})?\\s*:\\s*([\\d.]+)\\s*$`);
87 +
88 +export function parseGradeLine(line: string): { publisher: string | null; grader: string | null; grade: string | null; label: string | null } {
89 + const m = line.trim().match(GRADE_LINE_RE);
90 + if (!m) return { publisher: line || null, grader: null, grade: null, label: null };
91 + const publisher = m[1]?.trim() || null;
92 + const grader = m[2] ? (getGrader(m[2])?.slug ?? m[2].toLowerCase()) : 'raw';
93 + return { publisher, grader, grade: m[4] ?? null, label: m[3]?.trim() ?? null };
94 +}
95 +
96 +function publisherCategory(publisher: string | null): string {
97 + const p = (publisher ?? '').toLowerCase();
98 + if (/marvel|timely|atlas/.test(p)) return 'marvel_comics';
99 + if (/^dc\b|dc comics|vertigo|wildstorm|national/.test(p)) return 'dc_comics';
100 + return 'independent_comics';
101 +}
102 +
103 +export class ComicConnectConnector extends BaseConnector {
104 + readonly version = '1.0.0';
105 + readonly parserVersion = PARSER_VERSION;
106 + protected override minIntervalMs = 1500;
107 +
108 + async *crawl(ctx: CrawlContext): AsyncIterable<RawRecordInput> {
109 + const browsePath = String(this.meta.config.browsePath ?? '/browse/comics/');
110 + const pages = Number(this.meta.config.pagesPerRun ?? 25);
111 + const sort = String(this.meta.config.sortType ?? 'ended_desc');
112 + const start = ctx.options.mode === 'backfill' ? Number(ctx.options.cursor?.nextPage ?? 1) : 1;
113 + let count = 0;
114 + for (let page = start; page < start + pages; page++) {
115 + if (ctx.signal?.aborted || this.reached(ctx, count)) break;
116 + const url = `${BASE}${browsePath}?filtertype=Sold&sort_type=${encodeURIComponent(sort)}&page=${page}`;
117 + await this.throttle();
118 + const res = await ctx.fetch(url, {
119 + responseType: 'text',
120 + expect: ['title', 'price', 'date', 'status'],
121 + parse: (r) => {
122 + if (!r.html) return null;
123 + const p = parseSoldPage(r.html, url, page);
124 + const c = p.cards[0];
125 + return { title: c?.title ?? null, price: c?.soldFor ?? null, date: c?.soldOn ?? null, status: c ? 'sold' : null };
126 + },
127 + });
128 + if (!res.success || !res.html) {
129 + ctx.anomaly('page_fetch_failed', `${url}: ${res.error ?? res.httpStatus}`);
130 + break;
131 + }
132 + const payload = parseSoldPage(res.html, url, page);
133 + if (payload.cards.length === 0) {
134 + ctx.anomaly('empty_page', url);
135 + break;
136 + }
137 + count++;
138 + if (ctx.options.mode === 'backfill') await ctx.setCursor({ nextPage: page + 1, updatedAt: new Date().toISOString() });
139 + yield { url, externalId: `sold:${browsePath}:${page}`, kind: 'sale', engine: res.engine, httpStatus: res.httpStatus, payload, fetchedAt: res.fetchedAt };
140 + }
141 + }
142 +
143 + async normalize(raw: RawRecordLike): Promise<NormalizedRecord[]> {
144 + const p = PagePayloadSchema.parse(raw.payload);
145 + const out: NormalizedSale[] = [];
146 + for (const c of p.cards) {
147 + const t = parseComicTitle(c.title);
148 + const g = parseGradeLine(c.gradeLine);
149 + // "Friday, 08/14/2026 12:15 AM" → US local (Eastern) — we keep the date portion as UTC midnight to avoid faking precision.
150 + const dm = c.soldOn.match(/(\d{1,2})\/(\d{1,2})\/(\d{4})/);
151 + if (!dm) continue;
152 + const saleDate = new Date(Date.UTC(Number(dm[3]), Number(dm[1]) - 1, Number(dm[2])));
153 + const categorySlug = publisherCategory(g.publisher);
154 + const rawCondition = g.grader === 'raw' && g.label ? g.label : null;
155 + const attributes: AssetAttributes = {
156 + categorySlug,
157 + subcategorySlug: null,
158 + franchise: null,
159 + brand: g.publisher,
160 + series: t.seriesYears ? `${t.series} (${t.seriesYears})` : t.series,
161 + set: t.series,
162 + setCode: null,
163 + name: t.series,
164 + model: null,
165 + reference: null,
166 + number: t.issue,
167 + year: t.year,
168 + edition: null,
169 + variant: null,
170 + language: 'English',
171 + region: null,
172 + country: 'US',
173 + material: null,
174 + size: null,
175 + color: null,
176 + rarity: null,
177 + productionQuantity: null,
178 + originalMsrp: null,
179 + originalMsrpCurrency: null,
180 + identifiers: { comicconnect_item: c.itemId },
181 + metadata: { series_years: t.seriesYears, buyers_premium_applies: c.buyersPremium, no_reserve: c.noReserve, sold_on_raw: c.soldOn, grade_label: g.label },
182 + };
183 + out.push({
184 + kind: 'sale',
185 + connectorId: this.meta.id,
186 + sourceId: this.meta.sourceId,
187 + sourceUrl: c.url,
188 + externalId: c.itemId,
189 + rawTitle: `${c.title} ${c.gradeLine}`.trim(),
190 + description: c.comments,
191 + imageUrls: c.image ? [c.image] : [],
192 + attributes,
193 + grade: { grader: g.grader === 'raw' ? 'raw' : g.grader, grade: g.grader === 'raw' ? null : g.grade, qualifier: null, certificationNumber: null },
194 + condition: { condition: normalizeCondition(categorySlug, rawCondition ?? (g.grader === 'raw' ? g.label : null)), conditionRaw: g.grader === 'raw' ? `${g.label ?? ''} ${g.grade ?? ''}`.trim() || null : null, completeness: null },
195 + observedAt: raw.fetchedAt,
196 + confidence: 0.9,
197 + parserVersion: PARSER_VERSION,
198 + saleType: c.saleType === 'auction' ? 'auction' : c.saleType === 'sale' ? 'fixed_price' : 'unknown',
199 + saleDate,
200 + price: c.soldFor,
201 + currency: 'USD',
202 + buyerPremiumIncluded: false,
203 + quantity: 1,
204 + isBundle: t.groupLot,
205 + location: 'US',
206 + auctionHouse: 'ComicConnect',
207 + lotNumber: null,
208 + });
209 + }
210 + return out;
211 + }
212 +}
213 +
214 +export default (meta: ConnectorMeta) => new ComicConnectConnector(meta);
added connectors/api/comicconnect/meta.json +34 −0
@@ -0,0 +1,34 @@
1 +{
2 + "id": "comicconnect",
3 + "displayName": "ComicConnect (sold archive)",
4 + "sourceId": "comicconnect",
5 + "sourceName": "ComicConnect",
6 + "sourceType": "auction_house",
7 + "sourceUrl": "https://www.comicconnect.com",
8 + "module": "api/comicconnect",
9 + "enginePriority": ["api", "firecrawl", "scrapfly"],
10 + "categories": ["comics", "marvel_comics", "dc_comics", "independent_comics"],
11 + "regions": ["US"],
12 + "languages": ["en"],
13 + "currency": ["USD"],
14 + "supportsListings": false,
15 + "supportsSold": true,
16 + "supportsAuctions": true,
17 + "supportsImages": true,
18 + "supportsCatalog": false,
19 + "supportsPopulation": false,
20 + "supportsLookup": false,
21 + "refreshFrequencyMinutes": 720,
22 + "priority": "high",
23 + "trustScore": 0.9,
24 + "attributionRequired": true,
25 + "termsUrl": "https://www.comicconnect.com/terms",
26 + "accessNotes": "Public sold archive (/browse/comics/?filtertype=Sold, ~479k results, 20 per page) fetched over plain HTTPS with the RareIndex user agent. robots.txt: Allow / with Content-Signal search=yes, ai-train=no (we only index sale facts and link back). Each card exposes title, publisher + grade, sold date/time, 'Sold For' price and whether a 15% buyer's premium applies (bp attribute) — we store hammer price with buyer_premium_included=false and keep the premium note in metadata. No login, no bidder data. 1.5 s politeness delay.",
27 + "enabled": true,
28 + "schemaVersion": "1.0",
29 + "config": {
30 + "browsePath": "/browse/comics/",
31 + "pagesPerRun": 25,
32 + "sortType": "ended_desc"
33 + }
34 +}
added connectors/api/pokemontcg/index.test.ts +50 −0
@@ -0,0 +1,50 @@
1 +import { describe, expect, it } from 'vitest';
2 +import { getConnectorMeta } from '@rareindex/connectors';
3 +import { loadFixture, runFixtureSuite } from '@rareindex/connectors/testing';
4 +import createConnector, { TCGPLAYER_VARIANTS } from './index.js';
5 +
6 +const connector = createConnector(getConnectorMeta('pokemontcg'));
7 +
8 +describe('pokemontcg', () => {
9 + runFixtureSuite(connector, it, expect);
10 +
11 + it('maps Base Set Charizard to a Holo variant with TCGplayer + Cardmarket observations', async () => {
12 + const out = await connector.normalize(loadFixture('pokemontcg', 'base1-4').raw);
13 + const cats = out.filter((r) => r.kind === 'catalog_item');
14 + expect(cats).toHaveLength(1);
15 + const cat = cats[0]!;
16 + if (cat.kind !== 'catalog_item') throw new Error('kind');
17 + expect(cat.attributes).toMatchObject({ categorySlug: 'pokemon', set: 'Base', setCode: 'BS', number: '4', year: 1999, rarity: 'Rare Holo', variant: 'Holo', language: 'English' });
18 + expect(cat.attributes.identifiers.pokemontcg_id).toBe('base1-4');
19 + expect(cat.rawTitle).toBe('Charizard · Base #4/102 Holo (1999)');
20 + expect(cat.releaseDate?.toISOString()).toBe('1999-01-09T00:00:00.000Z');
21 + const obs = out.filter((r) => r.kind === 'price_observation');
22 + const usd = obs.filter((o) => o.kind === 'price_observation' && o.currency === 'USD');
23 + const eur = obs.filter((o) => o.kind === 'price_observation' && o.currency === 'EUR');
24 + expect(usd.map((o) => (o.kind === 'price_observation' ? o.priceKind : '')).sort()).toEqual(['high', 'low', 'market', 'mid']);
25 + expect(eur.length).toBeGreaterThanOrEqual(3);
26 + for (const o of usd) if (o.kind === 'price_observation') expect(o.observationDate.toISOString().slice(0, 10)).toMatch(/^\d{4}-\d{2}-\d{2}$/);
27 + // observation dates come from the source's updatedAt, not the crawl time
28 + const tcgMarket = usd.find((o) => o.kind === 'price_observation' && o.priceKind === 'market');
29 + expect(tcgMarket && tcgMarket.kind === 'price_observation' ? tcgMarket.observationDate.getTime() : 0).not.toBe(loadFixture('pokemontcg', 'base1-4').raw.fetchedAt.getTime());
30 + expect(obs.every((o) => o.kind === 'price_observation' && o.attributes.variant === 'Holo')).toBe(true);
31 + });
32 +
33 + it('keeps base (normal) printings with variant null', async () => {
34 + const out = await connector.normalize(loadFixture('pokemontcg', 'base1-58').raw);
35 + const cat = out.find((r) => r.kind === 'catalog_item');
36 + expect(cat && cat.kind === 'catalog_item' ? cat.attributes.variant : 'x').toBeNull();
37 + });
38 +
39 + it('handles the GitHub mirror payload (catalog only, no prices)', async () => {
40 + const out = await connector.normalize(loadFixture('pokemontcg', 'base1-4-mirror').raw);
41 + expect(out).toHaveLength(1);
42 + expect(out[0]?.kind).toBe('catalog_item');
43 + expect(out[0] && 'attributes' in out[0] ? out[0].attributes.metadata.dataSource : '').toBe('github-mirror');
44 + });
45 +
46 + it('covers the known TCGplayer variant keys', () => {
47 + expect(TCGPLAYER_VARIANTS['1stEditionHolofoil']).toBe('1st Edition Holo');
48 + expect(TCGPLAYER_VARIANTS.reverseHolofoil).toBe('Reverse Holo');
49 + });
50 +});
added connectors/api/pokemontcg/index.ts +325 −0
@@ -0,0 +1,325 @@
1 +import { z } from 'zod';
2 +import { BaseConnector, type ConnectorMeta, type CrawlContext, type RawRecordInput, type RawRecordLike } from '@rareindex/connectors';
3 +import { type NormalizedRecord } from '@rareindex/shared';
4 +import { attrs, catalogItem, makeTitle, num, parseSlashDate, priceObservation, withRetries, yearOf } from '../_lib/shared.js';
5 +
6 +const API = 'https://api.pokemontcg.io/v2';
7 +
8 +const SetSchema = z.object({
9 + id: z.string(),
10 + name: z.string(),
11 + series: z.string().optional(),
12 + printedTotal: z.number().optional(),
13 + total: z.number().optional(),
14 + ptcgoCode: z.string().optional(),
15 + releaseDate: z.string().optional(),
16 + updatedAt: z.string().optional(),
17 + images: z.object({ symbol: z.string().optional(), logo: z.string().optional() }).optional(),
18 +});
19 +type PkSet = z.infer<typeof SetSchema>;
20 +
21 +const PriceBlock = z.object({ low: z.number().nullable().optional(), mid: z.number().nullable().optional(), high: z.number().nullable().optional(), market: z.number().nullable().optional(), directLow: z.number().nullable().optional() });
22 +
23 +const CardSchema = z.object({
24 + id: z.string(),
25 + name: z.string(),
26 + supertype: z.string().optional(),
27 + subtypes: z.array(z.string()).optional(),
28 + hp: z.string().optional(),
29 + types: z.array(z.string()).optional(),
30 + number: z.string(),
31 + artist: z.string().optional(),
32 + rarity: z.string().optional(),
33 + flavorText: z.string().optional(),
34 + nationalPokedexNumbers: z.array(z.number()).optional(),
35 + regulationMark: z.string().nullable().optional(),
36 + images: z.object({ small: z.string().optional(), large: z.string().optional() }).optional(),
37 + set: SetSchema,
38 + tcgplayer: z.object({ url: z.string().optional(), updatedAt: z.string().optional(), prices: z.record(z.string(), PriceBlock).optional() }).optional(),
39 + cardmarket: z.object({ url: z.string().optional(), updatedAt: z.string().optional(), prices: z.record(z.string(), z.number().nullable()).optional() }).optional(),
40 +});
41 +type PkCard = z.infer<typeof CardSchema>;
42 +
43 +const RawPayloadSchema = z.object({ card: CardSchema, source: z.enum(['api', 'github-mirror']).default('api') });
44 +
45 +const KEEP = ['id', 'name', 'supertype', 'subtypes', 'hp', 'types', 'number', 'artist', 'rarity', 'flavorText', 'nationalPokedexNumbers', 'regulationMark', 'images', 'set', 'tcgplayer', 'cardmarket'] as const;
46 +
47 +export function trimCard(card: Record<string, unknown>, set?: PkSet): PkCard {
48 + const out: Record<string, unknown> = {};
49 + for (const k of KEEP) if (card[k] !== undefined) out[k] = card[k];
50 + if (!out.set && set) out.set = set;
51 + if (out.set && typeof out.set === 'object') {
52 + const s = out.set as Record<string, unknown>;
53 + delete s.legalities;
54 + }
55 + return CardSchema.parse(out);
56 +}
57 +
58 +/** TCGplayer price-variant key → RareIndex variant label (null = base printing). */
59 +export const TCGPLAYER_VARIANTS: Record<string, string | null> = {
60 + normal: null,
61 + holofoil: 'Holo',
62 + reverseHolofoil: 'Reverse Holo',
63 + unlimited: null,
64 + unlimitedHolofoil: 'Holo',
65 + '1stEdition': '1st Edition',
66 + '1stEditionNormal': '1st Edition',
67 + '1stEditionHolofoil': '1st Edition Holo',
68 +};
69 +
70 +export class PokemonTcgConnector extends BaseConnector {
71 + readonly version = '1.0.0';
72 + readonly parserVersion = '1.0.0';
73 + protected override minIntervalMs = 2100; // ≈ 28 req/min, under the keyless 30/min ceiling
74 +
75 + private headers(): Record<string, string> {
76 + const key = process.env.POKEMONTCG_API_KEY;
77 + return key ? { 'x-api-key': key } : {};
78 + }
79 +
80 + private async apiGet(ctx: CrawlContext, url: string) {
81 + await this.throttle();
82 + return withRetries(
83 + () => ctx.fetch(url, { engines: ['api'], headers: this.headers(), timeoutMs: 120_000 }),
84 + (r) => r.success && r.json !== null,
85 + 5,
86 + 2000,
87 + );
88 + }
89 +
90 + async *crawl(ctx: CrawlContext): AsyncIterable<RawRecordInput> {
91 + const pageSize = Number(ctx.meta.config.pageSize ?? 250);
92 + const mirror = String(ctx.meta.config.mirrorBase ?? 'https://raw.githubusercontent.com/PokemonTCG/pokemon-tcg-data/master');
93 + let sets: PkSet[] = [];
94 + const setsRes = await this.apiGet(ctx, `${API}/sets?pageSize=250&orderBy=releaseDate`);
95 + if (setsRes.success && setsRes.json) {
96 + sets = z.array(SetSchema).parse((setsRes.json as { data: unknown[] }).data);
97 + } else {
98 + ctx.anomaly('blocked_or_down', `sets endpoint failed (${setsRes.error}); using GitHub mirror for the set list`);
99 + const m = await ctx.fetch(`${mirror}/sets/en.json`, { engines: ['api'] });
100 + if (!m.success || !m.json) throw new Error(`pokemontcg: sets unavailable from API and mirror: ${m.error}`);
101 + sets = z.array(SetSchema).parse(m.json);
102 + }
103 + sets.sort((a, b) => (a.releaseDate ?? '').localeCompare(b.releaseDate ?? ''));
104 + const filterIds = ctx.options.seeds?.length ? new Set(ctx.options.seeds) : null;
105 + let setIndex = Number(ctx.options.cursor?.setIndex ?? 0);
106 + let page = Number(ctx.options.cursor?.page ?? 1);
107 + let count = 0;
108 + for (; setIndex < sets.length; setIndex++, page = 1) {
109 + const set = sets[setIndex]!;
110 + if (filterIds && !filterIds.has(set.id)) continue;
111 + let usedMirror = false;
112 + for (;;) {
113 + const url = `${API}/cards?q=set.id:${encodeURIComponent(set.id)}&pageSize=${pageSize}&page=${page}`;
114 + const res = await this.apiGet(ctx, url);
115 + let cards: Record<string, unknown>[] = [];
116 + let totalCount = 0;
117 + if (res.success && res.json) {
118 + const body = res.json as { data: Record<string, unknown>[]; totalCount?: number; count?: number };
119 + cards = body.data ?? [];
120 + totalCount = body.totalCount ?? cards.length;
121 + } else if (page === 1) {
122 + // API down for this set → public GitHub mirror (same schema, no prices).
123 + const m = await ctx.fetch(`${mirror}/cards/en/${encodeURIComponent(set.id)}.json`, { engines: ['api'] });
124 + if (!m.success || !Array.isArray(m.json)) {
125 + ctx.anomaly('empty_page', `set ${set.id}: API ${res.error}; mirror ${m.error ?? 'not an array'}`);
126 + break;
127 + }
128 + cards = m.json as Record<string, unknown>[];
129 + totalCount = cards.length;
130 + usedMirror = true;
131 + ctx.anomaly('fallback_feed', `set ${set.id} served from GitHub mirror (no prices)`);
132 + } else {
133 + ctx.anomaly('empty_page', `set ${set.id} page ${page}: ${res.error}`);
134 + break;
135 + }
136 + const fetchedAt = new Date();
137 + for (const c of cards) {
138 + let card: PkCard;
139 + try {
140 + card = trimCard(c, set);
141 + } catch (err) {
142 + ctx.anomaly('parse_failure', `card ${String(c.id)}: ${err instanceof Error ? err.message : String(err)}`);
143 + continue;
144 + }
145 + yield {
146 + url: `${API}/cards/${card.id}`,
147 + externalId: card.id,
148 + kind: 'catalog_item',
149 + engine: usedMirror ? 'feed' : 'api',
150 + httpStatus: 200,
151 + payload: { card, source: usedMirror ? 'github-mirror' : 'api' },
152 + fetchedAt,
153 + };
154 + count++;
155 + if (this.reached(ctx, count)) return;
156 + }
157 + if (usedMirror || page * pageSize >= totalCount || cards.length === 0) break;
158 + page++;
159 + await ctx.setCursor({ setIndex, page });
160 + }
161 + await ctx.setCursor({ setIndex: setIndex + 1, page: 1 });
162 + }
163 + await ctx.setCursor({ setIndex: 0, page: 1, completedAt: new Date().toISOString() });
164 + ctx.log.info({ count }, 'pokemontcg crawl done');
165 + }
166 +
167 + async normalize(raw: RawRecordLike): Promise<NormalizedRecord[]> {
168 + const { card, source } = RawPayloadSchema.parse(raw.payload);
169 + const set = card.set;
170 + const year = yearOf(set.releaseDate);
171 + const images = [card.images?.large ?? card.images?.small].filter((x): x is string => Boolean(x));
172 + const sourceUrl = card.tcgplayer?.url ?? `https://pokemontcg.io/card/${card.id}`;
173 + const setCode = set.ptcgoCode ?? set.id.toUpperCase();
174 + const out: NormalizedRecord[] = [];
175 +
176 + const buildAttrs = (variant: string | null) =>
177 + attrs({
178 + categorySlug: 'pokemon',
179 + franchise: 'Pokémon',
180 + brand: 'The Pokémon Company',
181 + series: set.series ?? null,
182 + set: set.name,
183 + setCode,
184 + name: card.name,
185 + number: card.number,
186 + year,
187 + variant,
188 + language: 'English',
189 + rarity: card.rarity ?? null,
190 + identifiers: { pokemontcg_id: card.id, pokemontcg_set_id: set.id, ...(card.tcgplayer?.url ? { tcgplayer_url: card.tcgplayer.url } : {}), ...(card.cardmarket?.url ? { cardmarket_url: card.cardmarket.url } : {}) },
191 + metadata: {
192 + supertype: card.supertype ?? null,
193 + subtypes: card.subtypes ?? [],
194 + hp: card.hp ?? null,
195 + types: card.types ?? [],
196 + artist: card.artist ?? null,
197 + nationalPokedexNumbers: card.nationalPokedexNumbers ?? [],
198 + regulationMark: card.regulationMark ?? null,
199 + printedTotal: set.printedTotal ?? null,
200 + setTotal: set.total ?? null,
201 + setSymbol: set.images?.symbol ?? null,
202 + dataSource: source,
203 + },
204 + });
205 +
206 + const tcg = card.tcgplayer;
207 + const tcgDate = parseSlashDate(tcg?.updatedAt) ?? raw.fetchedAt;
208 + const variantKeys = Object.keys(tcg?.prices ?? {}).filter((k) => k in TCGPLAYER_VARIANTS);
209 + const variants: Array<string | null> = variantKeys.length ? [...new Set(variantKeys.map((k) => TCGPLAYER_VARIANTS[k] ?? null))] : [null];
210 + // Base printing: if the card only exists as holo, the canonical variant is 'Holo'.
211 + for (const variant of variants) {
212 + const a = buildAttrs(variant);
213 + out.push(
214 + catalogItem({
215 + kind: 'catalog_item',
216 + connectorId: this.meta.id,
217 + sourceId: this.meta.sourceId,
218 + sourceUrl,
219 + externalId: `${card.id}:${variant ?? 'base'}`,
220 + rawTitle: makeTitle({ name: card.name, set: set.name, number: card.number, total: set.printedTotal ?? null, year, variant }),
221 + description: card.flavorText ?? null,
222 + imageUrls: images,
223 + attributes: a,
224 + observedAt: raw.fetchedAt,
225 + confidence: 0.97,
226 + parserVersion: this.parserVersion,
227 + releaseDate: parseSlashDate(set.releaseDate),
228 + }),
229 + );
230 + }
231 +
232 + const kinds: Array<['low' | 'mid' | 'high' | 'market', 'low' | 'mid' | 'high' | 'market']> = [
233 + ['market', 'market'],
234 + ['low', 'low'],
235 + ['mid', 'mid'],
236 + ['high', 'high'],
237 + ];
238 + for (const key of variantKeys) {
239 + const block = tcg!.prices![key]!;
240 + const variant = TCGPLAYER_VARIANTS[key] ?? null;
241 + const a = buildAttrs(variant);
242 + for (const [field, priceKind] of kinds) {
243 + const price = num(block[field]);
244 + if (price === null) continue;
245 + out.push(
246 + priceObservation({
247 + kind: 'price_observation',
248 + connectorId: this.meta.id,
249 + sourceId: this.meta.sourceId,
250 + sourceUrl,
251 + externalId: `${card.id}:tcgplayer:${key}:${field}`,
252 + rawTitle: makeTitle({ name: card.name, set: set.name, number: card.number, total: set.printedTotal ?? null, year, variant }),
253 + imageUrls: images,
254 + attributes: { ...a, metadata: { ...a.metadata, priceSource: 'tcgplayer', priceVariantKey: key } },
255 + condition: { condition: 'near_mint', conditionRaw: 'TCGplayer near mint market', completeness: null },
256 + observedAt: tcgDate,
257 + confidence: 0.9,
258 + parserVersion: this.parserVersion,
259 + priceKind,
260 + price,
261 + currency: 'USD',
262 + observationDate: tcgDate,
263 + sampleSize: null,
264 + }),
265 + );
266 + }
267 + }
268 +
269 + const cm = card.cardmarket;
270 + if (cm?.prices) {
271 + const cmDate = parseSlashDate(cm.updatedAt) ?? raw.fetchedAt;
272 + // Cardmarket main prices refer to the card's primary printing; reverseHolo* fields to the reverse holo.
273 + const primary = variants.includes('Holo') && !variants.includes(null) ? 'Holo' : variants.includes(null) ? null : (variants[0] ?? null);
274 + const main: Array<[string, 'market' | 'low' | 'trend' | 'average_7d' | 'average_30d']> = [
275 + ['averageSellPrice', 'market'],
276 + ['lowPrice', 'low'],
277 + ['trendPrice', 'trend'],
278 + ['avg7', 'average_7d'],
279 + ['avg30', 'average_30d'],
280 + ];
281 + const reverse: Array<[string, 'market' | 'low' | 'trend' | 'average_7d' | 'average_30d']> = [
282 + ['reverseHoloSell', 'market'],
283 + ['reverseHoloLow', 'low'],
284 + ['reverseHoloTrend', 'trend'],
285 + ['reverseHoloAvg7', 'average_7d'],
286 + ['reverseHoloAvg30', 'average_30d'],
287 + ];
288 + const emit = (pairs: typeof main, variant: string | null, tag: string) => {
289 + const a = buildAttrs(variant);
290 + for (const [field, priceKind] of pairs) {
291 + const price = num(cm.prices![field]);
292 + if (price === null) continue;
293 + out.push(
294 + priceObservation({
295 + kind: 'price_observation',
296 + connectorId: this.meta.id,
297 + sourceId: this.meta.sourceId,
298 + sourceUrl: cm.url ?? sourceUrl,
299 + externalId: `${card.id}:cardmarket:${tag}:${field}`,
300 + rawTitle: makeTitle({ name: card.name, set: set.name, number: card.number, total: set.printedTotal ?? null, year, variant }),
301 + imageUrls: images,
302 + attributes: { ...a, metadata: { ...a.metadata, priceSource: 'cardmarket', priceVariantKey: tag } },
303 + condition: { condition: null, conditionRaw: 'Cardmarket aggregate', completeness: null },
304 + observedAt: cmDate,
305 + confidence: 0.75,
306 + parserVersion: this.parserVersion,
307 + priceKind,
308 + price,
309 + currency: 'EUR',
310 + observationDate: cmDate,
311 + sampleSize: null,
312 + }),
313 + );
314 + }
315 + };
316 + emit(main, primary, 'main');
317 + if (variants.includes('Reverse Holo')) emit(reverse, 'Reverse Holo', 'reverse');
318 + }
319 + return out;
320 + }
321 +}
322 +
323 +export default function createConnector(meta: ConnectorMeta) {
324 + return new PokemonTcgConnector(meta);
325 +}
added connectors/api/pokemontcg/meta.json +34 −0
@@ -0,0 +1,34 @@
1 +{
2 + "id": "pokemontcg",
3 + "displayName": "Pokémon TCG API (pokemontcg.io)",
4 + "sourceId": "pokemontcg",
5 + "sourceName": "Pokémon TCG API",
6 + "sourceType": "catalog",
7 + "sourceUrl": "https://pokemontcg.io",
8 + "module": "api/pokemontcg",
9 + "enginePriority": ["api", "feed"],
10 + "categories": ["pokemon"],
11 + "regions": ["US", "EU"],
12 + "languages": ["en"],
13 + "currency": ["USD", "EUR"],
14 + "supportsListings": false,
15 + "supportsSold": false,
16 + "supportsAuctions": false,
17 + "supportsImages": true,
18 + "supportsCatalog": true,
19 + "supportsPopulation": false,
20 + "supportsLookup": false,
21 + "refreshFrequencyMinutes": 1440,
22 + "priority": "high",
23 + "trustScore": 0.8,
24 + "attributionRequired": true,
25 + "termsUrl": "https://docs.pokemontcg.io/",
26 + "accessNotes": "Public REST API v2 (https://api.pokemontcg.io/v2). Optional X-Api-Key (POKEMONTCG_API_KEY) raises limits (20k/day) — without a key ~1k/day and 30/min. Crawl = sets, then cards per set (pageSize 250, cursor {setIndex,page}). The API is intermittently unavailable (5xx); the connector retries with backoff and falls back to the maintainers' public GitHub mirror (PokemonTCG/pokemon-tcg-data, same card schema, no prices) for the catalog when the API keeps failing. Prices are TCGplayer (USD, per printing variant: normal/holofoil/reverseHolofoil/1stEdition…) and Cardmarket (EUR) daily aggregates with their own updatedAt → stored as price_observations, never as sales. Pokémon © Nintendo/Creatures/GAME FREAK; data attributed to pokemontcg.io.",
27 + "enabled": true,
28 + "schemaVersion": "1.0",
29 + "config": {
30 + "pageSize": 250,
31 + "requestIntervalMs": 2100,
32 + "mirrorBase": "https://raw.githubusercontent.com/PokemonTCG/pokemon-tcg-data/master"
33 + }
34 +}
added connectors/api/pricecharting/_smoke.ts +30 −0
@@ -0,0 +1,30 @@
1 +/**
2 + * Live smoke test: pnpm tsx connectors/api/pricecharting/_smoke.ts [consoleUri…]
3 + * Crawls a handful of products, prints normalised records, and captures fixtures when
4 + * CAPTURE=1 (data/fixtures/pricecharting/<slug>.json).
5 + */
6 +import { createRouter, createCrawlContext, getConnectorMeta } from '@rareindex/connectors';
7 +import { saveFixture } from '@rareindex/connectors/testing';
8 +import { env } from '@rareindex/shared';
9 +import createConnector from './index.js';
10 +
11 +const e = env();
12 +const meta = getConnectorMeta('pricecharting');
13 +const connector = createConnector(meta);
14 +const router = createRouter({ firecrawlApiKey: e.FIRECRAWL_API_KEY, scrapflyApiKey: e.SCRAPFLY_API_KEY });
15 +const seeds = process.argv.slice(2);
16 +const ctx = createCrawlContext({ router, meta: { ...meta, config: { ...meta.config, productsPerConsole: 2 } }, options: { mode: 'probe', limit: Number(process.env.LIMIT ?? 6), seeds: seeds.length ? seeds : undefined } });
17 +
18 +let n = 0;
19 +for await (const raw of connector.crawl(ctx)) {
20 + n++;
21 + const recs = await connector.normalize({ ...raw, externalId: raw.externalId ?? null, fetchedAt: raw.fetchedAt ?? new Date() });
22 + const p = raw.payload as { title: string; consoleUri: string; sales: unknown[]; prices: unknown[] };
23 + console.log(`\n# ${p.consoleUri} / ${p.title} — ${recs.length} records (${p.sales.length} sales rows, ${p.prices.length} price cells)`);
24 + for (const r of recs.slice(0, 4)) console.log(JSON.stringify(r).slice(0, 600));
25 + if (process.env.CAPTURE) {
26 + const slug = raw.url.split('/').slice(-2).join('__');
27 + saveFixture('pricecharting', slug, { raw: { url: raw.url, externalId: raw.externalId ?? null, kind: raw.kind, engine: raw.engine, fetchedAt: raw.fetchedAt ?? new Date(), payload: raw.payload }, expect: { minCount: 1, kinds: ['catalog_item', 'price_observation', 'sale'] }, note: `captured live from ${raw.url}` });
28 + }
29 +}
30 +console.log(`\n${n} raw records; engine stats`, ctx.engineStats, 'anomalies', ctx.anomalies);
added connectors/api/pricecharting/index.test.ts +75 −0
@@ -0,0 +1,75 @@
1 +import { describe, expect, it } from 'vitest';
2 +import { getConnectorMeta } from '@rareindex/connectors';
3 +import { loadFixture, runFixtureSuite } from '@rareindex/connectors/testing';
4 +import createConnector, { parseProductPage } from './index.js';
5 +
6 +const connector = createConnector(getConnectorMeta('pricecharting'));
7 +
8 +describe('pricecharting', () => {
9 + runFixtureSuite(connector, it, expect);
10 +
11 + it('maps a video game page to catalog + guide values + eBay sales', async () => {
12 + const fx = loadFixture('pricecharting', 'nintendo-64__zelda-ocarina-of-time');
13 + const out = await connector.normalize(fx.raw);
14 + const catalog = out.find((r) => r.kind === 'catalog_item');
15 + expect(catalog).toBeTruthy();
16 + if (catalog?.kind !== 'catalog_item') throw new Error();
17 + expect(catalog.attributes.categorySlug).toBe('nintendo_games');
18 + expect(catalog.attributes.set).toBe('Nintendo 64');
19 + expect(catalog.attributes.name).toBe('Zelda Ocarina of Time');
20 + expect(catalog.attributes.identifiers.pricecharting_id).toBe('3977');
21 + expect(catalog.attributes.identifiers.upc).toMatch(/^\d{12}$/);
22 + const guides = out.filter((r) => r.kind === 'price_observation');
23 + expect(guides.map((g) => g.kind === 'price_observation' && g.condition.completeness)).toEqual(expect.arrayContaining(['loose', 'cib', 'sealed']));
24 + const sales = out.filter((r) => r.kind === 'sale');
25 + expect(sales.length).toBeGreaterThan(50);
26 + const s = sales[0];
27 + if (s?.kind !== 'sale') throw new Error();
28 + expect(s.currency).toBe('USD');
29 + expect(s.externalId).toMatch(/^ebay:\d+$/);
30 + expect(s.saleDate.getUTCFullYear()).toBeGreaterThanOrEqual(2024);
31 + expect(['loose', 'cib', 'sealed', 'box_only', 'manual_only', null]).toContain(s.condition.completeness);
32 + });
33 +
34 + it('maps LEGO, Funko and comics pages to the right categories', async () => {
35 + const lego = await connector.normalize(loadFixture('pricecharting', 'lego-star-wars__cloud-city-10123').raw);
36 + const legoCat = lego.find((r) => r.kind === 'catalog_item');
37 + if (legoCat?.kind !== 'catalog_item') throw new Error();
38 + expect(legoCat.attributes.categorySlug).toBe('lego_sets');
39 + expect(legoCat.attributes.number).toBe('10123');
40 + expect(legoCat.attributes.identifiers.lego_set_number).toBe('10123');
41 + expect(legoCat.attributes.set).toBe('Star Wars');
42 +
43 + const funko = await connector.normalize(loadFixture('pricecharting', 'funko-pop-marvel__spider-man-metallic-3').raw);
44 + const funkoCat = funko.find((r) => r.kind === 'catalog_item');
45 + if (funkoCat?.kind !== 'catalog_item') throw new Error();
46 + expect(funkoCat.attributes.categorySlug).toBe('funko');
47 + expect(funkoCat.attributes.name).toBe('Spider-Man');
48 + expect(funkoCat.attributes.variant).toBe('Metallic');
49 + expect(funkoCat.attributes.number).toBe('3');
50 +
51 + const comic = await connector.normalize(loadFixture('pricecharting', 'comic-books-amazing-spider-man__amazing-spider-man-300-1988').raw);
52 + const comicCat = comic.find((r) => r.kind === 'catalog_item');
53 + if (comicCat?.kind !== 'catalog_item') throw new Error();
54 + expect(comicCat.attributes.categorySlug).toBe('marvel_comics');
55 + expect(comicCat.attributes.number).toBe('300');
56 + expect(comicCat.attributes.year).toBe(1988);
57 + const graded98 = comic.find((r) => r.kind === 'price_observation' && r.grade.grade === '9.8');
58 + expect(graded98).toBeTruthy();
59 + });
60 +
61 + it('parses the product page HTML deterministically', () => {
62 + const html = `<html><body><h1 id="product_name">Super Mario 64 [Player's Choice] <a href="/console/nintendo-64">Nintendo 64</a></h1>
63 + <script>VGPC.product = { id: 3924, is_comic: false, is_lego_set: false, is_funko_pop: false, is_card: false };</script>
64 + <table id="price_data"><tbody><tr><td id="used_price"><span class="price js-price">$39.99</span></td><td id="complete_price"><span class="price js-price">$134.48</span></td><td id="new_price"><span class="price js-price">$1,628.37</span></td></tr></tbody></table>
65 + <div class="completed-auctions-used"><table><tbody><tr id="ebay-1"><td class="date">2026-09-05</td><td class="title"><a href="https://www.ebay.com/itm/1">Mario 64 cart</a></td><td class="numeric"><span class="js-price">$37.95</span></td></tr></tbody></table></div>
66 + <table><tr><td class="title">UPC:</td><td class="details">045496870010</td></tr></table></body></html>`;
67 + const p = parseProductPage(html, 'https://www.pricecharting.com/game/nintendo-64/super-mario-64');
68 + expect(p.title).toBe("Super Mario 64 [Player's Choice]");
69 + expect(p.consoleUri).toBe('nintendo-64');
70 + expect(p.productId).toBe('3924');
71 + expect(p.prices.map((x) => x.value)).toEqual([39.99, 134.48, 1628.37]);
72 + expect(p.sales).toEqual([{ tab: 'used', date: '2026-09-05', title: 'Mario 64 cart', price: 37.95, ebayId: '1', listedPrice: null }]);
73 + expect(p.details['UPC']).toBe('045496870010');
74 + });
75 +});
added connectors/api/pricecharting/index.ts +461 −0
@@ -0,0 +1,461 @@
1 +import { z } from 'zod';
2 +import { BaseConnector, html as H, type ConnectorMeta, type CrawlContext, type RawRecordInput, type RawRecordLike } from '@rareindex/connectors';
3 +import { extractYear, parsePrice, parseSourceDate, type NormalizedCatalogItem, type NormalizedPriceObservation, type NormalizedRecord, type NormalizedSale, type AssetAttributes } from '@rareindex/shared';
4 +
5 +/**
6 + * PriceCharting connector — video games, LEGO sets, Funko Pops and comic books.
7 + *
8 + * A product page carries (a) PriceCharting's own guide value per condition column and
9 + * (b) a table of recently completed eBay sales per condition tab (date · title · price · eBay id).
10 + * We store the parsed page compactly as one raw record and normalise it into:
11 + * - one catalog_item (canonical identity + identifiers),
12 + * - one price_observation per non-empty guide column ('guide_value'),
13 + * - one sale per completed-sale row (sale_type unknown: eBay auction/BIN not distinguished).
14 + */
15 +
16 +const BASE = 'https://www.pricecharting.com';
17 +const PARSER_VERSION = '1.0.0';
18 +
19 +export const PriceCellSchema = z.object({ key: z.string(), value: z.number().nullable(), raw: z.string() });
20 +export const SaleRowSchema = z.object({ tab: z.string(), date: z.string(), title: z.string(), price: z.number(), ebayId: z.string().nullable(), listedPrice: z.number().nullable() });
21 +export const ProductPayloadSchema = z.object({
22 + kind: z.literal('product'),
23 + url: z.string(),
24 + productId: z.string().nullable(),
25 + consoleUri: z.string(),
26 + consoleName: z.string(),
27 + title: z.string(),
28 + flags: z.object({ isComic: z.boolean(), isLegoSet: z.boolean(), isFunkoPop: z.boolean(), isCard: z.boolean(), isCoin: z.boolean(), isSystem: z.boolean() }),
29 + columnLabels: z.array(z.string()),
30 + prices: z.array(PriceCellSchema),
31 + sales: z.array(SaleRowSchema),
32 + details: z.record(z.string(), z.string()),
33 + images: z.array(z.string()),
34 +});
35 +export type ProductPayload = z.infer<typeof ProductPayloadSchema>;
36 +
37 +type Family = 'video_games' | 'lego' | 'funko' | 'comics';
38 +
39 +interface ColumnMeaning {
40 + condition: string | null;
41 + completeness: string | null;
42 + conditionRaw: string;
43 + grade?: string | null;
44 +}
45 +
46 +const PRICE_KEYS = ['used_price', 'complete_price', 'new_price', 'graded_price', 'box_only_price', 'manual_only_price'] as const;
47 +const TAB_TO_KEY: Record<string, (typeof PRICE_KEYS)[number]> = {
48 + used: 'used_price',
49 + cib: 'complete_price',
50 + new: 'new_price',
51 + graded: 'graded_price',
52 + 'box-only': 'box_only_price',
53 + 'manual-only': 'manual_only_price',
54 + 'loose-and-manual': 'graded_price',
55 +};
56 +
57 +/** Column semantics per family (PriceCharting reuses the same six cells with different labels). */
58 +const COLUMN_MEANING: Record<Family, Partial<Record<(typeof PRICE_KEYS)[number], ColumnMeaning>>> = {
59 + video_games: {
60 + used_price: { condition: 'loose', completeness: 'loose', conditionRaw: 'Loose' },
61 + complete_price: { condition: 'cib', completeness: 'cib', conditionRaw: 'Complete in box' },
62 + new_price: { condition: 'sealed', completeness: 'sealed', conditionRaw: 'New / sealed' },
63 + graded_price: { condition: null, completeness: null, conditionRaw: 'Graded (any grader)' },
64 + box_only_price: { condition: null, completeness: 'box_only', conditionRaw: 'Box only' },
65 + manual_only_price: { condition: null, completeness: 'manual_only', conditionRaw: 'Manual only' },
66 + },
67 + lego: {
68 + used_price: { condition: 'used_complete', completeness: 'used_complete', conditionRaw: 'Pieces only (used, complete pieces)' },
69 + complete_price: { condition: 'opened_complete', completeness: 'opened_complete', conditionRaw: 'Complete (pieces, box, manual)' },
70 + new_price: { condition: 'sealed', completeness: 'sealed', conditionRaw: 'New / sealed' },
71 + manual_only_price: { condition: null, completeness: 'instructions_only', conditionRaw: 'Manual only' },
72 + },
73 + funko: {
74 + used_price: { condition: 'loose', completeness: 'loose', conditionRaw: 'Out of box' },
75 + complete_price: { condition: 'boxed', completeness: 'boxed', conditionRaw: 'In damaged box' },
76 + new_price: { condition: 'mint_in_box', completeness: 'boxed', conditionRaw: 'New (mint in box)' },
77 + },
78 + comics: {
79 + used_price: { condition: null, completeness: null, conditionRaw: 'Ungraded (raw)', grade: null },
80 + complete_price: { condition: 'very_good', completeness: null, conditionRaw: 'Graded 4.0 / VG (any grader)', grade: '4.0' },
81 + new_price: { condition: 'fine', completeness: null, conditionRaw: 'Graded 6.0 / Fine (any grader)', grade: '6.0' },
82 + graded_price: { condition: 'very_fine', completeness: null, conditionRaw: 'Graded 8.0 / VF (any grader)', grade: '8.0' },
83 + box_only_price: { condition: 'near_mint', completeness: null, conditionRaw: 'Graded 9.2 / NM- (any grader)', grade: '9.2' },
84 + manual_only_price: { condition: 'near_mint', completeness: null, conditionRaw: 'Graded 9.8 (any grader)', grade: '9.8' },
85 + },
86 +};
87 +
88 +const NINTENDO = /^(nes|famicom|super-nintendo|super-famicom|nintendo-64|gamecube|wii|wii-u|nintendo-switch|gameboy|gameboy-color|gameboy-advance|nintendo-ds|nintendo-3ds|virtual-boy|jp-|pal-)/;
89 +const SEGA = /^(sega-|pal-sega|jp-sega)/;
90 +const PLAYSTATION = /^(playstation|psp|playstation-vita|jp-playstation|pal-playstation)/;
91 +const XBOX = /^xbox/;
92 +const RETRO = /^(atari|intellivision|colecovision|neo-geo|turbografx|pc-engine|commodore|amiga|vectrex|3do|jaguar|philips-cd-i|magnavox|odyssey|msx|sharp|wonderswan|n-gage|game-com|tiger|evercade|super-cassette|fairchild|bally|arcadia|action-max|amiga-cd32)/;
93 +
94 +function familyOf(p: ProductPayload): Family | null {
95 + if (p.flags.isComic || p.consoleUri.startsWith('comic-books')) return 'comics';
96 + if (p.flags.isLegoSet || p.consoleUri.startsWith('lego')) return 'lego';
97 + if (p.flags.isFunkoPop || p.consoleUri.startsWith('funko')) return 'funko';
98 + if (p.flags.isCard || p.flags.isCoin) return null; // cards & coins are handled by dedicated connectors
99 + return 'video_games';
100 +}
101 +
102 +function categorySlug(p: ProductPayload, family: Family): string | null {
103 + const c = p.consoleUri;
104 + switch (family) {
105 + case 'lego':
106 + return 'lego_sets';
107 + case 'funko':
108 + return 'funko';
109 + case 'comics': {
110 + const pub = (p.details['Publisher'] ?? '').toLowerCase();
111 + if (/marvel/.test(pub)) return 'marvel_comics';
112 + if (/\bdc\b|dc comics|vertigo|wildstorm/.test(pub)) return 'dc_comics';
113 + return 'independent_comics';
114 + }
115 + case 'video_games':
116 + if (c === 'pc-games') return 'pc_games';
117 + if (NINTENDO.test(c)) return 'nintendo_games';
118 + if (SEGA.test(c)) return 'sega_games';
119 + if (PLAYSTATION.test(c)) return 'playstation_games';
120 + if (XBOX.test(c)) return 'xbox_games';
121 + if (RETRO.test(c)) return 'atari_retro_games';
122 + return 'video_games';
123 + }
124 +}
125 +
126 +/** "Super Mario 64 [Player's Choice]" → { name, variant } ; "Cloud City #10123" → { name, number } */
127 +function splitTitle(title: string): { name: string; variant: string | null; number: string | null } {
128 + let t = title.trim();
129 + const variants: string[] = [];
130 + t = t.replace(/\[([^\]]+)\]/g, (_m, v: string) => {
131 + variants.push(v.trim());
132 + return ' ';
133 + });
134 + let number: string | null = null;
135 + const num = t.match(/#\s*([A-Za-z0-9.\-/]+)/);
136 + if (num) {
137 + number = num[1]!;
138 + t = t.replace(num[0], ' ');
139 + }
140 + return { name: t.replace(/\s+/g, ' ').trim(), variant: variants.length ? variants.join(' · ') : null, number };
141 +}
142 +
143 +function parseProductPage(htmlText: string, url: string): ProductPayload {
144 + const $ = H.load(htmlText);
145 + const h1 = $('h1#product_name');
146 + const consoleName = H.text(h1.find('a')) ?? '';
147 + const consoleUri = (h1.find('a').attr('href') ?? '').replace(/^\/console\//, '') || (url.match(/\/game\/([^/]+)\//)?.[1] ?? '');
148 + const title = h1
149 + .clone()
150 + .children('a')
151 + .remove()
152 + .end()
153 + .text()
154 + .replace(/\s+/g, ' ')
155 + .trim();
156 + const flagsBlock = htmlText.match(/VGPC\.product\s*=\s*\{([\s\S]*?)\}/)?.[1] ?? '';
157 + const flag = (k: string) => new RegExp(`${k}\\s*:\\s*true`).test(flagsBlock);
158 + const productId = flagsBlock.match(/id\s*:\s*(\d+)/)?.[1] ?? null;
159 +
160 + const prices: z.infer<typeof PriceCellSchema>[] = [];
161 + const seen = new Set<string>();
162 + for (const key of PRICE_KEYS) {
163 + if (seen.has(key)) continue;
164 + const cell = $(`td#${key}`).first();
165 + if (!cell.length) continue;
166 + seen.add(key);
167 + const raw = H.text(cell.find('.price').first()) ?? H.text(cell) ?? '';
168 + const parsed = parsePrice(raw, 'USD');
169 + prices.push({ key, value: parsed && parsed.amount > 0 ? parsed.amount : null, raw });
170 + }
171 + const columnLabels: string[] = [];
172 + $('#price_data thead th, table.price_data thead th').each((_, el) => {
173 + const t = H.text($(el));
174 + if (t) columnLabels.push(t);
175 + });
176 +
177 + const sales: z.infer<typeof SaleRowSchema>[] = [];
178 + $('div[class^="completed-auctions-"]').each((_, sec) => {
179 + const cls = ($(sec).attr('class') ?? '').split(/\s+/).find((c) => c.startsWith('completed-auctions-')) ?? '';
180 + const tab = cls.replace('completed-auctions-', '');
181 + if (!tab || tab === 'condition' || !$(sec).find('table').length) return;
182 + $(sec)
183 + .find('tbody tr')
184 + .each((__, tr) => {
185 + const $tr = $(tr);
186 + const date = H.text($tr.find('td.date')) ?? '';
187 + const titleEl = $tr.find('td.title a').first();
188 + const rowTitle = H.text(titleEl) ?? H.text($tr.find('td.title')) ?? '';
189 + const priceTxt = H.text($tr.find('td.numeric .js-price').first()) ?? H.text($tr.find('td.numeric').first()) ?? '';
190 + const price = parsePrice(priceTxt, 'USD');
191 + const listedTxt = H.text($tr.find('td.listed-price'));
192 + const listed = listedTxt ? parsePrice(listedTxt, 'USD') : null;
193 + const ebayId = ($tr.attr('id') ?? '').match(/ebay-(\d+)/)?.[1] ?? titleEl.attr('href')?.match(/\/itm\/(\d+)/)?.[1] ?? null;
194 + if (!date || !rowTitle || !price || price.amount <= 0) return;
195 + sales.push({ tab, date, title: rowTitle, price: price.amount, ebayId, listedPrice: listed && listed.amount > 0 ? listed.amount : null });
196 + });
197 + });
198 +
199 + const details: Record<string, string> = {};
200 + $('td.title').each((_, el) => {
201 + const k = (H.text($(el)) ?? '').replace(/:$/, '').trim();
202 + const v = H.text($(el).next('td.details'));
203 + if (k && v && v !== 'none' && v !== 'n/a') details[k] = v;
204 + });
205 + const images: string[] = [];
206 + $('img[src*="images.pricecharting.com"]').each((_, el) => {
207 + const src = $(el).attr('src');
208 + if (src && /\/(240|1600|400)\.jpg$/.test(src) && !images.includes(src)) images.push(src);
209 + });
210 +
211 + return {
212 + kind: 'product',
213 + url,
214 + productId,
215 + consoleUri,
216 + consoleName,
217 + title,
218 + flags: { isComic: flag('is_comic'), isLegoSet: flag('is_lego_set'), isFunkoPop: flag('is_funko_pop'), isCard: flag('is_card'), isCoin: flag('is_coin'), isSystem: flag('is_system') },
219 + columnLabels,
220 + prices,
221 + sales,
222 + details,
223 + images: images.slice(0, 4),
224 + };
225 +}
226 +
227 +interface ConsoleProduct {
228 + id: string;
229 + productUri: string;
230 + productName: string;
231 + consoleUri: string;
232 +}
233 +
234 +export class PriceChartingConnector extends BaseConnector {
235 + readonly version = '1.0.0';
236 + readonly parserVersion = PARSER_VERSION;
237 + override readonly urlPatterns = [/^https?:\/\/(www\.)?pricecharting\.com\/game\/[^/]+\/[^/?#]+/i];
238 + protected override minIntervalMs = 1500;
239 +
240 + private get seeds(): string[] {
241 + const s = this.meta.config.seeds;
242 + return Array.isArray(s) ? (s as string[]) : [];
243 + }
244 +
245 + async *crawl(ctx: CrawlContext): AsyncIterable<RawRecordInput> {
246 + const perConsole = Number(this.meta.config.productsPerConsole ?? 200);
247 + const sort = String(this.meta.config.sort ?? 'popularity');
248 + const seeds = ctx.options.seeds?.length ? ctx.options.seeds : this.seeds;
249 + const cursor = ctx.options.cursor ?? {};
250 + const doneConsoles = new Set<string>((cursor.doneConsoles as string[] | undefined) ?? []);
251 + let count = 0;
252 +
253 + for (const consoleUri of seeds) {
254 + if (doneConsoles.has(consoleUri) && ctx.options.mode !== 'backfill') continue;
255 + if (ctx.signal?.aborted) return;
256 + const products = await this.listConsole(ctx, consoleUri, perConsole, sort);
257 + if (products.length === 0) ctx.anomaly('empty_console', consoleUri);
258 + for (const p of products) {
259 + if (this.reached(ctx, count)) return;
260 + const url = `${BASE}/game/${p.consoleUri}/${p.productUri}`;
261 + if (!(await ctx.shouldFetch(url))) continue;
262 + await this.throttle();
263 + const rec = await this.fetchProduct(ctx, url);
264 + if (rec) {
265 + count++;
266 + yield rec;
267 + }
268 + }
269 + doneConsoles.add(consoleUri);
270 + await ctx.setCursor({ doneConsoles: [...doneConsoles], updatedAt: new Date().toISOString() });
271 + }
272 + // Full pass complete: reset so the next incremental run starts again.
273 + await ctx.setCursor({ doneConsoles: [], updatedAt: new Date().toISOString() });
274 + }
275 +
276 + private async listConsole(ctx: CrawlContext, consoleUri: string, max: number, sort: string): Promise<ConsoleProduct[]> {
277 + const out: ConsoleProduct[] = [];
278 + let cursorPos = 0;
279 + while (out.length < max) {
280 + await this.throttle();
281 + const url = `${BASE}/console/${consoleUri}?sort=${encodeURIComponent(sort)}&cursor=${cursorPos}&format=json`;
282 + const res = await ctx.fetch(url, { engines: ['api'], responseType: 'json', minQuality: 0 });
283 + let json = res.json as { products?: Array<Record<string, unknown>>; cursor?: string } | null;
284 + if (!json && res.html) {
285 + try {
286 + json = JSON.parse(res.html) as typeof json;
287 + } catch {
288 + json = null;
289 + }
290 + }
291 + if (!res.success || !json?.products) {
292 + if (cursorPos === 0) ctx.anomaly('console_list_failed', `${consoleUri}: ${res.error ?? 'no products'}`);
293 + break;
294 + }
295 + for (const p of json.products) {
296 + if (typeof p.productUri === 'string' && typeof p.consoleUri === 'string') {
297 + out.push({ id: String(p.id ?? ''), productUri: p.productUri, productName: String(p.productName ?? ''), consoleUri: p.consoleUri });
298 + }
299 + }
300 + const next = Number(json.cursor);
301 + if (!Number.isFinite(next) || next <= cursorPos || json.products.length === 0) break;
302 + cursorPos = next;
303 + }
304 + return out.slice(0, max);
305 + }
306 +
307 + private async fetchProduct(ctx: CrawlContext, url: string): Promise<RawRecordInput | null> {
308 + const res = await ctx.fetch(url, {
309 + responseType: 'text',
310 + expect: ['title', 'price', 'identifiers', 'category'],
311 + parse: (r) => {
312 + if (!r.html) return null;
313 + const p = parseProductPage(r.html, url);
314 + return { title: p.title, price: p.prices.find((x) => x.value !== null)?.value ?? null, identifiers: p.productId ? { id: p.productId } : null, category: p.consoleUri };
315 + },
316 + });
317 + if (!res.success || !res.html) {
318 + ctx.anomaly('product_fetch_failed', `${url}: ${res.error ?? res.httpStatus}`);
319 + return null;
320 + }
321 + const payload = parseProductPage(res.html, url);
322 + if (!payload.title) {
323 + ctx.anomaly('parse_failure_title', url);
324 + return null;
325 + }
326 + return { url, externalId: payload.productId, kind: 'catalog_item', engine: res.engine, httpStatus: res.httpStatus, payload, fetchedAt: res.fetchedAt };
327 + }
328 +
329 + async lookup(url: string, ctx: CrawlContext): Promise<RawRecordInput[]> {
330 + const clean = url.split('?')[0]!;
331 + const rec = await this.fetchProduct(ctx, clean);
332 + return rec ? [rec] : [];
333 + }
334 +
335 + async normalize(raw: RawRecordLike): Promise<NormalizedRecord[]> {
336 + const p = ProductPayloadSchema.parse(raw.payload);
337 + const family = familyOf(p);
338 + if (!family) return [];
339 + const slug = categorySlug(p, family);
340 + if (!slug) return [];
341 + const { name, variant, number } = splitTitle(p.title);
342 + const year = extractYear(p.details['Release Date'] ?? '') ?? extractYear(p.title) ?? null;
343 + const identifiers: Record<string, string> = {};
344 + if (p.productId) identifiers.pricecharting_id = p.productId;
345 + if (p.details['UPC']) identifiers.upc = p.details['UPC'].replace(/\s+/g, '');
346 + if (p.details['ASIN (Amazon)']) identifiers.asin = p.details['ASIN (Amazon)'];
347 + if (p.details['ePID (eBay)']) identifiers.ebay_epid = p.details['ePID (eBay)'];
348 + if (p.details['Comic.org ID']) identifiers.comics_org_id = p.details['Comic.org ID'];
349 + if (family === 'lego' && number) identifiers.lego_set_number = number;
350 + if (p.details['Model Number']) identifiers.model_number = p.details['Model Number'];
351 + if (family === 'funko' && p.details['Box Number']) identifiers.funko_box_number = p.details['Box Number'];
352 +
353 + const attributes: AssetAttributes = {
354 + categorySlug: slug,
355 + subcategorySlug: null,
356 + franchise: family === 'funko' || family === 'lego' ? p.consoleName.replace(/^(Funko POP|LEGO)\s*/i, '') || null : null,
357 + brand: family === 'lego' ? 'LEGO' : family === 'funko' ? 'Funko' : p.details['Publisher'] ?? null,
358 + series: family === 'funko' ? p.details['Series'] ?? p.consoleName : null,
359 + set: family === 'comics' ? p.consoleName : family === 'lego' ? p.consoleName.replace(/^LEGO\s*/i, '') : p.consoleName,
360 + setCode: null,
361 + name: family === 'comics' ? p.consoleName : name,
362 + model: null,
363 + reference: null,
364 + number: number ?? (family === 'funko' ? p.details['Box Number'] ?? null : null),
365 + year,
366 + edition: null,
367 + variant,
368 + language: 'English',
369 + region: /^(jp|pal)-/.test(p.consoleUri) ? p.consoleUri.split('-')[0]!.toUpperCase() : 'NTSC-U',
370 + country: null,
371 + material: null,
372 + size: null,
373 + color: null,
374 + rarity: null,
375 + productionQuantity: null,
376 + originalMsrp: null,
377 + originalMsrpCurrency: null,
378 + identifiers,
379 + metadata: { pricecharting_console: p.consoleUri, key_issue: p.details['Is Key Issue'] === 'Yes' ? true : undefined, genre: p.details['Genre'], notes: p.details['Notes'] },
380 + };
381 + if (family === 'comics') {
382 + // "Amazing Spider-Man #1 (1963)" → name = series (from console), number = issue, year from title
383 + attributes.name = p.consoleName;
384 + attributes.year = extractYear(p.title) ?? year;
385 + }
386 +
387 + const observedAt = raw.fetchedAt;
388 + const base = {
389 + connectorId: this.meta.id,
390 + sourceId: this.meta.sourceId,
391 + sourceUrl: p.url,
392 + externalId: p.productId,
393 + rawTitle: family === 'comics' ? p.title : `${p.title} (${p.consoleName})`,
394 + description: p.details['Description'] ?? null,
395 + imageUrls: p.images,
396 + attributes,
397 + observedAt,
398 + confidence: 0.9,
399 + parserVersion: PARSER_VERSION,
400 + };
401 + const meanings = COLUMN_MEANING[family];
402 + const out: NormalizedRecord[] = [];
403 + const catalog: NormalizedCatalogItem = { kind: 'catalog_item', ...base, grade: { grader: null, grade: null, qualifier: null, certificationNumber: null }, condition: { condition: null, conditionRaw: null, completeness: null }, releaseDate: parseSourceDate(p.details['Release Date']) ?? null };
404 + out.push(catalog);
405 +
406 + const obsDate = new Date(Date.UTC(observedAt.getUTCFullYear(), observedAt.getUTCMonth(), observedAt.getUTCDate()));
407 + for (const cell of p.prices) {
408 + const m = meanings[cell.key as (typeof PRICE_KEYS)[number]];
409 + if (!m || cell.value === null) continue;
410 + const obs: NormalizedPriceObservation = {
411 + kind: 'price_observation',
412 + ...base,
413 + grade: { grader: null, grade: m.grade ?? null, qualifier: null, certificationNumber: null },
414 + condition: { condition: m.condition, conditionRaw: m.conditionRaw, completeness: m.completeness },
415 + priceKind: 'guide_value',
416 + price: cell.value,
417 + currency: 'USD',
418 + observationDate: obsDate,
419 + sampleSize: null,
420 + confidence: 0.85,
421 + };
422 + out.push(obs);
423 + }
424 + const seenSale = new Set<string>();
425 + for (const row of p.sales) {
426 + const key = TAB_TO_KEY[row.tab];
427 + const m = key ? meanings[key] : undefined;
428 + if (!m) continue;
429 + const saleDate = parseSourceDate(row.date);
430 + if (!saleDate) continue;
431 + const dedupe = `${row.ebayId ?? row.title}|${row.date}|${row.price}`;
432 + if (seenSale.has(dedupe)) continue;
433 + seenSale.add(dedupe);
434 + const sale: NormalizedSale = {
435 + kind: 'sale',
436 + ...base,
437 + externalId: row.ebayId ? `ebay:${row.ebayId}` : `${p.productId ?? p.url}:${row.date}:${row.price}`,
438 + rawTitle: row.title,
439 + description: null,
440 + grade: { grader: null, grade: m.grade ?? null, qualifier: null, certificationNumber: null },
441 + condition: { condition: m.condition, conditionRaw: m.conditionRaw, completeness: m.completeness },
442 + saleType: 'unknown',
443 + saleDate,
444 + price: row.price,
445 + currency: 'USD',
446 + buyerPremiumIncluded: false,
447 + quantity: 1,
448 + isBundle: /\b(lot|bundle)\b/i.test(row.title),
449 + location: null,
450 + auctionHouse: null,
451 + lotNumber: null,
452 + confidence: 0.75,
453 + };
454 + out.push(sale);
455 + }
456 + return out;
457 + }
458 +}
459 +
460 +export default (meta: ConnectorMeta) => new PriceChartingConnector(meta);
461 +export { parseProductPage };
added connectors/api/pricecharting/meta.json +43 −0
@@ -0,0 +1,43 @@
1 +{
2 + "id": "pricecharting",
3 + "displayName": "PriceCharting",
4 + "sourceId": "pricecharting",
5 + "sourceName": "PriceCharting",
6 + "sourceType": "pricing_guide",
7 + "sourceUrl": "https://www.pricecharting.com",
8 + "module": "api/pricecharting",
9 + "enginePriority": ["api", "firecrawl", "scrapfly"],
10 + "categories": ["video_games", "nintendo_games", "sega_games", "playstation_games", "xbox_games", "atari_retro_games", "pc_games", "lego_sets", "funko", "comics", "marvel_comics", "dc_comics", "independent_comics"],
11 + "regions": ["US"],
12 + "languages": ["en"],
13 + "currency": ["USD"],
14 + "supportsListings": false,
15 + "supportsSold": true,
16 + "supportsAuctions": false,
17 + "supportsImages": true,
18 + "supportsCatalog": true,
19 + "supportsPopulation": false,
20 + "supportsLookup": true,
21 + "refreshFrequencyMinutes": 1440,
22 + "priority": "high",
23 + "trustScore": 0.7,
24 + "attributionRequired": true,
25 + "termsUrl": "https://www.pricecharting.com/page/terms-of-service",
26 + "accessNotes": "Public product pages fetched over plain HTTPS with the RareIndex user agent (robots.txt only disallows /buy, /publish-offer, /stripe-connect). Each product page exposes PriceCharting guide values per condition and a table of recently completed eBay sales (date, title, price, eBay item id) — we store those as sales with the PriceCharting page as source URL. No account, no API key, no photos (TimeWarp is paid and not used). Console listings paginate through the public ?format=json cursor endpoint. ~1 request per product, 1.5 s politeness delay.",
27 + "enabled": true,
28 + "schemaVersion": "1.0",
29 + "config": {
30 + "seeds": [
31 + "nintendo-64", "nes", "super-nintendo", "gamecube", "gameboy", "gameboy-color", "gameboy-advance", "nintendo-ds", "nintendo-switch", "wii",
32 + "playstation", "playstation-2", "playstation-3", "playstation-4", "playstation-5", "psp",
33 + "xbox", "xbox-360", "xbox-one", "xbox-series-x",
34 + "sega-genesis", "sega-dreamcast", "sega-saturn", "sega-master-system", "sega-game-gear",
35 + "atari-2600", "neo-geo-aes", "turbografx-16", "pc-games",
36 + "lego-star-wars", "lego-creator", "lego-technic", "lego-icons", "lego-harry-potter", "lego-ideas", "lego-marvel-super-heroes", "lego-ninjago", "lego-castle", "lego-space", "lego-modular-buildings",
37 + "funko-pop-marvel", "funko-pop-star-wars", "funko-pop-disney", "funko-pop-animation", "funko-pop-television", "funko-pop-movies", "funko-pop-games", "funko-pop-rocks", "funko-pop-comics",
38 + "comic-books-amazing-spider-man", "comic-books-batman", "comic-books-action-comics", "comic-books-detective-comics", "comic-books-x-men", "comic-books-incredible-hulk", "comic-books-fantastic-four", "comic-books-avengers", "comic-books-spawn", "comic-books-walking-dead"
39 + ],
40 + "productsPerConsole": 200,
41 + "sort": "popularity"
42 + }
43 +}
added connectors/api/scryfall/index.test.ts +55 −0
@@ -0,0 +1,55 @@
1 +import { describe, expect, it } from 'vitest';
2 +import { getConnectorMeta } from '@rareindex/connectors';
3 +import { loadFixture, runFixtureSuite } from '@rareindex/connectors/testing';
4 +import createConnector from './index.js';
5 +
6 +const connector = createConnector(getConnectorMeta('scryfall'));
7 +
8 +describe('scryfall', () => {
9 + runFixtureSuite(connector, it, expect);
10 +
11 + it('maps Black Lotus (Alpha) to a catalog item + EUR observation', async () => {
12 + const out = await connector.normalize(loadFixture('scryfall', 'black-lotus-alpha').raw);
13 + const cat = out.find((r) => r.kind === 'catalog_item');
14 + const obs = out.filter((r) => r.kind === 'price_observation');
15 + expect(cat && 'attributes' in cat && cat.attributes).toMatchObject({ categorySlug: 'magic_the_gathering', set: 'Limited Edition Alpha', setCode: 'LEA', number: '232', year: 1993, rarity: 'rare', language: 'en', variant: null });
16 + expect(cat && 'attributes' in cat ? cat.attributes.identifiers : {}).toMatchObject({ scryfall_id: 'b0faa7f2-b547-42c4-a810-839da50dadfe', tcgplayer_id: '1042', cardmarket_id: '5465' });
17 + expect(cat && 'rawTitle' in cat ? cat.rawTitle : '').toBe('Black Lotus · Limited Edition Alpha #232 (1993)');
18 + expect(obs).toHaveLength(1);
19 + expect(obs[0]).toMatchObject({ currency: 'EUR', priceKind: 'market' });
20 + if (obs[0]?.kind === 'price_observation') {
21 + expect(obs[0].price).toBeGreaterThan(1000);
22 + expect(obs[0].observationDate.toISOString()).toBe('2026-09-06T21:05:43.673Z');
23 + }
24 + });
25 +
26 + it('splits foil / nonfoil finishes into distinct variants with matching prices', async () => {
27 + const out = await connector.normalize(loadFixture('scryfall', 'secret-lair-foil-nonfoil').raw);
28 + const cats = out.filter((r) => r.kind === 'catalog_item');
29 + expect(cats.map((c) => ('attributes' in c ? c.attributes.variant : undefined)).sort()).toEqual([null, 'Foil'].sort());
30 + const obs = out.filter((r) => r.kind === 'price_observation');
31 + const foilUsd = obs.find((o) => 'attributes' in o && o.attributes.variant === 'Foil' && 'currency' in o && o.currency === 'USD');
32 + const nonfoilUsd = obs.find((o) => 'attributes' in o && o.attributes.variant === null && 'currency' in o && o.currency === 'USD');
33 + expect(foilUsd && nonfoilUsd).toBeTruthy();
34 + for (const o of obs) expect(o.kind === 'price_observation' && o.attributes.identifiers.finish).toMatch(/foil|nonfoil/);
35 + });
36 +
37 + it('labels showcase treatments and foil-only printings', async () => {
38 + const out = await connector.normalize(loadFixture('scryfall', 'neo-showcase-foil-only').raw);
39 + const cats = out.filter((r) => r.kind === 'catalog_item');
40 + expect(cats).toHaveLength(1);
41 + expect(cats[0] && 'attributes' in cats[0] ? cats[0].attributes.variant : '').toMatch(/Showcase.*Foil/);
42 + expect(out.filter((r) => r.kind === 'price_observation').every((o) => 'attributes' in o && /Foil/.test(o.attributes.variant ?? ''))).toBe(true);
43 + });
44 +
45 + it('uses card face images for double-faced cards', async () => {
46 + const out = await connector.normalize(loadFixture('scryfall', 'clb-double-faced').raw);
47 + const cat = out.find((r) => r.kind === 'catalog_item');
48 + expect(cat && 'imageUrls' in cat ? cat.imageUrls.length : 0).toBeGreaterThanOrEqual(1);
49 + });
50 +
51 + it('recognises scryfall card URLs for lookup', () => {
52 + expect(connector.urlPatterns?.some((re) => re.test('https://scryfall.com/card/lea/232/black-lotus'))).toBe(true);
53 + expect(connector.urlPatterns?.some((re) => re.test('https://scryfall.com/sets/lea'))).toBe(false);
54 + });
55 +});
added connectors/api/scryfall/index.ts +290 −0
@@ -0,0 +1,290 @@
1 +import { createGunzip } from 'node:zlib';
2 +import { Readable } from 'node:stream';
3 +import { createInterface } from 'node:readline';
4 +import { z } from 'zod';
5 +import { BaseConnector, type ConnectorMeta, type CrawlContext, type RawRecordInput, type RawRecordLike } from '@rareindex/connectors';
6 +import { type NormalizedRecord } from '@rareindex/shared';
7 +import { attrs, catalogItem, makeTitle, num, priceObservation, yearOf } from '../_lib/shared.js';
8 +
9 +const API = 'https://api.scryfall.com';
10 +const HEADERS = { 'user-agent': 'RareIndexBot/0.1 (+https://www.rareindex.io/about/data)', accept: 'application/json;q=0.9,*/*;q=0.8' };
11 +
12 +/** Trimmed printing payload we persist as the raw record (everything normalize() needs, nothing more). */
13 +const CardPayloadSchema = z.object({
14 + id: z.string(),
15 + oracle_id: z.string().optional(),
16 + name: z.string(),
17 + lang: z.string().optional(),
18 + released_at: z.string().optional(),
19 + set: z.string(),
20 + set_name: z.string(),
21 + set_type: z.string().optional(),
22 + collector_number: z.string(),
23 + rarity: z.string().optional(),
24 + layout: z.string().optional(),
25 + finishes: z.array(z.string()).optional(),
26 + frame_effects: z.array(z.string()).optional().nullable(),
27 + promo_types: z.array(z.string()).optional().nullable(),
28 + promo: z.boolean().optional(),
29 + reserved: z.boolean().optional(),
30 + reprint: z.boolean().optional(),
31 + variation: z.boolean().optional(),
32 + full_art: z.boolean().optional(),
33 + border_color: z.string().optional(),
34 + frame: z.string().optional(),
35 + digital: z.boolean().optional(),
36 + artist: z.string().optional(),
37 + mana_cost: z.string().optional(),
38 + type_line: z.string().optional(),
39 + cmc: z.number().optional(),
40 + colors: z.array(z.string()).optional(),
41 + tcgplayer_id: z.number().optional(),
42 + tcgplayer_etched_id: z.number().optional(),
43 + cardmarket_id: z.number().optional(),
44 + mtgo_id: z.number().optional(),
45 + arena_id: z.number().optional(),
46 + multiverse_ids: z.array(z.number()).optional(),
47 + scryfall_uri: z.string().optional(),
48 + image_uris: z.record(z.string(), z.string()).optional(),
49 + card_faces: z.array(z.object({ name: z.string().optional(), image_uris: z.record(z.string(), z.string()).optional() })).optional(),
50 + prices: z.record(z.string(), z.string().nullable()).optional(),
51 +});
52 +type CardPayload = z.infer<typeof CardPayloadSchema>;
53 +
54 +const RawPayloadSchema = z.object({
55 + card: CardPayloadSchema,
56 + /** ISO timestamp of the bulk file (prices' observation time); null for single-card lookups */
57 + bulkUpdatedAt: z.string().nullable().default(null),
58 +});
59 +
60 +const KEEP: Array<keyof CardPayload> = ['id', 'oracle_id', 'name', 'lang', 'released_at', 'set', 'set_name', 'set_type', 'collector_number', 'rarity', 'layout', 'finishes', 'frame_effects', 'promo_types', 'promo', 'reserved', 'reprint', 'variation', 'full_art', 'border_color', 'frame', 'digital', 'artist', 'mana_cost', 'type_line', 'cmc', 'colors', 'tcgplayer_id', 'tcgplayer_etched_id', 'cardmarket_id', 'mtgo_id', 'arena_id', 'multiverse_ids', 'scryfall_uri', 'image_uris', 'card_faces', 'prices'];
61 +
62 +export function trimCard(card: Record<string, unknown>): CardPayload {
63 + const out: Record<string, unknown> = {};
64 + for (const k of KEEP) if (card[k] !== undefined) out[k] = card[k];
65 + if (Array.isArray(out.card_faces)) out.card_faces = (out.card_faces as Array<Record<string, unknown>>).map((f) => ({ name: f.name, image_uris: f.image_uris }));
66 + return CardPayloadSchema.parse(out);
67 +}
68 +
69 +function finishVariant(finish: string): string | null {
70 + if (finish === 'foil') return 'Foil';
71 + if (finish === 'etched') return 'Etched Foil';
72 + return null;
73 +}
74 +
75 +/** Frame effects / promo types that materially identify a distinct printing treatment on the market. */
76 +const VARIANT_FRAME_EFFECTS = new Set(['showcase', 'extendedart', 'inverted', 'shatteredglass', 'etched', 'textured']);
77 +const VARIANT_PROMO_TYPES = new Set(['serialized', 'prerelease', 'promopack', 'judgegift', 'buyabox', 'gameday', 'textured', 'galaxyfoil', 'surgefoil', 'stepandcompleat', 'confettifoil', 'oilslick', 'halofoil', 'neonink', 'ripplefoil', 'fracturefoil', 'rainbowfoil', 'raisedfoil', 'invisibleink', 'doublerainbow', 'manafoil', 'firstplacefoil', 'dragonscalefoil', 'silverfoil', 'gilded', 'embossed', 'startercollection', 'schinesealtart', 'datestamped', 'playerrewards', 'arenaleague', 'fnm', 'release', 'launch', 'convention', 'mediainsert', 'wizardsplaynetwork', 'thick', 'poster']);
78 +const LABELS: Record<string, string> = { extendedart: 'Extended Art', promopack: 'Promo Pack', judgegift: 'Judge Promo', buyabox: 'Buy-a-Box', gameday: 'Game Day', galaxyfoil: 'Galaxy Foil', surgefoil: 'Surge Foil', stepandcompleat: 'Step-and-Compleat', confettifoil: 'Confetti Foil', oilslick: 'Oil Slick', halofoil: 'Halo Foil', neonink: 'Neon Ink', ripplefoil: 'Ripple Foil', fracturefoil: 'Fracture Foil', rainbowfoil: 'Rainbow Foil', raisedfoil: 'Raised Foil', invisibleink: 'Invisible Ink', doublerainbow: 'Double Rainbow', manafoil: 'Mana Foil', firstplacefoil: 'First Place Foil', dragonscalefoil: 'Dragon Scale Foil', silverfoil: 'Silver Foil', startercollection: 'Starter Collection', schinesealtart: 'Chinese Alt Art', datestamped: 'Date Stamped', playerrewards: 'Player Rewards', arenaleague: 'Arena League', fnm: 'FNM', mediainsert: 'Media Insert', wizardsplaynetwork: 'WPN', shatteredglass: 'Shattered Glass' };
79 +
80 +function treatments(card: CardPayload): string[] {
81 + const t: string[] = [];
82 + for (const fe of card.frame_effects ?? []) if (VARIANT_FRAME_EFFECTS.has(fe)) t.push(fe);
83 + for (const pt of card.promo_types ?? []) if (VARIANT_PROMO_TYPES.has(pt)) t.push(pt);
84 + if (card.full_art) t.push('fullart');
85 + if (card.border_color === 'borderless') t.push('borderless');
86 + if (card.frame === '1997' && card.set_type !== 'core' && card.set_type !== 'expansion' && (card.released_at ?? '') > '2010') t.push('retro');
87 + return [...new Set(t)].map((k) => LABELS[k] ?? (k === 'fullart' ? 'Full Art' : k.charAt(0).toUpperCase() + k.slice(1)));
88 +}
89 +
90 +export class ScryfallConnector extends BaseConnector {
91 + readonly version = '1.0.0';
92 + readonly parserVersion = '1.0.0';
93 + override readonly urlPatterns = [/^https?:\/\/(www\.)?scryfall\.com\/card\/[^/]+\/[^/?#]+/i];
94 + protected override minIntervalMs = 100;
95 +
96 + async *crawl(ctx: CrawlContext): AsyncIterable<RawRecordInput> {
97 + const bulkType = String(ctx.meta.config.bulkType ?? 'default_cards');
98 + const list = await ctx.fetch(`${API}/bulk-data`, { engines: ['api'], headers: HEADERS });
99 + if (!list.success || !list.json) throw new Error(`scryfall bulk-data listing failed: ${list.error}`);
100 + const entries = (list.json as { data: Array<{ type: string; updated_at: string; download_uri?: string; jsonl_download_uri?: string }> }).data;
101 + const entry = entries.find((e) => e.type === bulkType);
102 + if (!entry) throw new Error(`scryfall bulk type ${bulkType} not found`);
103 + const prev = ctx.options.cursor?.updatedAt as string | undefined;
104 + if (ctx.options.mode === 'incremental' && prev && prev === entry.updated_at) {
105 + ctx.log.info({ updatedAt: prev }, 'scryfall bulk unchanged, skipping');
106 + return;
107 + }
108 + const uri = entry.jsonl_download_uri ?? entry.download_uri;
109 + if (!uri) throw new Error('scryfall bulk entry has no download uri');
110 + const jsonl = Boolean(entry.jsonl_download_uri);
111 + const started = Date.now();
112 + const res = await fetch(uri, { headers: HEADERS, signal: ctx.signal });
113 + const stats = (ctx.engineStats.api ??= { attempts: 0, success: 0, credits: 0, ms: 0 });
114 + stats.attempts++;
115 + if (!res.ok || !res.body) throw new Error(`scryfall bulk download HTTP ${res.status}`);
116 + stats.success++;
117 + let count = 0;
118 + const fetchedAt = new Date();
119 + let body: NodeJS.ReadableStream = Readable.fromWeb(res.body as import('node:stream/web').ReadableStream);
120 + if (uri.endsWith('.gz')) body = body.pipe(createGunzip());
121 + const rl = createInterface({ input: body, crlfDelay: Infinity });
122 + for await (const rawLine of rl) {
123 + let line = rawLine.trim();
124 + if (!jsonl) {
125 + // legacy JSON array format: one object per line, wrapped by [ ] and separated by commas
126 + if (line === '[' || line === ']' || !line) continue;
127 + if (line.endsWith(',')) line = line.slice(0, -1);
128 + }
129 + if (!line) continue;
130 + let card: Record<string, unknown>;
131 + try {
132 + card = JSON.parse(line) as Record<string, unknown>;
133 + } catch {
134 + ctx.anomaly('parse_failure', 'bulk line is not JSON');
135 + continue;
136 + }
137 + if (card.object !== 'card' || card.digital === true) continue;
138 + let payload: CardPayload;
139 + try {
140 + payload = trimCard(card);
141 + } catch (err) {
142 + ctx.anomaly('parse_failure', `card ${String(card.id)}: ${err instanceof Error ? err.message : String(err)}`);
143 + continue;
144 + }
145 + yield {
146 + url: payload.scryfall_uri ?? `${API}/cards/${payload.id}`,
147 + externalId: payload.id,
148 + kind: 'catalog_item',
149 + engine: 'api',
150 + httpStatus: 200,
151 + payload: { card: payload, bulkUpdatedAt: entry.updated_at },
152 + fetchedAt,
153 + };
154 + count++;
155 + if (this.reached(ctx, count)) break;
156 + }
157 + stats.ms += Date.now() - started;
158 + rl.close();
159 + if (!this.reached(ctx, count)) await ctx.setCursor({ updatedAt: entry.updated_at, count });
160 + ctx.log.info({ count, ms: Date.now() - started }, 'scryfall bulk crawl done');
161 + }
162 +
163 + async lookup(url: string, ctx: CrawlContext): Promise<RawRecordInput[]> {
164 + const m = url.match(/scryfall\.com\/card\/([^/]+)\/([^/?#]+)/i);
165 + if (!m) return [];
166 + await this.throttle();
167 + const res = await ctx.fetch(`${API}/cards/${encodeURIComponent(m[1]!)}/${encodeURIComponent(m[2]!)}`, { engines: ['api'], headers: HEADERS });
168 + if (!res.success || !res.json) return [];
169 + const payload = trimCard(res.json as Record<string, unknown>);
170 + return [{ url: payload.scryfall_uri ?? url, externalId: payload.id, kind: 'catalog_item', engine: 'api', httpStatus: res.httpStatus, payload: { card: payload, bulkUpdatedAt: null }, fetchedAt: res.fetchedAt }];
171 + }
172 +
173 + async normalize(raw: RawRecordLike): Promise<NormalizedRecord[]> {
174 + const { card, bulkUpdatedAt } = RawPayloadSchema.parse(raw.payload);
175 + const year = yearOf(card.released_at);
176 + const sourceUrl = card.scryfall_uri ?? raw.url;
177 + const images = card.image_uris ? [card.image_uris.large ?? card.image_uris.normal ?? card.image_uris.png].filter((x): x is string => Boolean(x)) : (card.card_faces ?? []).map((f) => f.image_uris?.large ?? f.image_uris?.normal).filter((x): x is string => Boolean(x));
178 + const identifiers: Record<string, string> = { scryfall_id: card.id };
179 + if (card.oracle_id) identifiers.oracle_id = card.oracle_id;
180 + if (card.tcgplayer_id) identifiers.tcgplayer_id = String(card.tcgplayer_id);
181 + if (card.tcgplayer_etched_id) identifiers.tcgplayer_etched_id = String(card.tcgplayer_etched_id);
182 + if (card.cardmarket_id) identifiers.cardmarket_id = String(card.cardmarket_id);
183 + if (card.mtgo_id) identifiers.mtgo_id = String(card.mtgo_id);
184 + if (card.arena_id) identifiers.arena_id = String(card.arena_id);
185 + if (card.multiverse_ids?.length) identifiers.multiverse_id = String(card.multiverse_ids[0]);
186 + const treat = treatments(card);
187 + const baseVariant = treat.length ? treat.join(' ') : null;
188 + const finishes = card.finishes?.length ? card.finishes : ['nonfoil'];
189 + const observedAt = bulkUpdatedAt ? new Date(bulkUpdatedAt) : raw.fetchedAt;
190 + const out: NormalizedRecord[] = [];
191 +
192 + const buildAttrs = (finish: string) => {
193 + const fv = finishVariant(finish);
194 + const variant = [baseVariant, fv].filter(Boolean).join(' ') || null;
195 + return attrs({
196 + categorySlug: 'magic_the_gathering',
197 + franchise: 'Magic: The Gathering',
198 + brand: 'Wizards of the Coast',
199 + set: card.set_name,
200 + setCode: card.set.toUpperCase(),
201 + name: card.name,
202 + number: card.collector_number,
203 + year,
204 + variant,
205 + language: card.lang ?? null,
206 + rarity: card.rarity ?? null,
207 + identifiers: { ...identifiers, finish },
208 + metadata: {
209 + mana_cost: card.mana_cost ?? null,
210 + type_line: card.type_line ?? null,
211 + cmc: card.cmc ?? null,
212 + colors: card.colors ?? [],
213 + artist: card.artist ?? null,
214 + reserved: card.reserved ?? false,
215 + promo: card.promo ?? false,
216 + reprint: card.reprint ?? false,
217 + set_type: card.set_type ?? null,
218 + layout: card.layout ?? null,
219 + frame: card.frame ?? null,
220 + border_color: card.border_color ?? null,
221 + finish,
222 + treatments: treat,
223 + },
224 + });
225 + };
226 +
227 + for (const finish of finishes) {
228 + const a = buildAttrs(finish);
229 + out.push(
230 + catalogItem({
231 + kind: 'catalog_item',
232 + connectorId: this.meta.id,
233 + sourceId: this.meta.sourceId,
234 + sourceUrl,
235 + externalId: `${card.id}:${finish}`,
236 + rawTitle: makeTitle({ name: card.name, set: card.set_name, number: card.collector_number, year, variant: a.variant }),
237 + description: card.type_line ?? null,
238 + imageUrls: images,
239 + attributes: a,
240 + observedAt,
241 + confidence: 0.98,
242 + parserVersion: this.parserVersion,
243 + releaseDate: card.released_at ?? null,
244 + }),
245 + );
246 + }
247 +
248 + const prices = card.prices ?? {};
249 + const obsDate = observedAt;
250 + const priceMap: Array<[key: string, finish: string, currency: 'USD' | 'EUR']> = [
251 + ['usd', 'nonfoil', 'USD'],
252 + ['usd_foil', 'foil', 'USD'],
253 + ['usd_etched', 'etched', 'USD'],
254 + ['eur', 'nonfoil', 'EUR'],
255 + ['eur_foil', 'foil', 'EUR'],
256 + ];
257 + for (const [key, finish, currency] of priceMap) {
258 + const price = num(prices[key]);
259 + if (price === null) continue;
260 + if (!finishes.includes(finish)) continue;
261 + const a = buildAttrs(finish);
262 + out.push(
263 + priceObservation({
264 + kind: 'price_observation',
265 + connectorId: this.meta.id,
266 + sourceId: this.meta.sourceId,
267 + sourceUrl,
268 + externalId: `${card.id}:${key}`,
269 + rawTitle: makeTitle({ name: card.name, set: card.set_name, number: card.collector_number, year, variant: a.variant }),
270 + imageUrls: images,
271 + attributes: a,
272 + condition: { condition: 'near_mint', conditionRaw: 'NM (market price)', completeness: null },
273 + observedAt,
274 + confidence: 0.9,
275 + parserVersion: this.parserVersion,
276 + priceKind: 'market',
277 + price,
278 + currency,
279 + observationDate: obsDate,
280 + sampleSize: null,
281 + }),
282 + );
283 + }
284 + return out;
285 + }
286 +}
287 +
288 +export default function createConnector(meta: ConnectorMeta) {
289 + return new ScryfallConnector(meta);
290 +}
added connectors/api/scryfall/meta.json +33 −0
@@ -0,0 +1,33 @@
1 +{
2 + "id": "scryfall",
3 + "displayName": "Scryfall (Magic: The Gathering)",
4 + "sourceId": "scryfall",
5 + "sourceName": "Scryfall",
6 + "sourceType": "catalog",
7 + "sourceUrl": "https://scryfall.com",
8 + "module": "api/scryfall",
9 + "enginePriority": ["api"],
10 + "categories": ["magic_the_gathering"],
11 + "regions": ["US", "EU"],
12 + "languages": ["en"],
13 + "currency": ["USD", "EUR"],
14 + "supportsListings": false,
15 + "supportsSold": false,
16 + "supportsAuctions": false,
17 + "supportsImages": true,
18 + "supportsCatalog": true,
19 + "supportsPopulation": false,
20 + "supportsLookup": true,
21 + "refreshFrequencyMinutes": 1440,
22 + "priority": "high",
23 + "trustScore": 0.85,
24 + "attributionRequired": true,
25 + "termsUrl": "https://scryfall.com/docs/api",
26 + "accessNotes": "Official public API, no key. Bulk 'default_cards' JSONL (gzip, ~78 MB, refreshed daily) is streamed for the full catalog; single-card lookups use /cards/<set>/<number>. Scryfall asks for ≤10 req/s (we pace 100 ms), an identifying User-Agent and Accept headers. Prices (usd/usd_foil/usd_etched/eur/eur_foil) are Scryfall's daily market aggregates from TCGplayer/Cardmarket → stored as price_observations, never as sales. Card data © Wizards of the Coast; Scryfall requests attribution and no implication of endorsement.",
27 + "enabled": true,
28 + "schemaVersion": "1.0",
29 + "config": {
30 + "bulkType": "default_cards",
31 + "requestIntervalMs": 100
32 + }
33 +}
added connectors/api/ygoprodeck/index.test.ts +50 −0
@@ -0,0 +1,50 @@
1 +import { describe, expect, it } from 'vitest';
2 +import { getConnectorMeta } from '@rareindex/connectors';
3 +import { loadFixture, listFixtures, runFixtureSuite } from '@rareindex/connectors/testing';
4 +import createConnector, { languageFromSetCode } from './index.js';
5 +
6 +const connector = createConnector(getConnectorMeta('ygoprodeck'));
7 +
8 +describe('ygoprodeck', () => {
9 + runFixtureSuite(connector, it, expect);
10 +
11 + it('emits one catalog item per printing with set code / rarity / language', async () => {
12 + const name = listFixtures('ygoprodeck').find((n) => n === '46986414') ?? listFixtures('ygoprodeck')[0]!; // Dark Magician
13 + const fx = loadFixture('ygoprodeck', name);
14 + const out = await connector.normalize(fx.raw);
15 + const cats = out.filter((r) => r.kind === 'catalog_item');
16 + const payload = fx.raw.payload as { card: { card_sets: Array<{ set_code: string; set_rarity?: string }>; id: number } };
17 + const distinct = new Set(payload.card.card_sets.map((s) => `${s.set_code}|${s.set_rarity ?? ''}`)).size;
18 + expect(cats).toHaveLength(distinct);
19 + const first = cats[0]!;
20 + if (first.kind !== 'catalog_item') throw new Error('kind');
21 + expect(first.attributes.categorySlug).toBe('yugioh');
22 + expect(first.attributes.identifiers.ygo_id).toBe(String(payload.card.id));
23 + expect(first.attributes.identifiers.konami_id).toBeTruthy();
24 + expect(first.attributes.number).toMatch(/^[A-Z0-9]+-[A-Z]*\d+/);
25 + expect(first.attributes.setCode).toBe(first.attributes.number!.split('-')[0]);
26 + expect(first.attributes.year).toBeNull(); // per-printing year unknown → never guessed
27 + // unique external ids per printing
28 + expect(new Set(cats.map((c) => c.kind === 'catalog_item' && c.externalId)).size).toBe(cats.length);
29 + });
30 +
31 + it('records set_price per printing and card-level prices once', async () => {
32 + const fx = loadFixture('ygoprodeck', listFixtures('ygoprodeck')[0]!);
33 + const out = await connector.normalize(fx.raw);
34 + const obs = out.filter((r) => r.kind === 'price_observation');
35 + const printingLevel = obs.filter((o) => o.kind === 'price_observation' && o.attributes.metadata.price_scope === 'printing');
36 + const cardLevel = obs.filter((o) => o.kind === 'price_observation' && o.attributes.metadata.price_scope === 'card');
37 + expect(printingLevel.length).toBeGreaterThan(0);
38 + expect(cardLevel.length).toBeGreaterThan(0);
39 + expect(cardLevel.length).toBeLessThanOrEqual(5);
40 + for (const o of printingLevel) if (o.kind === 'price_observation') expect(o.priceKind).toBe('guide_value');
41 + const eur = cardLevel.find((o) => o.kind === 'price_observation' && o.currency === 'EUR');
42 + expect(eur && eur.kind === 'price_observation' ? eur.attributes.metadata.priceSource : '').toBe('cardmarket');
43 + });
44 +
45 + it('derives language from set codes', () => {
46 + expect(languageFromSetCode('LOB-EN001')).toBe('English');
47 + expect(languageFromSetCode('LOB-FR001')).toBe('French');
48 + expect(languageFromSetCode('LOB-001')).toBeNull();
49 + });
50 +});
added connectors/api/ygoprodeck/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 { type NormalizedRecord } from '@rareindex/shared';
4 +import { attrs, catalogItem, makeTitle, num, priceObservation } from '../_lib/shared.js';
5 +
6 +const API = 'https://db.ygoprodeck.com/api/v7/cardinfo.php';
7 +
8 +const CardSchema = z.object({
9 + id: z.number(),
10 + name: z.string(),
11 + type: z.string().optional(),
12 + humanReadableCardType: z.string().optional(),
13 + frameType: z.string().optional(),
14 + race: z.string().optional(),
15 + attribute: z.string().optional(),
16 + archetype: z.string().optional(),
17 + atk: z.number().nullable().optional(),
18 + def: z.number().nullable().optional(),
19 + level: z.number().nullable().optional(),
20 + ygoprodeck_url: z.string().optional(),
21 + card_sets: z.array(z.object({ set_name: z.string(), set_code: z.string(), set_rarity: z.string().optional(), set_rarity_code: z.string().optional(), set_price: z.string().optional() })).optional(),
22 + card_images: z.array(z.object({ id: z.number(), image_url: z.string().optional(), image_url_small: z.string().optional(), image_url_cropped: z.string().optional() })).optional(),
23 + card_prices: z.array(z.record(z.string(), z.string().nullable())).optional(),
24 + misc_info: z.array(z.object({ konami_id: z.number().optional(), tcg_date: z.string().optional(), ocg_date: z.string().optional(), md_rarity: z.string().optional(), treated_as: z.string().optional() }).loose()).optional(),
25 +});
26 +type YgoCard = z.infer<typeof CardSchema>;
27 +
28 +const KEEP = ['id', 'name', 'type', 'humanReadableCardType', 'frameType', 'race', 'attribute', 'archetype', 'atk', 'def', 'level', 'ygoprodeck_url', 'card_sets', 'card_images', 'card_prices', 'misc_info'] as const;
29 +
30 +export function trimCard(card: Record<string, unknown>): YgoCard {
31 + const out: Record<string, unknown> = {};
32 + for (const k of KEEP) if (card[k] !== undefined) out[k] = card[k];
33 + if (Array.isArray(out.misc_info)) out.misc_info = (out.misc_info as Array<Record<string, unknown>>).map((m) => ({ konami_id: m.konami_id, tcg_date: m.tcg_date, ocg_date: m.ocg_date, md_rarity: m.md_rarity, treated_as: m.treated_as }));
34 + return CardSchema.parse(out);
35 +}
36 +
37 +/** Set code prefix → language marker (e.g. LOB-EN001 → EN, LOB-FR001 → FR, LOB-001 → unmarked). */
38 +export function languageFromSetCode(code: string): string | null {
39 + const m = code.match(/^[A-Z0-9]+-([A-Z]{2})\d/);
40 + if (!m) return null;
41 + const map: Record<string, string> = { EN: 'English', FR: 'French', DE: 'German', IT: 'Italian', SP: 'Spanish', PT: 'Portuguese', JP: 'Japanese', KR: 'Korean', AE: 'English (Asian-English)', NA: 'English', E: 'English' };
42 + return map[m[1]!] ?? null;
43 +}
44 +
45 +const CARD_PRICE_SOURCES: Array<[key: string, source: string, currency: 'USD' | 'EUR']> = [
46 + ['tcgplayer_price', 'tcgplayer', 'USD'],
47 + ['cardmarket_price', 'cardmarket', 'EUR'],
48 + ['ebay_price', 'ebay', 'USD'],
49 + ['amazon_price', 'amazon', 'USD'],
50 + ['coolstuffinc_price', 'coolstuffinc', 'USD'],
51 +];
52 +
53 +export class YgoProDeckConnector extends BaseConnector {
54 + readonly version = '1.0.0';
55 + readonly parserVersion = '1.0.0';
56 + protected override minIntervalMs = 100;
57 +
58 + async *crawl(ctx: CrawlContext): AsyncIterable<RawRecordInput> {
59 + const misc = ctx.meta.config.misc !== false;
60 + const url = `${API}${misc ? '?misc=yes' : ''}`;
61 + const res = await ctx.fetch(url, { engines: ['api'], timeoutMs: 180_000 });
62 + if (!res.success || !res.json) throw new Error(`ygoprodeck cardinfo failed: ${res.error}`);
63 + const data = (res.json as { data?: Record<string, unknown>[] }).data ?? [];
64 + if (data.length < 1000) ctx.anomaly('empty_page', `only ${data.length} cards returned`);
65 + const fetchedAt = res.fetchedAt;
66 + let count = 0;
67 + for (const c of data) {
68 + let card: YgoCard;
69 + try {
70 + card = trimCard(c);
71 + } catch (err) {
72 + ctx.anomaly('parse_failure', `card ${String(c.id)}: ${err instanceof Error ? err.message : String(err)}`);
73 + continue;
74 + }
75 + yield { url: card.ygoprodeck_url ?? `${API}?id=${card.id}`, externalId: String(card.id), kind: 'catalog_item', engine: 'api', httpStatus: 200, payload: { card }, fetchedAt };
76 + count++;
77 + if (this.reached(ctx, count)) break;
78 + }
79 + await ctx.setCursor({ lastRunAt: fetchedAt.toISOString(), count });
80 + }
81 +
82 + async normalize(raw: RawRecordLike): Promise<NormalizedRecord[]> {
83 + const { card } = z.object({ card: CardSchema }).parse(raw.payload);
84 + const misc = card.misc_info?.[0];
85 + const images = [card.card_images?.[0]?.image_url].filter((x): x is string => Boolean(x));
86 + const sourceUrl = card.ygoprodeck_url ?? raw.url;
87 + const observedAt = raw.fetchedAt;
88 + const out: NormalizedRecord[] = [];
89 + const printings = card.card_sets?.length ? card.card_sets : [];
90 +
91 + const baseIdentifiers: Record<string, string> = { ygo_id: String(card.id) };
92 + if (misc?.konami_id) baseIdentifiers.konami_id = String(misc.konami_id);
93 + const tcgYear = misc?.tcg_date ? Number(misc.tcg_date.slice(0, 4)) : null;
94 +
95 + const buildAttrs = (p: (typeof printings)[number] | null) =>
96 + attrs({
97 + categorySlug: 'yugioh',
98 + franchise: 'Yu-Gi-Oh!',
99 + brand: 'Konami',
100 + set: p?.set_name ?? null,
101 + setCode: p ? p.set_code.split('-')[0]! : null,
102 + name: card.name,
103 + number: p?.set_code ?? null,
104 + year: p ? null : tcgYear, // per-printing release year is not provided by the API; do not guess
105 + variant: null,
106 + language: p ? languageFromSetCode(p.set_code) : null,
107 + rarity: p?.set_rarity ?? null,
108 + identifiers: { ...baseIdentifiers, ...(p ? { set_code: p.set_code } : {}) },
109 + metadata: {
110 + cardType: card.humanReadableCardType ?? card.type ?? null,
111 + frameType: card.frameType ?? null,
112 + race: card.race ?? null,
113 + attribute: card.attribute ?? null,
114 + archetype: card.archetype ?? null,
115 + atk: card.atk ?? null,
116 + def: card.def ?? null,
117 + level: card.level ?? null,
118 + tcgDate: misc?.tcg_date ?? null,
119 + ocgDate: misc?.ocg_date ?? null,
120 + rarityCode: p?.set_rarity_code ?? null,
121 + },
122 + });
123 +
124 + // The same set code can appear with several rarities (e.g. Common + Secret Rare): keep each
125 + // (set_code, rarity) pair once — they are distinct market objects.
126 + const seen = new Set<string>();
127 + const unique = printings.filter((p) => {
128 + const k = `${p.set_code}|${p.set_rarity ?? ''}`;
129 + if (seen.has(k)) return false;
130 + seen.add(k);
131 + return true;
132 + });
133 + const targets = unique.length ? unique : [null];
134 + const codeCounts = new Map<string, number>();
135 + for (const p of unique) codeCounts.set(p.set_code, (codeCounts.get(p.set_code) ?? 0) + 1);
136 + const raritySlug = (r: string | undefined) => (r ?? 'unknown').toLowerCase().replace(/[^a-z0-9]+/g, '-');
137 + for (const [i, p] of targets.entries()) {
138 + const a = buildAttrs(p);
139 + const printingId = p ? `${card.id}:${p.set_code}${(codeCounts.get(p.set_code) ?? 1) > 1 ? `:${raritySlug(p.set_rarity)}` : ''}` : String(card.id);
140 + const title = p ? `${card.name} · ${p.set_name} ${p.set_code}${p.set_rarity ? ` (${p.set_rarity})` : ''}` : makeTitle({ name: card.name });
141 + out.push(
142 + catalogItem({
143 + kind: 'catalog_item',
144 + connectorId: this.meta.id,
145 + sourceId: this.meta.sourceId,
146 + sourceUrl,
147 + externalId: printingId,
148 + rawTitle: title,
149 + description: card.humanReadableCardType ?? null,
150 + imageUrls: images,
151 + attributes: a,
152 + observedAt,
153 + confidence: 0.95,
154 + parserVersion: this.parserVersion,
155 + releaseDate: null,
156 + }),
157 + );
158 + const setPrice = num(p?.set_price);
159 + if (p && setPrice !== null) {
160 + out.push(
161 + priceObservation({
162 + kind: 'price_observation',
163 + connectorId: this.meta.id,
164 + sourceId: this.meta.sourceId,
165 + sourceUrl,
166 + externalId: `${printingId}:set_price`,
167 + rawTitle: title,
168 + imageUrls: images,
169 + attributes: { ...a, metadata: { ...a.metadata, price_scope: 'printing', priceSource: 'ygoprodeck' } },
170 + observedAt,
171 + confidence: 0.7,
172 + parserVersion: this.parserVersion,
173 + priceKind: 'guide_value',
174 + price: setPrice,
175 + currency: 'USD',
176 + observationDate: observedAt,
177 + sampleSize: null,
178 + }),
179 + );
180 + }
181 + // Card-level marketplace prices attach to the first listed printing only.
182 + if (i === 0) {
183 + const cp = card.card_prices?.[0] ?? {};
184 + for (const [key, source, currency] of CARD_PRICE_SOURCES) {
185 + const price = num(cp[key]);
186 + if (price === null) continue;
187 + out.push(
188 + priceObservation({
189 + kind: 'price_observation',
190 + connectorId: this.meta.id,
191 + sourceId: this.meta.sourceId,
192 + sourceUrl,
193 + externalId: `${card.id}:${key}`,
194 + rawTitle: title,
195 + imageUrls: images,
196 + attributes: { ...a, metadata: { ...a.metadata, price_scope: 'card', priceSource: source } },
197 + observedAt,
198 + confidence: 0.6,
199 + parserVersion: this.parserVersion,
200 + priceKind: 'market',
201 + price,
202 + currency,
203 + observationDate: observedAt,
204 + sampleSize: null,
205 + }),
206 + );
207 + }
208 + }
209 + }
210 + return out;
211 + }
212 +}
213 +
214 +export default function createConnector(meta: ConnectorMeta) {
215 + return new YgoProDeckConnector(meta);
216 +}
added connectors/api/ygoprodeck/meta.json +32 −0
@@ -0,0 +1,32 @@
1 +{
2 + "id": "ygoprodeck",
3 + "displayName": "YGOPRODeck (Yu-Gi-Oh!)",
4 + "sourceId": "ygoprodeck",
5 + "sourceName": "YGOPRODeck",
6 + "sourceType": "catalog",
7 + "sourceUrl": "https://ygoprodeck.com",
8 + "module": "api/ygoprodeck",
9 + "enginePriority": ["api"],
10 + "categories": ["yugioh"],
11 + "regions": ["US", "EU"],
12 + "languages": ["en"],
13 + "currency": ["USD", "EUR"],
14 + "supportsListings": false,
15 + "supportsSold": false,
16 + "supportsAuctions": false,
17 + "supportsImages": true,
18 + "supportsCatalog": true,
19 + "supportsPopulation": false,
20 + "supportsLookup": false,
21 + "refreshFrequencyMinutes": 1440,
22 + "priority": "high",
23 + "trustScore": 0.75,
24 + "attributionRequired": true,
25 + "termsUrl": "https://ygoprodeck.com/api-guide/",
26 + "accessNotes": "Public API v7 (https://db.ygoprodeck.com/api/v7/cardinfo.php), no key; rate limit 20 req/s — a full crawl is ONE request (~21 MB, ~14.5k cards / ~44k printings) plus optional misc=yes. The API carries no price timestamp: card_sets[].set_price (USD, per printing) and card_prices (cardmarket EUR / tcgplayer / ebay / amazon / coolstuffinc USD, card-level) are recorded as price_observations dated at fetch time with confidence 0.7 and metadata.price_scope. Images may not be hot-linked in bulk per the API guide (we store URLs, never mirror). Yu-Gi-Oh! © Konami.",
27 + "enabled": true,
28 + "schemaVersion": "1.0",
29 + "config": {
30 + "misc": true
31 + }
32 +}
added connectors/firecrawl/brickeconomy/_smoke.ts +23 −0
@@ -0,0 +1,23 @@
1 +/** Live smoke: pnpm tsx connectors/firecrawl/brickeconomy/_smoke.ts [seedUrl…] (CAPTURE=1 to save fixtures) */
2 +import { createRouter, createCrawlContext, getConnectorMeta } from '@rareindex/connectors';
3 +import { saveFixture } from '@rareindex/connectors/testing';
4 +import { env } from '@rareindex/shared';
5 +import createConnector from './index.js';
6 +
7 +const e = env();
8 +const meta = getConnectorMeta('brickeconomy');
9 +const connector = createConnector(meta);
10 +const router = createRouter({ firecrawlApiKey: e.FIRECRAWL_API_KEY, scrapflyApiKey: e.SCRAPFLY_API_KEY });
11 +const seeds = process.argv.slice(2);
12 +const ctx = createCrawlContext({ router, meta: { ...meta, config: { ...meta.config, setsPerSeed: 3 } }, options: { mode: 'probe', limit: Number(process.env.LIMIT ?? 3), seeds: seeds.length ? seeds : undefined } });
13 +
14 +for await (const raw of connector.crawl(ctx)) {
15 + const recs = await connector.normalize({ ...raw, externalId: raw.externalId ?? null, fetchedAt: raw.fetchedAt ?? new Date() });
16 + console.log(`\n# ${raw.url} — ${recs.length} records`);
17 + for (const r of recs) console.log(JSON.stringify(r).slice(0, 700));
18 + if (process.env.CAPTURE) {
19 + const slug = raw.url.split('/').slice(-2).join('__');
20 + saveFixture('brickeconomy', slug, { 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: ['catalog_item', 'price_observation'] }, note: `captured live from ${raw.url}` });
21 + }
22 +}
23 +console.log('\nengine stats', ctx.engineStats, 'anomalies', ctx.anomalies);
added connectors/firecrawl/brickeconomy/index.test.ts +36 −0
@@ -0,0 +1,36 @@
1 +import { describe, expect, it } from 'vitest';
2 +import { getConnectorMeta } from '@rareindex/connectors';
3 +import { loadFixture, runFixtureSuite } from '@rareindex/connectors/testing';
4 +import createConnector, { parseSetMarkdown } from './index.js';
5 +
6 +const connector = createConnector(getConnectorMeta('brickeconomy'));
7 +
8 +describe('brickeconomy', () => {
9 + runFixtureSuite(connector, it, expect);
10 +
11 + it('maps a retired set to catalog + new/used guide values', async () => {
12 + const fx = loadFixture('brickeconomy', '10179-1__lego-star-wars-ultimate-collectors-millennium-falcon');
13 + const out = await connector.normalize(fx.raw);
14 + const cat = out.find((r) => r.kind === 'catalog_item');
15 + if (cat?.kind !== 'catalog_item') throw new Error();
16 + expect(cat.attributes.categorySlug).toBe('lego_sets');
17 + expect(cat.attributes.number).toBe('10179');
18 + expect(cat.attributes.identifiers.lego_set_number).toBe('10179');
19 + expect(cat.attributes.franchise).toBe('Star Wars');
20 + expect(cat.attributes.year).toBe(2007);
21 + expect(cat.attributes.originalMsrp).toBe(499.99);
22 + expect(cat.attributes.originalMsrpCurrency).toBe('USD');
23 + const sealed = out.find((r) => r.kind === 'price_observation' && r.condition.completeness === 'sealed');
24 + const used = out.find((r) => r.kind === 'price_observation' && r.condition.completeness === 'used_complete' && r.priceKind === 'guide_value');
25 + if (sealed?.kind !== 'price_observation' || used?.kind !== 'price_observation') throw new Error();
26 + expect(sealed.price).toBeGreaterThan(used.price);
27 + expect(sealed.currency).toBe('USD');
28 + });
29 +
30 + it('parses the pricing markdown', () => {
31 + const md = `#### Set Details\n\nSet number\n\n10179-1\n\nName\n\nUltimate Collector's Millennium Falcon\n\nTheme\n\n[Star Wars](https://x)\n\nSubtheme\n\n[Ultimate Collector Series](https://x)\n\nYear\n\n[2007](https://x)\n\nReleased\n\nOctober 1, 2007\n\nPieces\n\n5,195\n\n#### Set Pricing\n\nRetail price\n\n$499.99\n\nNew/Sealed\n\nValue\n\n**$2,946.69**\n\nGrowth\n\n+489.35%\n\nUsed\n\nValue\n\n$1,087.86\n\nRange\n\n$1,005.38 - $1,335.67\n`;
32 + expect(parseSetMarkdown(md)).toMatchObject({ setNumber: '10179-1', name: "Ultimate Collector's Millennium Falcon", theme: 'Star Wars', subtheme: 'Ultimate Collector Series', year: 2007, pieces: 5195, retailPrice: 499.99, newValue: 2946.69, usedValue: 1087.86, usedRangeLow: 1005.38, usedRangeHigh: 1335.67, growthPct: 489.35 });
33 + const available = `#### Set Details\n\nSet number\n\n75192-1\n\nName\n\nMillennium Falcon\n\nYear\n\n[2017](x)\n\n#### Set Pricing\n\nRetail price\n\n$849.99\n\nMarket price\n\n$764.15-10.1%\n\nStill available at retail\n`;
34 + expect(parseSetMarkdown(available)).toMatchObject({ setNumber: '75192-1', retailPrice: 849.99, newValue: 764.15, usedValue: null });
35 + });
36 +});
added connectors/firecrawl/brickeconomy/index.ts +255 −0
@@ -0,0 +1,255 @@
1 +import { z } from 'zod';
2 +import { BaseConnector, type ConnectorMeta, type CrawlContext, type RawRecordInput, type RawRecordLike } from '@rareindex/connectors';
3 +import { parsePrice, parseSourceDate, type AssetAttributes, type NormalizedCatalogItem, type NormalizedPriceObservation, type NormalizedRecord } from '@rareindex/shared';
4 +
5 +/**
6 + * BrickEconomy connector — LEGO set catalog + estimated values (New/Sealed, Used) + retail price.
7 + * Raw payload = the markdown sections of the set page (Set Details, Set Pricing, Set Predictions);
8 + * normalisation re-parses that markdown so parser fixes can be replayed on stored raw records.
9 + */
10 +
11 +const BASE = 'https://www.brickeconomy.com';
12 +const PARSER_VERSION = '1.0.0';
13 +
14 +export const SetPayloadSchema = z.object({
15 + kind: z.literal('set_page'),
16 + url: z.string(),
17 + title: z.string(),
18 + markdown: z.string(),
19 + images: z.array(z.string()),
20 +});
21 +export type SetPayload = z.infer<typeof SetPayloadSchema>;
22 +
23 +/** Extract "#### Section" blocks and return a compact markdown excerpt. */
24 +export function excerptSections(md: string): string {
25 + const wanted = ['Set Details', 'Set Pricing', 'Set Predictions', 'Minifig Details', 'Minifig Pricing'];
26 + const parts: string[] = [];
27 + const re = /^####\s+(.+)$/gm;
28 + const heads: Array<{ name: string; start: number; end: number }> = [];
29 + let m: RegExpExecArray | null;
30 + while ((m = re.exec(md))) heads.push({ name: m[1]!.trim(), start: m.index, end: md.length });
31 + for (let i = 0; i < heads.length; i++) heads[i]!.end = heads[i + 1]?.start ?? md.length;
32 + for (const h of heads) if (wanted.includes(h.name)) parts.push(md.slice(h.start, h.end).trim());
33 + return parts.join('\n\n');
34 +}
35 +
36 +/** Read the value that follows a label line in the markdown ("Label\n\nValue"). */
37 +function field(md: string, label: string): string | null {
38 + const re = new RegExp(`(?:^|\\n)${label.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\s*\\n+([^\\n]+)`, 'i');
39 + const m = md.match(re);
40 + if (!m) return null;
41 + const v = m[1]!.replace(/\[([^\]]+)\]\([^)]*\)/g, '$1').replace(/\*\*/g, '').trim();
42 + return v || null;
43 +}
44 +
45 +export interface ParsedSet {
46 + setNumber: string | null;
47 + name: string | null;
48 + theme: string | null;
49 + subtheme: string | null;
50 + year: number | null;
51 + released: string | null;
52 + retired: string | null;
53 + availability: string | null;
54 + pieces: number | null;
55 + minifigs: number | null;
56 + retailPrice: number | null;
57 + newValue: number | null;
58 + usedValue: number | null;
59 + usedRangeLow: number | null;
60 + usedRangeHigh: number | null;
61 + growthPct: number | null;
62 +}
63 +
64 +export function parseSetMarkdown(md: string): ParsedSet {
65 + const details = md.slice(md.indexOf('#### Set Details'), md.indexOf('#### Set Pricing') > 0 ? md.indexOf('#### Set Pricing') : undefined);
66 + const pricing = md.slice(md.indexOf('#### Set Pricing') >= 0 ? md.indexOf('#### Set Pricing') : md.length);
67 + const num = (s: string | null) => {
68 + if (!s) return null;
69 + const p = parsePrice(s, 'USD');
70 + return p && p.amount > 0 ? p.amount : null;
71 + };
72 + const int = (s: string | null) => {
73 + const m = s?.replace(/,/g, '').match(/\d+/);
74 + return m ? Number(m[0]) : null;
75 + };
76 + const yearTxt = field(details, 'Year');
77 + // New/Sealed value: "New/Sealed\n\nValue\n\n**$2,946.69**" ; still-available sets: "Market price\n\n$764.15-10.1%"
78 + const newBlock = pricing.match(/New\/Sealed\s*\n+Value\s*\n+([^\n]+)/i)?.[1] ?? null;
79 + const marketPrice = pricing.match(/Market price\s*\n+\$?([\d,]+\.?\d*)/i)?.[1] ?? null;
80 + const usedBlock = pricing.match(/Used\s*\n+Value\s*\n+([^\n]+)/i)?.[1] ?? null;
81 + const usedRange = pricing.match(/Used[\s\S]{0,200}?Range\s*\n+\$?([\d,]+\.?\d*)\s*-\s*\$?([\d,]+\.?\d*)/i);
82 + const growth = pricing.match(/(?:^|\n)Growth\s*\n+([+-]?[\d.]+)%/i)?.[1] ?? null;
83 + return {
84 + setNumber: field(details, 'Set number'),
85 + name: field(details, 'Name'),
86 + theme: field(details, 'Theme'),
87 + subtheme: field(details, 'Subtheme'),
88 + year: yearTxt ? int(yearTxt) : null,
89 + released: field(details, 'Released'),
90 + retired: field(details, 'Retired'),
91 + availability: field(details, 'Availability'),
92 + pieces: int(field(details, 'Pieces')),
93 + minifigs: int(field(details, 'Minifigs')),
94 + retailPrice: num(field(pricing, 'Retail price')),
95 + newValue: num(newBlock) ?? (marketPrice ? Number(marketPrice.replace(/,/g, '')) : null),
96 + usedValue: num(usedBlock),
97 + usedRangeLow: usedRange ? Number(usedRange[1]!.replace(/,/g, '')) : null,
98 + usedRangeHigh: usedRange ? Number(usedRange[2]!.replace(/,/g, '')) : null,
99 + growthPct: growth ? Number(growth) : null,
100 + };
101 +}
102 +
103 +export class BrickEconomyConnector extends BaseConnector {
104 + readonly version = '1.0.0';
105 + readonly parserVersion = PARSER_VERSION;
106 + override readonly urlPatterns = [/^https?:\/\/(www\.)?brickeconomy\.com\/set\/[^/]+\/[^/?#]+/i];
107 + protected override minIntervalMs = 1500;
108 +
109 + async *crawl(ctx: CrawlContext): AsyncIterable<RawRecordInput> {
110 + const seeds = ctx.options.seeds?.length ? ctx.options.seeds : ((this.meta.config.seeds as string[] | undefined) ?? []);
111 + const perSeed = Number(this.meta.config.setsPerSeed ?? 60);
112 + const cursor = ctx.options.cursor ?? {};
113 + const done = new Set<string>((cursor.doneSeeds as string[] | undefined) ?? []);
114 + let count = 0;
115 + const seenSets = new Set<string>();
116 + for (const seed of seeds) {
117 + if (done.has(seed) && ctx.options.mode !== 'backfill') continue;
118 + if (ctx.signal?.aborted) return;
119 + const setUrls = seed.includes('/set/') ? [seed] : await this.discover(ctx, seed, perSeed);
120 + if (setUrls.length === 0) ctx.anomaly('empty_seed', seed);
121 + for (const url of setUrls) {
122 + if (this.reached(ctx, count)) return;
123 + if (seenSets.has(url)) continue;
124 + seenSets.add(url);
125 + if (!(await ctx.shouldFetch(url))) continue;
126 + await this.throttle();
127 + const rec = await this.fetchSet(ctx, url);
128 + if (rec) {
129 + count++;
130 + yield rec;
131 + }
132 + }
133 + done.add(seed);
134 + await ctx.setCursor({ doneSeeds: [...done], updatedAt: new Date().toISOString() });
135 + }
136 + await ctx.setCursor({ doneSeeds: [], updatedAt: new Date().toISOString() });
137 + }
138 +
139 + private async discover(ctx: CrawlContext, listUrl: string, max: number): Promise<string[]> {
140 + await this.throttle();
141 + const res = await ctx.fetch(listUrl, { minQuality: 0.2 });
142 + const text = `${res.markdown ?? ''}\n${res.html ?? ''}`;
143 + if (!res.success || !text.trim()) {
144 + ctx.anomaly('discover_failed', `${listUrl}: ${res.error ?? res.httpStatus}`);
145 + return [];
146 + }
147 + const urls = new Set<string>();
148 + for (const m of text.matchAll(/https?:\/\/www\.brickeconomy\.com\/set\/([0-9]+-[0-9]+)\/([a-z0-9-]+)/g)) urls.add(`${BASE}/set/${m[1]}/${m[2]}`);
149 + for (const m of text.matchAll(/href="\/set\/([0-9]+-[0-9]+)\/([a-z0-9-]+)"/g)) urls.add(`${BASE}/set/${m[1]}/${m[2]}`);
150 + return [...urls].slice(0, max);
151 + }
152 +
153 + private async fetchSet(ctx: CrawlContext, url: string): Promise<RawRecordInput | null> {
154 + const res = await ctx.fetch(url, {
155 + expect: ['title', 'price', 'identifiers'],
156 + parse: (r) => {
157 + const md = r.markdown ?? '';
158 + const p = parseSetMarkdown(md);
159 + return { title: p.name, price: p.newValue ?? p.usedValue ?? p.retailPrice, identifiers: p.setNumber ? { set: p.setNumber } : null };
160 + },
161 + });
162 + if (!res.success || !res.markdown) {
163 + ctx.anomaly('set_fetch_failed', `${url}: ${res.error ?? res.httpStatus}`);
164 + return null;
165 + }
166 + const md = res.markdown;
167 + const title = md.match(/^#\s+(.+)$/m)?.[1]?.trim() ?? '';
168 + const images = [...new Set([...md.matchAll(/https:\/\/www\.brickeconomy\.com\/resources\/images\/sets\/[^\s)]+_large\.jpg/g)].map((m) => m[0]))].slice(0, 3);
169 + const excerpt = excerptSections(md);
170 + if (!excerpt.includes('Set number')) {
171 + ctx.anomaly('parse_failure_details', url);
172 + return null;
173 + }
174 + const payload: SetPayload = { kind: 'set_page', url, title, markdown: excerpt, images };
175 + const setNumber = parseSetMarkdown(excerpt).setNumber;
176 + return { url, externalId: setNumber, kind: 'catalog_item', engine: res.engine, httpStatus: res.httpStatus, payload, fetchedAt: res.fetchedAt };
177 + }
178 +
179 + async lookup(url: string, ctx: CrawlContext): Promise<RawRecordInput[]> {
180 + const rec = await this.fetchSet(ctx, url.split('?')[0]!);
181 + return rec ? [rec] : [];
182 + }
183 +
184 + async normalize(raw: RawRecordLike): Promise<NormalizedRecord[]> {
185 + const p = SetPayloadSchema.parse(raw.payload);
186 + const s = parseSetMarkdown(p.markdown);
187 + if (!s.setNumber || !s.name) return [];
188 + const baseNumber = s.setNumber.replace(/-\d+$/, '');
189 + const attributes: AssetAttributes = {
190 + categorySlug: 'lego_sets',
191 + subcategorySlug: null,
192 + franchise: s.theme,
193 + brand: 'LEGO',
194 + series: s.subtheme,
195 + set: s.theme,
196 + setCode: null,
197 + name: s.name,
198 + model: null,
199 + reference: null,
200 + number: baseNumber,
201 + year: s.year,
202 + edition: null,
203 + variant: s.setNumber.endsWith('-1') ? null : `variant ${s.setNumber.split('-')[1]}`,
204 + language: null,
205 + region: null,
206 + country: null,
207 + material: null,
208 + size: null,
209 + color: null,
210 + rarity: null,
211 + productionQuantity: null,
212 + originalMsrp: s.retailPrice,
213 + originalMsrpCurrency: s.retailPrice !== null ? 'USD' : null,
214 + identifiers: { lego_set_number: baseNumber, brickeconomy_set: s.setNumber },
215 + metadata: { pieces: s.pieces, minifigs: s.minifigs, released: s.released, retired: s.retired, availability: s.availability, subtheme: s.subtheme, growth_pct: s.growthPct },
216 + };
217 + const observedAt = raw.fetchedAt;
218 + const base = {
219 + connectorId: this.meta.id,
220 + sourceId: this.meta.sourceId,
221 + sourceUrl: p.url,
222 + externalId: s.setNumber,
223 + rawTitle: p.title || `${baseNumber} LEGO ${s.theme ?? ''} ${s.name}`.trim(),
224 + description: null,
225 + imageUrls: p.images,
226 + attributes,
227 + grade: { grader: null, grade: null, qualifier: null, certificationNumber: null },
228 + observedAt,
229 + confidence: 0.9,
230 + parserVersion: PARSER_VERSION,
231 + };
232 + const out: NormalizedRecord[] = [];
233 + const catalog: NormalizedCatalogItem = { kind: 'catalog_item', ...base, condition: { condition: null, conditionRaw: null, completeness: null }, releaseDate: parseSourceDate(s.released) };
234 + out.push(catalog);
235 + const obsDate = new Date(Date.UTC(observedAt.getUTCFullYear(), observedAt.getUTCMonth(), observedAt.getUTCDate()));
236 + const obs = (price: number, completeness: 'sealed' | 'used_complete', priceKind: NormalizedPriceObservation['priceKind'], raw: string): NormalizedPriceObservation => ({
237 + kind: 'price_observation',
238 + ...base,
239 + condition: { condition: completeness, conditionRaw: raw, completeness },
240 + priceKind,
241 + price,
242 + currency: 'USD',
243 + observationDate: obsDate,
244 + sampleSize: null,
245 + confidence: 0.8,
246 + });
247 + if (s.newValue) out.push(obs(s.newValue, 'sealed', 'guide_value', 'New/Sealed value (BrickEconomy estimate)'));
248 + if (s.usedValue) out.push(obs(s.usedValue, 'used_complete', 'guide_value', 'Used value (BrickEconomy estimate)'));
249 + if (s.usedRangeLow) out.push(obs(s.usedRangeLow, 'used_complete', 'low', 'Used range low (BrickEconomy)'));
250 + if (s.usedRangeHigh) out.push(obs(s.usedRangeHigh, 'used_complete', 'high', 'Used range high (BrickEconomy)'));
251 + return out;
252 + }
253 +}
254 +
255 +export default (meta: ConnectorMeta) => new BrickEconomyConnector(meta);
added connectors/firecrawl/brickeconomy/meta.json +42 −0
@@ -0,0 +1,42 @@
1 +{
2 + "id": "brickeconomy",
3 + "displayName": "BrickEconomy",
4 + "sourceId": "brickeconomy",
5 + "sourceName": "BrickEconomy",
6 + "sourceType": "pricing_guide",
7 + "sourceUrl": "https://www.brickeconomy.com",
8 + "module": "firecrawl/brickeconomy",
9 + "enginePriority": ["firecrawl", "scrapfly"],
10 + "categories": ["lego", "lego_sets"],
11 + "regions": ["US"],
12 + "languages": ["en"],
13 + "currency": ["USD"],
14 + "supportsListings": false,
15 + "supportsSold": false,
16 + "supportsAuctions": false,
17 + "supportsImages": true,
18 + "supportsCatalog": true,
19 + "supportsPopulation": false,
20 + "supportsLookup": true,
21 + "refreshFrequencyMinutes": 4320,
22 + "priority": "medium",
23 + "trustScore": 0.65,
24 + "attributionRequired": true,
25 + "termsUrl": "https://www.brickeconomy.com/legal-terms",
26 + "accessNotes": "Public set pages fetched through Firecrawl (markdown; ~1 credit/page). robots.txt allows all crawlers (explicitly including AI bots). Plain HTTPS returns 403 for non-browser agents, so Firecrawl is the primary engine and Scrapfly the fallback. We capture set facts (number, name, theme, subtheme, year, release/retire dates, pieces, minifigs), retail price, and BrickEconomy's estimated New/Sealed and Used values as guide observations — never as sales. Discovery via theme/top lists in config.seeds.",
27 + "enabled": true,
28 + "schemaVersion": "1.0",
29 + "config": {
30 + "seeds": [
31 + "https://www.brickeconomy.com/sets/top/most-valuable-lego-sets",
32 + "https://www.brickeconomy.com/sets/theme/star-wars/subtheme/ultimate-collector-series",
33 + "https://www.brickeconomy.com/sets/theme/icons",
34 + "https://www.brickeconomy.com/sets/theme/ideas",
35 + "https://www.brickeconomy.com/sets/theme/creator-expert",
36 + "https://www.brickeconomy.com/sets/theme/harry-potter",
37 + "https://www.brickeconomy.com/sets/theme/technic",
38 + "https://www.brickeconomy.com/sets/retired"
39 + ],
40 + "setsPerSeed": 60
41 + }
42 +}
added connectors/firecrawl/phillips-watches/_smoke.ts +22 −0
@@ -0,0 +1,22 @@
1 +/** Live smoke: pnpm tsx connectors/firecrawl/phillips-watches/_smoke.ts [saleNumber…] (CAPTURE=1 to save fixtures) */
2 +import { createRouter, createCrawlContext, getConnectorMeta } from '@rareindex/connectors';
3 +import { saveFixture } from '@rareindex/connectors/testing';
4 +import { env } from '@rareindex/shared';
5 +import createConnector from './index.js';
6 +
7 +const e = env();
8 +const meta = getConnectorMeta('phillips-watches');
9 +const connector = createConnector(meta);
10 +const router = createRouter({ firecrawlApiKey: e.FIRECRAWL_API_KEY, scrapflyApiKey: e.SCRAPFLY_API_KEY });
11 +const seeds = process.argv.slice(2);
12 +const ctx = createCrawlContext({ router, meta, options: { mode: 'probe', limit: Number(process.env.LIMIT ?? 1), seeds: seeds.length ? seeds : undefined } });
13 +
14 +for await (const raw of connector.crawl(ctx)) {
15 + const recs = await connector.normalize({ ...raw, externalId: raw.externalId ?? null, fetchedAt: raw.fetchedAt ?? new Date() });
16 + const p = raw.payload as { saleNumber: string; title: string; endDate: string | null; lotCount: number | null };
17 + const sales = recs.filter((r) => r.kind === 'sale');
18 + console.log(`\n# ${p.saleNumber} ${p.title} (${p.endDate}) — ${p.lotCount} lots → ${recs.length} records (${sales.length} sales)`);
19 + for (const r of recs.slice(0, 3)) console.log(JSON.stringify(r).slice(0, 700));
20 + if (process.env.CAPTURE) saveFixture('phillips-watches', p.saleNumber, { 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'] }, note: `captured live from ${raw.url}` });
21 +}
22 +console.log('\nengine stats', ctx.engineStats, 'anomalies', ctx.anomalies);
added connectors/firecrawl/phillips-watches/index.test.ts +41 −0
@@ -0,0 +1,41 @@
1 +import { describe, expect, it } from 'vitest';
2 +import { getConnectorMeta } from '@rareindex/connectors';
3 +import { listFixtures, loadFixture, runFixtureSuite } from '@rareindex/connectors/testing';
4 +import createConnector, { parseLots, parsePastSales } from './index.js';
5 +
6 +const connector = createConnector(getConnectorMeta('phillips-watches'));
7 +
8 +describe('phillips-watches', () => {
9 + runFixtureSuite(connector, it, expect);
10 +
11 + it('maps a sale page to auction sales with buyer premium included', async () => {
12 + const name = listFixtures('phillips-watches')[0]!;
13 + const out = await connector.normalize(loadFixture('phillips-watches', name).raw);
14 + const sales = out.filter((r) => r.kind === 'sale');
15 + expect(sales.length).toBeGreaterThan(10);
16 + const s = sales[0];
17 + if (s?.kind !== 'sale') throw new Error();
18 + expect(s.saleType).toBe('auction');
19 + expect(s.auctionHouse).toBe('Phillips');
20 + expect(s.buyerPremiumIncluded).toBe(true);
21 + expect(['CHF', 'USD', 'HKD', 'GBP', 'EUR']).toContain(s.currency);
22 + expect(s.attributes.brand).toBeTruthy();
23 + expect(s.lotNumber).toMatch(/^\d+/);
24 + const rolex = sales.find((r) => r.kind === 'sale' && r.attributes.categorySlug === 'rolex');
25 + if (rolex?.kind === 'sale') expect(rolex.attributes.reference).toBeTruthy();
26 + });
27 +
28 + it('parses markdown lot cards', () => {
29 + const md = `## 2 Lots\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080125/214153_001.jpg?fit=cover&width=928)\\\\\nNo Reserve\\\\\n4\\\\\n\\\\\nRolex\\\\\nRef. 116509\\\\\nCosmograph Daytona\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF25,000–50,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF48,260](https://www.phillips.com/detail/rolex/214153)\n\n[![Brought to you by Phillips](https://dist.phillips.com/x.jpg)\\\\\n\\\\\n5\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5320G-001\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF40,000–80,000](https://www.phillips.com/detail/patek-philippe/214809)`;
30 + const lots = parseLots(md);
31 + expect(lots).toHaveLength(2);
32 + expect(lots[0]).toMatchObject({ lotNumber: '4', maker: 'Rolex', reference: '116509', model: 'Cosmograph Daytona', estimateLow: 25000, estimateHigh: 50000, soldFor: 48260, currency: 'CHF', noReserve: true });
33 + expect(lots[1]).toMatchObject({ lotNumber: '5', maker: 'Patek Philippe', reference: '5320G-001', soldFor: null, estimateLow: 40000 });
34 + });
35 +
36 + it('extracts past watch sales from the embedded JSON', () => {
37 + const html = `x{"a":1,"departments":[{"departmentID":12,"departmentName":"Watches"}],"locationName":"GENEVA","startDateTimeOffset":"2025-03-05T12:00:00+01:00","endDateTimeOffset":"2025-03-12T16:00:00+01:00","saleNumber":"CH080125","auctionTitle":"Phillips Watches Online Auction: The Geneva Sessions Spring 2025"}y{"departments":[{"departmentName":"Contemporary"}],"saleNumber":"NY011126","auctionTitle":"Modern & Contemporary Art: Online Auction, New York"}`;
38 + const sales = parsePastSales(html, 'watch');
39 + expect(sales).toEqual([{ saleNumber: 'CH080125', title: 'Phillips Watches Online Auction: The Geneva Sessions Spring 2025', location: 'GENEVA', startDate: '2025-03-05T12:00:00+01:00', endDate: '2025-03-12T16:00:00+01:00' }]);
40 + });
41 +});
added connectors/firecrawl/phillips-watches/index.ts +317 −0
@@ -0,0 +1,317 @@
1 +import { z } from 'zod';
2 +import { BaseConnector, type ConnectorMeta, type CrawlContext, type RawRecordInput, type RawRecordLike } from '@rareindex/connectors';
3 +import { CurrencySchema, parsePrice, type AssetAttributes, type CurrencyCode, type NormalizedAuctionLot, type NormalizedRecord, type NormalizedSale } from '@rareindex/shared';
4 +
5 +/**
6 + * Phillips watch auction results. One raw record per sale (auction) holding the rendered lot list
7 + * markdown; normalisation yields one sale per lot with a realised price (buyer's premium included,
8 + * as published by Phillips) plus an auction_lot record for unsold/withdrawn lots.
9 + */
10 +
11 +const PARSER_VERSION = '1.0.0';
12 +
13 +export const SalePayloadSchema = z.object({
14 + kind: z.literal('auction_results'),
15 + url: z.string(),
16 + saleNumber: z.string(),
17 + title: z.string(),
18 + location: z.string().nullable(),
19 + startDate: z.string().nullable(),
20 + endDate: z.string().nullable(),
21 + lotCount: z.number().nullable(),
22 + markdown: z.string(),
23 +});
24 +export type SalePayload = z.infer<typeof SalePayloadSchema>;
25 +
26 +export interface PastSale {
27 + saleNumber: string;
28 + title: string;
29 + location: string | null;
30 + startDate: string | null;
31 + endDate: string | null;
32 +}
33 +
34 +/** Return the JSON object literal enclosing position `pos` (brace matching, string-aware). */
35 +function enclosingObject(text: string, pos: number): string | null {
36 + let depth = 0;
37 + let j = pos;
38 + while (j > 0) {
39 + const ch = text[j];
40 + if (ch === '}') depth++;
41 + else if (ch === '{') {
42 + if (depth === 0) break;
43 + depth--;
44 + }
45 + j--;
46 + }
47 + if (text[j] !== '{') return null;
48 + depth = 0;
49 + let inStr = false;
50 + for (let k = j; k < text.length; k++) {
51 + const ch = text[k];
52 + if (inStr) {
53 + if (ch === '\\') k++;
54 + else if (ch === '"') inStr = false;
55 + continue;
56 + }
57 + if (ch === '"') inStr = true;
58 + else if (ch === '{') depth++;
59 + else if (ch === '}') {
60 + depth--;
61 + if (depth === 0) return text.slice(j, k + 1);
62 + }
63 + }
64 + return null;
65 +}
66 +
67 +/**
68 + * Extract past sales from the embedded JSON of /auctions/past. Each sale object carries
69 + * saleNumber, auctionTitle, departments[{departmentName}], locationName, start/endDateTimeOffset.
70 + * Filter = department name or title contains `filter` (case-insensitive), e.g. "watch".
71 + */
72 +export function parsePastSales(htmlText: string, filter: string): PastSale[] {
73 + const out = new Map<string, PastSale>();
74 + const re = /"saleNumber":"([A-Z]{2}\d{6})"/g;
75 + let m: RegExpExecArray | null;
76 + const f = filter.toLowerCase();
77 + while ((m = re.exec(htmlText))) {
78 + const sn = m[1]!;
79 + if (out.has(sn)) continue;
80 + const literal = enclosingObject(htmlText, m.index);
81 + if (!literal) continue;
82 + let obj: Record<string, unknown>;
83 + try {
84 + obj = JSON.parse(literal) as Record<string, unknown>;
85 + } catch {
86 + continue;
87 + }
88 + if (obj.saleNumber !== sn) continue;
89 + const title = String(obj.auctionTitle ?? obj.title ?? '');
90 + const departments = Array.isArray(obj.departments) ? (obj.departments as Array<{ departmentName?: string }>).map((d) => String(d.departmentName ?? '')) : [];
91 + const hay = `${title} ${departments.join(' ')}`.toLowerCase();
92 + if (f && !hay.includes(f)) continue;
93 + out.set(sn, {
94 + saleNumber: sn,
95 + title,
96 + location: typeof obj.locationName === 'string' ? obj.locationName : null,
97 + startDate: typeof obj.startDateTimeOffset === 'string' ? obj.startDateTimeOffset : null,
98 + endDate: typeof obj.endDateTimeOffset === 'string' ? obj.endDateTimeOffset : null,
99 + });
100 + }
101 + return [...out.values()];
102 +}
103 +
104 +export interface ParsedLot {
105 + lotNumber: string | null;
106 + maker: string;
107 + reference: string | null;
108 + model: string | null;
109 + estimateLow: number | null;
110 + estimateHigh: number | null;
111 + soldFor: number | null;
112 + currency: CurrencyCode | null;
113 + url: string;
114 + image: string | null;
115 + noReserve: boolean;
116 + lines: string[];
117 +}
118 +
119 +const CUR_RE = /^(HK\$|US\$|S\$|CHF|USD|HKD|GBP|EUR|SGD|JPY|\$|£|€)\s?([\d,]+(?:\.\d+)?)/;
120 +const SYMBOLS: Record<string, CurrencyCode> = { 'HK$': 'HKD', 'US$': 'USD', S$: 'SGD', $: 'USD', '£': 'GBP', '€': 'EUR' };
121 +function money(s: string): { amount: number; currency: CurrencyCode | null } | null {
122 + const m = s.trim().match(CUR_RE);
123 + if (!m) return null;
124 + const sym = m[1]!;
125 + const currency: CurrencyCode | null = SYMBOLS[sym] ?? (CurrencySchema.safeParse(sym).success ? (sym as CurrencyCode) : null);
126 + return { amount: Number(m[2]!.replace(/,/g, '')), currency };
127 +}
128 +
129 +/** Parse markdown lot cards: "[![img](url)\\ \\ 1\\ \\ Rolex\\ Ref. 116509\\ Cosmograph Daytona\\ \\ Estimate\\ \\ CHF25,000–50,000\\ \\ Sold For\\ \\ CHF48,260](https://www.phillips.com/detail/rolex/214153)" */
130 +export function parseLots(md: string): ParsedLot[] {
131 + const out: ParsedLot[] = [];
132 + const re = /\[!\[[^\]]*\]\(([^)]+)\)([\s\S]*?)\]\((https:\/\/www\.phillips\.com\/detail\/[^)]+)\)/g;
133 + let m: RegExpExecArray | null;
134 + while ((m = re.exec(md))) {
135 + const image = m[1]!.split(' ')[0] ?? null;
136 + const body = m[2]!;
137 + const url = m[3]!;
138 + const lines = body
139 + .split(/\\\\\n|\n/)
140 + .map((l) => l.replace(/\\$/g, '').trim())
141 + .filter((l) => l && l !== '\\');
142 + const noReserve = lines.some((l) => /no reserve/i.test(l));
143 + const content = lines.filter((l) => !/no reserve|brought to you/i.test(l));
144 + const lotIdx = content.findIndex((l) => /^\d{1,4}[A-Z]?$/.test(l));
145 + const lotNumber = lotIdx >= 0 ? content[lotIdx]! : null;
146 + const estIdx = content.findIndex((l) => /^Estimate$/i.test(l));
147 + const soldIdx = content.findIndex((l) => /^Sold For$/i.test(l));
148 + const descLines = content.slice(lotIdx + 1, estIdx >= 0 ? estIdx : soldIdx >= 0 ? soldIdx : content.length);
149 + const maker = descLines[0] ?? '';
150 + const refLine = descLines.find((l) => /^Ref\.?\s/i.test(l)) ?? null;
151 + const reference = refLine ? refLine.replace(/^Ref\.?\s*/i, '').trim() : null;
152 + const model = descLines.filter((l) => l !== maker && l !== refLine)[0] ?? null;
153 + let estimateLow: number | null = null;
154 + let estimateHigh: number | null = null;
155 + let currency: CurrencyCode | null = null;
156 + if (estIdx >= 0 && content[estIdx + 1]) {
157 + const est = content[estIdx + 1]!;
158 + const parts = est.split(/[–-]/);
159 + const lo = money(parts[0]!);
160 + if (lo) {
161 + estimateLow = lo.amount;
162 + currency = lo.currency;
163 + const hi = parts[1] ? (money(parts[1]) ?? (Number(parts[1].replace(/[^\d.]/g, '')) || null)) : null;
164 + estimateHigh = typeof hi === 'number' ? hi : (hi?.amount ?? null);
165 + }
166 + }
167 + let soldFor: number | null = null;
168 + if (soldIdx >= 0 && content[soldIdx + 1]) {
169 + const sold = money(content[soldIdx + 1]!);
170 + if (sold) {
171 + soldFor = sold.amount;
172 + currency = sold.currency ?? currency;
173 + }
174 + }
175 + if (!maker) continue;
176 + out.push({ lotNumber, maker, reference, model, estimateLow, estimateHigh, soldFor, currency, url, image, noReserve, lines: content });
177 + }
178 + return out;
179 +}
180 +
181 +const BRAND_CATEGORY: Array<[RegExp, string]> = [
182 + [/^rolex/i, 'rolex'],
183 + [/^patek/i, 'patek_philippe'],
184 + [/^audemars/i, 'audemars_piguet'],
185 + [/^omega/i, 'omega'],
186 +];
187 +
188 +export class PhillipsWatchesConnector extends BaseConnector {
189 + readonly version = '1.0.0';
190 + readonly parserVersion = PARSER_VERSION;
191 + protected override minIntervalMs = 3000;
192 +
193 + async *crawl(ctx: CrawlContext): AsyncIterable<RawRecordInput> {
194 + const pastUrl = String(this.meta.config.pastAuctionsUrl ?? 'https://www.phillips.com/auctions/past');
195 + const perRun = Number(this.meta.config.salesPerRun ?? 6);
196 + const filter = String(this.meta.config.titleFilter ?? 'watch');
197 + const cursor = ctx.options.cursor ?? {};
198 + const done = new Set<string>((cursor.doneSales as string[] | undefined) ?? []);
199 + let sales: PastSale[];
200 + if (ctx.options.seeds?.length) {
201 + sales = ctx.options.seeds.map((s) => ({ saleNumber: s.replace(/.*\/auction\//, '').replace(/\/.*$/, ''), title: s, location: null, startDate: null, endDate: null }));
202 + } else {
203 + const list = await ctx.fetch(pastUrl, { engines: ['api'], responseType: 'text', minQuality: 0, timeoutMs: 60_000 });
204 + if (!list.success || !list.html) {
205 + ctx.anomaly('past_list_failed', list.error ?? String(list.httpStatus));
206 + return;
207 + }
208 + sales = parsePastSales(list.html, filter).filter((s) => !s.endDate || new Date(s.endDate).getTime() < Date.now());
209 + // newest first
210 + sales.sort((a, b) => (b.endDate ?? '').localeCompare(a.endDate ?? ''));
211 + }
212 + let count = 0;
213 + let fetched = 0;
214 + for (const sale of sales) {
215 + if (ctx.signal?.aborted) return;
216 + if (done.has(sale.saleNumber) && ctx.options.mode !== 'backfill') continue;
217 + if (this.reached(ctx, count) || fetched >= perRun) break;
218 + const url = `https://www.phillips.com/auction/${sale.saleNumber}`;
219 + await this.throttle();
220 + fetched++;
221 + const res = await ctx.fetch(url, {
222 + waitForMs: 6000,
223 + timeoutMs: 90_000,
224 + expect: ['title', 'price', 'currency'],
225 + parse: (r) => {
226 + const lots = parseLots(r.markdown ?? '');
227 + const sold = lots.find((l) => l.soldFor);
228 + return { title: lots[0]?.maker ?? null, price: sold?.soldFor ?? null, currency: sold?.currency ?? null };
229 + },
230 + });
231 + if (!res.success || !res.markdown) {
232 + ctx.anomaly('sale_fetch_failed', `${sale.saleNumber}: ${res.error ?? res.httpStatus}`);
233 + continue;
234 + }
235 + const md = res.markdown;
236 + const lotCount = Number(md.match(/##\s+(\d+)\s+Lots/)?.[1]) || null;
237 + const title = sale.title || md.match(/^#\s+(.+)$/m)?.[1] || sale.saleNumber;
238 + const concluded = md.match(/Concluded\s*([A-Z][a-z]{2}\s+\d{1,2}\s+\d{4})/)?.[1] ?? null;
239 + const lotsStart = md.indexOf('## ');
240 + const payload: SalePayload = { kind: 'auction_results', url, saleNumber: sale.saleNumber, title, location: sale.location ?? md.match(/\n(Geneva|New York|Hong Kong|London)\n/)?.[1] ?? null, startDate: sale.startDate, endDate: sale.endDate ?? (concluded ? new Date(`${concluded} UTC`).toISOString() : null), lotCount, markdown: md.slice(lotsStart >= 0 ? lotsStart : 0) };
241 + const parsed = parseLots(payload.markdown);
242 + if (parsed.length === 0) {
243 + ctx.anomaly('parse_failure_lots', sale.saleNumber);
244 + continue;
245 + }
246 + if (lotCount && parsed.length < lotCount * 0.5) ctx.anomaly('partial_lot_list', `${sale.saleNumber}: ${parsed.length}/${lotCount}`);
247 + count++;
248 + done.add(sale.saleNumber);
249 + await ctx.setCursor({ doneSales: [...done].slice(-500), updatedAt: new Date().toISOString() });
250 + yield { url, externalId: sale.saleNumber, kind: 'sale', engine: res.engine, httpStatus: res.httpStatus, payload, fetchedAt: res.fetchedAt };
251 + }
252 + }
253 +
254 + async normalize(raw: RawRecordLike): Promise<NormalizedRecord[]> {
255 + const p = SalePayloadSchema.parse(raw.payload);
256 + const lots = parseLots(p.markdown);
257 + const saleDate = p.endDate ? new Date(p.endDate) : null;
258 + const out: NormalizedRecord[] = [];
259 + for (const lot of lots) {
260 + const categorySlug = BRAND_CATEGORY.find(([re]) => re.test(lot.maker))?.[1] ?? 'other_watches';
261 + const currency = lot.currency;
262 + const attributes: AssetAttributes = {
263 + categorySlug,
264 + subcategorySlug: null,
265 + franchise: null,
266 + brand: lot.maker,
267 + series: null,
268 + set: null,
269 + setCode: null,
270 + name: `${lot.maker} ${lot.model ?? lot.reference ?? ''}`.trim(),
271 + model: lot.model,
272 + reference: lot.reference,
273 + number: null,
274 + year: null,
275 + edition: null,
276 + variant: null,
277 + language: null,
278 + region: null,
279 + country: null,
280 + material: null,
281 + size: null,
282 + color: null,
283 + rarity: null,
284 + productionQuantity: null,
285 + originalMsrp: null,
286 + originalMsrpCurrency: null,
287 + identifiers: { ...(lot.reference ? { reference: lot.reference } : {}), phillips_lot: lot.url.replace(/.*\/detail\//, '') },
288 + metadata: { sale_number: p.saleNumber, sale_title: p.title, estimate_low: lot.estimateLow, estimate_high: lot.estimateHigh, no_reserve: lot.noReserve },
289 + };
290 + const base = {
291 + connectorId: this.meta.id,
292 + sourceId: this.meta.sourceId,
293 + sourceUrl: lot.url,
294 + externalId: `${p.saleNumber}:${lot.lotNumber ?? lot.url}`,
295 + rawTitle: `${lot.maker}${lot.reference ? ` Ref. ${lot.reference}` : ''}${lot.model ? ` ${lot.model}` : ''}`,
296 + description: null,
297 + imageUrls: lot.image ? [lot.image] : [],
298 + attributes,
299 + grade: { grader: null, grade: null, qualifier: null, certificationNumber: null },
300 + condition: { condition: null, conditionRaw: null, completeness: null },
301 + observedAt: raw.fetchedAt,
302 + confidence: 0.92,
303 + parserVersion: PARSER_VERSION,
304 + };
305 + if (lot.soldFor && currency && saleDate) {
306 + const sale: NormalizedSale = { kind: 'sale', ...base, saleType: 'auction', saleDate, price: lot.soldFor, currency, buyerPremiumIncluded: true, quantity: 1, isBundle: false, location: p.location, auctionHouse: 'Phillips', lotNumber: lot.lotNumber };
307 + out.push(sale);
308 + } else {
309 + const lotRec: NormalizedAuctionLot = { 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, status: saleDate && saleDate.getTime() < Date.now() ? 'ended' : 'unknown', location: p.location };
310 + out.push(lotRec);
311 + }
312 + }
313 + return out;
314 + }
315 +}
316 +
317 +export default (meta: ConnectorMeta) => new PhillipsWatchesConnector(meta);
added connectors/firecrawl/phillips-watches/meta.json +34 −0
@@ -0,0 +1,34 @@
1 +{
2 + "id": "phillips-watches",
3 + "displayName": "Phillips Watches (auction results)",
4 + "sourceId": "phillips",
5 + "sourceName": "Phillips",
6 + "sourceType": "auction_house",
7 + "sourceUrl": "https://www.phillips.com",
8 + "module": "firecrawl/phillips-watches",
9 + "enginePriority": ["firecrawl", "scrapfly"],
10 + "categories": ["watches", "rolex", "patek_philippe", "audemars_piguet", "omega", "other_watches"],
11 + "regions": ["CH", "US", "HK", "GB"],
12 + "languages": ["en"],
13 + "currency": ["CHF", "USD", "HKD", "GBP", "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": "high",
23 + "trustScore": 0.95,
24 + "attributionRequired": true,
25 + "termsUrl": "https://www.phillips.com/about/terms",
26 + "accessNotes": "Past watch sales are discovered from the public /auctions/past page (plain HTTPS; embedded JSON with saleNumber, title, end date, location). Each sale page is rendered through Firecrawl (JS wait ~6 s, 1 credit) to read the public lot list: lot number, maker, reference, model, estimate and 'Sold For' (Phillips publishes prices realised including buyer's premium). robots.txt disallows only /search and filter paths. No login, no bidder data. Large sales may lazy-load beyond the first ~70 lots — coverage is recorded per run.",
27 + "enabled": true,
28 + "schemaVersion": "1.0",
29 + "config": {
30 + "pastAuctionsUrl": "https://www.phillips.com/auctions/past",
31 + "salesPerRun": 6,
32 + "titleFilter": "watch"
33 + }
34 +}
modified connectors/registry.json +596 −1
@@ -1,4 +1,599 @@
1 1 {
2 2 "version": "1.0",
3 − "connectors": []
3 + "connectors": [
4 + {
5 + "id": "brickeconomy",
6 + "displayName": "BrickEconomy",
7 + "sourceId": "brickeconomy",
8 + "sourceName": "BrickEconomy",
9 + "sourceType": "pricing_guide",
10 + "sourceUrl": "https://www.brickeconomy.com",
11 + "module": "firecrawl/brickeconomy",
12 + "enginePriority": [
13 + "firecrawl",
14 + "scrapfly"
15 + ],
16 + "categories": [
17 + "lego",
18 + "lego_sets"
19 + ],
20 + "regions": [
21 + "US"
22 + ],
23 + "languages": [
24 + "en"
25 + ],
26 + "currency": [
27 + "USD"
28 + ],
29 + "supportsListings": false,
30 + "supportsSold": false,
31 + "supportsAuctions": false,
32 + "supportsImages": true,
33 + "supportsCatalog": true,
34 + "supportsPopulation": false,
35 + "supportsLookup": true,
36 + "refreshFrequencyMinutes": 4320,
37 + "priority": "medium",
38 + "trustScore": 0.65,
39 + "attributionRequired": true,
40 + "termsUrl": "https://www.brickeconomy.com/legal-terms",
41 + "accessNotes": "Public set pages fetched through Firecrawl (markdown; ~1 credit/page). robots.txt allows all crawlers (explicitly including AI bots). Plain HTTPS returns 403 for non-browser agents, so Firecrawl is the primary engine and Scrapfly the fallback. We capture set facts (number, name, theme, subtheme, year, release/retire dates, pieces, minifigs), retail price, and BrickEconomy's estimated New/Sealed and Used values as guide observations — never as sales. Discovery via theme/top lists in config.seeds.",
42 + "enabled": true,
43 + "schemaVersion": "1.0",
44 + "config": {
45 + "seeds": [
46 + "https://www.brickeconomy.com/sets/top/most-valuable-lego-sets",
47 + "https://www.brickeconomy.com/sets/theme/star-wars/subtheme/ultimate-collector-series",
48 + "https://www.brickeconomy.com/sets/theme/icons",
49 + "https://www.brickeconomy.com/sets/theme/ideas",
50 + "https://www.brickeconomy.com/sets/theme/creator-expert",
51 + "https://www.brickeconomy.com/sets/theme/harry-potter",
52 + "https://www.brickeconomy.com/sets/theme/technic",
53 + "https://www.brickeconomy.com/sets/retired"
54 + ],
55 + "setsPerSeed": 60
56 + }
57 + },
58 + {
59 + "id": "chrono24",
60 + "displayName": "Chrono24",
61 + "sourceId": "chrono24",
62 + "sourceName": "Chrono24",
63 + "sourceType": "marketplace",
64 + "sourceUrl": "https://www.chrono24.com",
65 + "module": "scrapfly/chrono24",
66 + "enginePriority": [
67 + "scrapfly",
68 + "firecrawl"
69 + ],
70 + "categories": [
71 + "watches",
72 + "rolex",
73 + "patek_philippe",
74 + "audemars_piguet",
75 + "omega",
76 + "other_watches"
77 + ],
78 + "regions": [
79 + "global"
80 + ],
81 + "languages": [
82 + "en"
83 + ],
84 + "currency": [
85 + "USD"
86 + ],
87 + "supportsListings": true,
88 + "supportsSold": false,
89 + "supportsAuctions": false,
90 + "supportsImages": true,
91 + "supportsCatalog": false,
92 + "supportsPopulation": false,
93 + "supportsLookup": false,
94 + "refreshFrequencyMinutes": 720,
95 + "priority": "high",
96 + "trustScore": 0.7,
97 + "attributionRequired": true,
98 + "termsUrl": "https://www.chrono24.com/info/terms-of-use.htm",
99 + "accessNotes": "Public model listing pages (e.g. /rolex/daytona--mod2.htm) fetched through Scrapfly without JS rendering (Cloudflare shield → ~40 credits/page); robots.txt allows these paths (Crawl-delay 0.1). Each page embeds a schema.org ItemList of Offers (name, price in the site currency, image, listing URL) — we store asking prices as listings only, never as sales. No login, no per-listing detail fetch (seller details stay on Chrono24). Model pages are configured in config.seeds; pagination via --modN-P.htm.",
100 + "enabled": true,
101 + "schemaVersion": "1.0",
102 + "config": {
103 + "seeds": [
104 + "/rolex/daytona--mod2.htm",
105 + "/rolex/submariner--mod1.htm",
106 + "/rolex/gmt-master-ii--mod3.htm",
107 + "/rolex/datejust--mod4.htm",
108 + "/rolex/day-date--mod6.htm",
109 + "/rolex/explorer--mod8.htm",
110 + "/patekphilippe/nautilus--mod15.htm",
111 + "/patekphilippe/aquanaut--mod16.htm",
112 + "/patekphilippe/calatrava--mod14.htm",
113 + "/audemarspiguet/royal-oak--mod20.htm",
114 + "/audemarspiguet/royal-oak-offshore--mod21.htm",
115 + "/omega/speedmaster--mod24.htm",
116 + "/omega/seamaster--mod22.htm",
117 + "/cartier/santos--mod38.htm",
118 + "/tudor/black-bay--mod1128.htm",
119 + "/vacheronconstantin/overseas--mod1024.htm"
120 + ],
121 + "pagesPerSeed": 2,
122 + "pageSize": 120
123 + }
124 + },
125 + {
126 + "id": "comicconnect",
127 + "displayName": "ComicConnect (sold archive)",
128 + "sourceId": "comicconnect",
129 + "sourceName": "ComicConnect",
130 + "sourceType": "auction_house",
131 + "sourceUrl": "https://www.comicconnect.com",
132 + "module": "api/comicconnect",
133 + "enginePriority": [
134 + "api",
135 + "firecrawl",
136 + "scrapfly"
137 + ],
138 + "categories": [
139 + "comics",
140 + "marvel_comics",
141 + "dc_comics",
142 + "independent_comics"
143 + ],
144 + "regions": [
145 + "US"
146 + ],
147 + "languages": [
148 + "en"
149 + ],
150 + "currency": [
151 + "USD"
152 + ],
153 + "supportsListings": false,
154 + "supportsSold": true,
155 + "supportsAuctions": true,
156 + "supportsImages": true,
157 + "supportsCatalog": false,
158 + "supportsPopulation": false,
159 + "supportsLookup": false,
160 + "refreshFrequencyMinutes": 720,
161 + "priority": "high",
162 + "trustScore": 0.9,
163 + "attributionRequired": true,
164 + "termsUrl": "https://www.comicconnect.com/terms",
165 + "accessNotes": "Public sold archive (/browse/comics/?filtertype=Sold, ~479k results, 20 per page) fetched over plain HTTPS with the RareIndex user agent. robots.txt: Allow / with Content-Signal search=yes, ai-train=no (we only index sale facts and link back). Each card exposes title, publisher + grade, sold date/time, 'Sold For' price and whether a 15% buyer's premium applies (bp attribute) — we store hammer price with buyer_premium_included=false and keep the premium note in metadata. No login, no bidder data. 1.5 s politeness delay.",
166 + "enabled": true,
167 + "schemaVersion": "1.0",
168 + "config": {
169 + "browsePath": "/browse/comics/",
170 + "pagesPerRun": 25,
171 + "sortType": "ended_desc"
172 + }
173 + },
174 + {
175 + "id": "goldin",
176 + "displayName": "Goldin (sold auction results)",
177 + "sourceId": "goldin",
178 + "sourceName": "Goldin",
179 + "sourceType": "auction_house",
180 + "sourceUrl": "https://goldin.co",
181 + "module": "scrapfly/goldin",
182 + "enginePriority": [
183 + "scrapfly"
184 + ],
185 + "categories": [
186 + "pokemon",
187 + "magic_the_gathering",
188 + "yugioh",
189 + "one_piece_card_game",
190 + "basketball_cards",
191 + "baseball_cards",
192 + "football_cards",
193 + "hockey_cards",
194 + "soccer_cards",
195 + "f1_cards",
196 + "sports_memorabilia",
197 + "marvel_comics",
198 + "nintendo_games",
199 + "non_sport_cards"
200 + ],
201 + "regions": [
202 + "US"
203 + ],
204 + "languages": [
205 + "en"
206 + ],
207 + "currency": [
208 + "USD"
209 + ],
210 + "supportsListings": false,
211 + "supportsSold": true,
212 + "supportsAuctions": false,
213 + "supportsImages": true,
214 + "supportsCatalog": false,
215 + "supportsPopulation": false,
216 + "supportsLookup": true,
217 + "refreshFrequencyMinutes": 360,
218 + "priority": "high",
219 + "trustScore": 0.9,
220 + "attributionRequired": true,
221 + "termsUrl": "https://goldin.co/useragreement",
222 + "accessNotes": "Public 'Sold Items' result grids (https://goldin.co/buy/sc/<subcategory>?show_only=Sold%20Items&sort=Most_Recent_Bids&number_of_lots=240) rendered through Scrapfly (asp + JS rendering, ~6 credits per page of 240 sold lots). goldin.co/robots.txt allows /buy/ and /item/ and disallows /api/; we never call goldin.co/api ourselves — the lot data is read from the XHR (lots_v2 on their CloudFront search endpoint) that the public page performs during rendering, exactly what a browser does. Plain HTTP and Firecrawl return the empty SPA shell / an Akamai challenge. Prices: the grid shows the final price INCLUDING buyer's premium (current_price × (1 + buyer_premium%)); we store that as the sale price with buyerPremiumIncluded=true and keep the hammer price and BP % in metadata. Sale date = lot end_timestamp; lots whose end_timestamp is in the future (placeholder private-sale dates like 2235-06-04) are skipped and counted as anomalies. Cert numbers appear only in item-page descriptions (lookup).",
223 + "enabled": true,
224 + "schemaVersion": "1.0",
225 + "config": {
226 + "seeds": [
227 + {
228 + "path": "/buy/sc/pokemon",
229 + "categorySlug": "pokemon"
230 + },
231 + {
232 + "path": "/buy/sc/Magic_The_Gathering",
233 + "categorySlug": "magic_the_gathering"
234 + },
235 + {
236 + "path": "/buy/sc/Yu-Gi-Oh!",
237 + "categorySlug": "yugioh"
238 + },
239 + {
240 + "path": "/buy/sc/One_Piece",
241 + "categorySlug": "one_piece_card_game"
242 + },
243 + {
244 + "path": "/buy/sc/Basketball",
245 + "categorySlug": "basketball_cards",
246 + "sport": "basketball"
247 + },
248 + {
249 + "path": "/buy/sc/Baseball",
250 + "categorySlug": "baseball_cards",
251 + "sport": "baseball"
252 + },
253 + {
254 + "path": "/buy/sc/Football",
255 + "categorySlug": "football_cards",
256 + "sport": "football"
257 + },
258 + {
259 + "path": "/buy/sc/Hockey",
260 + "categorySlug": "hockey_cards",
261 + "sport": "hockey"
262 + },
263 + {
264 + "path": "/buy/sc/Soccer",
265 + "categorySlug": "soccer_cards",
266 + "sport": "soccer"
267 + },
268 + {
269 + "path": "/buy/sc/Racing",
270 + "categorySlug": "f1_cards",
271 + "sport": "racing"
272 + },
273 + {
274 + "path": "/buy/sc/Marvel",
275 + "categorySlug": "marvel_comics"
276 + },
277 + {
278 + "path": "/buy/sc/Nintendo",
279 + "categorySlug": "nintendo_games"
280 + }
281 + ],
282 + "pageSize": 240,
283 + "maxPagesPerSeed": 40,
284 + "renderingWaitMs": 6000
285 + }
286 + },
287 + {
288 + "id": "phillips-watches",
289 + "displayName": "Phillips Watches (auction results)",
290 + "sourceId": "phillips",
291 + "sourceName": "Phillips",
292 + "sourceType": "auction_house",
293 + "sourceUrl": "https://www.phillips.com",
294 + "module": "firecrawl/phillips-watches",
295 + "enginePriority": [
296 + "firecrawl",
297 + "scrapfly"
298 + ],
299 + "categories": [
300 + "watches",
301 + "rolex",
302 + "patek_philippe",
303 + "audemars_piguet",
304 + "omega",
305 + "other_watches"
306 + ],
307 + "regions": [
308 + "CH",
309 + "US",
310 + "HK",
311 + "GB"
312 + ],
313 + "languages": [
314 + "en"
315 + ],
316 + "currency": [
317 + "CHF",
318 + "USD",
319 + "HKD",
320 + "GBP",
321 + "EUR"
322 + ],
323 + "supportsListings": false,
324 + "supportsSold": true,
325 + "supportsAuctions": true,
326 + "supportsImages": true,
327 + "supportsCatalog": false,
328 + "supportsPopulation": false,
329 + "supportsLookup": false,
330 + "refreshFrequencyMinutes": 10080,
331 + "priority": "high",
332 + "trustScore": 0.95,
333 + "attributionRequired": true,
334 + "termsUrl": "https://www.phillips.com/about/terms",
335 + "accessNotes": "Past watch sales are discovered from the public /auctions/past page (plain HTTPS; embedded JSON with saleNumber, title, end date, location). Each sale page is rendered through Firecrawl (JS wait ~6 s, 1 credit) to read the public lot list: lot number, maker, reference, model, estimate and 'Sold For' (Phillips publishes prices realised including buyer's premium). robots.txt disallows only /search and filter paths. No login, no bidder data. Large sales may lazy-load beyond the first ~70 lots — coverage is recorded per run.",
336 + "enabled": true,
337 + "schemaVersion": "1.0",
338 + "config": {
339 + "pastAuctionsUrl": "https://www.phillips.com/auctions/past",
340 + "salesPerRun": 6,
341 + "titleFilter": "watch"
342 + }
343 + },
344 + {
345 + "id": "pokemontcg",
346 + "displayName": "Pokémon TCG API (pokemontcg.io)",
347 + "sourceId": "pokemontcg",
348 + "sourceName": "Pokémon TCG API",
349 + "sourceType": "catalog",
350 + "sourceUrl": "https://pokemontcg.io",
351 + "module": "api/pokemontcg",
352 + "enginePriority": [
353 + "api",
354 + "feed"
355 + ],
356 + "categories": [
357 + "pokemon"
358 + ],
359 + "regions": [
360 + "US",
361 + "EU"
362 + ],
363 + "languages": [
364 + "en"
365 + ],
366 + "currency": [
367 + "USD",
368 + "EUR"
369 + ],
370 + "supportsListings": false,
371 + "supportsSold": false,
372 + "supportsAuctions": false,
373 + "supportsImages": true,
374 + "supportsCatalog": true,
375 + "supportsPopulation": false,
376 + "supportsLookup": false,
377 + "refreshFrequencyMinutes": 1440,
378 + "priority": "high",
379 + "trustScore": 0.8,
380 + "attributionRequired": true,
381 + "termsUrl": "https://docs.pokemontcg.io/",
382 + "accessNotes": "Public REST API v2 (https://api.pokemontcg.io/v2). Optional X-Api-Key (POKEMONTCG_API_KEY) raises limits (20k/day) — without a key ~1k/day and 30/min. Crawl = sets, then cards per set (pageSize 250, cursor {setIndex,page}). The API is intermittently unavailable (5xx); the connector retries with backoff and falls back to the maintainers' public GitHub mirror (PokemonTCG/pokemon-tcg-data, same card schema, no prices) for the catalog when the API keeps failing. Prices are TCGplayer (USD, per printing variant: normal/holofoil/reverseHolofoil/1stEdition…) and Cardmarket (EUR) daily aggregates with their own updatedAt → stored as price_observations, never as sales. Pokémon © Nintendo/Creatures/GAME FREAK; data attributed to pokemontcg.io.",
383 + "enabled": true,
384 + "schemaVersion": "1.0",
385 + "config": {
386 + "pageSize": 250,
387 + "requestIntervalMs": 2100,
388 + "mirrorBase": "https://raw.githubusercontent.com/PokemonTCG/pokemon-tcg-data/master"
389 + }
390 + },
391 + {
392 + "id": "pricecharting",
393 + "displayName": "PriceCharting",
394 + "sourceId": "pricecharting",
395 + "sourceName": "PriceCharting",
396 + "sourceType": "pricing_guide",
397 + "sourceUrl": "https://www.pricecharting.com",
398 + "module": "api/pricecharting",
399 + "enginePriority": [
400 + "api",
401 + "firecrawl",
402 + "scrapfly"
403 + ],
404 + "categories": [
405 + "video_games",
406 + "nintendo_games",
407 + "sega_games",
408 + "playstation_games",
409 + "xbox_games",
410 + "atari_retro_games",
411 + "pc_games",
412 + "lego_sets",
413 + "funko",
414 + "comics",
415 + "marvel_comics",
416 + "dc_comics",
417 + "independent_comics"
418 + ],
419 + "regions": [
420 + "US"
421 + ],
422 + "languages": [
423 + "en"
424 + ],
425 + "currency": [
426 + "USD"
427 + ],
428 + "supportsListings": false,
429 + "supportsSold": true,
430 + "supportsAuctions": false,
431 + "supportsImages": true,
432 + "supportsCatalog": true,
433 + "supportsPopulation": false,
434 + "supportsLookup": true,
435 + "refreshFrequencyMinutes": 1440,
436 + "priority": "high",
437 + "trustScore": 0.7,
438 + "attributionRequired": true,
439 + "termsUrl": "https://www.pricecharting.com/page/terms-of-service",
440 + "accessNotes": "Public product pages fetched over plain HTTPS with the RareIndex user agent (robots.txt only disallows /buy, /publish-offer, /stripe-connect). Each product page exposes PriceCharting guide values per condition and a table of recently completed eBay sales (date, title, price, eBay item id) — we store those as sales with the PriceCharting page as source URL. No account, no API key, no photos (TimeWarp is paid and not used). Console listings paginate through the public ?format=json cursor endpoint. ~1 request per product, 1.5 s politeness delay.",
441 + "enabled": true,
442 + "schemaVersion": "1.0",
443 + "config": {
444 + "seeds": [
445 + "nintendo-64",
446 + "nes",
447 + "super-nintendo",
448 + "gamecube",
449 + "gameboy",
450 + "gameboy-color",
451 + "gameboy-advance",
452 + "nintendo-ds",
453 + "nintendo-switch",
454 + "wii",
455 + "playstation",
456 + "playstation-2",
457 + "playstation-3",
458 + "playstation-4",
459 + "playstation-5",
460 + "psp",
461 + "xbox",
462 + "xbox-360",
463 + "xbox-one",
464 + "xbox-series-x",
465 + "sega-genesis",
466 + "sega-dreamcast",
467 + "sega-saturn",
468 + "sega-master-system",
469 + "sega-game-gear",
470 + "atari-2600",
471 + "neo-geo-aes",
472 + "turbografx-16",
473 + "pc-games",
474 + "lego-star-wars",
475 + "lego-creator",
476 + "lego-technic",
477 + "lego-icons",
478 + "lego-harry-potter",
479 + "lego-ideas",
480 + "lego-marvel-super-heroes",
481 + "lego-ninjago",
482 + "lego-castle",
483 + "lego-space",
484 + "lego-modular-buildings",
485 + "funko-pop-marvel",
486 + "funko-pop-star-wars",
487 + "funko-pop-disney",
488 + "funko-pop-animation",
489 + "funko-pop-television",
490 + "funko-pop-movies",
491 + "funko-pop-games",
492 + "funko-pop-rocks",
493 + "funko-pop-comics",
494 + "comic-books-amazing-spider-man",
495 + "comic-books-batman",
496 + "comic-books-action-comics",
497 + "comic-books-detective-comics",
498 + "comic-books-x-men",
499 + "comic-books-incredible-hulk",
500 + "comic-books-fantastic-four",
501 + "comic-books-avengers",
502 + "comic-books-spawn",
503 + "comic-books-walking-dead"
504 + ],
505 + "productsPerConsole": 200,
506 + "sort": "popularity"
507 + }
508 + },
509 + {
510 + "id": "scryfall",
511 + "displayName": "Scryfall (Magic: The Gathering)",
512 + "sourceId": "scryfall",
513 + "sourceName": "Scryfall",
514 + "sourceType": "catalog",
515 + "sourceUrl": "https://scryfall.com",
516 + "module": "api/scryfall",
517 + "enginePriority": [
518 + "api"
519 + ],
520 + "categories": [
521 + "magic_the_gathering"
522 + ],
523 + "regions": [
524 + "US",
525 + "EU"
526 + ],
527 + "languages": [
528 + "en"
529 + ],
530 + "currency": [
531 + "USD",
532 + "EUR"
533 + ],
534 + "supportsListings": false,
535 + "supportsSold": false,
536 + "supportsAuctions": false,
537 + "supportsImages": true,
538 + "supportsCatalog": true,
539 + "supportsPopulation": false,
540 + "supportsLookup": true,
541 + "refreshFrequencyMinutes": 1440,
542 + "priority": "high",
543 + "trustScore": 0.85,
544 + "attributionRequired": true,
545 + "termsUrl": "https://scryfall.com/docs/api",
546 + "accessNotes": "Official public API, no key. Bulk 'default_cards' JSONL (gzip, ~78 MB, refreshed daily) is streamed for the full catalog; single-card lookups use /cards/<set>/<number>. Scryfall asks for ≤10 req/s (we pace 100 ms), an identifying User-Agent and Accept headers. Prices (usd/usd_foil/usd_etched/eur/eur_foil) are Scryfall's daily market aggregates from TCGplayer/Cardmarket → stored as price_observations, never as sales. Card data © Wizards of the Coast; Scryfall requests attribution and no implication of endorsement.",
547 + "enabled": true,
548 + "schemaVersion": "1.0",
549 + "config": {
550 + "bulkType": "default_cards",
551 + "requestIntervalMs": 100
552 + }
553 + },
554 + {
555 + "id": "ygoprodeck",
556 + "displayName": "YGOPRODeck (Yu-Gi-Oh!)",
557 + "sourceId": "ygoprodeck",
558 + "sourceName": "YGOPRODeck",
559 + "sourceType": "catalog",
560 + "sourceUrl": "https://ygoprodeck.com",
561 + "module": "api/ygoprodeck",
562 + "enginePriority": [
563 + "api"
564 + ],
565 + "categories": [
566 + "yugioh"
567 + ],
568 + "regions": [
569 + "US",
570 + "EU"
571 + ],
572 + "languages": [
573 + "en"
574 + ],
575 + "currency": [
576 + "USD",
577 + "EUR"
578 + ],
579 + "supportsListings": false,
580 + "supportsSold": false,
581 + "supportsAuctions": false,
582 + "supportsImages": true,
583 + "supportsCatalog": true,
584 + "supportsPopulation": false,
585 + "supportsLookup": false,
586 + "refreshFrequencyMinutes": 1440,
587 + "priority": "high",
588 + "trustScore": 0.75,
589 + "attributionRequired": true,
590 + "termsUrl": "https://ygoprodeck.com/api-guide/",
591 + "accessNotes": "Public API v7 (https://db.ygoprodeck.com/api/v7/cardinfo.php), no key; rate limit 20 req/s — a full crawl is ONE request (~21 MB, ~14.5k cards / ~44k printings) plus optional misc=yes. The API carries no price timestamp: card_sets[].set_price (USD, per printing) and card_prices (cardmarket EUR / tcgplayer / ebay / amazon / coolstuffinc USD, card-level) are recorded as price_observations dated at fetch time with confidence 0.7 and metadata.price_scope. Images may not be hot-linked in bulk per the API guide (we store URLs, never mirror). Yu-Gi-Oh! © Konami.",
592 + "enabled": true,
593 + "schemaVersion": "1.0",
594 + "config": {
595 + "misc": true
596 + }
597 + }
598 + ]
4 599 }
added connectors/scrapfly/chrono24/_smoke.ts +24 −0
@@ -0,0 +1,24 @@
1 +/** Live smoke: pnpm tsx connectors/scrapfly/chrono24/_smoke.ts [/brand/model--modN.htm …] (CAPTURE=1 to save fixtures). ~40 Scrapfly credits per page. */
2 +import { createRouter, createCrawlContext, getConnectorMeta } from '@rareindex/connectors';
3 +import { saveFixture } from '@rareindex/connectors/testing';
4 +import { env } from '@rareindex/shared';
5 +import createConnector from './index.js';
6 +
7 +const e = env();
8 +const meta = getConnectorMeta('chrono24');
9 +const connector = createConnector(meta);
10 +const router = createRouter({ firecrawlApiKey: e.FIRECRAWL_API_KEY, scrapflyApiKey: e.SCRAPFLY_API_KEY });
11 +const seeds = process.argv.slice(2);
12 +const ctx = createCrawlContext({ router, meta: { ...meta, config: { ...meta.config, pagesPerSeed: 1 } }, options: { mode: 'probe', limit: Number(process.env.LIMIT ?? 1), seeds: seeds.length ? seeds : undefined } });
13 +
14 +for await (const raw of connector.crawl(ctx)) {
15 + const recs = await connector.normalize({ ...raw, externalId: raw.externalId ?? null, fetchedAt: raw.fetchedAt ?? new Date() });
16 + const p = raw.payload as { brand: string; model: string; offers: unknown[]; totalListings: number | null };
17 + console.log(`\n# ${raw.url} — ${p.brand} ${p.model}: ${p.offers.length} offers on page, ${p.totalListings} total → ${recs.length} listings`);
18 + for (const r of recs.slice(0, 3)) console.log(JSON.stringify(r).slice(0, 700));
19 + if (process.env.CAPTURE) {
20 + const slug = raw.url.split('/').slice(-2).join('__').replace(/\.htm$/, '');
21 + saveFixture('chrono24', slug, { 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: ['listing'] }, note: `captured live from ${raw.url}` });
22 + }
23 +}
24 +console.log('\nengine stats', ctx.engineStats, 'anomalies', ctx.anomalies);
added connectors/scrapfly/chrono24/index.test.ts +47 −0
@@ -0,0 +1,47 @@
1 +import { describe, expect, it } from 'vitest';
2 +import { getConnectorMeta } from '@rareindex/connectors';
3 +import { loadFixture, runFixtureSuite } from '@rareindex/connectors/testing';
4 +import createConnector, { parseModelPage } from './index.js';
5 +
6 +const connector = createConnector(getConnectorMeta('chrono24'));
7 +
8 +describe('chrono24', () => {
9 + runFixtureSuite(connector, it, expect);
10 +
11 + it('maps a Rolex Daytona model page to listings', async () => {
12 + const fx = loadFixture('chrono24', 'rolex__daytona--mod2');
13 + const out = await connector.normalize(fx.raw);
14 + expect(out.length).toBeGreaterThan(20);
15 + const l = out[0];
16 + if (l?.kind !== 'listing') throw new Error();
17 + expect(l.attributes.categorySlug).toBe('rolex');
18 + expect(l.attributes.brand).toBe('Rolex');
19 + expect(l.attributes.model).toBe('Daytona');
20 + expect(l.listingType).toBe('fixed_price');
21 + expect(l.price).toBeGreaterThan(1000);
22 + expect(l.currency).toBe('USD');
23 + expect(l.sourceUrl).toMatch(/--id\d+\.htm$/);
24 + expect(l.attributes.identifiers.chrono24_id).toMatch(/^\d+$/);
25 + const withRef = out.filter((r) => r.kind === 'listing' && r.attributes.reference);
26 + expect(withRef.length).toBeGreaterThan(out.length / 2);
27 + });
28 +
29 + it('parses the AggregateOffer JSON-LD', () => {
30 + const html = `<script type="application/ld+json">{"@context":"http://schema.org","@graph":[{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","item":{"@id":"https://www.chrono24.com/","name":"Chrono24"},"position":1},{"@type":"ListItem","item":{"@id":"https://www.chrono24.com/rolex/index.htm","name":"Rolex watches"},"position":2},{"@type":"ListItem","item":{"@id":"https://www.chrono24.com/rolex/daytona--mod2.htm","name":"Daytona watches"},"position":3}]},{"@type":"AggregateOffer","priceCurrency":"USD","offerCount":2,"offers":[{"@type":"Offer","name":"Rolex Daytona 116500LN Panda 40mm Full Set 2019","price":"31495","priceCurrency":"USD","image":[{"@type":"ImageObject","contentUrl":"https://img.chrono24.com/a.jpg"}],"url":"https://www.chrono24.com/rolex/daytona--id48341690.htm"}]}]}</script>`;
31 + const p = parseModelPage(html, 'https://www.chrono24.com/rolex/daytona--mod2.htm');
32 + expect(p.brand).toBe('Rolex');
33 + expect(p.model).toBe('Daytona');
34 + expect(p.offers).toEqual([{ name: 'Rolex Daytona 116500LN Panda 40mm Full Set 2019', price: 31495, currency: 'USD', url: 'https://www.chrono24.com/rolex/daytona--id48341690.htm', image: 'https://img.chrono24.com/a.jpg' }]);
35 + });
36 +
37 + it('derives reference, year, size and completeness from the offer name', async () => {
38 + const raw = { url: 'https://www.chrono24.com/rolex/daytona--mod2.htm', externalId: null, kind: 'listing' as const, engine: 'scrapfly' as const, fetchedAt: new Date('2026-09-07T00:00:00Z'), payload: { kind: 'model_page', url: 'https://www.chrono24.com/rolex/daytona--mod2.htm', brand: 'Rolex', model: 'Daytona', breadcrumb: [], totalListings: 1, offers: [{ name: 'Rolex Daytona 116500LN Panda 40mm Full Set 2019 Unworn', price: 31495, currency: 'USD', url: 'https://www.chrono24.com/rolex/daytona--id1.htm', image: null }] } };
39 + const [l] = await connector.normalize(raw);
40 + if (l?.kind !== 'listing') throw new Error();
41 + expect(l.attributes.reference).toBe('116500LN');
42 + expect(l.attributes.year).toBe(2019);
43 + expect(l.attributes.size).toBe('40mm');
44 + expect(l.condition.completeness).toBe('full_set');
45 + expect(l.condition.condition).toBe('unworn');
46 + });
47 +});
added connectors/scrapfly/chrono24/index.ts +189 −0
@@ -0,0 +1,189 @@
1 +import { z } from 'zod';
2 +import { BaseConnector, html as H, type ConnectorMeta, type CrawlContext, type RawRecordInput, type RawRecordLike } from '@rareindex/connectors';
3 +import { normalizeCondition } from '@rareindex/taxonomy';
4 +import { CurrencySchema, extractYear, type AssetAttributes, type NormalizedListing, type NormalizedRecord } from '@rareindex/shared';
5 +
6 +/**
7 + * Chrono24 connector — watch listings (asking prices) from public model pages.
8 + * The page's schema.org ItemList of Offers is the extraction contract; one raw record per page.
9 + */
10 +
11 +const BASE = 'https://www.chrono24.com';
12 +const PARSER_VERSION = '1.0.0';
13 +
14 +export const OfferSchema = z.object({ name: z.string(), price: z.number(), currency: z.string(), url: z.string(), image: z.string().nullable() });
15 +export const PagePayloadSchema = z.object({
16 + kind: z.literal('model_page'),
17 + url: z.string(),
18 + brand: z.string(),
19 + model: z.string(),
20 + breadcrumb: z.array(z.string()),
21 + offers: z.array(OfferSchema),
22 + totalListings: z.number().nullable(),
23 +});
24 +export type PagePayload = z.infer<typeof PagePayloadSchema>;
25 +
26 +const BRAND_CATEGORY: Record<string, string> = { rolex: 'rolex', patekphilippe: 'patek_philippe', 'patek-philippe': 'patek_philippe', audemarspiguet: 'audemars_piguet', 'audemars-piguet': 'audemars_piguet', omega: 'omega' };
27 +const BRAND_NAME: Record<string, string> = { rolex: 'Rolex', patekphilippe: 'Patek Philippe', audemarspiguet: 'Audemars Piguet', omega: 'Omega', cartier: 'Cartier', tudor: 'Tudor', vacheronconstantin: 'Vacheron Constantin', breitling: 'Breitling', iwc: 'IWC', jaegerlecoultre: 'Jaeger-LeCoultre', alangesoehne: 'A. Lange & Söhne', richardmille: 'Richard Mille', grandseiko: 'Grand Seiko', tagheuer: 'TAG Heuer', panerai: 'Panerai', hublot: 'Hublot', zenith: 'Zenith', breguet: 'Breguet', blancpain: 'Blancpain' };
28 +
29 +/** Watch reference heuristics: 116500LN, 126610LV, 5711/1A-010, 15400ST.OO.1220ST.01, 311.30.42.30.01.005, RM 011 */
30 +const REF_RE = /\b(\d{4,6}[A-Z]{0,3}(?:\/\d[A-Z0-9]*)?(?:-\d{3})?|\d{5}[A-Z]{2}\.[A-Z]{2}\.\d{4}[A-Z]{2}\.\d{2}|\d{3}\.\d{2}\.\d{2}\.\d{2}\.\d{2}\.\d{3}|RM\s?\d{2,3}(?:-\d{2})?)\b/;
31 +
32 +export function parseModelPage(htmlText: string, url: string): PagePayload {
33 + const ld = H.jsonLd(htmlText);
34 + const crumbs: string[] = [];
35 + const offers: z.infer<typeof OfferSchema>[] = [];
36 + for (const block of ld) {
37 + const type = block['@type'];
38 + if (type === 'BreadcrumbList') {
39 + for (const it of (block.itemListElement as Array<{ item?: { name?: string } }>) ?? []) if (it.item?.name) crumbs.push(it.item.name);
40 + }
41 + // Listings are published as an AggregateOffer whose `offers` array holds one Offer per watch.
42 + const offerList = type === 'AggregateOffer' ? ((block.offers as Array<Record<string, unknown>>) ?? []) : type === 'ItemList' ? (((block.itemListElement as Array<Record<string, unknown>>) ?? []).map((el) => (el.item as Record<string, unknown> | undefined) ?? el)) : [];
43 + if (offerList.length) {
44 + const defaultCurrency = String(block.priceCurrency ?? '');
45 + for (const off of offerList) {
46 + const t = off?.['@type'];
47 + if (t !== 'Offer' && t !== 'Product') continue;
48 + const priceRaw = off.price ?? (off.offers as { price?: unknown } | undefined)?.price;
49 + const price = Number(priceRaw);
50 + const currency = String(off.priceCurrency ?? (off.offers as { priceCurrency?: unknown } | undefined)?.priceCurrency ?? defaultCurrency);
51 + const href = String(off.url ?? '');
52 + if (!Number.isFinite(price) || price <= 0 || !href) continue;
53 + const img = off.image;
54 + const image = Array.isArray(img) ? ((img[0] as { contentUrl?: string; url?: string } | string) ?? null) : (img as string | null | undefined) ?? null;
55 + offers.push({ name: String(off.name ?? '').replace(/\s+/g, ' ').trim(), price, currency, url: href, image: typeof image === 'string' ? image : (image?.contentUrl ?? image?.url ?? null) });
56 + }
57 + }
58 + }
59 + const pathBrand = url.match(/chrono24\.com\/([a-z-]+)\//)?.[1] ?? '';
60 + const brand = BRAND_NAME[pathBrand] ?? crumbs[1]?.replace(/\s+watches?$/i, '') ?? pathBrand;
61 + const model = (crumbs[crumbs.length - 1] ?? '').replace(/\s+watches?$/i, '');
62 + const total = htmlText.match(/([\d,.]+)\s+(?:listings|watches)\b/)?.[1] ?? null;
63 + return { kind: 'model_page', url, brand, model, breadcrumb: crumbs, offers, totalListings: total ? Number(total.replace(/[,.]/g, '')) : null };
64 +}
65 +
66 +export class Chrono24Connector extends BaseConnector {
67 + readonly version = '1.0.0';
68 + readonly parserVersion = PARSER_VERSION;
69 + protected override minIntervalMs = 2000;
70 +
71 + async *crawl(ctx: CrawlContext): AsyncIterable<RawRecordInput> {
72 + const seeds = ctx.options.seeds?.length ? ctx.options.seeds : ((this.meta.config.seeds as string[] | undefined) ?? []);
73 + const pages = Number(this.meta.config.pagesPerSeed ?? 1);
74 + const pageSize = Number(this.meta.config.pageSize ?? 120);
75 + let count = 0;
76 + for (const seed of seeds) {
77 + if (ctx.signal?.aborted) return;
78 + for (let page = 1; page <= pages; page++) {
79 + if (this.reached(ctx, count)) return;
80 + const path = page === 1 ? seed : seed.replace(/--mod(\d+)\.htm$/, `--mod$1-${page}.htm`);
81 + const url = `${path.startsWith('http') ? path : BASE + path}?pageSize=${pageSize}&showpage=${page}`;
82 + await this.throttle();
83 + const res = await ctx.fetch(url, {
84 + renderJs: false,
85 + country: 'us',
86 + responseType: 'text',
87 + expect: ['title', 'price', 'currency', 'images'],
88 + parse: (r) => {
89 + if (!r.html) return null;
90 + const p = parseModelPage(r.html, url);
91 + const first = p.offers[0];
92 + return { title: p.model || null, price: first?.price ?? null, currency: first?.currency ?? null, images: p.offers.filter((o) => o.image).map((o) => o.image) };
93 + },
94 + });
95 + if (!res.success || !res.html) {
96 + ctx.anomaly('page_fetch_failed', `${url}: ${res.error ?? res.httpStatus}`);
97 + break;
98 + }
99 + const payload = parseModelPage(res.html, url.split('?')[0]!);
100 + if (payload.offers.length === 0) {
101 + ctx.anomaly('empty_page', url);
102 + break;
103 + }
104 + count++;
105 + yield { url: url.split('?')[0]!, externalId: `${seed}#${page}`, kind: 'listing', engine: res.engine, httpStatus: res.httpStatus, payload, fetchedAt: res.fetchedAt };
106 + }
107 + }
108 + }
109 +
110 + async normalize(raw: RawRecordLike): Promise<NormalizedRecord[]> {
111 + const p = PagePayloadSchema.parse(raw.payload);
112 + const pathBrand = p.url.match(/chrono24\.com\/([a-z-]+)\//)?.[1] ?? '';
113 + const categorySlug = BRAND_CATEGORY[pathBrand] ?? 'other_watches';
114 + const out: NormalizedListing[] = [];
115 + const seen = new Set<string>();
116 + for (const o of p.offers) {
117 + const id = o.url.match(/--id(\d+)\.htm/)?.[1] ?? o.url;
118 + if (seen.has(id)) continue;
119 + seen.add(id);
120 + const cur = CurrencySchema.safeParse(o.currency);
121 + if (!cur.success) continue;
122 + // First reference-looking token that is not a plain year (e.g. "UNWORN 2024 126500LN" → 126500LN).
123 + const ref = [...o.name.matchAll(new RegExp(REF_RE.source, 'g'))].map((m) => m[1]!.replace(/\s+/g, ' ')).find((r) => !/^(18|19|20)\d{2}$/.test(r)) ?? null;
124 + const year = extractYear(o.name);
125 + const lower = o.name.toLowerCase();
126 + const conditionRaw = /unworn|brand new|new\b/.test(lower) ? 'Unworn' : /\bmint\b|like new|excellent/.test(lower) ? 'Excellent' : /pre-owned|used/.test(lower) ? 'Pre-owned' : null;
127 + const completeness = /full set|box (?:and|&|\/) papers|box\/papers|complete set/.test(lower) ? 'full_set' : /papers/.test(lower) ? 'papers_only' : /\bbox\b/.test(lower) ? 'box_only' : null;
128 + const attributes: AssetAttributes = {
129 + categorySlug,
130 + subcategorySlug: null,
131 + franchise: null,
132 + brand: p.brand,
133 + series: null,
134 + set: null,
135 + setCode: null,
136 + name: `${p.brand} ${p.model}`.trim(),
137 + model: p.model,
138 + reference: ref,
139 + number: null,
140 + year,
141 + edition: null,
142 + variant: null,
143 + language: null,
144 + region: null,
145 + country: null,
146 + material: /platinum/.test(lower) ? 'platinum' : /yellow gold|rose gold|everose|white gold|18k|gold/.test(lower) ? 'gold' : /two[- ]tone|rolesor/.test(lower) ? 'two-tone' : /steel|stainless/.test(lower) ? 'steel' : /titanium/.test(lower) ? 'titanium' : /ceramic/.test(lower) ? 'ceramic' : null,
147 + size: o.name.match(/\b(\d{2}(?:\.\d)?)\s?mm\b/i)?.[1] ? `${o.name.match(/\b(\d{2}(?:\.\d)?)\s?mm\b/i)![1]}mm` : null,
148 + color: null,
149 + rarity: null,
150 + productionQuantity: null,
151 + originalMsrp: null,
152 + originalMsrpCurrency: null,
153 + identifiers: { ...(ref ? { reference: ref } : {}), chrono24_id: id },
154 + metadata: { model_page: p.url },
155 + };
156 + out.push({
157 + kind: 'listing',
158 + connectorId: this.meta.id,
159 + sourceId: this.meta.sourceId,
160 + sourceUrl: o.url,
161 + externalId: id,
162 + rawTitle: o.name,
163 + description: null,
164 + imageUrls: o.image ? [o.image] : [],
165 + attributes,
166 + grade: { grader: null, grade: null, qualifier: null, certificationNumber: null },
167 + condition: { condition: normalizeCondition(categorySlug, conditionRaw), conditionRaw, completeness },
168 + observedAt: raw.fetchedAt,
169 + confidence: 0.8,
170 + parserVersion: PARSER_VERSION,
171 + listingType: 'fixed_price',
172 + price: o.price,
173 + currency: cur.data,
174 + seller: null,
175 + sellerReputation: null,
176 + location: null,
177 + shippingCost: null,
178 + quantity: 1,
179 + listedAt: null,
180 + endsAt: null,
181 + availability: 'available',
182 + bidCount: null,
183 + });
184 + }
185 + return out;
186 + }
187 +}
188 +
189 +export default (meta: ConnectorMeta) => new Chrono24Connector(meta);
added connectors/scrapfly/chrono24/meta.json +40 −0
@@ -0,0 +1,40 @@
1 +{
2 + "id": "chrono24",
3 + "displayName": "Chrono24",
4 + "sourceId": "chrono24",
5 + "sourceName": "Chrono24",
6 + "sourceType": "marketplace",
7 + "sourceUrl": "https://www.chrono24.com",
8 + "module": "scrapfly/chrono24",
9 + "enginePriority": ["scrapfly", "firecrawl"],
10 + "categories": ["watches", "rolex", "patek_philippe", "audemars_piguet", "omega", "other_watches"],
11 + "regions": ["global"],
12 + "languages": ["en"],
13 + "currency": ["USD"],
14 + "supportsListings": true,
15 + "supportsSold": false,
16 + "supportsAuctions": false,
17 + "supportsImages": true,
18 + "supportsCatalog": false,
19 + "supportsPopulation": false,
20 + "supportsLookup": false,
21 + "refreshFrequencyMinutes": 720,
22 + "priority": "high",
23 + "trustScore": 0.7,
24 + "attributionRequired": true,
25 + "termsUrl": "https://www.chrono24.com/info/terms-of-use.htm",
26 + "accessNotes": "Public model listing pages (e.g. /rolex/daytona--mod2.htm) fetched through Scrapfly without JS rendering (Cloudflare shield → ~40 credits/page); robots.txt allows these paths (Crawl-delay 0.1). Each page embeds a schema.org ItemList of Offers (name, price in the site currency, image, listing URL) — we store asking prices as listings only, never as sales. No login, no per-listing detail fetch (seller details stay on Chrono24). Model pages are configured in config.seeds; pagination via --modN-P.htm.",
27 + "enabled": true,
28 + "schemaVersion": "1.0",
29 + "config": {
30 + "seeds": [
31 + "/rolex/daytona--mod2.htm", "/rolex/submariner--mod1.htm", "/rolex/gmt-master-ii--mod3.htm", "/rolex/datejust--mod4.htm", "/rolex/day-date--mod6.htm", "/rolex/explorer--mod8.htm",
32 + "/patekphilippe/nautilus--mod15.htm", "/patekphilippe/aquanaut--mod16.htm", "/patekphilippe/calatrava--mod14.htm",
33 + "/audemarspiguet/royal-oak--mod20.htm", "/audemarspiguet/royal-oak-offshore--mod21.htm",
34 + "/omega/speedmaster--mod24.htm", "/omega/seamaster--mod22.htm",
35 + "/cartier/santos--mod38.htm", "/tudor/black-bay--mod1128.htm", "/vacheronconstantin/overseas--mod1024.htm"
36 + ],
37 + "pagesPerSeed": 2,
38 + "pageSize": 120
39 + }
40 +}
added connectors/scrapfly/goldin/_smoke.ts +24 −0
@@ -0,0 +1,24 @@
1 +/**
2 + * Live smoke test: renders one Goldin "Sold Items" page per selected seed through Scrapfly and prints
3 + * normalised sales. Usage: SCRAPFLY_API_KEY=… pnpm tsx connectors/scrapfly/goldin/_smoke.ts [categorySlug…]
4 + * Costs ~6 Scrapfly credits per page.
5 + */
6 +import { createCrawlContext, createRouter, getConnectorMeta } from '@rareindex/connectors';
7 +import { childLogger } from '@rareindex/shared';
8 +import createConnector from './index.js';
9 +
10 +const meta = getConnectorMeta('goldin');
11 +const connector = createConnector(meta);
12 +const router = createRouter({ scrapflyApiKey: process.env.SCRAPFLY_API_KEY, firecrawlApiKey: process.env.FIRECRAWL_API_KEY });
13 +const categories = process.argv.slice(2);
14 +const ctx = createCrawlContext({ router, meta, options: { mode: 'probe', limit: 10, categories: categories.length ? categories : ['pokemon'] }, log: childLogger({ connector: meta.id, smoke: true }) });
15 +
16 +let total = 0;
17 +for await (const raw of connector.crawl(ctx)) {
18 + const records = await connector.normalize({ ...raw, externalId: raw.externalId ?? null, fetchedAt: raw.fetchedAt ?? new Date() });
19 + total += records.length;
20 + const p = raw.payload as { total: number | null; lots: unknown[]; seed: { path: string } };
21 + console.log(`page ${raw.url} → ${p.lots.length} lots (source total ${p.total}) → ${records.length} sales`);
22 + for (const r of records.slice(0, 3)) console.log(JSON.stringify(r, null, 1));
23 +}
24 +console.log({ totalNormalized: total, engineStats: ctx.engineStats, anomalies: ctx.anomalies });
added connectors/scrapfly/goldin/classify.ts +105 −0
@@ -0,0 +1,105 @@
1 +/** Title heuristics specific to Goldin lot titles. Kept out of the canonical domain model (§196.6). */
2 +
3 +export interface SeedLike {
4 + path: string;
5 + categorySlug: string;
6 + sport?: string;
7 +}
8 +
9 +const MEMORABILIA = /\b(game[- ]?used|game[- ]?worn|match[- ]?worn|jersey|uniform|helmet|cleats?|sneakers?|shoes?|glove|bat\b|baseball\b(?! card)|basketball\b(?! card)|football\b(?! card)|puck|stick|ball\b|ticket|stub|program|photo(?:graph)?|pennant|poster|ring\b|medal|trophy|magazine|sports illustrated|cover|seat|wristband|shorts|pants|jacket|cap\b|hat\b|signed (?:bat|ball|jersey|helmet|photo)|loa\b|mears)\b/i;
10 +const CARD_HINT = /#\d|\bpsa\b|\bbgs\b|\bsgc\b|\bcgc\b|\bbeckett\b|\brookie\b|\brc\b|\brefractor\b|\bprizm\b|\bchrome\b|\bauto(?:graph)?\b.*\/\d+|\bcard\b/i;
11 +const COMIC_HINT = /\bcgc\b|\bcbcs\b|\bcomic|#\d+\s*\(19|#\d+\s*\(20|newsstand|1st appearance/i;
12 +const CONSOLE_HINT = /\bconsole\b|\bsystem\b|\bcontroller\b|\bgame boy\b(?!.*(?:cartridge|game))/i;
13 +
14 +const SPORT_CARD_SLUG: Record<string, string> = { basketball: 'basketball_cards', baseball: 'baseball_cards', football: 'football_cards', hockey: 'hockey_cards', soccer: 'soccer_cards', racing: 'f1_cards' };
15 +
16 +export function classifyGoldinTitle(title: string, seed: SeedLike, breadcrumb: string[] = []): string {
17 + const t = title;
18 + if (seed.sport) {
19 + const cardSlug = SPORT_CARD_SLUG[seed.sport] ?? 'other_sports_cards';
20 + if (MEMORABILIA.test(t) && !CARD_HINT.test(t)) return 'sports_memorabilia';
21 + if (MEMORABILIA.test(t) && /\b(jersey|helmet|bat|ball|ticket|photo|program|magazine|cover|ring|medal|trophy)\b/i.test(t) && !/#\d/.test(t)) return 'sports_memorabilia';
22 + if (seed.sport === 'racing' && !/\bf1\b|formula 1|formula one/i.test(t)) return 'other_sports_cards';
23 + return cardSlug;
24 + }
25 + switch (seed.categorySlug) {
26 + case 'marvel_comics':
27 + return COMIC_HINT.test(t) ? 'marvel_comics' : 'non_sport_cards';
28 + case 'nintendo_games':
29 + return CONSOLE_HINT.test(t) ? 'gaming_hardware' : 'nintendo_games';
30 + case 'sports_memorabilia': {
31 + const crumbs = breadcrumb.join(' ').toLowerCase();
32 + if (/pokemon/.test(crumbs) || /\bpokemon\b/i.test(t)) return 'pokemon';
33 + if (/magic: the gathering|\bmtg\b/i.test(t)) return 'magic_the_gathering';
34 + if (/yu-gi-oh/i.test(t)) return 'yugioh';
35 + if (/one piece/i.test(t)) return 'one_piece_card_game';
36 + for (const [sport, slug] of Object.entries(SPORT_CARD_SLUG)) {
37 + if (new RegExp(`\\b${sport}\\b`, 'i').test(crumbs)) return MEMORABILIA.test(t) && !CARD_HINT.test(t) ? 'sports_memorabilia' : slug;
38 + }
39 + if (CARD_HINT.test(t) && !MEMORABILIA.test(t)) return 'other_sports_cards';
40 + return 'sports_memorabilia';
41 + }
42 + default:
43 + return seed.categorySlug;
44 + }
45 +}
46 +
47 +export function isBundleTitle(title: string): boolean {
48 + return /\blot of\b|\((\d{2,})\+?\)|\bcollection\b|\bcomplete set\b|\bpartial set\b|\bset break\b|\bbundle\b|\bx\d{2,}\b|\bcase\b.*\bboxes\b/i.test(title);
49 +}
50 +
51 +const BRANDS = ['Topps Chrome', 'Topps Finest', 'Bowman Chrome', 'Panini Prizm', 'Panini Select', 'Panini Mosaic', 'Panini Donruss Optic', 'Panini National Treasures', 'Panini Flawless', 'Panini Immaculate', 'Panini Contenders', 'Upper Deck', 'O-Pee-Chee', 'Topps', 'Bowman', 'Panini', 'Fleer', 'Donruss', 'Score', 'Leaf', 'Futera', 'Skybox', 'Hoops', 'Stadium Club', 'Goudey', 'Play Ball', 'Pokemon', 'Magic: The Gathering', 'Yu-Gi-Oh!', 'One Piece'];
52 +
53 +const POKEMON_SETS = ['Base Set 2', 'Base Set', 'Shadowless', 'Jungle', 'Fossil', 'Team Rocket', 'Gym Heroes', 'Gym Challenge', 'Neo Genesis', 'Neo Discovery', 'Neo Revelation', 'Neo Destiny', 'Legendary Collection', 'Expedition', 'Aquapolis', 'Skyridge', 'Black Star Promo', 'Southern Islands', 'EX Ruby & Sapphire', 'EX Team Rocket Returns', 'EX Deoxys', 'EX Dragon Frontiers', 'EX Holon Phantoms', 'Evolutions', 'Hidden Fates', 'Shining Fates', 'Champion’s Path', "Champion's Path", 'Celebrations', 'Evolving Skies', 'Brilliant Stars', 'Astral Radiance', 'Lost Origin', 'Silver Tempest', 'Crown Zenith', 'Scarlet & Violet 151', '151', 'Obsidian Flames', 'Paldea Evolved', 'Paradox Rift', 'Paldean Fates', 'Temporal Forces', 'Twilight Masquerade', 'Shrouded Fable', 'Stellar Crown', 'Surging Sparks', 'Prismatic Evolutions', 'Journey Together', 'Destined Rivals', 'Call of Legends', 'Vivid Voltage', 'Chilling Reign', 'Fusion Strike', 'Sword & Shield', 'Sun & Moon', 'XY Evolutions', 'Plasma Storm', 'Mega Evolution'];
54 +
55 +export interface CardAttrs {
56 + name: string | null;
57 + brand: string | null;
58 + set: string | null;
59 + number: string | null;
60 + variant: string | null;
61 +}
62 +
63 +/** Best-effort structured fields from a Goldin title; anything uncertain stays null. */
64 +export function parseCardAttributes(title: string, categorySlug: string): CardAttrs {
65 + const clean = title.replace(/\s+-\s+(PSA|BGS|SGC|CGC|Beckett|TAG|WATA|VGA)\b.*$/i, '').trim();
66 + let brand: string | null = null;
67 + for (const b of BRANDS) {
68 + if (new RegExp(`\\b${b.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\b`, 'i').test(clean)) {
69 + brand = b;
70 + break;
71 + }
72 + }
73 + let set: string | null = null;
74 + if (categorySlug === 'pokemon') {
75 + for (const s of POKEMON_SETS) {
76 + if (new RegExp(`\\b${s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\b`, 'i').test(clean)) {
77 + set = s;
78 + break;
79 + }
80 + }
81 + } else if (brand && /_cards$/.test(categorySlug)) {
82 + const m = clean.match(new RegExp(`\\b(\\d{4}(?:-\\d{2})?)\\s+(${brand.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}(?:\\s+[A-Z][\\w'&.-]*){0,3})`, 'i'));
83 + if (m) set = m[2]!.trim();
84 + }
85 + const num = clean.match(/#\s?([A-Za-z]{0,4}-?\d{1,4}[A-Za-z]{0,2}(?:\/\d{1,3})?)/);
86 + const number = num ? num[1]! : null;
87 + const variantBits: string[] = [];
88 + for (const re of [/\b1st Edition\b/i, /\bShadowless\b/i, /\bHolo(?:foil)?\b/i, /\bReverse Holo\b/i, /\bRefractor\b/i, /\bSilver Prizm\b/i, /\bGold\b(?! Medal)/i, /\bAuto(?:graph)?\b/i, /\bRookie\b|\bRC\b/, /\bPatch\b/i, /\b\/\d{1,3}\b/]) {
89 + const m = clean.match(re);
90 + if (m) variantBits.push(m[0]);
91 + }
92 + const variant = variantBits.length ? variantBits.join(' ') : null;
93 + // name: text after the card number, or after brand/set, stripped of variant words
94 + let name: string | null = null;
95 + if (num && num.index !== undefined) {
96 + const after = clean.slice(num.index + num[0].length).replace(/^[\s\-–:]+/, '');
97 + name = after.split(/\s+-\s+|\(|,|\bPSA\b|\bBGS\b|\bCGC\b|\bSGC\b/i)[0]!.trim() || null;
98 + }
99 + if (!name) {
100 + const stripped = clean.replace(/^\d{4}(?:-\d{2})?\s+/, '').replace(brand ? new RegExp(brand.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'i') : /$^/, '').replace(set ? new RegExp(set.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'i') : /$^/, '').replace(/\s+/g, ' ').trim();
101 + name = stripped.split(/\s+-\s+|\(/)[0]!.trim() || null;
102 + }
103 + if (name) name = name.replace(/\b(1st Edition|Shadowless|Holo(?:foil)?|Reverse Holo|Refractor|Rookie|RC|Auto(?:graph)?)\b/gi, '').replace(/\s+/g, ' ').trim() || null;
104 + return { name, brand, set, number, variant };
105 +}
added connectors/scrapfly/goldin/index.test.ts +82 −0
@@ -0,0 +1,82 @@
1 +import { describe, expect, it } from 'vitest';
2 +import { getConnectorMeta } from '@rareindex/connectors';
3 +import { loadFixture, runFixtureSuite } from '@rareindex/connectors/testing';
4 +import createConnector, { parseGoldinDisplayDate, parseGoldinGrade, soldPageUrl } from './index.js';
5 +import { classifyGoldinTitle, isBundleTitle, parseCardAttributes } from './classify.js';
6 +
7 +const connector = createConnector(getConnectorMeta('goldin'));
8 +
9 +describe('goldin connector', () => {
10 + runFixtureSuite(connector, it, expect);
11 +
12 + it('applies buyer premium and keeps the hammer price', async () => {
13 + const fx = loadFixture('goldin', 'pokemon-sold-page');
14 + const out = await connector.normalize(fx.raw);
15 + const lot = (fx.raw.payload as { lots: Array<{ lot_id: string; current_price: number; buyer_premium: number; title: string; end_timestamp: string }> }).lots[0]!;
16 + const rec = out.find((r) => r.kind === 'sale' && r.externalId === lot.lot_id);
17 + expect(rec && rec.kind === 'sale').toBe(true);
18 + if (!rec || rec.kind !== 'sale') return;
19 + expect(rec.price).toBeCloseTo(lot.current_price * (1 + lot.buyer_premium / 100), 2);
20 + expect(rec.buyerPremiumIncluded).toBe(true);
21 + expect(rec.attributes.metadata.hammer_price).toBe(lot.current_price);
22 + expect(rec.saleDate.toISOString().slice(0, 19)).toBe(new Date(lot.end_timestamp).toISOString().slice(0, 19));
23 + expect(rec.currency).toBe('USD');
24 + expect(rec.auctionHouse).toBe('Goldin');
25 + expect(rec.sourceUrl).toMatch(/^https:\/\/goldin\.co\/item\//);
26 + expect(rec.attributes.categorySlug).toBe('pokemon');
27 + });
28 +
29 + it('extracts grades from Goldin titles', async () => {
30 + const fx = loadFixture('goldin', 'pokemon-sold-page');
31 + const out = await connector.normalize(fx.raw);
32 + const graded = out.flatMap((r) => (r.kind === 'sale' && /PSA GEM MT 10/.test(r.rawTitle) ? [r] : []));
33 + expect(graded.length).toBeGreaterThan(0);
34 + for (const g of graded) expect(g.grade).toMatchObject({ grader: 'psa', grade: '10' });
35 + });
36 +
37 + it('skips placeholder future end dates and unsold lots', async () => {
38 + const fx = loadFixture('goldin', 'pokemon-sold-page');
39 + const payload = structuredClone(fx.raw.payload) as { lots: Array<Record<string, unknown>> };
40 + const keepId = payload.lots[0]!.lot_id;
41 + payload.lots = [
42 + { ...payload.lots[0]!, lot_id: 'future', end_timestamp: '2235-06-04T00:00:00Z' },
43 + { ...payload.lots[0]!, lot_id: 'unsold', status: 'Completed_Unsold' },
44 + { ...payload.lots[0]!, lot_id: 'zero', current_price: 0 },
45 + payload.lots[0]!,
46 + ];
47 + const out = await connector.normalize({ ...fx.raw, payload });
48 + expect(out.map((r) => (r.kind === 'sale' ? r.externalId : null))).toEqual([keepId]);
49 + });
50 +
51 + it('normalises a sold item page (lookup) with cert number', async () => {
52 + const fx = loadFixture('goldin', 'item-sold-page');
53 + const out = await connector.normalize(fx.raw);
54 + expect(out.length).toBe(1);
55 + const r = out[0]!;
56 + expect(r.kind).toBe('sale');
57 + if (r.kind !== 'sale') return;
58 + expect(r.price).toBe(25726);
59 + expect(r.attributes.metadata.hammer_price).toBe(21438);
60 + expect(r.saleDate.toISOString()).toBe('2012-11-18T02:16:00.000Z');
61 + expect(r.buyerPremiumIncluded).toBe(true);
62 + });
63 +
64 + it('helpers', () => {
65 + expect(parseGoldinGrade('2019 Pokemon Sun & Moon Team Up #33 Pikachu & Zekrom GX Tag Team - PSA GEM MT 10')).toMatchObject({ grader: 'psa', grade: '10' });
66 + expect(parseGoldinGrade('2003-04 Topps Chrome #111 LeBron James Rookie Card')).toMatchObject({ grader: null, grade: null });
67 + expect(soldPageUrl('/buy/sc/pokemon', 2, 240)).toBe('https://goldin.co/buy/sc/pokemon?page=2&number_of_lots=240&show_only=Sold%20Items&sort=Most_Recent_Bids');
68 + expect(parseGoldinDisplayDate('Sat, 11/17/12, 10:16 PM EDT')?.toISOString()).toBe('2012-11-18T02:16:00.000Z');
69 + expect(parseGoldinDisplayDate('Sun, 9/06/26, 9:02 PM PDT')?.toISOString()).toBe('2026-09-07T04:02:00.000Z');
70 + expect(classifyGoldinTitle('2003-04 Topps Chrome #111 LeBron James Rookie Card - PSA GEM MT 10', { path: '/buy/sc/Basketball', categorySlug: 'basketball_cards', sport: 'basketball' })).toBe('basketball_cards');
71 + expect(classifyGoldinTitle('1994-95 Patrick Ewing Game Used New York Knicks Home Jersey (Beckett)', { path: '/buy/sc/Basketball', categorySlug: 'basketball_cards', sport: 'basketball' })).toBe('sports_memorabilia');
72 + expect(classifyGoldinTitle('Amazing Spider-Man #300 (1988 Marvel) - CGC 9.8', { path: '/buy/sc/Marvel', categorySlug: 'marvel_comics' })).toBe('marvel_comics');
73 + expect(isBundleTitle('1993 Magic: The Gathering Unlimited Collection (250+)')).toBe(true);
74 + expect(isBundleTitle('2000 Pokemon Black Star Promo #23 Zapdos - PSA GEM MT 10')).toBe(false);
75 + const a = parseCardAttributes('2000 Pokemon Black Star Promo #23 Zapdos - PSA GEM MT 10', 'pokemon');
76 + expect(a).toMatchObject({ brand: 'Pokemon', set: 'Black Star Promo', number: '23', name: 'Zapdos' });
77 + const b = parseCardAttributes('2003-04 Topps Chrome #111 LeBron James Rookie Card - PSA GEM MT 10', 'basketball_cards');
78 + expect(b.brand).toBe('Topps Chrome');
79 + expect(b.number).toBe('111');
80 + expect(b.name).toMatch(/^LeBron James/);
81 + });
82 +});
added connectors/scrapfly/goldin/index.ts +371 −0
@@ -0,0 +1,371 @@
1 +import { z } from 'zod';
2 +import { BaseConnector, html as H, type ConnectorMeta, type CrawlContext, type RawRecordInput, type RawRecordLike } from '@rareindex/connectors';
3 +import { NormalizedSaleSchema, extractYear, parsePrice, type NormalizedRecord } from '@rareindex/shared';
4 +import { parseGradeFromTitle } from '@rareindex/taxonomy';
5 +import { classifyGoldinTitle, parseCardAttributes, isBundleTitle } from './classify.js';
6 +import { scrapflyRender, type ScrapflyRenderResult } from './scrapfly-render.js';
7 +
8 +/**
9 + * Goldin — sold auction results (§110). Primary engine: Scrapfly (JS rendering + ASP).
10 + * Data source = the lots_v2 search XHR performed by Goldin's own public "Sold Items" grid.
11 + * See meta.json accessNotes for the access/legal rationale.
12 + */
13 +
14 +const IMAGE_CDN = 'https://d2tt46f3mh26nl.cloudfront.net/public/Lots';
15 +const SITE = 'https://goldin.co';
16 +
17 +export const GoldinLotSchema = z.object({
18 + lot_id: z.string(),
19 + title: z.string(),
20 + meta_slug: z.string(),
21 + current_price: z.number().nullable().optional(),
22 + buyer_premium: z.number().nullable().optional(),
23 + end_timestamp: z.string().nullable().optional(),
24 + start_timestamp: z.string().nullable().optional(),
25 + status: z.string().nullable().optional(),
26 + auction_id: z.string().nullable().optional(),
27 + auction_type: z.string().nullable().optional(),
28 + lot_number: z.number().nullable().optional(),
29 + number_of_bids: z.number().nullable().optional(),
30 + primary_image_name: z.string().nullable().optional(),
31 +});
32 +export type GoldinLot = z.infer<typeof GoldinLotSchema>;
33 +
34 +export const SeedSchema = z.object({ path: z.string(), categorySlug: z.string(), sport: z.string().optional() });
35 +export type Seed = z.infer<typeof SeedSchema>;
36 +
37 +/** Raw payload for one rendered "Sold Items" page. */
38 +export const SoldPagePayloadSchema = z.object({
39 + kind: z.literal('sold_page'),
40 + seed: SeedSchema,
41 + page: z.number().int(),
42 + pageUrl: z.string(),
43 + request: z.record(z.string(), z.unknown()),
44 + total: z.number().nullable(),
45 + lots: z.array(GoldinLotSchema),
46 + auctions: z.record(z.string(), z.object({ title: z.string().nullable().optional(), auction_type: z.string().nullable().optional(), end_timestamp: z.string().nullable().optional(), buyer_premium: z.number().nullable().optional() })).default({}),
47 +});
48 +export type SoldPagePayload = z.infer<typeof SoldPagePayloadSchema>;
49 +
50 +/** Raw payload for one rendered item page (lookup). Text is pre-flattened; no HTML stored. */
51 +export const ItemPagePayloadSchema = z.object({
52 + kind: z.literal('item_page'),
53 + url: z.string(),
54 + title: z.string(),
55 + breadcrumb: z.array(z.string()).default([]),
56 + totalPriceText: z.string().nullable(),
57 + winningBidText: z.string().nullable(),
58 + endedText: z.string().nullable(),
59 + bidsText: z.string().nullable(),
60 + sold: z.boolean(),
61 + description: z.string().nullable(),
62 + images: z.array(z.string()).default([]),
63 + lotNumber: z.string().nullable(),
64 +});
65 +export type ItemPagePayload = z.infer<typeof ItemPagePayloadSchema>;
66 +
67 +const ConfigSchema = z.object({
68 + seeds: z.array(SeedSchema).default([]),
69 + pageSize: z.number().int().min(24).max(240).default(240),
70 + maxPagesPerSeed: z.number().int().min(1).default(40),
71 + renderingWaitMs: z.number().int().default(6000),
72 +});
73 +
74 +function parseUtc(s: string | null | undefined): Date | null {
75 + if (!s) return null;
76 + const iso = /[zZ]$|[+-]\d{2}:?\d{2}$/.test(s) ? s : `${s}Z`;
77 + const d = new Date(iso);
78 + return Number.isNaN(d.getTime()) ? null : d;
79 +}
80 +
81 +/**
82 + * Goldin titles end with " - <GRADER> <GRADE>" (e.g. "- PSA GEM MT 10"). Parse that suffix first so that
83 + * words like "Tag Team" inside the card name are not mistaken for TAG grading.
84 + */
85 +export function parseGoldinGrade(title: string): ReturnType<typeof parseGradeFromTitle> {
86 + const parts = title.split(/\s+-\s+/);
87 + for (let i = parts.length - 1; i >= 1; i--) {
88 + const g = parseGradeFromTitle(parts[i]!);
89 + if (g.grader && g.grader !== 'raw' && g.grade) return g;
90 + }
91 + const g = parseGradeFromTitle(title);
92 + if (g.grader === 'tag' && !/\bTAG\s+\d/i.test(title)) return { grader: null, grade: null, qualifier: null };
93 + return g;
94 +}
95 +
96 +export function soldPageUrl(seedPath: string, page: number, pageSize: number): string {
97 + return `${SITE}${seedPath}?page=${page}&number_of_lots=${pageSize}&show_only=Sold%20Items&sort=Most_Recent_Bids`;
98 +}
99 +
100 +/** Pick the lots_v2 XHR that carries the seed filter (the page also fires an unfiltered call). */
101 +export function extractLotsXhr(render: ScrapflyRenderResult): { request: Record<string, unknown>; total: number | null; lots: unknown[] } | null {
102 + const candidates = render.xhr.filter((x) => x.url.includes('/api/lots_v2') && x.responseBody);
103 + let best: { request: Record<string, unknown>; total: number | null; lots: unknown[] } | null = null;
104 + for (const c of candidates) {
105 + try {
106 + const req = (JSON.parse(c.requestBody ?? '{}') as { search?: Record<string, unknown> }).search ?? {};
107 + const body = JSON.parse(c.responseBody!) as { searchalgolia?: { lots?: unknown[]; total?: string | number } };
108 + const sa = body.searchalgolia;
109 + if (!sa?.lots) continue;
110 + const filtered = Boolean(req.sub_category || req.category || req.keyword);
111 + const total = sa.total === undefined ? null : Number(sa.total);
112 + const cand = { request: req, total: Number.isFinite(total as number) ? (total as number) : null, lots: sa.lots };
113 + if (filtered || !best) best = cand;
114 + } catch {
115 + /* skip malformed */
116 + }
117 + }
118 + return best;
119 +}
120 +
121 +export function extractAuctionsXhr(render: ScrapflyRenderResult): SoldPagePayload['auctions'] {
122 + const out: SoldPagePayload['auctions'] = {};
123 + for (const x of render.xhr) {
124 + if (!x.url.endsWith('/api/auctions') || !x.responseBody || x.responseBody.length < 1000) continue;
125 + try {
126 + const body = JSON.parse(x.responseBody) as { auctions?: Array<Record<string, unknown>> };
127 + for (const a of body.auctions ?? []) {
128 + const id = a.auction_id as string | undefined;
129 + if (!id) continue;
130 + out[id] = { title: (a.title as string) ?? null, auction_type: (a.auction_type as string) ?? null, end_timestamp: (a.end_timestamp as string) ?? null, buyer_premium: typeof a.buyer_premium === 'number' ? a.buyer_premium : null };
131 + }
132 + } catch {
133 + /* ignore */
134 + }
135 + }
136 + return out;
137 +}
138 +
139 +/** Flatten a rendered item page into a compact payload (no HTML persisted). */
140 +export function parseItemPage(url: string, pageHtml: string): ItemPagePayload {
141 + const $ = H.load(pageHtml);
142 + $('script, style, noscript').remove();
143 + const text = $('body').text().replace(/\s+/g, ' ').trim();
144 + const title = $('h1').first().text().trim() || ($('title').text().split('|')[0] ?? '').trim();
145 + const winning = text.match(/\$([\d,]+(?:\.\d{2})?)\s*Winning Bid/i);
146 + // Live lots also embed a hidden "Lot Sold" template, so only the winning-bid figure proves a sale.
147 + const sold = winning !== null;
148 + // total price appears right before the winning bid on sold pages, or before "with Buyer’s Premium" on live ones
149 + let total: string | null = null;
150 + if (winning) {
151 + const before = text.slice(Math.max(0, winning.index! - 40), winning.index!);
152 + const m = before.match(/\$([\d,]+(?:\.\d{2})?)\s*$/);
153 + total = m ? `$${m[1]}` : null;
154 + } else {
155 + const m = text.match(/\$([\d,]+(?:\.\d{2})?)\s*with Buyer/i);
156 + total = m ? `$${m[1]}` : null;
157 + }
158 + const ended = text.match(/((?:Sun|Mon|Tue|Wed|Thu|Fri|Sat),\s*\d{1,2}\/\d{1,2}\/\d{2,4},\s*\d{1,2}:\d{2}\s*[AP]M\s*(?:P[SD]T|E[SD]T|C[SD]T|M[SD]T|UTC|GMT))/);
159 + const bids = text.match(/(?:^|\s|\|)(\d{1,4}) bids?\b/i);
160 + const lot = text.match(/Lot #(\d+)/);
161 + const descIdx = text.indexOf('Description');
162 + const description = descIdx >= 0 ? text.slice(descIdx + 'Description'.length, descIdx + 3000).split(/You are viewing a lot in|Want to Sell on Goldin/)[0]!.trim() : null;
163 + const crumbs: string[] = [];
164 + $('[data-testid^="lot-breadcrumb-"]').each((_, el) => {
165 + const t = $(el).text().trim();
166 + if (t) crumbs.push(t);
167 + });
168 + const images = new Set<string>();
169 + $('img[src*="cloudfront.net/public/Lots/"]').each((_, el) => {
170 + const src = $(el).attr('src');
171 + if (src) images.add(src);
172 + });
173 + return { kind: 'item_page', url, title, breadcrumb: crumbs, totalPriceText: total, winningBidText: winning ? `$${winning[1]}` : null, endedText: ended ? ended[1]! : null, bidsText: bids ? bids[1]! : null, sold, description, images: [...images].slice(0, 6), lotNumber: lot ? lot[1]! : null };
174 +}
175 +
176 +/** Parse Goldin's display date "Sat, 11/17/12, 10:16 PM EDT" → UTC Date. */
177 +export function parseGoldinDisplayDate(s: string | null | undefined): Date | null {
178 + if (!s) return null;
179 + const m = s.match(/(\d{1,2})\/(\d{1,2})\/(\d{2,4}),\s*(\d{1,2}):(\d{2})\s*([AP]M)\s*([A-Z]{2,4})/);
180 + if (!m) return null;
181 + const month = Number(m[1]);
182 + const day = Number(m[2]);
183 + let year = Number(m[3]);
184 + if (year < 100) year += 2000;
185 + let hour = Number(m[4]) % 12;
186 + if (m[6] === 'PM') hour += 12;
187 + const minute = Number(m[5]);
188 + const tzOffsets: Record<string, number> = { PDT: -7, PST: -8, EDT: -4, EST: -5, CDT: -5, CST: -6, MDT: -6, MST: -7, UTC: 0, GMT: 0 };
189 + const off = tzOffsets[m[7]!] ?? -7;
190 + return new Date(Date.UTC(year, month - 1, day, hour - off, minute));
191 +}
192 +
193 +export default function createConnector(meta: ConnectorMeta) {
194 + return new GoldinConnector(meta);
195 +}
196 +
197 +export class GoldinConnector extends BaseConnector {
198 + readonly version = '1.0.0';
199 + readonly parserVersion = '1.0.0';
200 + override readonly urlPatterns = [/^https?:\/\/(www\.)?goldin\.co\/item\/[^/?#]+/i];
201 + protected override minIntervalMs = 2000;
202 + private readonly config = ConfigSchema.parse(this.meta.config ?? {});
203 +
204 + private apiKey(): string {
205 + const key = process.env.SCRAPFLY_API_KEY;
206 + if (!key) throw new Error('goldin connector requires SCRAPFLY_API_KEY');
207 + return key;
208 + }
209 +
210 + private async render(ctx: CrawlContext, url: string): Promise<ScrapflyRenderResult> {
211 + await this.throttle();
212 + const stats = (ctx.engineStats.scrapfly ??= { attempts: 0, success: 0, credits: 0, ms: 0 });
213 + stats.attempts++;
214 + const res = await scrapflyRender(url, { apiKey: this.apiKey(), renderingWaitMs: this.config.renderingWaitMs, country: 'us' });
215 + stats.credits += res.cost;
216 + stats.ms += res.durationMs;
217 + if (res.ok) stats.success++;
218 + else ctx.anomaly('blocked_request', `${url}: ${res.error ?? `status ${res.status}`}`);
219 + return res;
220 + }
221 +
222 + async *crawl(ctx: CrawlContext): AsyncIterable<RawRecordInput> {
223 + const seeds = ctx.options.categories?.length ? this.config.seeds.filter((s) => ctx.options.categories!.includes(s.categorySlug)) : this.config.seeds;
224 + const cursor = { ...(ctx.options.cursor ?? {}) } as Record<string, { lastEnd?: string }>;
225 + const pageSize = ctx.options.mode === 'probe' ? 24 : this.config.pageSize;
226 + let yielded = 0;
227 + for (const seed of seeds) {
228 + if (ctx.signal?.aborted) return;
229 + const lastEnd = ctx.options.mode === 'incremental' ? cursor[seed.path]?.lastEnd : undefined;
230 + let newestSeen: string | undefined;
231 + const maxPages = ctx.options.mode === 'probe' ? 1 : this.config.maxPagesPerSeed;
232 + for (let page = 1; page <= maxPages; page++) {
233 + const url = soldPageUrl(seed.path, page, pageSize);
234 + const render = await this.render(ctx, url);
235 + if (!render.ok) break;
236 + const xhr = extractLotsXhr(render);
237 + if (!xhr) {
238 + ctx.anomaly('empty_page', `${url}: no lots_v2 response captured`);
239 + break;
240 + }
241 + const lots = xhr.lots.map((l) => GoldinLotSchema.safeParse(l)).filter((r) => r.success).map((r) => r.data);
242 + if (lots.length !== xhr.lots.length) ctx.anomaly('parse_failure', `${xhr.lots.length - lots.length} lots failed schema on ${url}`);
243 + if (lots.length === 0) break;
244 + const auctions = extractAuctionsXhr(render);
245 + const usedAuctions: SoldPagePayload['auctions'] = {};
246 + for (const l of lots) if (l.auction_id && auctions[l.auction_id]) usedAuctions[l.auction_id] = auctions[l.auction_id]!;
247 + const payload: SoldPagePayload = { kind: 'sold_page', seed, page, pageUrl: url, request: xhr.request, total: xhr.total, lots, auctions: usedAuctions };
248 + const realEnds = lots.map((l) => parseUtc(l.end_timestamp)).filter((d): d is Date => d !== null && d.getTime() <= Date.now() + 86_400_000);
249 + const newest = realEnds.reduce<Date | null>((a, d) => (!a || d > a ? d : a), null);
250 + const oldest = realEnds.reduce<Date | null>((a, d) => (!a || d < a ? d : a), null);
251 + if (newest && (!newestSeen || newest.toISOString() > newestSeen)) newestSeen = newest.toISOString();
252 + yield { url, externalId: `${seed.path}#${page}`, kind: 'sale', engine: 'scrapfly', httpStatus: render.status, payload, fetchedAt: new Date() };
253 + yielded += lots.length;
254 + if (this.reached(ctx, yielded)) return;
255 + if (lastEnd && oldest && oldest.toISOString() <= lastEnd) break; // caught up with previous run
256 + if (xhr.total !== null && page * pageSize >= xhr.total) break;
257 + }
258 + if (newestSeen) {
259 + cursor[seed.path] = { lastEnd: newestSeen };
260 + await ctx.setCursor(cursor);
261 + }
262 + }
263 + }
264 +
265 + async lookup(url: string, ctx: CrawlContext): Promise<RawRecordInput[]> {
266 + const render = await this.render(ctx, url);
267 + if (!render.ok || !render.html) return [];
268 + const payload = parseItemPage(url, render.html);
269 + return [{ url, externalId: url.split('/item/')[1]?.split(/[?#]/)[0] ?? null, kind: 'sale', engine: 'scrapfly', httpStatus: render.status, payload, fetchedAt: new Date() }];
270 + }
271 +
272 + async normalize(raw: RawRecordLike): Promise<NormalizedRecord[]> {
273 + const p = raw.payload as { kind?: string };
274 + if (p?.kind === 'item_page') return this.normalizeItem(raw, ItemPagePayloadSchema.parse(raw.payload));
275 + const page = SoldPagePayloadSchema.parse(raw.payload);
276 + const out: NormalizedRecord[] = [];
277 + const now = Date.now() + 86_400_000;
278 + for (const lot of page.lots) {
279 + if (lot.status && lot.status !== 'Completed_Sold') continue;
280 + const saleDate = parseUtc(lot.end_timestamp);
281 + if (!saleDate || saleDate.getTime() > now || lot.current_price === null || lot.current_price === undefined || lot.current_price <= 0) continue;
282 + const bp = lot.buyer_premium ?? page.auctions[lot.auction_id ?? '']?.buyer_premium ?? null;
283 + const price = bp !== null ? Math.round(lot.current_price * (1 + bp / 100) * 100) / 100 : lot.current_price;
284 + const grade = parseGoldinGrade(lot.title);
285 + const categorySlug = classifyGoldinTitle(lot.title, page.seed);
286 + const card = parseCardAttributes(lot.title, categorySlug);
287 + const auction = lot.auction_id ? page.auctions[lot.auction_id] : undefined;
288 + const auctionType = (lot.auction_type ?? auction?.auction_type ?? '').toLowerCase();
289 + const record = NormalizedSaleSchema.parse({
290 + kind: 'sale',
291 + connectorId: this.meta.id,
292 + sourceId: this.meta.sourceId,
293 + sourceUrl: `${SITE}/item/${lot.meta_slug}`,
294 + externalId: lot.lot_id,
295 + rawTitle: lot.title,
296 + description: null,
297 + imageUrls: lot.primary_image_name ? [`${IMAGE_CDN}/${lot.lot_id}/${lot.primary_image_name}@1x`] : [],
298 + attributes: {
299 + categorySlug,
300 + name: card.name ?? lot.title,
301 + brand: card.brand,
302 + set: card.set,
303 + number: card.number,
304 + year: extractYear(lot.title),
305 + variant: card.variant,
306 + identifiers: { goldin_lot_id: lot.lot_id, goldin_slug: lot.meta_slug },
307 + metadata: { auction_id: lot.auction_id ?? null, auction_title: auction?.title ?? null, auction_type: lot.auction_type ?? auction?.auction_type ?? null, hammer_price: lot.current_price, buyer_premium_pct: bp, lot_number: lot.lot_number ?? null, bids: lot.number_of_bids ?? null, goldin_seed: page.seed.path },
308 + },
309 + grade: { grader: grade.grader, grade: grade.grade, qualifier: grade.qualifier, certificationNumber: null },
310 + condition: {},
311 + observedAt: raw.fetchedAt,
312 + confidence: grade.grader ? 0.9 : 0.8,
313 + parserVersion: this.parserVersion,
314 + saleType: auctionType.includes('fixed') ? 'fixed_price' : 'auction',
315 + saleDate,
316 + price,
317 + currency: 'USD',
318 + buyerPremiumIncluded: bp !== null,
319 + quantity: 1,
320 + isBundle: isBundleTitle(lot.title),
321 + location: 'US',
322 + auctionHouse: 'Goldin',
323 + lotNumber: lot.lot_number !== null && lot.lot_number !== undefined ? String(lot.lot_number) : null,
324 + });
325 + out.push(record);
326 + }
327 + return out;
328 + }
329 +
330 + private normalizeItem(raw: RawRecordLike, item: ItemPagePayload): NormalizedRecord[] {
331 + if (!item.sold) return [];
332 + const total = parsePrice(item.totalPriceText, 'USD');
333 + const hammer = parsePrice(item.winningBidText, 'USD');
334 + const saleDate = parseGoldinDisplayDate(item.endedText);
335 + const amount = total?.amount ?? hammer?.amount;
336 + if (!amount || !saleDate) return [];
337 + const grade = parseGoldinGrade(item.title);
338 + const cert = item.description?.match(/\b(?:PSA|BGS|CGC|SGC|Beckett)\b[^()]{0,40}\((\d{6,12})\)/i)?.[1] ?? item.description?.match(/\b(?:cert(?:ification)?(?:\s*(?:no|#|number))?)[:\s#]*(\d{6,12})/i)?.[1] ?? null;
339 + const seedGuess = { path: 'lookup', categorySlug: item.breadcrumb.map((b) => b.toLowerCase()).includes('pokemon') ? 'pokemon' : 'sports_memorabilia' };
340 + const categorySlug = classifyGoldinTitle(item.title, seedGuess, item.breadcrumb);
341 + const card = parseCardAttributes(item.title, categorySlug);
342 + return [
343 + NormalizedSaleSchema.parse({
344 + kind: 'sale',
345 + connectorId: this.meta.id,
346 + sourceId: this.meta.sourceId,
347 + sourceUrl: item.url,
348 + externalId: raw.externalId ?? item.url,
349 + rawTitle: item.title,
350 + description: item.description,
351 + imageUrls: item.images,
352 + attributes: { categorySlug, name: card.name ?? item.title, brand: card.brand, set: card.set, number: card.number, year: extractYear(item.title), variant: card.variant, identifiers: { goldin_slug: raw.externalId ?? '' }, metadata: { hammer_price: hammer?.amount ?? null, breadcrumb: item.breadcrumb, lot_number: item.lotNumber } },
353 + grade: { grader: grade.grader, grade: grade.grade, qualifier: grade.qualifier, certificationNumber: cert },
354 + condition: {},
355 + observedAt: raw.fetchedAt,
356 + confidence: 0.85,
357 + parserVersion: this.parserVersion,
358 + saleType: 'auction',
359 + saleDate,
360 + price: amount,
361 + currency: 'USD',
362 + buyerPremiumIncluded: total ? true : null,
363 + quantity: 1,
364 + isBundle: isBundleTitle(item.title),
365 + location: 'US',
366 + auctionHouse: 'Goldin',
367 + lotNumber: item.lotNumber,
368 + }),
369 + ];
370 + }
371 +}
added connectors/scrapfly/goldin/meta.json +48 −0
@@ -0,0 +1,48 @@
1 +{
2 + "id": "goldin",
3 + "displayName": "Goldin (sold auction results)",
4 + "sourceId": "goldin",
5 + "sourceName": "Goldin",
6 + "sourceType": "auction_house",
7 + "sourceUrl": "https://goldin.co",
8 + "module": "scrapfly/goldin",
9 + "enginePriority": ["scrapfly"],
10 + "categories": ["pokemon", "magic_the_gathering", "yugioh", "one_piece_card_game", "basketball_cards", "baseball_cards", "football_cards", "hockey_cards", "soccer_cards", "f1_cards", "sports_memorabilia", "marvel_comics", "nintendo_games", "non_sport_cards"],
11 + "regions": ["US"],
12 + "languages": ["en"],
13 + "currency": ["USD"],
14 + "supportsListings": false,
15 + "supportsSold": true,
16 + "supportsAuctions": false,
17 + "supportsImages": true,
18 + "supportsCatalog": false,
19 + "supportsPopulation": false,
20 + "supportsLookup": true,
21 + "refreshFrequencyMinutes": 360,
22 + "priority": "high",
23 + "trustScore": 0.9,
24 + "attributionRequired": true,
25 + "termsUrl": "https://goldin.co/useragreement",
26 + "accessNotes": "Public 'Sold Items' result grids (https://goldin.co/buy/sc/<subcategory>?show_only=Sold%20Items&sort=Most_Recent_Bids&number_of_lots=240) rendered through Scrapfly (asp + JS rendering, ~6 credits per page of 240 sold lots). goldin.co/robots.txt allows /buy/ and /item/ and disallows /api/; we never call goldin.co/api ourselves — the lot data is read from the XHR (lots_v2 on their CloudFront search endpoint) that the public page performs during rendering, exactly what a browser does. Plain HTTP and Firecrawl return the empty SPA shell / an Akamai challenge. Prices: the grid shows the final price INCLUDING buyer's premium (current_price × (1 + buyer_premium%)); we store that as the sale price with buyerPremiumIncluded=true and keep the hammer price and BP % in metadata. Sale date = lot end_timestamp; lots whose end_timestamp is in the future (placeholder private-sale dates like 2235-06-04) are skipped and counted as anomalies. Cert numbers appear only in item-page descriptions (lookup).",
27 + "enabled": true,
28 + "schemaVersion": "1.0",
29 + "config": {
30 + "seeds": [
31 + { "path": "/buy/sc/pokemon", "categorySlug": "pokemon" },
32 + { "path": "/buy/sc/Magic_The_Gathering", "categorySlug": "magic_the_gathering" },
33 + { "path": "/buy/sc/Yu-Gi-Oh!", "categorySlug": "yugioh" },
34 + { "path": "/buy/sc/One_Piece", "categorySlug": "one_piece_card_game" },
35 + { "path": "/buy/sc/Basketball", "categorySlug": "basketball_cards", "sport": "basketball" },
36 + { "path": "/buy/sc/Baseball", "categorySlug": "baseball_cards", "sport": "baseball" },
37 + { "path": "/buy/sc/Football", "categorySlug": "football_cards", "sport": "football" },
38 + { "path": "/buy/sc/Hockey", "categorySlug": "hockey_cards", "sport": "hockey" },
39 + { "path": "/buy/sc/Soccer", "categorySlug": "soccer_cards", "sport": "soccer" },
40 + { "path": "/buy/sc/Racing", "categorySlug": "f1_cards", "sport": "racing" },
41 + { "path": "/buy/sc/Marvel", "categorySlug": "marvel_comics" },
42 + { "path": "/buy/sc/Nintendo", "categorySlug": "nintendo_games" }
43 + ],
44 + "pageSize": 240,
45 + "maxPagesPerSeed": 40,
46 + "renderingWaitMs": 6000
47 + }
48 +}
added connectors/scrapfly/goldin/scrapfly-render.ts +65 −0
@@ -0,0 +1,65 @@
1 +/**
2 + * Minimal Scrapfly render helper that exposes `browser_data.xhr_call` (the XHR requests/responses the
3 + * rendered page performed). The shared engine in @rareindex/connectors only returns the page content;
4 + * Goldin's lot data lives in the page's own search XHR, so this connector needs the browser data.
5 + * TODO(framework): add `FetchOptions.captureXhr` + `ExtractionResult.browserData` and drop this file.
6 + */
7 +export interface XhrCall {
8 + url: string;
9 + method: string;
10 + requestBody: string | null;
11 + responseBody: string | null;
12 + status: number | null;
13 +}
14 +
15 +export interface ScrapflyRenderResult {
16 + ok: boolean;
17 + status: number | null;
18 + html: string | null;
19 + xhr: XhrCall[];
20 + cost: number;
21 + durationMs: number;
22 + error: string | null;
23 +}
24 +
25 +export interface RenderOptions {
26 + apiKey: string;
27 + renderingWaitMs?: number;
28 + country?: string;
29 + timeoutMs?: number;
30 +}
31 +
32 +export async function scrapflyRender(url: string, o: RenderOptions): Promise<ScrapflyRenderResult> {
33 + const started = Date.now();
34 + const params = new URLSearchParams({ key: o.apiKey, url, asp: 'true', render_js: 'true', country: (o.country ?? 'us').toLowerCase(), retry: 'true', rendering_wait: String(Math.min(o.renderingWaitMs ?? 6000, 25_000)) });
35 + const ctrl = new AbortController();
36 + const timer = setTimeout(() => ctrl.abort(), (o.timeoutMs ?? 170_000) + 5_000);
37 + try {
38 + const res = await fetch(`https://api.scrapfly.io/scrape?${params.toString()}`, { signal: ctrl.signal });
39 + const text = await res.text();
40 + let json: any;
41 + try {
42 + json = JSON.parse(text);
43 + } catch {
44 + return { ok: false, status: null, html: null, xhr: [], cost: 0, durationMs: Date.now() - started, error: `scrapfly HTTP ${res.status}: ${text.slice(0, 160)}` };
45 + }
46 + const r = json.result ?? {};
47 + const cost: number = json.context?.cost?.total ?? 0;
48 + if (!res.ok) return { ok: false, status: null, html: null, xhr: [], cost, durationMs: Date.now() - started, error: `scrapfly HTTP ${res.status}: ${json.message ?? r.error?.message ?? 'error'}` };
49 + const xhrRaw: any[] = r.browser_data?.xhr_call ?? [];
50 + const xhr: XhrCall[] = xhrRaw.map((c) => ({
51 + url: String(c.url ?? ''),
52 + method: String(c.method ?? 'GET'),
53 + requestBody: typeof c.body === 'string' ? c.body : c.body ? JSON.stringify(c.body) : null,
54 + responseBody: typeof c.response?.body === 'string' ? c.response.body : c.response?.body ? JSON.stringify(c.response.body) : null,
55 + status: c.response?.status ?? null,
56 + }));
57 + const status: number | null = r.status_code ?? null;
58 + const ok = r.success !== false && (status === null || status < 400);
59 + return { ok, status, html: r.content ?? null, xhr, cost, durationMs: Date.now() - started, error: ok ? null : (r.error?.message ?? `status ${status}`) };
60 + } catch (err) {
61 + return { ok: false, status: null, html: null, xhr: [], cost: 0, durationMs: Date.now() - started, error: err instanceof Error ? err.message : String(err) };
62 + } finally {
63 + clearTimeout(timer);
64 + }
65 +}
added data/fixtures/brickeconomy/10123-1__lego-star-wars-cloud-city.json +27 −0
@@ -0,0 +1,27 @@
1 +{
2 + "raw": {
3 + "url": "https://www.brickeconomy.com/set/10123-1/lego-star-wars-cloud-city",
4 + "externalId": "10123-1",
5 + "kind": "catalog_item",
6 + "engine": "firecrawl",
7 + "fetchedAt": "2026-09-07T04:35:42.868Z",
8 + "payload": {
9 + "kind": "set_page",
10 + "url": "https://www.brickeconomy.com/set/10123-1/lego-star-wars-cloud-city",
11 + "title": "",
12 + "markdown": "#### Set Details\n\nSet number\n\n10123-1\n\nName\n\nCloud City\n\nTheme\n\n[Star Wars](https://www.brickeconomy.com/sets/theme/star-wars)\n\nSubtheme\n\n[Episode V](https://www.brickeconomy.com/sets/theme/star-wars/subtheme/episode-v)\n\nYear\n\n[2003](https://www.brickeconomy.com/sets/year/2003/theme/star-wars/subtheme/episode-v)\n\nAvailability\n\nRetired\n\nPieces\n\n698  (PPP $0.14)\n\nMinifigs\n\n7(Value $4,802.66)\n\n![Boba Fett](https://www.brickeconomy.com/resources/images/minifigs/sw0107_thumb.png)![Darth Vader](https://www.brickeconomy.com/resources/images/minifigs/sw0004_thumb.png)![Han Solo](https://www.brickeconomy.com/resources/images/minifigs/sw0045_thumb.png)![Lando Calrissian](https://www.brickeconomy.com/resources/images/minifigs/sw0105_thumb.png)![Luke Skywalker](https://www.brickeconomy.com/resources/images/minifigs/sw0103_thumb.png)![Princess Leia](https://www.brickeconomy.com/resources/images/minifigs/sw0104_thumb.png)![Stormtrooper](https://www.brickeconomy.com/resources/images/minifigs/sw0036_thumb.png)\n\n#### Set Pricing\n\nRetail price\n\n$99.99\n\nNew/Sealed\n\nValue\n\n**$17,444.85**\n\nGrowth\n\n+17346.59%\n\nAnnual growth\n\n+15.93%\n\n2025 growth\n\n+13.54%\n\nFuture growth\n\n+6.57%  (2-3 year outlook)\n\n90-day change\n\n11.20%\n\nUsed\n\nValue\n\n$3,500.00\n\nRange\n\n$3,160.00 - $4,200.00\n\n#### Set Predictions\n\nNew/Sealed\n\nToday's value\n\n$17,444.85\n\n1 year forecast\n\n$18,075.46+3.61%\n\n5 year forecast\n\n$22,839.54+30.92%\n\n$22,177\n\n$23,456\n\n10123 Cloud City is projected to be valued between $22,177 - $23,456 within five years.\n\nInsights\n\nReleased in the early 2000s and long retired, Cloud City (10123) is an Episode V Star Wars exclusive with era-specific minifigure prints like the arm-printed Boba Fett and early Lando Calrissian, and scarce sealed examples and unique elements sustain collector interest despite reissue risk from later Bespin releases.",
13 + "images": [
14 + "https://www.brickeconomy.com/resources/images/sets/lego-10123-1_large.jpg"
15 + ]
16 + }
17 + },
18 + "expect": {
19 + "minCount": 2,
20 + "kinds": [
21 + "catalog_item",
22 + "price_observation"
23 + ]
24 + },
25 + "note": "captured live from https://www.brickeconomy.com/set/10123-1/lego-star-wars-cloud-city",
26 + "capturedAt": "2026-09-07T04:35:42.870Z"
27 +}
\ No newline at end of file
added data/fixtures/brickeconomy/10179-1__lego-star-wars-ultimate-collectors-millennium-falcon.json +27 −0
@@ -0,0 +1,27 @@
1 +{
2 + "raw": {
3 + "url": "https://www.brickeconomy.com/set/10179-1/lego-star-wars-ultimate-collectors-millennium-falcon",
4 + "externalId": "10179-1",
5 + "kind": "catalog_item",
6 + "engine": "firecrawl",
7 + "fetchedAt": "2026-09-07T04:35:38.269Z",
8 + "payload": {
9 + "kind": "set_page",
10 + "url": "https://www.brickeconomy.com/set/10179-1/lego-star-wars-ultimate-collectors-millennium-falcon",
11 + "title": "",
12 + "markdown": "#### Set Details\n\nSet number\n\n10179-1\n\nName\n\nUltimate Collector's Millennium Falcon\n\nTheme\n\n[Star Wars](https://www.brickeconomy.com/sets/theme/star-wars)\n\nSubtheme\n\n[Ultimate Collector Series](https://www.brickeconomy.com/sets/theme/star-wars/subtheme/ultimate-collector-series)\n\nYear\n\n[2007](https://www.brickeconomy.com/sets/year/2007/theme/star-wars/subtheme/ultimate-collector-series)\n\nReleased\n\nOctober 24, 2007\n\nRetired\n\nMay 4, 2010\n\nAvailability\n\nRetired\n\nPieces\n\n5,197  (PPP $0.10)\n\nMinifigs\n\n5(Value $106.58)\n\n![Chewbacca](https://www.brickeconomy.com/resources/images/minifigs/sw0011a_thumb.png)![Han Solo](https://www.brickeconomy.com/resources/images/minifigs/sw0179_thumb.png)![Luke Skywalker](https://www.brickeconomy.com/resources/images/minifigs/sw0176_thumb.png)![Obi-Wan Kenobi](https://www.brickeconomy.com/resources/images/minifigs/sw0174_thumb.png)![Princess Leia](https://www.brickeconomy.com/resources/images/minifigs/sw0175_thumb.png)\n\n(1 exclusive)\n\n#### Set Pricing\n\nRetail price\n\n$499.99\n\nNew/Sealed\n\nValue\n\n**$2,946.69**\n\nGrowth\n\n+489.35%\n\nAnnual growth\n\n+11.51%\n\n2025 growth\n\n+4.47%\n\nFuture growth\n\n+6.82%  (2-3 year outlook)\n\n90-day change\n\n17.80%\n\nUsed\n\nValue\n\n$1,087.86\n\nRange\n\n$1,005.38 - $1,335.67\n\n#### Set Predictions\n\nNew/Sealed\n\nToday's value\n\n$2,946.69\n\n1 year forecast\n\n$3,057.22+3.75%\n\n5 year forecast\n\n$3,787.44+28.53%\n\n$3,678\n\n$3,890\n\n10179 Ultimate Collector's Millennium Falcon is projected to be valued between $3,678 - $3,890 within five years.\n\nInsights\n\nReleased in 2007 and retired in 2010, the Ultimate Collector's Millennium Falcon (10179) is a milestone UCS minifigure-scale Falcon whose early certificate variants and limited supply keep original examples scarce, and while long-term collector demand has supported appreciation, later remakes have added periodic volatility.",
13 + "images": [
14 + "https://www.brickeconomy.com/resources/images/sets/lego-10179-1_large.jpg"
15 + ]
16 + }
17 + },
18 + "expect": {
19 + "minCount": 2,
20 + "kinds": [
21 + "catalog_item",
22 + "price_observation"
23 + ]
24 + },
25 + "note": "captured live from https://www.brickeconomy.com/set/10179-1/lego-star-wars-ultimate-collectors-millennium-falcon",
26 + "capturedAt": "2026-09-07T04:35:38.269Z"
27 +}
\ No newline at end of file
added data/fixtures/brickeconomy/75192-1__lego-star-wars-millennium-falcon.json +27 −0
@@ -0,0 +1,27 @@
1 +{
2 + "raw": {
3 + "url": "https://www.brickeconomy.com/set/75192-1/lego-star-wars-millennium-falcon",
4 + "externalId": "75192-1",
5 + "kind": "catalog_item",
6 + "engine": "firecrawl",
7 + "fetchedAt": "2026-09-07T04:35:36.650Z",
8 + "payload": {
9 + "kind": "set_page",
10 + "url": "https://www.brickeconomy.com/set/75192-1/lego-star-wars-millennium-falcon",
11 + "title": "",
12 + "markdown": "#### Set Details\n\nSet number\n\n75192-1\n\nName\n\nMillennium Falcon\n\nTheme\n\n[Star Wars](https://www.brickeconomy.com/sets/theme/star-wars)\n\nSubtheme\n\n[Ultimate Collector Series](https://www.brickeconomy.com/sets/theme/star-wars/subtheme/ultimate-collector-series)\n\nYear\n\n[2017](https://www.brickeconomy.com/sets/year/2017/theme/star-wars/subtheme/ultimate-collector-series)\n\nReleased\n\nJanuary 10, 2018\n\nAvailability\n\nExclusive\n\nPieces\n\n7,541  (PPP $0.11)\n\nMinifigs\n\n8(Value $112.37)\n\n![BB-8](https://www.brickeconomy.com/resources/images/minifigs/sw0661_thumb.png)![C-3PO](https://www.brickeconomy.com/resources/images/minifigs/sw0700_thumb.png)![Chewbacca](https://www.brickeconomy.com/resources/images/minifigs/sw0532_thumb.png)![Finn](https://www.brickeconomy.com/resources/images/minifigs/sw0676_thumb.png)![Han Solo](https://www.brickeconomy.com/resources/images/minifigs/sw0879_thumb.png)![Old Han Solo](https://www.brickeconomy.com/resources/images/minifigs/sw0841_thumb.png)![Princess Leia](https://www.brickeconomy.com/resources/images/minifigs/sw0878_thumb.png)![Rey](https://www.brickeconomy.com/resources/images/minifigs/sw0677_thumb.png)\n\n#### Set Pricing\n\nRetail price\n\n$849.99\n\nMarket price\n\n$764.15-10.1%\n\nStill available at retail\n\nPrices are currently low for this set.\n\n$764 is low\n\n$850\n\n$900\n\nThis LEGO set typically sells between $850-$900 locally.\n\n#### Set Predictions\n\nRetirement\n\nEnd of 2026 79.9%\n\nNew/Sealed\n\nRetirement pop\n\n+13.96%\n\nAnnual growth\n\n+7.09%  (first year)\n\n+6.74%  (second year)\n\n1 year retired\n\n$1,037.33Late 2027\n\n5 years retired\n\n$1,187 - $1,313\n\n$1,187\n\n$1,313\n\nThe estimated value of 75192 Millennium Falcon is projected to range between $1,187 - $1,313 within five years of retirement.",
13 + "images": [
14 + "https://www.brickeconomy.com/resources/images/sets/lego-75192-1_large.jpg"
15 + ]
16 + }
17 + },
18 + "expect": {
19 + "minCount": 2,
20 + "kinds": [
21 + "catalog_item",
22 + "price_observation"
23 + ]
24 + },
25 + "note": "captured live from https://www.brickeconomy.com/set/75192-1/lego-star-wars-millennium-falcon",
26 + "capturedAt": "2026-09-07T04:35:36.655Z"
27 +}
\ No newline at end of file
added data/fixtures/chrono24/rolex__daytona--mod2.json +864 −0
@@ -0,0 +1,864 @@
1 +{
2 + "raw": {
3 + "url": "https://www.chrono24.com/rolex/daytona--mod2.htm",
4 + "externalId": "/rolex/daytona--mod2.htm#1",
5 + "kind": "listing",
6 + "engine": "scrapfly",
7 + "fetchedAt": "2026-09-07T04:42:04.594Z",
8 + "payload": {
9 + "kind": "model_page",
10 + "url": "https://www.chrono24.com/rolex/daytona--mod2.htm",
11 + "brand": "Rolex",
12 + "model": "Daytona",
13 + "breadcrumb": [
14 + "Chrono24: the global marketplace for luxury watches",
15 + "Rolex watches",
16 + "Daytona watches"
17 + ],
18 + "offers": [
19 + {
20 + "name": "Rolex UNWORN 2024 126500LN Daytona 40mm White “Panda” Dial",
21 + "price": 37250,
22 + "currency": "USD",
23 + "url": "https://www.chrono24.com/rolex/unworn-2024-126500ln-daytona-40mm-white-panda-dial--id40983017.htm",
24 + "image": "https://img.chrono24.com/images/uhren/r82r2z1a8vsn-3xvfxvze8ivg4y35pwzqbzdn-ExtraLarge.jpg"
25 + },
26 + {
27 + "name": "Rolex Cosmograph Daytona Paul Newman Watch Ref. 6239",
28 + "price": 325000,
29 + "currency": "USD",
30 + "url": "https://www.chrono24.com/rolex/cosmograph-daytona-paul-newman-watch-ref-6239--id48254267.htm",
31 + "image": "https://img.chrono24.com/images/uhren/48254267-gqsjfrtfdfbg9ztxaiqeo1vz-ExtraLarge.jpg"
32 + },
33 + {
34 + "name": "Rolex Daytona ROLEX DAYTONA ZENITH NO PAPER NO BOX",
35 + "price": 15700,
36 + "currency": "USD",
37 + "url": "https://www.chrono24.com/rolex/daytona--id48059590.htm",
38 + "image": "https://img.chrono24.com/images/uhren/vynseay70wpj-v7pe632cb98pmee02wcpub53-ExtraLarge.jpg"
39 + },
40 + {
41 + "name": "Rolex Daytona Pikachu 116518LN 18k Yellow Gold Oysterflex Box 2025 Service Card",
42 + "price": 47995,
43 + "currency": "USD",
44 + "url": "https://www.chrono24.com/rolex/daytona-pikachu-116518ln-18k-yellow-gold-oysterflex-box-2025-service-card--id46829874.htm",
45 + "image": "https://img.chrono24.com/images/uhren/46829874-8exp9fzp2jntntswpw4urpx9-ExtraLarge.jpg"
46 + },
47 + {
48 + "name": "Rolex Daytona Zenith",
49 + "price": 33000,
50 + "currency": "USD",
51 + "url": "https://www.chrono24.com/rolex/daytona--id48007790.htm",
52 + "image": "https://img.chrono24.com/images/uhren/oys90sc9nsxa-f977rtxyunkbt2bt84utn8sd-ExtraLarge.jpg"
53 + },
54 + {
55 + "name": "Rolex Daytona 2018 Black/Black 40mm Index Oyster Preowned 116500",
56 + "price": 27400,
57 + "currency": "USD",
58 + "url": "https://www.chrono24.com/rolex/daytona-2018-blackblack-40mm-index-oyster-preowned-116500--id47804923.htm",
59 + "image": "https://img.chrono24.com/images/uhren/47804923-rhc3hm9g65kkvemt85ub1cz3-ExtraLarge.jpg"
60 + },
61 + {
62 + "name": "Rolex Daytona",
63 + "price": 19999,
64 + "currency": "USD",
65 + "url": "https://www.chrono24.com/rolex/daytona--id46892301.htm",
66 + "image": "https://img.chrono24.com/images/uhren/46892301-p8xpwyyfxmb2uve6nk1r3sw1-ExtraLarge.jpg"
67 + },
68 + {
69 + "name": "Rolex Daytona 2017 &#34;Panda&#34; 116500LN White Dial 40mm",
70 + "price": 31495,
71 + "currency": "USD",
72 + "url": "https://www.chrono24.com/rolex/daytona--id48341690.htm",
73 + "image": "https://img.chrono24.com/images/uhren/48341690-twjedfq4dapcsa7n1nrwcl9t-ExtraLarge.jpg"
74 + },
75 + {
76 + "name": "Rolex Daytona 116500LN &#34;Panda&#34; Ceramic Bezel Stainless Steel Daytona 116500LN Panda",
77 + "price": 29500,
78 + "currency": "USD",
79 + "url": "https://www.chrono24.com/rolex/rolex-daytona-116500ln-panda-ceramic-bezel--id46801043.htm",
80 + "image": "https://img.chrono24.com/images/uhren/46801043-mz59jovaa3aonihs5m5lxrtx-ExtraLarge.jpg"
81 + },
82 + {
83 + "name": "Rolex Daytona",
84 + "price": 34900,
85 + "currency": "USD",
86 + "url": "https://www.chrono24.com/rolex/daytona--id46780801.htm",
87 + "image": "https://img.chrono24.com/images/uhren/h9zzq600dxfl-662n473t1o8os0dxhswx0qh1-ExtraLarge.jpg"
88 + },
89 + {
90 + "name": "Rolex Daytona 40mm Black Dial Ceramic Bezel Stainless Steel 116500LN",
91 + "price": 25899,
92 + "currency": "USD",
93 + "url": "https://www.chrono24.com/rolex/daytona-40mm-black-dial-ceramic-bezel-stainless-steel-116500ln--id47872422.htm",
94 + "image": "https://img.chrono24.com/images/uhren/9ci91zg74d10-6jnmh2mfzo8q09bqzdo1q2q3-ExtraLarge.jpg"
95 + },
96 + {
97 + "name": "Rolex Daytona",
98 + "price": 56000,
99 + "currency": "USD",
100 + "url": "https://www.chrono24.com/rolex/daytona--id45968044.htm",
101 + "image": "https://img.chrono24.com/images/uhren/45968044-sfclpj6blrtjtji7h8vnvg23-ExtraLarge.jpg"
102 + },
103 + {
104 + "name": "Rolex Daytona",
105 + "price": 28995,
106 + "currency": "USD",
107 + "url": "https://www.chrono24.com/rolex/rolex-daytona--id44787355.htm",
108 + "image": "https://img.chrono24.com/images/uhren/44787355-hcb0zw2iluazexcg3ma7b2re-ExtraLarge.jpg"
109 + },
110 + {
111 + "name": "Rolex - Pre-owned Two Tone Yellow Gold Daytona Zenith White Dial 16523",
112 + "price": 17500,
113 + "currency": "USD",
114 + "url": "https://www.chrono24.com/rolex/--pre-owned-two-tone-yellow-gold-daytona-zenith-white-dial-16523--id47276742.htm",
115 + "image": "https://img.chrono24.com/images/uhren/47276742-5q2shcrevglbta8bfhg0ich8-ExtraLarge.jpg"
116 + },
117 + {
118 + "name": "Rolex Daytona With 2022 Service papers",
119 + "price": 28999,
120 + "currency": "USD",
121 + "url": "https://www.chrono24.com/rolex/rolex-daytona--id47576287.htm",
122 + "image": "https://img.chrono24.com/images/uhren/47576287-uih5or86s28wnda5g90r63as-ExtraLarge.jpg"
123 + },
124 + {
125 + "name": "Rolex MINT 2014 Rolex Daytona Chocolate Arabic Ceramic 116515 Rose Gold Rubber Watch Box",
126 + "price": 32951,
127 + "currency": "USD",
128 + "url": "https://www.chrono24.com/rolex/mint-2014-rolex-daytona-chocolate-arabic-ceramic-116515-rose-gold-rubber-watch-box--id47154966.htm",
129 + "image": "https://img.chrono24.com/images/uhren/47154966-r6dkf7h2erkfsl6r23zasbm2-ExtraLarge.jpg"
130 + },
131 + {
132 + "name": "Rolex Daytona 2004 FULL SET Cosmograph Daytona White Dial 40mm 116520",
133 + "price": 23299,
134 + "currency": "USD",
135 + "url": "https://www.chrono24.com/rolex/daytona--id48048581.htm",
136 + "image": "https://img.chrono24.com/images/uhren/81q2hpwrm3kk-0kzitltnu3d6tax8d5dw8lfl-ExtraLarge.jpg"
137 + },
138 + {
139 + "name": "Rolex Daytona Unworn 2026 White Panda 40mm Index Oyster 126500LN",
140 + "price": 39290,
141 + "currency": "USD",
142 + "url": "https://www.chrono24.com/rolex/daytona-unworn-2026-white-panda-40mm-index-oyster-126500ln--id47842605.htm",
143 + "image": "https://img.chrono24.com/images/uhren/47842605-e3q7sc06mymx5yk9efp7tl49-ExtraLarge.jpg"
144 + },
145 + {
146 + "name": "Rolex Daytona Rainbow",
147 + "price": 308000,
148 + "currency": "USD",
149 + "url": "https://www.chrono24.com/rolex/daytona-rainbow--id44687753.htm",
150 + "image": "https://img.chrono24.com/images/uhren/44687753-e4c6ur8979pbf6u5gbgbf7rb-ExtraLarge.jpg"
151 + },
152 + {
153 + "name": "Rolex Daytona 2017 Rolex Daytona Panda Excellent Condition, OG Box/Papers",
154 + "price": 31195,
155 + "currency": "USD",
156 + "url": "https://www.chrono24.com/rolex/daytona--id45800859.htm",
157 + "image": "https://img.chrono24.com/images/uhren/1iplmlt4nsmo-6zzh4jdl4zp8phcburmu383p-ExtraLarge.jpg"
158 + },
159 + {
160 + "name": "Rolex Daytona 2026 Factory Service Card",
161 + "price": 23499,
162 + "currency": "USD",
163 + "url": "https://www.chrono24.com/rolex/rolex-daytona--id45885316.htm",
164 + "image": "https://img.chrono24.com/images/uhren/45885316-by0veudk4p3ffsofi5ndc1s5-ExtraLarge.jpg"
165 + },
166 + {
167 + "name": "Rolex Daytona 2012 CHOCOLATE ARABIC DIAL",
168 + "price": 34995,
169 + "currency": "USD",
170 + "url": "https://www.chrono24.com/rolex/rolex-daytona--id47802361.htm",
171 + "image": "https://img.chrono24.com/images/uhren/47802361-lw346s7790pprv17rl3z5fnt-ExtraLarge.jpg"
172 + },
173 + {
174 + "name": "Rolex In Stock 2026 Daytona Panda Dial 126500LN Oyster Bracelet",
175 + "price": 40995,
176 + "currency": "USD",
177 + "url": "https://www.chrono24.com/rolex/rolex-in-stock-2026-daytona-panda-dial-126500ln-oyster-bracelet--id46376273.htm",
178 + "image": "https://img.chrono24.com/images/uhren/46376273-xpp94t8kf4bksaz4ozeis72a-ExtraLarge.jpg"
179 + },
180 + {
181 + "name": "Rolex Yellow Gold and Steel Daytona Black Index Dial - Oyster Bracelet 126503",
182 + "price": 29000,
183 + "currency": "USD",
184 + "url": "https://www.chrono24.com/rolex/rolex-yellow-gold-and-steel-daytona-black-index-dial---oyster-bracelet-126503--id33344357.htm",
185 + "image": "https://img.chrono24.com/images/uhren/33344357-f7ryhk8x464kpgm478p7bova-ExtraLarge.jpg"
186 + },
187 + {
188 + "name": "Rolex 2008 Daytona 116520 White Dial SS Oyster No Papers 40mm",
189 + "price": 22250,
190 + "currency": "USD",
191 + "url": "https://www.chrono24.com/rolex/rolex-2008-daytona-116520-white-dial-ss-oyster-no-papers-40mm--id46562562.htm",
192 + "image": "https://img.chrono24.com/images/uhren/46562562-p4ek3bk0gsobstovxxi3r0zf-ExtraLarge.jpg"
193 + },
194 + {
195 + "name": "Rolex 116519LN Daytona 40 mm &#34;Ghost&#34; Dial Oysterflex Bracelet Box 2017",
196 + "price": 41500,
197 + "currency": "USD",
198 + "url": "https://www.chrono24.com/rolex/116519ln-daytona-40-mm-ghost-dial-oysterflex-bracelet-box-2017--id47484399.htm",
199 + "image": "https://img.chrono24.com/images/uhren/47484399-jumo4mcgy5j0dfoneuvtw5rz-ExtraLarge.jpg"
200 + },
201 + {
202 + "name": "Rolex Daytona Black Dial - New Reference 126500LN 2024 unworn",
203 + "price": 29999,
204 + "currency": "USD",
205 + "url": "https://www.chrono24.com/rolex/daytona--id48188163.htm",
206 + "image": "https://img.chrono24.com/images/uhren/48188163-gqxngcth3rhqh7wrsob602o5-ExtraLarge.jpg"
207 + },
208 + {
209 + "name": "Rolex Daytona Ice Blue Dial Platinum &#34;Platona&#34;",
210 + "price": 95999,
211 + "currency": "USD",
212 + "url": "https://www.chrono24.com/rolex/rolex-daytona-ice-blue-dial-platinum-platona--id48011553.htm",
213 + "image": "https://img.chrono24.com/images/uhren/48011553-ikfx7ztz8dv5109jse7hhuo4-ExtraLarge.jpg"
214 + },
215 + {
216 + "name": "Rolex Daytona 1983 Big Red",
217 + "price": 94000,
218 + "currency": "USD",
219 + "url": "https://www.chrono24.com/rolex/daytona--id45057975.htm",
220 + "image": "https://img.chrono24.com/images/uhren/ts0ydmvv1lyy-hvwq1vawg95o2pkm983nyk7w-ExtraLarge.jpg"
221 + },
222 + {
223 + "name": "Rolex UNWORN Daytona 126519 White Gold Silver Dial Black Sundials Oysterflex Rubber Strap Full Set, Unworn Complete Box &amp; Papers",
224 + "price": 59825,
225 + "currency": "USD",
226 + "url": "https://www.chrono24.com/rolex/unworn-daytona-126519-white-gold-silver-dial-black-sundials-oysterflex-rubber-strap--id37443939.htm",
227 + "image": "https://img.chrono24.com/images/uhren/37443939-uvywtfhfuwt3jkzpubd4zq6y-ExtraLarge.jpg"
228 + },
229 + {
230 + "name": "Rolex Daytona Champagne Dial Two Tone Yellow Gold Oyster 126503 Full Set",
231 + "price": 26800,
232 + "currency": "USD",
233 + "url": "https://www.chrono24.com/rolex/rolex-daytona-champagne-dial-two-tone-yellow-gold-oyster-126503--id48028076.htm",
234 + "image": "https://img.chrono24.com/images/uhren/48028076-y7x3jnasqz1b8qn4nzdivqp0-ExtraLarge.jpg"
235 + },
236 + {
237 + "name": "Rolex Daytona Full Set",
238 + "price": 47000,
239 + "currency": "USD",
240 + "url": "https://www.chrono24.com/rolex/daytona--id47737648.htm",
241 + "image": "https://img.chrono24.com/images/uhren/z9501e6xlajw-juvzgx1hg3g1nr38zvbcwjqf-ExtraLarge.jpg"
242 + },
243 + {
244 + "name": "Rolex Daytona Cosmograph Daytona Panda White Dial Chrono Oyster 116500ln",
245 + "price": 32999,
246 + "currency": "USD",
247 + "url": "https://www.chrono24.com/rolex/rolex-daytona--id41933068.htm",
248 + "image": "https://img.chrono24.com/images/uhren/41933068-sgm47l57otshms6tziz67tyz-ExtraLarge.jpg"
249 + },
250 + {
251 + "name": "Rolex Daytona Chocolate Arabic Dial on Oysterflex Bracelet 116515LN 2012",
252 + "price": 34500,
253 + "currency": "USD",
254 + "url": "https://www.chrono24.com/rolex/daytona-chocolate-arabic-dial-on-oysterflex-bracelet-116515ln-2012--id48343319.htm",
255 + "image": "https://img.chrono24.com/images/uhren/48343319-o98db2efulm8zpidu4867o5b-ExtraLarge.jpg"
256 + },
257 + {
258 + "name": "Rolex 116595RBOW Daytona Rainbow Rose Gold",
259 + "price": 415000,
260 + "currency": "USD",
261 + "url": "https://www.chrono24.com/rolex/116595rbow-daytona-rainbow-rose-gold--id44352232.htm",
262 + "image": "https://img.chrono24.com/images/uhren/hjmlir6tw3ke-q4bf3jgr4f6ljo8ixnt5516k-ExtraLarge.jpg"
263 + },
264 + {
265 + "name": "Rolex UNWORN 116508 Cosmograph Daytona 18k Yellow Gold Oyster Bracelet 40mm Green Dial",
266 + "price": 88425,
267 + "currency": "USD",
268 + "url": "https://www.chrono24.com/rolex/rolex-unworn-116508-cosmograph-daytona-18k-yellow-gold-oyster-bracelet-40mm-green-dial--id23205010.htm",
269 + "image": "https://img.chrono24.com/images/uhren/23205010-0jeve62jx3exrnsubi85ndmo-ExtraLarge.jpg"
270 + },
271 + {
272 + "name": "Rolex Daytona White Gold Black Dial &#34;Baby Lemans&#34; Oysterflex",
273 + "price": 46999,
274 + "currency": "USD",
275 + "url": "https://www.chrono24.com/rolex/rolex-daytona-white-gold-black-dial-baby-lemans-oysterflex--id48011494.htm",
276 + "image": "https://img.chrono24.com/images/uhren/48011494-43zs75zjfaegspb1rkmyi0kw-ExtraLarge.jpg"
277 + },
278 + {
279 + "name": "Rolex Daytona New 2026 Full set Daytona Panda",
280 + "price": 37950,
281 + "currency": "USD",
282 + "url": "https://www.chrono24.com/rolex/rolex-daytona--id47036463.htm",
283 + "image": "https://img.chrono24.com/images/uhren/47036463-19ahs51o093f4b5vzw7jm3wk-ExtraLarge.jpg"
284 + },
285 + {
286 + "name": "Rolex Daytona Black and Rose Dial Rose Gold Rubber Oyster-flex Bracelet",
287 + "price": 44995,
288 + "currency": "USD",
289 + "url": "https://www.chrono24.com/rolex/rolex-daytona-black-and-rose-dial-rose-gold-rubber-oyster-flex-bracelet--id46034927.htm",
290 + "image": "https://img.chrono24.com/images/uhren/46034927-11x0jid1cd595pq882eymu9x-ExtraLarge.jpg"
291 + },
292 + {
293 + "name": "Rolex Daytona Cosmograph Daytona Panda White Dial Chrono Oyster 116500ln",
294 + "price": 32000,
295 + "currency": "USD",
296 + "url": "https://www.chrono24.com/rolex/daytona--id47467343.htm",
297 + "image": "https://img.chrono24.com/images/uhren/47467343-0osfjjgkp612aqlbhhfcrsz2-ExtraLarge.jpg"
298 + },
299 + {
300 + "name": "Rolex Daytona Zenith 16520 Complete True Collector Set",
301 + "price": 29855,
302 + "currency": "USD",
303 + "url": "https://www.chrono24.com/rolex/daytona--id46547125.htm",
304 + "image": "https://img.chrono24.com/images/uhren/46547125-lq9pz7ggnx0z5cl34y93ujnf-ExtraLarge.jpg"
305 + },
306 + {
307 + "name": "Rolex UNWORN Daytona 116503 Black Index Dial Two Tone Yellow Gold Stainless Steel Full Set, Unworn Complete Box &amp; Papers",
308 + "price": 25425,
309 + "currency": "USD",
310 + "url": "https://www.chrono24.com/rolex/rolex-unworn-daytona-116503-black-index-dial-two-tone-yellow-gold-stainless-steel--id11902212.htm",
311 + "image": "https://img.chrono24.com/images/uhren/11902212-0cqe4a4uob3gnbzo0rruefr0-ExtraLarge.jpg"
312 + },
313 + {
314 + "name": "Rolex Daytona ROLEX 116506 DAYTONA ICE BLUE INDEX PLATINUM 2026",
315 + "price": 94999,
316 + "currency": "USD",
317 + "url": "https://www.chrono24.com/rolex/rolex-daytona--id47264372.htm",
318 + "image": "https://img.chrono24.com/images/uhren/47264372-x99zlyst99jdw6xg9zf5e22m-ExtraLarge.jpg"
319 + },
320 + {
321 + "name": "Rolex 116506 Platinum Daytona Baguette Dial",
322 + "price": 105000,
323 + "currency": "USD",
324 + "url": "https://www.chrono24.com/rolex/116506-platinum-daytona-baguette-dial--id39483622.htm",
325 + "image": "https://img.chrono24.com/images/uhren/ro52u07ejwvf-axvhb51gwfm8b2ho3hb8fdo9-ExtraLarge.jpg"
326 + },
327 + {
328 + "name": "Rolex Daytona 2026 Unworn 40mm &#34;Platona&#34; Cosmograph Baguette Dial",
329 + "price": 135250,
330 + "currency": "USD",
331 + "url": "https://www.chrono24.com/rolex/daytona--id47662791.htm",
332 + "image": "https://img.chrono24.com/images/uhren/47662791-z6ev91e0th1mnc4i22nxexo0-ExtraLarge.jpg"
333 + },
334 + {
335 + "name": "Rolex Daytona Silver &#34;Ghost&#34; Dial",
336 + "price": 44999,
337 + "currency": "USD",
338 + "url": "https://www.chrono24.com/rolex/daytona-silver-ghost-dial--id45886055.htm",
339 + "image": "https://img.chrono24.com/images/uhren/45886055-6wiuolzjsxyi0hte0x5fb4rb-ExtraLarge.jpg"
340 + },
341 + {
342 + "name": "Rolex Le Mans Daytona 126528LN Le Mans Daytona Yellow Gold",
343 + "price": 220000,
344 + "currency": "USD",
345 + "url": "https://www.chrono24.com/rolex/rolex-le-mans-daytona--id47107552.htm",
346 + "image": "https://img.chrono24.com/images/uhren/47107552-ojhgnky33p827ve4uhklmh16-ExtraLarge.jpg"
347 + },
348 + {
349 + "name": "Rolex Daytona 40mm Yellow Gold Cosmograph Green Index Dial (116508)",
350 + "price": 80000,
351 + "currency": "USD",
352 + "url": "https://www.chrono24.com/rolex/rolex-daytona-40mm-yellow-gold-cosmograph-green-index-dial-116508--id21222403.htm",
353 + "image": "https://img.chrono24.com/images/uhren/21222403-pq37aqrzk9osliwbw9r2ncb4-ExtraLarge.jpg"
354 + },
355 + {
356 + "name": "Rolex Daytona, 116500LN, Black Dial Ready 2 Ship, Complete Set, Excellent Condition, Ceramic",
357 + "price": 27995,
358 + "currency": "USD",
359 + "url": "https://www.chrono24.com/rolex/rolex-daytona-116500ln-black-dial--id47993377.htm",
360 + "image": "https://img.chrono24.com/images/uhren/47993377-yu5zao0xczvsobk31c8izzix-ExtraLarge.jpg"
361 + },
362 + {
363 + "name": "Rolex Daytona NEW June 2026 Champagne Dial",
364 + "price": 27850,
365 + "currency": "USD",
366 + "url": "https://www.chrono24.com/rolex/daytona--id46820218.htm",
367 + "image": "https://img.chrono24.com/images/uhren/46820218-bguzge7y0jyoo7dhkrgs4ty9-ExtraLarge.jpg"
368 + },
369 + {
370 + "name": "Rolex MINT COMPLETE SET Cosmograph Daytona Black Dial Stainless Steel Oyster Bracelet 116520",
371 + "price": 25995,
372 + "currency": "USD",
373 + "url": "https://www.chrono24.com/rolex/rolex-mint-complete-set-cosmograph-daytona-black-dial-stainless-steel-oyster-bracelet-116520--id44389376.htm",
374 + "image": "https://img.chrono24.com/images/uhren/44389376-tuyxf4fod18741toktjj0dw0-ExtraLarge.jpg"
375 + },
376 + {
377 + "name": "Rolex UNWORN Cosmograph Daytona 126515 Rose Gold Chocolate Brown Index Dial Oysterflex Rubber Strap",
378 + "price": 56325,
379 + "currency": "USD",
380 + "url": "https://www.chrono24.com/rolex/rolex-unworn-cosmograph-daytona-126515-rose-gold-chocolate-brown-index-dial--id41709462.htm",
381 + "image": "https://img.chrono24.com/images/uhren/41709462-k5ptc7ruoqs2jbabiuewus6y-ExtraLarge.jpg"
382 + },
383 + {
384 + "name": "Rolex Daytona 6263",
385 + "price": 295000,
386 + "currency": "USD",
387 + "url": "https://www.chrono24.com/rolex/daytona-6263--id44735333.htm",
388 + "image": "https://img.chrono24.com/images/uhren/44735333-xbhw568qbhc9mzc5p5l2i0if-ExtraLarge.jpg"
389 + },
390 + {
391 + "name": "Rolex Daytona UNWORN 2026 Pikachu YML Gold/Black 40mm Index Oysterflex 126518LN",
392 + "price": 68995,
393 + "currency": "USD",
394 + "url": "https://www.chrono24.com/rolex/daytona-unworn-2026-pikachu-yml-goldblack-40mm-index-oysterflex-126518ln--id47842596.htm",
395 + "image": "https://img.chrono24.com/images/uhren/47842596-yxkugipfk30s4xt8sc42zz90-ExtraLarge.jpg"
396 + },
397 + {
398 + "name": "Rolex Daytona UNWORN 2026 Sundust/Black 40mm Index Oyster 126505",
399 + "price": 64995,
400 + "currency": "USD",
401 + "url": "https://www.chrono24.com/rolex/daytona-unworn-2026-sundustblack-40mm-index-oyster-126505--id47248125.htm",
402 + "image": "https://img.chrono24.com/images/uhren/47248125-y4wr4aq6coolxit6ud5lqzf8-ExtraLarge.jpg"
403 + },
404 + {
405 + "name": "Rolex Daytona White Dial Panda",
406 + "price": 31999,
407 + "currency": "USD",
408 + "url": "https://www.chrono24.com/rolex/daytona-white-dial-panda--id38786770.htm",
409 + "image": "https://img.chrono24.com/images/uhren/38786770-kcwd2d1pddr5078w31ngcj4v-ExtraLarge.jpg"
410 + },
411 + {
412 + "name": "Rolex Daytona NEW 2026 Daytona 40mm Black Dial 126500LN - Complete Set",
413 + "price": 33399,
414 + "currency": "USD",
415 + "url": "https://www.chrono24.com/rolex/rolex-daytona--id46668428.htm",
416 + "image": "https://img.chrono24.com/images/uhren/46668428-coqvxtw4oxpgjphxrdurz1zm-ExtraLarge.jpg"
417 + },
418 + {
419 + "name": "Rolex Daytona Ghost White Gold Oysterflex 116519LN Grey Dial Full Set Like New",
420 + "price": 45800,
421 + "currency": "USD",
422 + "url": "https://www.chrono24.com/rolex/daytona-ghost-white-gold-oysterflex-116519ln-grey-dial--id31519416.htm",
423 + "image": "https://img.chrono24.com/images/uhren/31519416-vdndhf7qw8isdldn3i2i4h2w-ExtraLarge.jpg"
424 + },
425 + {
426 + "name": "Rolex Daytona 116519 Turquoise Dial 18k White Gold Wristwatch Full Set",
427 + "price": 107000,
428 + "currency": "USD",
429 + "url": "https://www.chrono24.com/rolex/rolex-daytona--id42928076.htm",
430 + "image": "https://img.chrono24.com/images/uhren/42928076-nuawv7oimms6amtp1wltrtgs-ExtraLarge.jpg"
431 + },
432 + {
433 + "name": "Rolex Daytona 116503 White Dial Two Tone Mens Watch Box Papers",
434 + "price": 22999,
435 + "currency": "USD",
436 + "url": "https://www.chrono24.com/rolex/daytona-116503-white-dial-two-tone-mens-watch-box-papers--id42193431.htm",
437 + "image": "https://img.chrono24.com/images/uhren/42193431-82bpf4y9cmibdeww390vr5lt-ExtraLarge.jpg"
438 + },
439 + {
440 + "name": "Rolex Daytona DAYTONA ON THEATER STRAP 2017 COMPLETE SET",
441 + "price": 29000,
442 + "currency": "USD",
443 + "url": "https://www.chrono24.com/rolex/daytona--id47958822.htm",
444 + "image": "https://img.chrono24.com/images/uhren/chk9fwqgwz09-5oaggbnzm5b2z8urwashrhxw-ExtraLarge.jpg"
445 + },
446 + {
447 + "name": "Rolex Cosmograph Daytona Yellow Gold Black Paul Newman",
448 + "price": 54850,
449 + "currency": "USD",
450 + "url": "https://www.chrono24.com/rolex/rolex-cosmograph-daytona--id46531878.htm",
451 + "image": "https://img.chrono24.com/images/uhren/46531878-8zfqriivaprtwzzlem6hggf0-ExtraLarge.jpg"
452 + },
453 + {
454 + "name": "Rolex Daytona Unworn 2026 Everose Gold 40mm Meteorite Dial Oysterflex",
455 + "price": 85100,
456 + "currency": "USD",
457 + "url": "https://www.chrono24.com/rolex/daytona--id47662993.htm",
458 + "image": "https://img.chrono24.com/images/uhren/47662993-6zz00lr1tehb5uok0oayt91o-ExtraLarge.jpg"
459 + },
460 + {
461 + "name": "Rolex Daytona 40mm 18K Yellow Gold White Diamond Dial &amp; Yellow Gold Bezel 16528 All Factory Diamond Dial, Zenith Movement",
462 + "price": 39850,
463 + "currency": "USD",
464 + "url": "https://www.chrono24.com/rolex/rolex-rolex-daytona-40mm-18k-yellow-gold-white-diamond-dial--yellow-gold-bezel-16528--id45156338.htm",
465 + "image": "https://img.chrono24.com/images/uhren/45156338-m9yvf6np1huwinu55d6wup4o-ExtraLarge.jpg"
466 + },
467 + {
468 + "name": "Rolex Cosmograph Daytona Rose Gold Dial Black Subdials Oysterflex 116515LN",
469 + "price": 47000,
470 + "currency": "USD",
471 + "url": "https://www.chrono24.com/rolex/rolex-cosmograph-daytona-rose-gold-dial-black-subdials-oysterflex-116515ln--id26730122.htm",
472 + "image": "https://img.chrono24.com/images/uhren/26730122-vf57m6afdlsqgx0ldly658ol-ExtraLarge.jpg"
473 + },
474 + {
475 + "name": "Rolex - Pre-owned Stainless Steel Daytona &#34;Big Daytona&#34; Black Dial 6240",
476 + "price": 115000,
477 + "currency": "USD",
478 + "url": "https://www.chrono24.com/rolex/--pre-owned-stainless-steel-daytona-big-daytona-black-dial-6240--id48237595.htm",
479 + "image": "https://img.chrono24.com/images/uhren/48237595-tlk8ae7ef6ll768zti4icrdo-ExtraLarge.jpg"
480 + },
481 + {
482 + "name": "Rolex UNPOLISHED 1997 Good Condition Daytona Steel Black Dial 16520",
483 + "price": 26495,
484 + "currency": "USD",
485 + "url": "https://www.chrono24.com/rolex/unpolished-1997-good-condition-daytona-steel-black-dial-16520--id47543639.htm",
486 + "image": "https://img.chrono24.com/images/uhren/47543639-p88dll8ez6dxakug6t48zut5-ExtraLarge.jpg"
487 + },
488 + {
489 + "name": "Rolex Daytona Panda Like New Condition Comes Box",
490 + "price": 28900,
491 + "currency": "USD",
492 + "url": "https://www.chrono24.com/rolex/daytona--id48398685.htm",
493 + "image": "https://img.chrono24.com/images/uhren/9ofnbe6scwtl-kjn5yjuo8sueb52nogubigw9-ExtraLarge.jpg"
494 + },
495 + {
496 + "name": "Rolex NEW 2026 Daytona 40mm 126506 Platinum Ice Blue Diamond Baguette Dial",
497 + "price": 138325,
498 + "currency": "USD",
499 + "url": "https://www.chrono24.com/rolex/new-2026-daytona-40mm-126506-platinum-ice-blue-diamond-baguette-dial--id45476868.htm",
500 + "image": "https://img.chrono24.com/images/uhren/c89mhbcl87i4-8ou8b7al2np5gnkuqatc074m-ExtraLarge.jpg"
501 + },
502 + {
503 + "name": "Rolex Daytona Full Set with Box, Papers, Green Tag; Excellent Condition",
504 + "price": 30568,
505 + "currency": "USD",
506 + "url": "https://www.chrono24.com/rolex/rolex-daytona--id47536427.htm",
507 + "image": "https://img.chrono24.com/images/uhren/47536427-27h2v7gletjs25y4eg879vwg-ExtraLarge.jpg"
508 + },
509 + {
510 + "name": "Rolex Daytona 116500LN - Mint - White Dial - Panda!",
511 + "price": 30950,
512 + "currency": "USD",
513 + "url": "https://www.chrono24.com/rolex/rolex-daytona--id47559625.htm",
514 + "image": "https://img.chrono24.com/images/uhren/47559625-zuo61goaoak470xh5le4qn39-ExtraLarge.jpg"
515 + },
516 + {
517 + "name": "Rolex Daytona Rolex Daytona Sundust Dial Rose Gold Full Set Box &amp; Paper",
518 + "price": 51000,
519 + "currency": "USD",
520 + "url": "https://www.chrono24.com/rolex/daytona--id48046984.htm",
521 + "image": "https://img.chrono24.com/images/uhren/48046984-wgc1ptjqgcv7cx94tfn5fvks-ExtraLarge.jpg"
522 + },
523 + {
524 + "name": "Rolex Daytona Panda 2025 - New Style Box",
525 + "price": 36495,
526 + "currency": "USD",
527 + "url": "https://www.chrono24.com/rolex/daytona-panda-2025---new-style-box--id42798945.htm",
528 + "image": "https://img.chrono24.com/images/uhren/j27142j9sgi0-h9mes2te5iryr9gkbisjw9pe-ExtraLarge.jpg"
529 + },
530 + {
531 + "name": "Rolex Daytona SUPER MINT BLACK CERAMIC DAYTONA",
532 + "price": 27500,
533 + "currency": "USD",
534 + "url": "https://www.chrono24.com/rolex/daytona--id47960968.htm",
535 + "image": "https://img.chrono24.com/images/uhren/n3cjr06y2fcn-ckid8yu2sinf7z2cwdemfxrr-ExtraLarge.jpg"
536 + },
537 + {
538 + "name": "Rolex Daytona 116520 40mm with a White Dial and Rolex Box + Papers",
539 + "price": 23995,
540 + "currency": "USD",
541 + "url": "https://www.chrono24.com/rolex/daytona--id47560800.htm",
542 + "image": "https://img.chrono24.com/images/uhren/uz3jiaq5zim7-voyucxxu685y1e5ms5e6b1l8-ExtraLarge.jpg"
543 + },
544 + {
545 + "name": "Rolex UNPOLISHED 1999 EXCELLENT Condition Daytona White Gold Mother-of-Pearl Arabic Dial 16519 FULL SET Zenith Movement",
546 + "price": 38495,
547 + "currency": "USD",
548 + "url": "https://www.chrono24.com/rolex/unpolished-1999-excellent-condition-daytona-white-gold-mother-of-pearl-arabic-dial-16519--id48316112.htm",
549 + "image": "https://img.chrono24.com/images/uhren/48316112-r6houfu2uonvjdpgtt63e0si-ExtraLarge.jpg"
550 + },
551 + {
552 + "name": "Rolex Daytona on Oysterflex, Rose gold, ceramic bezel with black dial",
553 + "price": 48750,
554 + "currency": "USD",
555 + "url": "https://www.chrono24.com/rolex/rolex-daytona-on-oysterflex-rose-gold-ceramic-bezel-with-black-dial--id47909290.htm",
556 + "image": "https://img.chrono24.com/images/uhren/47909290-kdde9klx0urqcvtskf8k3p35-ExtraLarge.jpg"
557 + },
558 + {
559 + "name": "Rolex Daytona UNWORN 2026 Pikachu YML 40mm Golden/Black Index Oyster 126508",
560 + "price": 75950,
561 + "currency": "USD",
562 + "url": "https://www.chrono24.com/rolex/daytona-unworn-2026-pikachu-yml-40mm-goldenblack-index-oyster-126508--id47955408.htm",
563 + "image": "https://img.chrono24.com/images/uhren/47955408-szax0mn0ib34hmp1wh2lsmlc-ExtraLarge.jpg"
564 + },
565 + {
566 + "name": "Rolex Unworn 2026 Daytona &#34;Ghost&#34; 126519LN Oyster-flex 18K White Gold In Stock",
567 + "price": 59995,
568 + "currency": "USD",
569 + "url": "https://www.chrono24.com/rolex/rolex-unworn-2026-daytona-ghost-126519ln-oyster-flex-18k-white-gold--in-stock--id46268875.htm",
570 + "image": "https://img.chrono24.com/images/uhren/46268875-0ad96zpp6ns736d8er4xmkzt-ExtraLarge.jpg"
571 + },
572 + {
573 + "name": "Rolex Daytona Full Set",
574 + "price": 30400,
575 + "currency": "USD",
576 + "url": "https://www.chrono24.com/rolex/daytona--id47981989.htm",
577 + "image": "https://img.chrono24.com/images/uhren/4701sqi92xs4-or2nus80129cfd3an5xwu90q-ExtraLarge.jpg"
578 + },
579 + {
580 + "name": "Rolex Daytona 2026 Unworn Yellow Gold &#39;Tiffany&#34; 41mm Turquoise Dial",
581 + "price": 97495,
582 + "currency": "USD",
583 + "url": "https://www.chrono24.com/rolex/rolex-daytona--id47663169.htm",
584 + "image": "https://img.chrono24.com/images/uhren/47663169-09k6jfq5xaraa78fz15n8wtd-ExtraLarge.jpg"
585 + },
586 + {
587 + "name": "Rolex Daytona Rainbow Full Set Box &amp; Papers",
588 + "price": 473000,
589 + "currency": "USD",
590 + "url": "https://www.chrono24.com/rolex/daytona-rainbow--id45591631.htm",
591 + "image": "https://img.chrono24.com/images/uhren/45591631-jiokoo05rlpe96xvy3gpuh2b-ExtraLarge.jpg"
592 + },
593 + {
594 + "name": "Rolex Daytona 2024 126505-0003 Chronograph Cosmograph Daytona Everose / Sundust - Black / Oyster",
595 + "price": 52000,
596 + "currency": "USD",
597 + "url": "https://www.chrono24.com/rolex/daytona-2024-126505-0003-chronograph-cosmograph-daytona-everose--sundust---black--oyster--id47499556.htm",
598 + "image": "https://img.chrono24.com/images/uhren/47499556-m1lygkdm3ecsj3jhp6xc2ba4-ExtraLarge.jpg"
599 + },
600 + {
601 + "name": "Rolex Daytona White Stick Dial Yellow Gold 16518 Cosmograph Zenith",
602 + "price": 44500,
603 + "currency": "USD",
604 + "url": "https://www.chrono24.com/rolex/daytona-white-stick-dial-yellow-gold-16518-cosmograph-zenith--id26240716.htm",
605 + "image": "https://img.chrono24.com/images/uhren/26240716-ukndlho7z5obuit0grcqrrna-ExtraLarge.jpg"
606 + },
607 + {
608 + "name": "Rolex Like NEW 2023 Cosmograph Daytona White Gold Meteorite Dial 116519LN FULL SET Oysterflex",
609 + "price": 89995,
610 + "currency": "USD",
611 + "url": "https://www.chrono24.com/rolex/like-new-2023-cosmograph-daytona-white-gold-meteorite-dial-116519ln--id44498001.htm",
612 + "image": "https://img.chrono24.com/images/uhren/44498001-uo8nr33rms4lyxkfv530vx8n-ExtraLarge.jpg"
613 + },
614 + {
615 + "name": "Rolex &#39;le Mans&#39; Daytona 2025 ROLEX 126525LN DAYTONA &#34;LE MANS&#34; 2025 UNWORN",
616 + "price": 204000,
617 + "currency": "USD",
618 + "url": "https://www.chrono24.com/rolex/rolex-le-mans-daytona--2025--id47681712.htm",
619 + "image": "https://img.chrono24.com/images/uhren/47681712-dkxhxs3iaou95zl6ffhyq31b-ExtraLarge.jpg"
620 + },
621 + {
622 + "name": "Rolex Le Mans Daytona UNWORN 2026 Le Mans",
623 + "price": 204995,
624 + "currency": "USD",
625 + "url": "https://www.chrono24.com/rolex/rolex-le-mans-daytona--id46621243.htm",
626 + "image": "https://img.chrono24.com/images/uhren/46621243-kd4vda8q1q0age4ti52uff5y-ExtraLarge.jpg"
627 + },
628 + {
629 + "name": "Rolex Daytona Rose Gold Chocolate Oysterflex Unworn White Tag",
630 + "price": 45900,
631 + "currency": "USD",
632 + "url": "https://www.chrono24.com/rolex/daytona-rose-gold-chocolate-oysterflex-unworn-white-tag--id47662083.htm",
633 + "image": "https://img.chrono24.com/images/uhren/wv8gqcfeur3l-rgkz5fgblq8mkbk6oaskk2sp-ExtraLarge.jpg"
634 + },
635 + {
636 + "name": "Rolex Daytona Black Dial",
637 + "price": 27099,
638 + "currency": "USD",
639 + "url": "https://www.chrono24.com/rolex/daytona-black-dial--id28484494.htm",
640 + "image": "https://img.chrono24.com/images/uhren/f5v6pasgis7a-rqv97ur5qg6n618efe32cmh6-ExtraLarge.jpg"
641 + },
642 + {
643 + "name": "Rolex NEW Daytona 126503 White Index Dial Two Tone Yellow Gold Stainless Steel",
644 + "price": 28725,
645 + "currency": "USD",
646 + "url": "https://www.chrono24.com/rolex/rolex-new-daytona-126503-white-index-dial-two-tone-yellow-gold-stainless-steel--id38062427.htm",
647 + "image": "https://img.chrono24.com/images/uhren/38062427-geydh5jeg7x3aintvyva3dyq-ExtraLarge.jpg"
648 + },
649 + {
650 + "name": "Rolex Daytona 2025 Ghost 40mm Silver Steel/Black Index Oyster 126509",
651 + "price": 62800,
652 + "currency": "USD",
653 + "url": "https://www.chrono24.com/rolex/daytona-2025-ghost-40mm-silver-steelblack-index-oyster-126509--id47160942.htm",
654 + "image": "https://img.chrono24.com/images/uhren/47160942-l624e3zs7n9j7s6eabtdy7hw-ExtraLarge.jpg"
655 + },
656 + {
657 + "name": "Rolex NEW 2026 Daytona &#34;Baby Le Mans&#34; 40mm 126519LN White Gold Black Dial",
658 + "price": 51870,
659 + "currency": "USD",
660 + "url": "https://www.chrono24.com/rolex/rolex-new-2026-daytona-baby-le-mans-40mm-126519ln-white-gold-black-dial--id46818789.htm",
661 + "image": "https://img.chrono24.com/images/uhren/46818789-rc9t84oy7bqfzook6ovbegv6-ExtraLarge.jpg"
662 + },
663 + {
664 + "name": "Rolex Daytona Black Dial Black Bezel Oyster 116500LN 2023 Full Set Like New",
665 + "price": 29300,
666 + "currency": "USD",
667 + "url": "https://www.chrono24.com/rolex/rolex-daytona-black-dial-black-bezel-oyster-116500ln--id47560941.htm",
668 + "image": "https://img.chrono24.com/images/uhren/47560941-jj2bhsjudzsxm8os4zzxswjj-ExtraLarge.jpg"
669 + },
670 + {
671 + "name": "Rolex Like NEW 2024 Daytona Rose Gold Black Diamond Dial 126515LN FULL SET Oysterflex",
672 + "price": 48995,
673 + "currency": "USD",
674 + "url": "https://www.chrono24.com/rolex/like-new-2024-daytona-rose-gold-black-diamond-dial-126515ln--id48362949.htm",
675 + "image": "https://img.chrono24.com/images/uhren/48362949-2keqiqcutz9eii18tctx7vgo-ExtraLarge.jpg"
676 + },
677 + {
678 + "name": "Rolex Daytona Black Diamond Dial Oysterflex 2021 Watch and card",
679 + "price": 40200,
680 + "currency": "USD",
681 + "url": "https://www.chrono24.com/rolex/daytona-black-diamond-dial-oysterflex-2021--id48045897.htm",
682 + "image": "https://img.chrono24.com/images/uhren/9a6p5aloeou4-lakz9w4zec65cwc8lvf373p0-ExtraLarge.jpg"
683 + },
684 + {
685 + "name": "Rolex UNWORN Daytona 116518 Yellow Gold 40mm Black Paul Newman Index Dial Black Oysterflex Unworn Complete Box &amp; Papers",
686 + "price": 49425,
687 + "currency": "USD",
688 + "url": "https://www.chrono24.com/rolex/rolex-unworn-daytona-116518-yellow-gold-40mm-black-paul-newman-index-dial-black-oysterflex--id21187164.htm",
689 + "image": "https://img.chrono24.com/images/uhren/21187164-tdv8un5d657fec6c9trj2g3o-ExtraLarge.jpg"
690 + },
691 + {
692 + "name": "Rolex 1993 Daytona 16528 Champagne Inverted 6 Dial YG Oyster Unpolished 40mm",
693 + "price": 39750,
694 + "currency": "USD",
695 + "url": "https://www.chrono24.com/rolex/rolex-1993-daytona-16528-champagne-inverted-6-dial-yg-oyster-unpolished-40mm--id47020343.htm",
696 + "image": "https://img.chrono24.com/images/uhren/47020343-tm7yd8npf6t2bnpmxz9z7n9d-ExtraLarge.jpg"
697 + },
698 + {
699 + "name": "Rolex Daytona Chocolate Dial Rose Gold",
700 + "price": 58999,
701 + "currency": "USD",
702 + "url": "https://www.chrono24.com/rolex/rolex-daytona-chocolate-dial-rose-gold--id48010607.htm",
703 + "image": "https://img.chrono24.com/images/uhren/48010607-riq0wx55ygd7h3m0exlnbpue-ExtraLarge.jpg"
704 + },
705 + {
706 + "name": "Rolex Daytona 2025 Yellow Gold Two-Tone 40mm White Dial",
707 + "price": 25995,
708 + "currency": "USD",
709 + "url": "https://www.chrono24.com/rolex/rolex-daytona--id48341060.htm",
710 + "image": "https://img.chrono24.com/images/uhren/48341060-zjn0sim6l896w3seok47exnq-ExtraLarge.jpg"
711 + },
712 + {
713 + "name": "Rolex Daytona 126506 DAYTONA ICE BLUE STICK PLATINUM OPEN CASE BACK 2026",
714 + "price": 124499,
715 + "currency": "USD",
716 + "url": "https://www.chrono24.com/rolex/rolex-daytona--id47941281.htm",
717 + "image": "https://img.chrono24.com/images/uhren/47941281-y21fzm370aaus16jewata0ey-ExtraLarge.jpg"
718 + },
719 + {
720 + "name": "Rolex 2025 Daytona 40mm 126518LN Yellow Gold Oysterflex Meteorite Dial",
721 + "price": 87805,
722 + "currency": "USD",
723 + "url": "https://www.chrono24.com/rolex/2025-daytona-40mm-126518ln-yellow-gold-oysterflex-meteorite-dial--id46422267.htm",
724 + "image": "https://img.chrono24.com/images/uhren/46422267-0qo8atxyah08ji1v0ujna514-ExtraLarge.jpg"
725 + },
726 + {
727 + "name": "Rolex Daytona NEW 2026 Platinum Open Caseback Oyster Bracelet Brown Ceramic Bezel",
728 + "price": 134995,
729 + "currency": "USD",
730 + "url": "https://www.chrono24.com/rolex/rolex-daytona-new-2026-platinum-open-caseback-oyster-bracelet-brown-ceramic-bezel--id46644455.htm",
731 + "image": "https://img.chrono24.com/images/uhren/46644455-9fc0n8txpdrvogg04gqq7zok-ExtraLarge.jpg"
732 + },
733 + {
734 + "name": "Rolex Daytona Panda",
735 + "price": 25350,
736 + "currency": "USD",
737 + "url": "https://www.chrono24.com/rolex/rolex-daytona--id47262657.htm",
738 + "image": "https://img.chrono24.com/images/uhren/47262657-ns1tzz35xip2dzpbosw37gcs-ExtraLarge.jpg"
739 + },
740 + {
741 + "name": "Rolex Daytona 116515LN “CHOCO ARABIC” Brown Arabic Dial Rose Gold 40mm 2016",
742 + "price": 36000,
743 + "currency": "USD",
744 + "url": "https://www.chrono24.com/rolex/daytona-116515ln-choco-arabic-brown-arabic-dial-rose-gold-40mm-2016--id47484407.htm",
745 + "image": "https://img.chrono24.com/images/uhren/tx7wn8yl20a3-2j5gmcunilbh64bfke537w8u-ExtraLarge.jpg"
746 + },
747 + {
748 + "name": "Rolex Daytona Discontinued White/Panda Ceramic Bezel Full Set 116500LN",
749 + "price": 32000,
750 + "currency": "USD",
751 + "url": "https://www.chrono24.com/rolex/rolex-daytona--id48406807.htm",
752 + "image": "https://img.chrono24.com/images/uhren/48406807-iulk9ktsmp8r7z5czzyg6bq1-ExtraLarge.jpg"
753 + },
754 + {
755 + "name": "Rolex 2006 Daytona 116509 Black Racing Dial White Gold 18kt Oyster No Paper 40mm",
756 + "price": 33750,
757 + "currency": "USD",
758 + "url": "https://www.chrono24.com/rolex/rolex-2006-daytona-116509-black-racing-dial-white-gold-18kt-oyster-no-paper-40mm--id46564050.htm",
759 + "image": "https://img.chrono24.com/images/uhren/46564050-roelx3pwkzviqlgmupjy9k8m-ExtraLarge.jpg"
760 + },
761 + {
762 + "name": "Rolex Daytona Zenith White Panda Dial Two Tone Gold and Steel 16523 RARE Dial - Inverted 6",
763 + "price": 18500,
764 + "currency": "USD",
765 + "url": "https://www.chrono24.com/rolex/daytona-zenith-white-panda-dial-two-tone-gold-and-steel-16523--id45408353.htm",
766 + "image": "https://img.chrono24.com/images/uhren/m8kolipd173f-3l9irzf11bejpumxomfkxekb-ExtraLarge.jpg"
767 + },
768 + {
769 + "name": "Rolex Daytona Paul Newman Yellow Gold Black Dial Red Hand 116518LN Oysterflex 2022 Unworn Full Set",
770 + "price": 48000,
771 + "currency": "USD",
772 + "url": "https://www.chrono24.com/rolex/daytona-paul-newman-yellow-gold-black-dial-red-hand-116518ln-oysterflex--id44772404.htm",
773 + "image": "https://img.chrono24.com/images/uhren/44772404-jro97k647kedoj4lytxryttl-ExtraLarge.jpg"
774 + },
775 + {
776 + "name": "Rolex 40mm Daytona 18K Yellow Gold Cosmograph Yellow Gold Dial Mens Watch 116508",
777 + "price": 46499,
778 + "currency": "USD",
779 + "url": "https://www.chrono24.com/rolex/rolex-40mm-daytona-18k-yellow-gold-cosmograph-yellow-gold-dial-mens-watch-116508--id44302176.htm",
780 + "image": "https://img.chrono24.com/images/uhren/44302176-0r93x5gteht151yrx9z1ppyh-ExtraLarge.jpg"
781 + },
782 + {
783 + "name": "Rolex Daytona ROLEX 116506 DAYTONA ICE BLUE INDEX PLATINUM",
784 + "price": 95999,
785 + "currency": "USD",
786 + "url": "https://www.chrono24.com/rolex/rolex-daytona--id46919563.htm",
787 + "image": "https://img.chrono24.com/images/uhren/46919563-cg2bynw1va3xx9emrprb7b44-ExtraLarge.jpg"
788 + },
789 + {
790 + "name": "Rolex Daytona 116515LN",
791 + "price": 37000,
792 + "currency": "USD",
793 + "url": "https://www.chrono24.com/rolex/daytona-116515ln--id47990589.htm",
794 + "image": "https://img.chrono24.com/images/uhren/47990589-j0z9lh9dwll83bvjfuyv4o2h-ExtraLarge.jpg"
795 + },
796 + {
797 + "name": "Rolex Daytona NEW 2026 126500LN White Panda Dial Stainless Steel Ceramic Bezel",
798 + "price": 39995,
799 + "currency": "USD",
800 + "url": "https://www.chrono24.com/rolex/rolex-daytona-new-2026-126500ln-white-panda-dial-stainless-steel-ceramic-bezel--id46670778.htm",
801 + "image": "https://img.chrono24.com/images/uhren/46670778-quyj66zw1wv1kyp1lts7gjsh-ExtraLarge.jpg"
802 + },
803 + {
804 + "name": "Rolex COMPLETE SET Daytona 116500LN White Dial Ceramic Bezel Panda Pre-Owned",
805 + "price": 33425,
806 + "currency": "USD",
807 + "url": "https://www.chrono24.com/rolex/rolex-complete-set-daytona-116500ln-white-dial-ceramic-bezel--panda-pre-owned--id25377812.htm",
808 + "image": "https://img.chrono24.com/images/uhren/25377812-mlosxjbhnx4hg9sy0hp2d07j-ExtraLarge.jpg"
809 + },
810 + {
811 + "name": "Rolex 2001 Daytona 40mm 16523 Two-Tone White Dial",
812 + "price": 16425,
813 + "currency": "USD",
814 + "url": "https://www.chrono24.com/rolex/rolex-2001-daytona-40mm-16523-two-tone-white-dial--id48418475.htm",
815 + "image": "https://img.chrono24.com/images/uhren/48418475-lujy1izlh4rn50gjfqkfk7b4-ExtraLarge.jpg"
816 + },
817 + {
818 + "name": "Rolex Daytona Yellow Gold MOP Baguette Diamond Bezel Watch Service card included",
819 + "price": 145000,
820 + "currency": "USD",
821 + "url": "https://www.chrono24.com/rolex/rolex-daytona-yellow-gold-mop-baguette-diamond-bezel-watch--id45885756.htm",
822 + "image": "https://img.chrono24.com/images/uhren/45885756-sogovyhbgneex20d9tg1k193-ExtraLarge.jpg"
823 + },
824 + {
825 + "name": "Rolex Daytona 2025 Cosmograph 40mm Black Dial Black Ceramic Bezel",
826 + "price": 30795,
827 + "currency": "USD",
828 + "url": "https://www.chrono24.com/rolex/rolex-daytona--id48341551.htm",
829 + "image": "https://img.chrono24.com/images/uhren/48341551-cc2qg78fb1sweaj3517py5p6-ExtraLarge.jpg"
830 + },
831 + {
832 + "name": "Rolex UNWORN 126506 Daytona Platinum Ice Blue Baguette Dial 40mm Oyster Bracelet Ceramic Full Set, Unworn Complete Box &amp; Papers",
833 + "price": 147425,
834 + "currency": "USD",
835 + "url": "https://www.chrono24.com/rolex/rolex-unworn-126506-daytona-platinum-ice-blue-baguette-dial-40mm-oyster-bracelet-ceramic--id48361793.htm",
836 + "image": "https://img.chrono24.com/images/uhren/48361793-nibc4jv7kj4t9yfzuhatqrv7-ExtraLarge.jpg"
837 + },
838 + {
839 + "name": "Rolex 2024 Card Rolex Daytona Cosmograph 126500ln Black 40mm Steel Oyster Watch",
840 + "price": 29790,
841 + "currency": "USD",
842 + "url": "https://www.chrono24.com/rolex/2024-card-rolex-daytona-cosmograph-126500ln-black-40mm-steel-oyster-watch--id47901365.htm",
843 + "image": "https://img.chrono24.com/images/uhren/47901365-99g2hq2o7717h17jhldjrp3l-ExtraLarge.jpg"
844 + },
845 + {
846 + "name": "Rolex UNWORN COMPLETE SET Daytona 116505 Chocolate Index Dial Rose Gold Oyster Bracelet 40mm Full Set, Unworn Complete Box &amp; Papers",
847 + "price": 65425,
848 + "currency": "USD",
849 + "url": "https://www.chrono24.com/rolex/rolex-unworn-complete-set-daytona-116505-chocolate-index-dial-rose-gold-oyster-bracelet-40mm--id33444926.htm",
850 + "image": "https://img.chrono24.com/images/uhren/33444926-udhz962w6vv1dz76ls1aovhw-ExtraLarge.jpg"
851 + }
852 + ],
853 + "totalListings": 674080
854 + }
855 + },
856 + "expect": {
857 + "minCount": 10,
858 + "kinds": [
859 + "listing"
860 + ]
861 + },
862 + "note": "captured live from https://www.chrono24.com/rolex/daytona--mod2.htm",
863 + "capturedAt": "2026-09-07T04:42:04.684Z"
864 +}
\ No newline at end of file
added data/fixtures/comicconnect/sold-comics-page-1.json +285 −0
@@ -0,0 +1,285 @@
1 +{
2 + "raw": {
3 + "url": "https://www.comicconnect.com/browse/comics/?filtertype=Sold&sort_type=ended_desc&page=1",
4 + "externalId": "sold:/browse/comics/:1",
5 + "kind": "sale",
6 + "engine": "api",
7 + "fetchedAt": "2026-09-07T04:39:30.572Z",
8 + "payload": {
9 + "kind": "sold_page",
10 + "url": "https://www.comicconnect.com/browse/comics/?filtertype=Sold&sort_type=ended_desc&page=1",
11 + "page": 1,
12 + "totalResults": 479121,
13 + "cards": [
14 + {
15 + "itemId": "1101270",
16 + "url": "https://www.comicconnect.com/item/1101270",
17 + "title": "YOUNG AVENGERS (2005-06) #1",
18 + "gradeLine": "Marvel CGC NM/M: 9.8",
19 + "soldOn": "Friday, 08/14/2026 12:23 AM",
20 + "soldFor": 187.45,
21 + "saleType": "auction",
22 + "buyersPremium": true,
23 + "noReserve": true,
24 + "comments": "white pages 1st app. of Young Avengers",
25 + "image": "https://www.comicconnect.com/coverimages/gallery425/you41-36.jpg"
26 + },
27 + {
28 + "itemId": "1101285",
29 + "url": "https://www.comicconnect.com/item/1101285",
30 + "title": "X-MEN (1963-2011) #282",
31 + "gradeLine": "Marvel CGC NM/M: 9.8",
32 + "soldOn": "Friday, 08/14/2026 12:23 AM",
33 + "soldFor": 80,
34 + "saleType": "auction",
35 + "buyersPremium": true,
36 + "noReserve": true,
37 + "comments": "white pages 1st app. of Bishop, Malcolm & Randall; COMIC BOOK IMPACT rating of 6 (CBI)",
38 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27329.jpg"
39 + },
40 + {
41 + "itemId": "1103869",
42 + "url": "https://www.comicconnect.com/item/1103869",
43 + "title": "X-MEN: AGE OF APOCALYPSE GROUP LOT #1 Comic Book Group Lot",
44 + "gradeLine": "Marvel NM: 9.4",
45 + "soldOn": "Friday, 08/14/2026 12:23 AM",
46 + "soldFor": 47,
47 + "saleType": "auction",
48 + "buyersPremium": true,
49 + "noReserve": true,
50 + "comments": "40 Comic Group Lot; 12 Age of Apocalypse Titles covering most of the event, see below for Title/Issue info; Avg Grade 9.2/9.4+",
51 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m190-1.jpg"
52 + },
53 + {
54 + "itemId": "1103760",
55 + "url": "https://www.comicconnect.com/item/1103760",
56 + "title": "YOUNG AVENGERS (2005-06) #12",
57 + "gradeLine": "Marvel CGC NM/M: 9.8",
58 + "soldOn": "Friday, 08/14/2026 12:21 AM",
59 + "soldFor": 50,
60 + "saleType": "auction",
61 + "buyersPremium": true,
62 + "noReserve": true,
63 + "comments": "white pages",
64 + "image": "https://www.comicconnect.com/coverimages/gallery425/you41-38.jpg"
65 + },
66 + {
67 + "itemId": "1101272",
68 + "url": "https://www.comicconnect.com/item/1101272",
69 + "title": "YOUNG AVENGERS (2005-06) #6",
70 + "gradeLine": "Marvel CGC NM/M: 9.8",
71 + "soldOn": "Friday, 08/14/2026 12:21 AM",
72 + "soldFor": 51,
73 + "saleType": "auction",
74 + "buyersPremium": true,
75 + "noReserve": true,
76 + "comments": "white pages Jim Cheung/John Dell cover/art; Avengers app.",
77 + "image": "https://www.comicconnect.com/coverimages/gallery425/you41-37.jpg"
78 + },
79 + {
80 + "itemId": "1101276",
81 + "url": "https://www.comicconnect.com/item/1101276",
82 + "title": "X-MEN (1991-2012) #30",
83 + "gradeLine": "Marvel CGC NM/M: 9.8",
84 + "soldOn": "Friday, 08/14/2026 12:21 AM",
85 + "soldFor": 104,
86 + "saleType": "auction",
87 + "buyersPremium": true,
88 + "noReserve": true,
89 + "comments": "off-white to white pages; Newsstand Edition wedding of Jean Grey & Scott Summers; Comic Book Impact rating of 6 (CBI)",
90 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m13-922.jpg"
91 + },
92 + {
93 + "itemId": "1103810",
94 + "url": "https://www.comicconnect.com/item/1103810",
95 + "title": "X-MEN GROUP LOT #1 Comic Book Group Lot",
96 + "gradeLine": "Marvel VF/NM: 9.0",
97 + "soldOn": "Friday, 08/14/2026 12:21 AM",
98 + "soldFor": 31,
99 + "saleType": "auction",
100 + "buyersPremium": true,
101 + "noReserve": true,
102 + "comments": "24 Comic Group Lot; Incl. Bishop, Magik & X-Force #1; Avg Grade 9.2/9.4",
103 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m88-75.jpg"
104 + },
105 + {
106 + "itemId": "1102138",
107 + "url": "https://www.comicconnect.com/item/1102138",
108 + "title": "YEAR OF THE VILLAIN: HELL ARISEN #3",
109 + "gradeLine": "DC CGC NM/M: 9.8",
110 + "soldOn": "Friday, 08/14/2026 12:19 AM",
111 + "soldFor": 67,
112 + "saleType": "auction",
113 + "buyersPremium": true,
114 + "noReserve": true,
115 + "comments": "white pages Steve Epting/Javier Fernandez art; 1st full app. of Punchline (Alexis Kaye) (4/20)",
116 + "image": "https://www.comicconnect.com/coverimages/gallery425/yea2-7_1.jpg"
117 + },
118 + {
119 + "itemId": "1103460",
120 + "url": "https://www.comicconnect.com/item/1103460",
121 + "title": "X-MEN 2099 (1993-96) #1 Comic Book Group Lot",
122 + "gradeLine": "Marvel VF/NM: 9.0",
123 + "soldOn": "Friday, 08/14/2026 12:19 AM",
124 + "soldFor": 24,
125 + "saleType": "auction",
126 + "buyersPremium": true,
127 + "noReserve": true,
128 + "comments": "45 Comic Group Lot; Includes ; Avg Grade 8.5/9.0",
129 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m12-43.jpg"
130 + },
131 + {
132 + "itemId": "1103824",
133 + "url": "https://www.comicconnect.com/item/1103824",
134 + "title": "X-MEN GROUP LOT #1 Comic Book Group Lot",
135 + "gradeLine": "Marvel VF/NM: 9.0",
136 + "soldOn": "Friday, 08/14/2026 12:19 AM",
137 + "soldFor": 24,
138 + "saleType": "auction",
139 + "buyersPremium": true,
140 + "noReserve": true,
141 + "comments": "44 Comic Group Lot; Incl. Astonishing X-Men, Ultimate X-Men, Mutant X and X-Force, see below for all Title/Issue info; Avg Grade 8.5/9.0",
142 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m88-76.jpg"
143 + },
144 + {
145 + "itemId": "1104560",
146 + "url": "https://www.comicconnect.com/item/1104560",
147 + "title": "X-MEN (1963-2011) #176 Comic Book Group Lot",
148 + "gradeLine": "Marvel VF-: 7.5",
149 + "soldOn": "Friday, 08/14/2026 12:19 AM",
150 + "soldFor": 98,
151 + "saleType": "auction",
152 + "buyersPremium": true,
153 + "noReserve": true,
154 + "comments": "47 Comic Group Lot; Keys Include. #239(x2), 244, 184, 256, 281-283, 294 and a lot more! See below for all issues; Avg Grade 7.0/7.5",
155 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27434.jpg"
156 + },
157 + {
158 + "itemId": "1103765",
159 + "url": "https://www.comicconnect.com/item/1103765",
160 + "title": "X-MEN (1991-2012) #24 Comic Book Group Lot",
161 + "gradeLine": "Marvel NM: 9.4",
162 + "soldOn": "Friday, 08/14/2026 12:19 AM",
163 + "soldFor": 30,
164 + "saleType": "auction",
165 + "buyersPremium": true,
166 + "noReserve": true,
167 + "comments": "Group lot of 35 issues of the X-Men (1991) series; see below for full issue list; average grade 9.4",
168 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m13-925.jpg"
169 + },
170 + {
171 + "itemId": "1101287",
172 + "url": "https://www.comicconnect.com/item/1101287",
173 + "title": "X-MEN (1991-2012) #4",
174 + "gradeLine": "Marvel CGC NM/M: 9.8",
175 + "soldOn": "Friday, 08/14/2026 12:17 AM",
176 + "soldFor": 102,
177 + "saleType": "auction",
178 + "buyersPremium": true,
179 + "noReserve": true,
180 + "comments": "white pages Jim Lee cover/art; Scott Williams/John Byrne inks; 1st app. Omega Red; Comic Book Impact rating of 6 (CBI)",
181 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m13-923.jpg"
182 + },
183 + {
184 + "itemId": "1103767",
185 + "url": "https://www.comicconnect.com/item/1103767",
186 + "title": "X-MEN (1991-2012) #77 Comic Book Group Lot",
187 + "gradeLine": "Marvel NM: 9.4",
188 + "soldOn": "Friday, 08/14/2026 12:17 AM",
189 + "soldFor": 20,
190 + "saleType": "auction",
191 + "buyersPremium": true,
192 + "noReserve": true,
193 + "comments": "Group lot of 40 issues of the X-Men (1991) series; see below for full issue list; average grade 9.4",
194 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m13-926.jpg"
195 + },
196 + {
197 + "itemId": "1103986",
198 + "url": "https://www.comicconnect.com/item/1103986",
199 + "title": "X-MEN (1963-2011) #121 Comic Book Group Lot",
200 + "gradeLine": "Marvel VF: 8.0",
201 + "soldOn": "Friday, 08/14/2026 12:17 AM",
202 + "soldFor": 357.65,
203 + "saleType": "auction",
204 + "buyersPremium": true,
205 + "noReserve": true,
206 + "comments": "Group lot of 9 Bronze Age issues: #121-128, 130; John Byrne art! average grade: 8.0; estimated BV: $400+",
207 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27406.jpg"
208 + },
209 + {
210 + "itemId": "1102950",
211 + "url": "https://www.comicconnect.com/item/1102950",
212 + "title": "X-MEN (1963-2011) #173 Comic Book Group Lot",
213 + "gradeLine": "Marvel VF-: 7.5",
214 + "soldOn": "Friday, 08/14/2026 12:17 AM",
215 + "soldFor": 84,
216 + "saleType": "auction",
217 + "buyersPremium": true,
218 + "noReserve": true,
219 + "comments": "28 Comic Book Group Lot; Includes #170-180, 182, 187, 190, 284-293, 297-299, 325 Special edition; Avg Grade 7.0/7.5",
220 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27340.jpg"
221 + },
222 + {
223 + "itemId": "1103887",
224 + "url": "https://www.comicconnect.com/item/1103887",
225 + "title": "X-MEN (1991-2012) #1 Comic Book Group Lot",
226 + "gradeLine": "Marvel NM-: 9.2",
227 + "soldOn": "Friday, 08/14/2026 12:17 AM",
228 + "soldFor": 140,
229 + "saleType": "auction",
230 + "buyersPremium": true,
231 + "noReserve": true,
232 + "comments": "99 Comic Group Lot; Has #1-91, includes #1 variants & Annuals '93, '95, '96, '97; Avg Grade 9.0/9.2 Jim Lee cover/art; 1st app of the Acolytes; 1st team app of X-Men Gold/Blue; 4 different variants exist to form a single image.",
233 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m13-928.jpg"
234 + },
235 + {
236 + "itemId": "1103850",
237 + "url": "https://www.comicconnect.com/item/1103850",
238 + "title": "X-MEN (1963-2011) #282",
239 + "gradeLine": "Marvel CGC NM/M: 9.8",
240 + "soldOn": "Friday, 08/14/2026 12:15 AM",
241 + "soldFor": 112,
242 + "saleType": "auction",
243 + "buyersPremium": true,
244 + "noReserve": true,
245 + "comments": "white pages 1st app. of Bishop, Malcolm & Randall; COMIC BOOK IMPACT rating of 6 (CBI)",
246 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27361.jpg"
247 + },
248 + {
249 + "itemId": "1104032",
250 + "url": "https://www.comicconnect.com/item/1104032",
251 + "title": "X-MEN (1963-2011) #67 Comic Book Group Lot",
252 + "gradeLine": "Marvel F/VF: 7.0",
253 + "soldOn": "Friday, 08/14/2026 12:15 AM",
254 + "soldFor": 640.55,
255 + "saleType": "auction",
256 + "buyersPremium": true,
257 + "noReserve": true,
258 + "comments": "Lot of 15 X-Men comics including #67-80,82; the first-half of the X-Men reprints!; Average Grade: 7.0; Grade range: 5.0-9.0",
259 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27419.jpg"
260 + },
261 + {
262 + "itemId": "1103979",
263 + "url": "https://www.comicconnect.com/item/1103979",
264 + "title": "X-MEN (1963-2011) #105",
265 + "gradeLine": "Marvel VF/NM: 9.0",
266 + "soldOn": "Friday, 08/14/2026 12:15 AM",
267 + "soldFor": 52,
268 + "saleType": "auction",
269 + "buyersPremium": true,
270 + "noReserve": true,
271 + "comments": "Dave Cockrum cover; Claremont/Cockrum cameo; COMIC BOOK RATING of 7 (CBI)",
272 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27401.jpg"
273 + }
274 + ]
275 + }
276 + },
277 + "expect": {
278 + "minCount": 10,
279 + "kinds": [
280 + "sale"
281 + ]
282 + },
283 + "note": "captured live from https://www.comicconnect.com/browse/comics/?filtertype=Sold&sort_type=ended_desc&page=1",
284 + "capturedAt": "2026-09-07T04:39:30.615Z"
285 +}
\ No newline at end of file
added data/fixtures/comicconnect/sold-comics-page-2.json +285 −0
@@ -0,0 +1,285 @@
1 +{
2 + "raw": {
3 + "url": "https://www.comicconnect.com/browse/comics/?filtertype=Sold&sort_type=ended_desc&page=2",
4 + "externalId": "sold:/browse/comics/:2",
5 + "kind": "sale",
6 + "engine": "api",
7 + "fetchedAt": "2026-09-07T04:39:35.808Z",
8 + "payload": {
9 + "kind": "sold_page",
10 + "url": "https://www.comicconnect.com/browse/comics/?filtertype=Sold&sort_type=ended_desc&page=2",
11 + "page": 2,
12 + "totalResults": 479121,
13 + "cards": [
14 + {
15 + "itemId": "1102887",
16 + "url": "https://www.comicconnect.com/item/1102887",
17 + "title": "X-MEN (1963-2011) #282",
18 + "gradeLine": "Marvel CGC NM: 9.4",
19 + "soldOn": "Friday, 08/14/2026 12:15 AM",
20 + "soldFor": 40,
21 + "saleType": "auction",
22 + "buyersPremium": true,
23 + "noReserve": true,
24 + "comments": "white pages 1st app. of Bishop, Malcolm & Randall; COMIC BOOK IMPACT rating of 6 (CBI)",
25 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27336.jpg"
26 + },
27 + {
28 + "itemId": "1102864",
29 + "url": "https://www.comicconnect.com/item/1102864",
30 + "title": "X-MEN (1963-2011) #266",
31 + "gradeLine": "Marvel CGC NM: 9.4",
32 + "soldOn": "Friday, 08/14/2026 12:13 AM",
33 + "soldFor": 180.55,
34 + "saleType": "auction",
35 + "buyersPremium": true,
36 + "noReserve": true,
37 + "comments": "white pages; Newsstand Edition 1st full app of Gambit, Mystique app; Andy Kubert cover",
38 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27335.jpg"
39 + },
40 + {
41 + "itemId": "1102948",
42 + "url": "https://www.comicconnect.com/item/1102948",
43 + "title": "X-MEN (1963-2011) #158 Comic Book Group Lot",
44 + "gradeLine": "Marvel VF-: 7.5",
45 + "soldOn": "Friday, 08/14/2026 12:13 AM",
46 + "soldFor": 76,
47 + "saleType": "auction",
48 + "buyersPremium": true,
49 + "noReserve": true,
50 + "comments": "18 Comic Book Group Lot; Includes #151-166, 168-169, All Newsstand Editions; Avg Grade 7.0/7.5",
51 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27339.jpg"
52 + },
53 + {
54 + "itemId": "1103980",
55 + "url": "https://www.comicconnect.com/item/1103980",
56 + "title": "X-MEN (1963-2011) #95 Comic Book Group Lot",
57 + "gradeLine": "Marvel VG/F: 5.0",
58 + "soldOn": "Friday, 08/14/2026 12:13 AM",
59 + "soldFor": 443.9,
60 + "saleType": "auction",
61 + "buyersPremium": true,
62 + "noReserve": true,
63 + "comments": "Group lot of 8 classic Bronze Age issues: #95-97, 99, 100, 102, 104, 106 (#97 & 100 are UK PRICE VARIANTS); includes 1st appearance of Havok! average grade: 5.0/5.5; estimated BV: $250+",
64 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27402.jpg"
65 + },
66 + {
67 + "itemId": "1102863",
68 + "url": "https://www.comicconnect.com/item/1102863",
69 + "title": "X-MEN (1963-2011) #140",
70 + "gradeLine": "Marvel CGC NM/M: 9.8",
71 + "soldOn": "Friday, 08/14/2026 12:11 AM",
72 + "soldFor": 112,
73 + "saleType": "auction",
74 + "buyersPremium": true,
75 + "noReserve": true,
76 + "comments": "ow/white pages John Byrne cover/art; Alpha Flight disbands, Wendigo battle cover; COMIC BOOK IMPACT rating of 7 (CBI)",
77 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27334.jpg"
78 + },
79 + {
80 + "itemId": "1103994",
81 + "url": "https://www.comicconnect.com/item/1103994",
82 + "title": "X-MEN (1963-2011) #131 Comic Book Group Lot",
83 + "gradeLine": "Marvel VF/VF+: 8.2",
84 + "soldOn": "Friday, 08/14/2026 12:11 AM",
85 + "soldFor": 299,
86 + "saleType": "auction",
87 + "buyersPremium": true,
88 + "noReserve": true,
89 + "comments": "Group lot of 7 issues: #131-137;The Dark Phoenix Saga Parts 3-9; John Byrne art; avg grade: 8.0/8.5; estimated BV: $300+",
90 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27408.jpg"
91 + },
92 + {
93 + "itemId": "1099215",
94 + "url": "https://www.comicconnect.com/item/1099215",
95 + "title": "X-MEN (1963-2011) #129",
96 + "gradeLine": "Marvel CGC FN+: 6.5",
97 + "soldOn": "Friday, 08/14/2026 12:11 AM",
98 + "soldFor": 84,
99 + "saleType": "auction",
100 + "buyersPremium": true,
101 + "noReserve": true,
102 + "comments": "white pages; Newsstand Edition 1st app of Kitty Pryde; 1st app of Emma Frost; 1st team app of Hellfire Club (in shadows); Dark Phoenix saga Part 1, Byrne cover; COMIC BOOK IMPACT rating of 8 (CBI)",
103 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27291.jpg"
104 + },
105 + {
106 + "itemId": "1103995",
107 + "url": "https://www.comicconnect.com/item/1103995",
108 + "title": "X-MEN (1963-2011) #138 Comic Book Group Lot",
109 + "gradeLine": "Marvel VF++: 8.8",
110 + "soldOn": "Friday, 08/14/2026 12:11 AM",
111 + "soldFor": 213.9,
112 + "saleType": "auction",
113 + "buyersPremium": true,
114 + "noReserve": true,
115 + "comments": "Group lot of six Bronze Age issues: #128-144; Days of Future Past; John Byrne art; avg grade: 8.5+; estimated BV: $350+",
116 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27409.jpg"
117 + },
118 + {
119 + "itemId": "1102891",
120 + "url": "https://www.comicconnect.com/item/1102891",
121 + "title": "X-MEN (1963-2011) #131",
122 + "gradeLine": "Marvel CGC VF-: 7.5",
123 + "soldOn": "Friday, 08/14/2026 12:10 AM",
124 + "soldFor": 49,
125 + "saleType": "auction",
126 + "buyersPremium": true,
127 + "noReserve": true,
128 + "comments": "ow pages Byrne cvr/art; 2nd Dazzler, Emma Frost app; COMIC BOOK IMPACT rating of 6 (CBI)",
129 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27337.jpg"
130 + },
131 + {
132 + "itemId": "1099967",
133 + "url": "https://www.comicconnect.com/item/1099967",
134 + "title": "X-MEN (1963-2011) #112",
135 + "gradeLine": "Marvel CGC F/VF: 7.0",
136 + "soldOn": "Friday, 08/14/2026 12:10 AM",
137 + "soldFor": 36,
138 + "saleType": "auction",
139 + "buyersPremium": true,
140 + "noReserve": true,
141 + "comments": "ow/white pages classic Perez cover, Byrne art; Magneto app; COMIC BOOK IMPACT rating of 7 (CBI)",
142 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27308.jpg"
143 + },
144 + {
145 + "itemId": "1103982",
146 + "url": "https://www.comicconnect.com/item/1103982",
147 + "title": "X-MEN (1963-2011) #111",
148 + "gradeLine": "Marvel VF/NM: 9.0",
149 + "soldOn": "Friday, 08/14/2026 12:10 AM",
150 + "soldFor": 41,
151 + "saleType": "auction",
152 + "buyersPremium": true,
153 + "noReserve": true,
154 + "comments": "Byrne art; Cockrum bondage cover; COMIC BOOK IMPACT rating of 6 (CBI)",
155 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27403.jpg"
156 + },
157 + {
158 + "itemId": "1103764",
159 + "url": "https://www.comicconnect.com/item/1103764",
160 + "title": "X-MEN (1963-2011) #109",
161 + "gradeLine": "Marvel CGC VF+: 8.5",
162 + "soldOn": "Friday, 08/14/2026 12:07 AM",
163 + "soldFor": 140,
164 + "saleType": "auction",
165 + "buyersPremium": true,
166 + "noReserve": true,
167 + "comments": "white pages; Signature Series: Chris Claremont 1st app of Weapon Alpha (later becomes Guardian); Dave Cockrum cover; John Byrne art",
168 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27357.jpg"
169 + },
170 + {
171 + "itemId": "1103983",
172 + "url": "https://www.comicconnect.com/item/1103983",
173 + "title": "X-MEN (1963-2011) #104 Comic Book Group Lot",
174 + "gradeLine": "Marvel FN: 6.0",
175 + "soldOn": "Friday, 08/14/2026 12:07 AM",
176 + "soldFor": 266.8,
177 + "saleType": "auction",
178 + "buyersPremium": true,
179 + "noReserve": true,
180 + "comments": "Group lot of 13 Bronze Age issues #104, 107-110, 112-119; John Byrne art! avg grade: 6.0/6.5; estimated BV: $325+",
181 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27404.jpg"
182 + },
183 + {
184 + "itemId": "1104035",
185 + "url": "https://www.comicconnect.com/item/1104035",
186 + "title": "X-MEN (1963-2011) #80 Comic Book Group Lot",
187 + "gradeLine": "Marvel VG/F: 5.0",
188 + "soldOn": "Friday, 08/14/2026 12:07 AM",
189 + "soldFor": 207,
190 + "saleType": "auction",
191 + "buyersPremium": true,
192 + "noReserve": true,
193 + "comments": "Lot of 14 X-Men comics including #80-93; the second-half of the X-Men reprints!; Average Grade: 5.0; Grade Range: 2.5-6.5",
194 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27420.jpg"
195 + },
196 + {
197 + "itemId": "1103763",
198 + "url": "https://www.comicconnect.com/item/1103763",
199 + "title": "X-MEN (1963-2011) #108",
200 + "gradeLine": "Marvel CGC VF: 8.0",
201 + "soldOn": "Friday, 08/14/2026 12:07 AM",
202 + "soldFor": 65,
203 + "saleType": "auction",
204 + "buyersPremium": true,
205 + "noReserve": true,
206 + "comments": "white pages Dave Cockrum cvr; John Byrne art begins; Corsair revealed as father of Cyclops & Havok; COMIC BOOK IMPACT rating of 7 (CBI)",
207 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27356.jpg"
208 + },
209 + {
210 + "itemId": "1103972",
211 + "url": "https://www.comicconnect.com/item/1103972",
212 + "title": "X-MEN (1963-2011) #57 Comic Book Group Lot",
213 + "gradeLine": "Marvel FN-: 5.5",
214 + "soldOn": "Friday, 08/14/2026 12:05 AM",
215 + "soldFor": 278.3,
216 + "saleType": "auction",
217 + "buyersPremium": true,
218 + "noReserve": true,
219 + "comments": "Group lot of 5 classic Neal Adams Silver Age issues: #57-60, 62; includes 1st appearance of Havok! average grade: 5.5; estimated BV: $250+",
220 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27397.jpg"
221 + },
222 + {
223 + "itemId": "1104014",
224 + "url": "https://www.comicconnect.com/item/1104014",
225 + "title": "X-MEN (1963-2011) #64",
226 + "gradeLine": "Marvel VG: 4.0",
227 + "soldOn": "Friday, 08/14/2026 12:05 AM",
228 + "soldFor": 44,
229 + "saleType": "auction",
230 + "buyersPremium": true,
231 + "noReserve": true,
232 + "comments": "1st app. Sunfire; COMIC BOOK IMPACT rating of 7 (CBI)",
233 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27415.jpg"
234 + },
235 + {
236 + "itemId": "1103963",
237 + "url": "https://www.comicconnect.com/item/1103963",
238 + "title": "X-MEN (1963-2011) #50",
239 + "gradeLine": "Marvel G/VG: 3.0",
240 + "soldOn": "Friday, 08/14/2026 12:05 AM",
241 + "soldFor": 135,
242 + "saleType": "auction",
243 + "buyersPremium": true,
244 + "noReserve": true,
245 + "comments": "Steranko cover/art; 2nd app. Polaris; origin of Beast, New X-Men logo; COMIC BOOK IMPACT rating of 7 (CBI)",
246 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27393.jpg"
247 + },
248 + {
249 + "itemId": "1104024",
250 + "url": "https://www.comicconnect.com/item/1104024",
251 + "title": "X-MEN (1963-2011) #65",
252 + "gradeLine": "Marvel VF-: 7.5",
253 + "soldOn": "Friday, 08/14/2026 12:03 AM",
254 + "soldFor": 59,
255 + "saleType": "auction",
256 + "buyersPremium": true,
257 + "noReserve": true,
258 + "comments": "off-white to white pages Adams art; comic BOOK IMPACT rating of 6 (CBI)",
259 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27417.jpg"
260 + },
261 + {
262 + "itemId": "1104020",
263 + "url": "https://www.comicconnect.com/item/1104020",
264 + "title": "X-MEN (1963-2011) #62",
265 + "gradeLine": "Marvel VF-: 7.5",
266 + "soldOn": "Friday, 08/14/2026 12:03 AM",
267 + "soldFor": 65,
268 + "saleType": "auction",
269 + "buyersPremium": true,
270 + "noReserve": true,
271 + "comments": "off-white to white pages Neal Adams cover/art; 1st team app of the Savage Land Mutates; 1st time Magneto removed helmet; COMIC BOOK IMPACT rating of 6 (CBI)",
272 + "image": "https://www.comicconnect.com/coverimages/gallery425/x-m1-27416.jpg"
273 + }
274 + ]
275 + }
276 + },
277 + "expect": {
278 + "minCount": 10,
279 + "kinds": [
280 + "sale"
281 + ]
282 + },
283 + "note": "captured live from https://www.comicconnect.com/browse/comics/?filtertype=Sold&sort_type=ended_desc&page=2",
284 + "capturedAt": "2026-09-07T04:39:35.829Z"
285 +}
\ No newline at end of file
added data/fixtures/goldin/item-sold-page.json +40 −0
@@ -0,0 +1,40 @@
1 +{
2 + "raw": {
3 + "url": "https://goldin.co/item/exceptional-1930s-babe-ruth-signed-bat-psa-dnaibzy1",
4 + "externalId": "exceptional-1930s-babe-ruth-signed-bat-psa-dnaibzy1",
5 + "kind": "sale",
6 + "engine": "scrapfly",
7 + "fetchedAt": "2026-09-07T04:35:10.641Z",
8 + "payload": {
9 + "kind": "item_page",
10 + "url": "https://goldin.co/item/exceptional-1930s-babe-ruth-signed-bat-psa-dnaibzy1",
11 + "title": "Exceptional 1930s Babe Ruth Signed Bat PSA/DNA",
12 + "breadcrumb": [
13 + "Home"
14 + ],
15 + "totalPriceText": "$25,726",
16 + "winningBidText": "$21,438",
17 + "endedText": "Sat, 11/17/12, 10:16 PM EDT",
18 + "bidsText": null,
19 + "sold": true,
20 + "description": "With record prices being set every day for high quality single signed Ruth balls, we are proud to offer a single signed Ruth bat. Autographed Ruth bats are far rarer then autographed Ruth baseballs. Compare the price of a Mantle bat to a Mantle ball, for example. It seems to us that single signed Ruth bats may be one of the most undervalued collectibles in the hobby, and certainly one of the rarest. We now offer you a chance to take advantage of that, as we offer a PSA/DNA certified single signed Babe Ruth model autographed bat. It is a full size H+B Louisville Slugger with walnut finish and an engraved version of Ruth's signature, \"George 'Babe' Ruth.\" Overall condition is EX/MT or better. It is signed \"Babe Ruth\" (\"8\" in strength) in black ink directly to the right of the barrel label. The signature has had a light coat of shellac to protect it. Full Letter of Authenticity from PSA/DNA.",
21 + "images": [
22 + "https://d2tt46f3mh26nl.cloudfront.net/public/Lots/201210-1508-3000-5aee2cea-5aee-2cea-3b3c-0a8f6d78ab5c/694a_lg@2x",
23 + "https://d2tt46f3mh26nl.cloudfront.net/public/Lots/201210-1508-3000-5aee2cea-5aee-2cea-3b3c-0a8f6d78ab5c/694b_lg@2x",
24 + "https://d2tt46f3mh26nl.cloudfront.net/public/Lots/201210-1508-3000-5aee2cea-5aee-2cea-3b3c-0a8f6d78ab5c/694c_lg@2x"
25 + ],
26 + "lotNumber": "4"
27 + }
28 + },
29 + "expect": {
30 + "count": 1,
31 + "kinds": [
32 + "sale"
33 + ],
34 + "first": {
35 + "price": 25726,
36 + "auctionHouse": "Goldin"
37 + }
38 + },
39 + "note": "Sold item page captured live via Scrapfly render; flattened by parseItemPage (no HTML stored)."
40 +}
\ No newline at end of file
added data/fixtures/goldin/mtg-sold-page.json +509 −0
@@ -0,0 +1,509 @@
1 +{
2 + "raw": {
3 + "url": "https://goldin.co/buy/sc/Magic_The_Gathering?page=1&number_of_lots=24&show_only=Sold%20Items&sort=Most_Recent_Bids",
4 + "externalId": "/buy/sc/Magic_The_Gathering#1",
5 + "kind": "sale",
6 + "engine": "scrapfly",
7 + "fetchedAt": "2026-09-07T04:34:00.189378+00:00",
8 + "payload": {
9 + "kind": "sold_page",
10 + "seed": {
11 + "path": "/buy/sc/Magic_The_Gathering",
12 + "categorySlug": "magic_the_gathering"
13 + },
14 + "page": 1,
15 + "pageUrl": "https://goldin.co/buy/sc/Magic_The_Gathering?page=1&number_of_lots=24&show_only=Sold%20Items&sort=Most_Recent_Bids",
16 + "request": {
17 + "queryType": "Most_Recent_Bids",
18 + "sub_category": [
19 + "Magic The Gathering"
20 + ],
21 + "size": 24,
22 + "from": 0,
23 + "show_only": "Sold",
24 + "hasAnalyticsConsent": false
25 + },
26 + "total": 1614,
27 + "lots": [
28 + {
29 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
30 + "auction_type": "Weekly",
31 + "buyer_premium": 22.0,
32 + "company_id": "",
33 + "current_price": 4257,
34 + "end_timestamp": "2026-09-07T03:39:24Z",
35 + "lot_id": "202607-2117-5923-70720bbf-6002-4921-8da9-eeda2ac06bf8",
36 + "lot_number": 1033,
37 + "meta_slug": "1993-magic-the-gathering-unlimited-collection-250-featuring-crusade-wome83n",
38 + "min_bid_price": 10,
39 + "number_of_bids": 49,
40 + "primary_image_name": "7ee9714e-1544-4a66-aaa8-61c527378fcb",
41 + "reserve_amount": 0.0,
42 + "start_timestamp": "2026-08-26T21:00:00Z",
43 + "status": "Completed_Sold",
44 + "title": "1993 Magic: The Gathering Unlimited Collection (250+) - Featuring Crusade, Word of Command, Wheel of Fortune Cards"
45 + },
46 + {
47 + "auction_id": "202607-0713-0842-dce30d81-2299-45d9-810e-9936c533b60c",
48 + "auction_type": "Weekly",
49 + "buyer_premium": 22.0,
50 + "company_id": "",
51 + "current_price": 5608,
52 + "end_timestamp": "2026-08-31T03:00:19Z",
53 + "lot_id": "202607-2117-5923-4839e469-152d-4c09-b4f1-aa2f5204bc77",
54 + "lot_number": 1275,
55 + "meta_slug": "1993-magic-the-gathering-beta-collection-300-featuring-crusade-dark-ri7kf0f",
56 + "min_bid_price": 10,
57 + "number_of_bids": 61,
58 + "primary_image_name": "ed4a25fc-be4c-42fd-8083-8c53e77da7d4",
59 + "reserve_amount": 0.0,
60 + "start_timestamp": "2026-08-19T21:00:00Z",
61 + "status": "Completed_Sold",
62 + "title": "1993 Magic: The Gathering Beta Collection (300+) - Featuring Crusade, Dark Ritual, Manabarbs Cards"
63 + },
64 + {
65 + "auction_id": "202607-0713-0842-dce30d81-2299-45d9-810e-9936c533b60c",
66 + "auction_type": "Weekly",
67 + "buyer_premium": 22.0,
68 + "company_id": "",
69 + "current_price": 1451,
70 + "end_timestamp": "2026-08-31T02:30:53.092236",
71 + "lot_id": "202607-2813-4249-5cda4f75-5a93-44ae-86c5-89763b31c2b9",
72 + "lot_number": 1040,
73 + "meta_slug": "1977-magic-the-gathering-portal-open-shelf-talker-case-includes-1-shelf2ktn",
74 + "min_bid_price": 10,
75 + "number_of_bids": 12,
76 + "primary_image_name": "bb822d4f-173d-46a0-8f6e-26a3eeb550e6",
77 + "reserve_amount": 0.0,
78 + "start_timestamp": "2026-08-19T21:00:00Z",
79 + "status": "Completed_Sold",
80 + "title": "1997 Magic: The Gathering Portal Open Shelf Talker Case - Includes 1 Shelf Talker Display"
81 + },
82 + {
83 + "auction_id": "202607-0713-0154-1ee3f852-8b1a-496f-88f4-ffcbdc89997a",
84 + "auction_type": "Weekly",
85 + "buyer_premium": 22.0,
86 + "company_id": "",
87 + "current_price": 1270,
88 + "end_timestamp": "2026-08-24T02:56:43Z",
89 + "lot_id": "202607-2813-4249-480352a9-4b8e-49a9-9eb1-3b36b0c562de",
90 + "lot_number": 1298,
91 + "meta_slug": "1997-magic-the-gathering-portal-open-shelf-talker-case-includes-1-shel5vngz",
92 + "min_bid_price": 10,
93 + "number_of_bids": 37,
94 + "primary_image_name": "ea125580-cc8b-4958-b613-cbd6e5c7fcde",
95 + "reserve_amount": 0.0,
96 + "start_timestamp": "2026-08-12T21:00:00Z",
97 + "status": "Completed_Sold",
98 + "title": "1997 Magic: The Gathering Portal Open Shelf Talker Case - Includes 1 Shelf Talker Display"
99 + },
100 + {
101 + "auction_id": "202607-0713-0154-1ee3f852-8b1a-496f-88f4-ffcbdc89997a",
102 + "auction_type": "Weekly",
103 + "buyer_premium": 22.0,
104 + "company_id": "",
105 + "current_price": 3372,
106 + "end_timestamp": "2026-08-24T02:30:58.038918",
107 + "lot_id": "202607-2117-5923-7c7e81db-4dd1-4eb8-b3f1-f2e8149bf6d5",
108 + "lot_number": 1022,
109 + "meta_slug": "1993-magic-the-gathering-alpha-collection-100-featuring-sunglasses-ofyjxfk",
110 + "min_bid_price": 10,
111 + "number_of_bids": 60,
112 + "primary_image_name": "d50c0658-5e3d-4270-a221-c9bb960d5923",
113 + "reserve_amount": 0.0,
114 + "start_timestamp": "2026-08-12T21:00:00Z",
115 + "status": "Completed_Sold",
116 + "title": "1993 Magic: The Gathering Alpha Collection (100+) - Featuring Sunglasses of Urza, Clone, Blaze of Glory Cards"
117 + },
118 + {
119 + "auction_id": "202607-0713-0154-1ee3f852-8b1a-496f-88f4-ffcbdc89997a",
120 + "auction_type": "Weekly",
121 + "buyer_premium": 22.0,
122 + "company_id": "",
123 + "current_price": 42,
124 + "end_timestamp": "2026-08-24T02:30:57.371076",
125 + "lot_id": "202602-0920-1226-72e49507-c119-4377-9289-871ef25525c0",
126 + "lot_number": 1257,
127 + "meta_slug": "1994-magic-the-gathering-revised-edition-rare-mana-vault5b189",
128 + "min_bid_price": 10,
129 + "number_of_bids": 3,
130 + "primary_image_name": "86b5da09-3ca5-4275-acd2-fa38b9d53374",
131 + "reserve_amount": 0.0,
132 + "start_timestamp": "2026-08-12T21:00:00Z",
133 + "status": "Completed_Sold",
134 + "title": "1994 Magic: The Gathering Revised Mana Vault - PSA NM 7"
135 + },
136 + {
137 + "auction_id": "202607-0712-5741-0ab0e1c3-d82d-49b3-9af8-2a5ccc6f844b",
138 + "auction_type": "Weekly",
139 + "buyer_premium": 22.0,
140 + "company_id": "",
141 + "current_price": 345,
142 + "end_timestamp": "2026-08-17T02:30:20.252057",
143 + "lot_id": "202602-0918-2109-c7a753fb-6b13-450f-950a-d6d128da1beb",
144 + "lot_number": 1699,
145 + "meta_slug": "1994-magic-the-gathering-revised-edition-rare-bayou0ubiv",
146 + "min_bid_price": 10,
147 + "number_of_bids": 12,
148 + "primary_image_name": "a9485e2b-c872-4e72-b2ec-fd0c21d861c9",
149 + "reserve_amount": 0.0,
150 + "start_timestamp": "2026-08-05T21:00:00Z",
151 + "status": "Completed_Sold",
152 + "title": "1994 Magic: The Gathering Revised Bayou - PSA NM-MT 8"
153 + },
154 + {
155 + "auction_id": "202607-0712-5741-0ab0e1c3-d82d-49b3-9af8-2a5ccc6f844b",
156 + "auction_type": "Weekly",
157 + "buyer_premium": 22.0,
158 + "company_id": "",
159 + "current_price": 856,
160 + "end_timestamp": "2026-08-17T02:30:20.574467",
161 + "lot_id": "202602-0918-2107-6154e7fe-fb7e-41bc-8ae9-8ae6cf42958a",
162 + "lot_number": 1710,
163 + "meta_slug": "1994-magic-the-gathering-revised-edition-rare-volcanic-island9tqde",
164 + "min_bid_price": 10,
165 + "number_of_bids": 20,
166 + "primary_image_name": "1f18e808-764a-42ba-8b6a-b31b64863b93",
167 + "reserve_amount": 0.0,
168 + "start_timestamp": "2026-08-05T21:00:00Z",
169 + "status": "Completed_Sold",
170 + "title": "1994 Magic: The Gathering Revised Volcanic Island - PSA NM-MT 8"
171 + },
172 + {
173 + "auction_id": "202607-0712-5741-0ab0e1c3-d82d-49b3-9af8-2a5ccc6f844b",
174 + "auction_type": "Weekly",
175 + "buyer_premium": 22.0,
176 + "company_id": "",
177 + "current_price": 322,
178 + "end_timestamp": "2026-08-17T02:30:19.536092",
179 + "lot_id": "202602-0918-2108-4a26343c-a111-4b8b-a59f-7ba3fdd88fbf",
180 + "lot_number": 1696,
181 + "meta_slug": "1994-magic-the-gathering-revised-edition-rare-badlandsu7mlk",
182 + "min_bid_price": 10,
183 + "number_of_bids": 26,
184 + "primary_image_name": "5197c7e7-190a-4072-b17a-7825563950c0",
185 + "reserve_amount": 0.0,
186 + "start_timestamp": "2026-08-05T21:00:00Z",
187 + "status": "Completed_Sold",
188 + "title": "1994 Magc: The Gathering Revised Badlands - PSA NM-MT 8"
189 + },
190 + {
191 + "auction_id": "202607-0712-5741-0ab0e1c3-d82d-49b3-9af8-2a5ccc6f844b",
192 + "auction_type": "Weekly",
193 + "buyer_premium": 22.0,
194 + "company_id": "",
195 + "current_price": 350,
196 + "end_timestamp": "2026-08-17T02:30:20.712235",
197 + "lot_id": "202602-0918-2109-7367cfae-223d-4094-867f-bed95df3940c",
198 + "lot_number": 1711,
199 + "meta_slug": "1994-magic-the-gathering-revised-edition-wheel-of-fortuneamchj",
200 + "min_bid_price": 10,
201 + "number_of_bids": 34,
202 + "primary_image_name": "7faa8352-acc4-44a0-a212-f69473d297ab",
203 + "reserve_amount": 0.0,
204 + "start_timestamp": "2026-08-05T21:00:00Z",
205 + "status": "Completed_Sold",
206 + "title": "1994 Magic: The Gathering Revised Wheel of Fortune - PSA NM 7"
207 + },
208 + {
209 + "auction_id": "202607-0712-5741-0ab0e1c3-d82d-49b3-9af8-2a5ccc6f844b",
210 + "auction_type": "Weekly",
211 + "buyer_premium": 22.0,
212 + "company_id": "",
213 + "current_price": 450,
214 + "end_timestamp": "2026-08-17T02:30:20.044141",
215 + "lot_id": "202602-0918-2109-ddc12ca9-ff79-4e43-a508-410821567291",
216 + "lot_number": 1706,
217 + "meta_slug": "1994-magic-the-gathering-revised-edition-rare-tropical-island7l76c",
218 + "min_bid_price": 10,
219 + "number_of_bids": 14,
220 + "primary_image_name": "5aecc706-8fd3-4cce-9739-55ade13762b1",
221 + "reserve_amount": 0.0,
222 + "start_timestamp": "2026-08-05T21:00:00Z",
223 + "status": "Completed_Sold",
224 + "title": "1994 Magic: The Gathering Revised Tropical Island - PSA NM-MT 8"
225 + },
226 + {
227 + "auction_id": "202607-0712-5741-0ab0e1c3-d82d-49b3-9af8-2a5ccc6f844b",
228 + "auction_type": "Weekly",
229 + "buyer_premium": 22.0,
230 + "company_id": "",
231 + "current_price": 14,
232 + "end_timestamp": "2026-08-17T02:30:20.247525",
233 + "lot_id": "202602-0920-1226-8761b964-c254-48c1-8b82-bd7f2f1b0dab",
234 + "lot_number": 1698,
235 + "meta_slug": "1994-magic-the-gathering-legends-willow-satyrdmnv3",
236 + "min_bid_price": 10,
237 + "number_of_bids": 3,
238 + "primary_image_name": "7fb6bdb4-0fe7-402f-a771-de96cf8b16a4",
239 + "reserve_amount": 0.0,
240 + "start_timestamp": "2026-08-05T21:00:00Z",
241 + "status": "Completed_Sold",
242 + "title": "1994 Magic: The Gathering Legends Willow Satyr - PSA NM-MT 8"
243 + },
244 + {
245 + "auction_id": "202607-0712-5741-0ab0e1c3-d82d-49b3-9af8-2a5ccc6f844b",
246 + "auction_type": "Weekly",
247 + "buyer_premium": 22.0,
248 + "company_id": "",
249 + "current_price": 90,
250 + "end_timestamp": "2026-08-17T02:30:20.311727",
251 + "lot_id": "202607-0719-1231-ecff865d-01d4-4700-9894-94a8cb30e930",
252 + "lot_number": 1811,
253 + "meta_slug": "2024-magic-the-gathering-aetherdrift-factory-sealed-booster-box-36-pac0hk1k",
254 + "min_bid_price": 10,
255 + "number_of_bids": 7,
256 + "primary_image_name": "9692aab2-b9c5-4a07-92e2-bb3b7456bfb4",
257 + "reserve_amount": 0.0,
258 + "start_timestamp": "2026-08-05T21:00:00Z",
259 + "status": "Completed_Sold",
260 + "title": "2024 Magic: The Gathering Aetherdrift Factory-Sealed Booster Box (36 Packs)"
261 + },
262 + {
263 + "auction_id": "202607-0712-5741-0ab0e1c3-d82d-49b3-9af8-2a5ccc6f844b",
264 + "auction_type": "Weekly",
265 + "buyer_premium": 22.0,
266 + "company_id": "",
267 + "current_price": 310,
268 + "end_timestamp": "2026-08-17T02:30:20.068221",
269 + "lot_id": "202602-0918-2108-215b514a-3490-4ea8-9bf2-37232ab9401f",
270 + "lot_number": 1705,
271 + "meta_slug": "1994-magic-the-gathering-revised-edition-rare-taigab6vk5",
272 + "min_bid_price": 10,
273 + "number_of_bids": 9,
274 + "primary_image_name": "7debe0c8-6ec8-41ae-b373-5d8cffe35ba9",
275 + "reserve_amount": 0.0,
276 + "start_timestamp": "2026-08-05T21:00:00Z",
277 + "status": "Completed_Sold",
278 + "title": "1994 Magic: The Gathering Revised Taiga - PSA NM-MT 8"
279 + },
280 + {
281 + "auction_id": "202607-0712-5741-0ab0e1c3-d82d-49b3-9af8-2a5ccc6f844b",
282 + "auction_type": "Weekly",
283 + "buyer_premium": 22.0,
284 + "company_id": "",
285 + "current_price": 22,
286 + "end_timestamp": "2026-08-17T02:30:20.594645",
287 + "lot_id": "202602-0918-2109-b33405fb-ba63-4eba-9ae3-c42d1c092d2e",
288 + "lot_number": 1697,
289 + "meta_slug": "1994-magic-the-gathering-antiquities-uncommon-gate-to-phyrexiabmz78",
290 + "min_bid_price": 10,
291 + "number_of_bids": 5,
292 + "primary_image_name": "c9383e02-aaf7-4ff8-87db-dbb159d1d737",
293 + "reserve_amount": 0.0,
294 + "start_timestamp": "2026-08-05T21:00:00Z",
295 + "status": "Completed_Sold",
296 + "title": "1994 Magic: The Gathering Antiquities Gate to Phyrexia - PSA NM 7"
297 + },
298 + {
299 + "auction_id": "202607-0712-5741-0ab0e1c3-d82d-49b3-9af8-2a5ccc6f844b",
300 + "auction_type": "Weekly",
301 + "buyer_premium": 22.0,
302 + "company_id": "",
303 + "current_price": 375,
304 + "end_timestamp": "2026-08-17T02:30:20.248697",
305 + "lot_id": "202602-0920-1226-315542b4-70ec-4e60-ac91-79f532cefb85",
306 + "lot_number": 1694,
307 + "meta_slug": "1993-magic-the-gathering-arabian-nights-drop-of-honeyjejlb",
308 + "min_bid_price": 10,
309 + "number_of_bids": 11,
310 + "primary_image_name": "0f790213-5fca-4a72-a5fe-d9b9b0608473",
311 + "reserve_amount": 0.0,
312 + "start_timestamp": "2026-08-05T21:00:00Z",
313 + "status": "Completed_Sold",
314 + "title": "1993 Magic: The Gathering Arabian Nights Drop of Honey - PSA EX 5"
315 + },
316 + {
317 + "auction_id": "202607-0712-5741-0ab0e1c3-d82d-49b3-9af8-2a5ccc6f844b",
318 + "auction_type": "Weekly",
319 + "buyer_premium": 22.0,
320 + "company_id": "",
321 + "current_price": 57,
322 + "end_timestamp": "2026-08-17T02:30:20.170606",
323 + "lot_id": "202602-0918-2109-57ab6f53-f272-42a0-a3af-19f266c3006b",
324 + "lot_number": 1704,
325 + "meta_slug": "1994-magic-the-gathering-revised-edition-shivan-dragonxx7ng",
326 + "min_bid_price": 10,
327 + "number_of_bids": 13,
328 + "primary_image_name": "228cc0c9-999b-42bd-afad-269ee4d48c84",
329 + "reserve_amount": 0.0,
330 + "start_timestamp": "2026-08-05T21:00:00Z",
331 + "status": "Completed_Sold",
332 + "title": "1994 Magic: The Gathering Revised Shivan Dragon - PSA NM-MT 8"
333 + },
334 + {
335 + "auction_id": "202607-0712-5741-0ab0e1c3-d82d-49b3-9af8-2a5ccc6f844b",
336 + "auction_type": "Weekly",
337 + "buyer_premium": 22.0,
338 + "company_id": "",
339 + "current_price": 625,
340 + "end_timestamp": "2026-08-17T02:30:20.543334",
341 + "lot_id": "202602-0918-2108-268ed0be-2d02-4894-b5fd-d20b4fd44a1a",
342 + "lot_number": 1707,
343 + "meta_slug": "1994-magic-the-gathering-revised-edition-rare-tundrapstn4",
344 + "min_bid_price": 10,
345 + "number_of_bids": 25,
346 + "primary_image_name": "4ca8a6eb-8d39-428c-ac44-07fdcb2b1de8",
347 + "reserve_amount": 0.0,
348 + "start_timestamp": "2026-08-05T21:00:00Z",
349 + "status": "Completed_Sold",
350 + "title": "1994 Magic: The Gathering Revised Tundra - PSA NM-MT 8"
351 + },
352 + {
353 + "auction_id": "202607-0712-5741-0ab0e1c3-d82d-49b3-9af8-2a5ccc6f844b",
354 + "auction_type": "Weekly",
355 + "buyer_premium": 22.0,
356 + "company_id": "",
357 + "current_price": 700,
358 + "end_timestamp": "2026-08-17T02:30:20.602634",
359 + "lot_id": "202602-0918-2108-b8720e60-45e1-460a-886a-ccf4ecb07b22",
360 + "lot_number": 1708,
361 + "meta_slug": "1994-magic-the-gathering-revised-edition-rare-underground-seabsowh",
362 + "min_bid_price": 10,
363 + "number_of_bids": 37,
364 + "primary_image_name": "f0a37394-f9b9-46c3-b2f7-8fc845792434",
365 + "reserve_amount": 0.0,
366 + "start_timestamp": "2026-08-05T21:00:00Z",
367 + "status": "Completed_Sold",
368 + "title": "1994 Magic: The Gathering Revised Underground Sea - PSA NM-MT 8"
369 + },
370 + {
371 + "auction_id": "202607-0712-5741-0ab0e1c3-d82d-49b3-9af8-2a5ccc6f844b",
372 + "auction_type": "Weekly",
373 + "buyer_premium": 22.0,
374 + "company_id": "",
375 + "current_price": 106,
376 + "end_timestamp": "2026-08-17T02:30:19.883826",
377 + "lot_id": "202602-0920-1226-d835c383-7ef9-4359-a8dd-efc390fe470f",
378 + "lot_number": 1700,
379 + "meta_slug": "1994-magic-the-gathering-revised-edition-rare-mana-vaulthucae",
380 + "min_bid_price": 10,
381 + "number_of_bids": 27,
382 + "primary_image_name": "1236eb23-a9cb-421a-90c1-0a9833a83fd3",
383 + "reserve_amount": 0.0,
384 + "start_timestamp": "2026-08-05T21:00:00Z",
385 + "status": "Completed_Sold",
386 + "title": "1994 Magic: The Gathering Revised Mana Vault - PSA MINT 9"
387 + },
388 + {
389 + "auction_id": "202607-0712-5741-0ab0e1c3-d82d-49b3-9af8-2a5ccc6f844b",
390 + "auction_type": "Weekly",
391 + "buyer_premium": 22.0,
392 + "company_id": "",
393 + "current_price": 351,
394 + "end_timestamp": "2026-08-17T02:30:19.684722",
395 + "lot_id": "202602-0918-2108-06026957-1ea5-4241-a010-5dac5404c1c8",
396 + "lot_number": 1703,
397 + "meta_slug": "1994-magic-the-gathering-revised-edition-rare-scrublandqobia",
398 + "min_bid_price": 10,
399 + "number_of_bids": 17,
400 + "primary_image_name": "fa5bc846-7453-4119-95b2-d22423c41ca5",
401 + "reserve_amount": 0.0,
402 + "start_timestamp": "2026-08-05T21:00:00Z",
403 + "status": "Completed_Sold",
404 + "title": "1994 Magic: The Gathering Revised Scrubland - PSA MINT 9"
405 + },
406 + {
407 + "auction_id": "202607-0712-5741-0ab0e1c3-d82d-49b3-9af8-2a5ccc6f844b",
408 + "auction_type": "Weekly",
409 + "buyer_premium": 22.0,
410 + "company_id": "",
411 + "current_price": 14,
412 + "end_timestamp": "2026-08-17T02:30:19.981953",
413 + "lot_id": "202602-0918-2109-886727b3-057c-4a6a-be10-725e552242bc",
414 + "lot_number": 1709,
415 + "meta_slug": "1994-magic-the-gathering-revised-edition-vesuvan-doppelgangersqxjw",
416 + "min_bid_price": 10,
417 + "number_of_bids": 3,
418 + "primary_image_name": "bdab5c3f-691f-4d65-bb52-24274417dc97",
419 + "reserve_amount": 0.0,
420 + "start_timestamp": "2026-08-05T21:00:00Z",
421 + "status": "Completed_Sold",
422 + "title": "1994 Magic: The Gathering Revised Vesuvian Doppelganger - PSA NM-MT 8"
423 + },
424 + {
425 + "auction_id": "202607-0712-5741-0ab0e1c3-d82d-49b3-9af8-2a5ccc6f844b",
426 + "auction_type": "Weekly",
427 + "buyer_premium": 22.0,
428 + "company_id": "",
429 + "current_price": 460,
430 + "end_timestamp": "2026-08-17T02:30:20.245417",
431 + "lot_id": "202608-0317-1304-edeb3597-b6ba-4754-a27b-457b177084dd",
432 + "lot_number": 1810,
433 + "meta_slug": "2002-magic-the-gathering-judgement-unopened-fat-pack-pair-2-packsn05c7",
434 + "min_bid_price": 10,
435 + "number_of_bids": 23,
436 + "primary_image_name": "5424db04-bea0-4503-8398-416b612b33be",
437 + "reserve_amount": 0.0,
438 + "start_timestamp": "2026-08-05T21:00:00Z",
439 + "status": "Completed_Sold",
440 + "title": "2002 Magic: The Gathering Judgement Unopened Fat Pack Pair (2 Packs)"
441 + },
442 + {
443 + "auction_id": "202607-0712-5741-0ab0e1c3-d82d-49b3-9af8-2a5ccc6f844b",
444 + "auction_type": "Weekly",
445 + "buyer_premium": 22.0,
446 + "company_id": "",
447 + "current_price": 325,
448 + "end_timestamp": "2026-08-17T02:30:20.853518",
449 + "lot_id": "202602-0918-2108-8a04d7e2-afd9-473a-ae7a-fa044a6320b6",
450 + "lot_number": 1702,
451 + "meta_slug": "1994-magic-the-gathering-revised-edition-rare-savannahtgxno",
452 + "min_bid_price": 10,
453 + "number_of_bids": 12,
454 + "primary_image_name": "90afdecd-9c75-4f28-be31-8b244054bd96",
455 + "reserve_amount": 0.0,
456 + "start_timestamp": "2026-08-05T21:00:00Z",
457 + "status": "Completed_Sold",
458 + "title": "1994 Magic: The Gathering Revised Savannah - PSA NM 7"
459 + }
460 + ],
461 + "auctions": {
462 + "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00": {
463 + "title": "TCG Weekly Auction Aug 26 - Sep 6",
464 + "auction_type": "Weekly",
465 + "end_timestamp": "2026-09-07T02:00:00Z",
466 + "buyer_premium": 22,
467 + "status": "Completed"
468 + },
469 + "202607-0713-0842-dce30d81-2299-45d9-810e-9936c533b60c": {
470 + "title": "TCG Weekly Auction Aug 19 - Aug 30 ",
471 + "auction_type": "Weekly",
472 + "end_timestamp": "2026-08-31T02:00:00Z",
473 + "buyer_premium": 22,
474 + "status": "Completed"
475 + },
476 + "202607-0713-0154-1ee3f852-8b1a-496f-88f4-ffcbdc89997a": {
477 + "title": "TCG Weekly Auction Aug 12 - Aug 23 ",
478 + "auction_type": "Weekly",
479 + "end_timestamp": "2026-08-24T02:00:00Z",
480 + "buyer_premium": 22,
481 + "status": "Completed"
482 + },
483 + "202607-0712-5741-0ab0e1c3-d82d-49b3-9af8-2a5ccc6f844b": {
484 + "title": "TCG Weekly Auction Aug 5 - Aug 16",
485 + "auction_type": "Weekly",
486 + "end_timestamp": "2026-08-17T02:00:00Z",
487 + "buyer_premium": 22,
488 + "status": "Completed"
489 + }
490 + }
491 + }
492 + },
493 + "expect": {
494 + "count": 24,
495 + "kinds": [
496 + "sale"
497 + ],
498 + "requiredFields": [
499 + "saleDate",
500 + "price",
501 + "currency",
502 + "rawTitle",
503 + "attributes.categorySlug",
504 + "sourceUrl",
505 + "externalId"
506 + ]
507 + },
508 + "note": "Captured live from the Goldin Sold Items grid (lots_v2 XHR during Scrapfly rendering). Prices include buyer premium."
509 +}
\ No newline at end of file
added data/fixtures/goldin/pokemon-sold-page.json +488 −0
@@ -0,0 +1,488 @@
1 +{
2 + "raw": {
3 + "url": "https://goldin.co/buy/sc/pokemon?page=1&number_of_lots=24&show_only=Sold%20Items&sort=Most_Recent_Bids",
4 + "externalId": "/buy/sc/pokemon#1",
5 + "kind": "sale",
6 + "engine": "scrapfly",
7 + "fetchedAt": "2026-09-07T04:34:00.181681+00:00",
8 + "payload": {
9 + "kind": "sold_page",
10 + "seed": {
11 + "path": "/buy/sc/pokemon",
12 + "categorySlug": "pokemon"
13 + },
14 + "page": 1,
15 + "pageUrl": "https://goldin.co/buy/sc/pokemon?page=1&number_of_lots=24&show_only=Sold%20Items&sort=Most_Recent_Bids",
16 + "request": {
17 + "queryType": "Most_Recent_Bids",
18 + "sub_category": [
19 + "pokemon"
20 + ],
21 + "size": 24,
22 + "from": 0,
23 + "show_only": "Sold",
24 + "hasAnalyticsConsent": false
25 + },
26 + "total": 53285,
27 + "lots": [
28 + {
29 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
30 + "auction_type": "Weekly",
31 + "buyer_premium": 22.0,
32 + "company_id": "",
33 + "current_price": 500,
34 + "end_timestamp": "2026-09-07T04:02:26Z",
35 + "lot_id": "202608-1914-3146-fce3844b-d44d-4394-8ec7-cf6d7da0f883",
36 + "lot_number": 1331,
37 + "meta_slug": "2026-pokemon-mega-evolution-ascended-heroes-factory-sealed-elite-train4i8ru",
38 + "min_bid_price": 10,
39 + "number_of_bids": 32,
40 + "primary_image_name": "8803f0ca-22d9-4439-a2ea-fb85fdb05b0f",
41 + "reserve_amount": 0.0,
42 + "start_timestamp": "2026-08-26T21:00:00Z",
43 + "status": "Completed_Sold",
44 + "title": "2026 Pokemon Mega Evolution Ascended Heroes Factory-Sealed Elite Trainer Box Collection (3 Boxes) - Possible Full Art Mega Gengar ex, Pikachu ex, Mega Dragonite ex Cards"
45 + },
46 + {
47 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
48 + "auction_type": "Weekly",
49 + "buyer_premium": 22.0,
50 + "company_id": "",
51 + "current_price": 1330,
52 + "end_timestamp": "2026-09-07T03:48:50Z",
53 + "lot_id": "202608-2513-1321-023f0fb4-925f-4089-8052-29015582687f",
54 + "lot_number": 1045,
55 + "meta_slug": "2007-pokemon-japanese-promo-battle-road-spring-diamond-pearl-tag-battlvymmq",
56 + "min_bid_price": 10,
57 + "number_of_bids": 54,
58 + "primary_image_name": "b27cc958-0ddc-4eff-9cbb-61dca90c2a32",
59 + "reserve_amount": 0.0,
60 + "start_timestamp": "2026-08-26T21:00:00Z",
61 + "status": "Completed_Sold",
62 + "title": "2007 Pokemon Japanese Promo Battle Road Spring Diamond & Pearl Tag Battle Holo Time - Space Distortion - PSA GEM MT 10"
63 + },
64 + {
65 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
66 + "auction_type": "Weekly",
67 + "buyer_premium": 22.0,
68 + "company_id": "",
69 + "current_price": 80,
70 + "end_timestamp": "2026-09-07T03:43:07Z",
71 + "lot_id": "202608-1914-3146-e37da6db-8cc0-4874-9a9c-46f3ffe65dc0",
72 + "lot_number": 1334,
73 + "meta_slug": "2026-pokemon-mega-evolution-chaos-rising-factory-sealed-blister-pack-c8kzxl",
74 + "min_bid_price": 10,
75 + "number_of_bids": 27,
76 + "primary_image_name": "9f26764a-b7f6-41ca-9087-adc1994ddbc5",
77 + "reserve_amount": 0.0,
78 + "start_timestamp": "2026-08-26T21:00:00Z",
79 + "status": "Completed_Sold",
80 + "title": "2026 Pokemon Mega Evolution Chaos Rising Factory-Sealed Blister Pack Collection With Toxel Promo (18 Packs) - Possible Mega Greninja ex Special Illustration Rare Cards"
81 + },
82 + {
83 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
84 + "auction_type": "Weekly",
85 + "buyer_premium": 22.0,
86 + "company_id": "",
87 + "current_price": 4652,
88 + "end_timestamp": "2026-09-07T03:39:21Z",
89 + "lot_id": "202608-2614-4047-38b69898-7182-4166-9143-a30f84c987ad",
90 + "lot_number": 1038,
91 + "meta_slug": "2000-pokemon-promo-top-deck-magazine-wizards-gold-stamp-63-wartortle-py4u6t",
92 + "min_bid_price": 10,
93 + "number_of_bids": 41,
94 + "primary_image_name": "59584fec-9e1a-4cf2-b02c-869c6c2abc5f",
95 + "reserve_amount": 0.0,
96 + "start_timestamp": "2026-08-26T21:00:00Z",
97 + "status": "Completed_Sold",
98 + "title": "2000 Pokemon Promo Top Deck Magazine Wizards Gold Stamp #63 Wartortle - PSA GEM MT 10"
99 + },
100 + {
101 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
102 + "auction_type": "Weekly",
103 + "buyer_premium": 22.0,
104 + "company_id": "",
105 + "current_price": 229,
106 + "end_timestamp": "2026-09-07T03:39:04Z",
107 + "lot_id": "202608-2614-4047-c03ccf6b-8393-4a78-b116-2e2eb9a38da0",
108 + "lot_number": 1124,
109 + "meta_slug": "2000-pokemon-black-star-promo-23-zapdos-psa-gem-mt-10rl2xt",
110 + "min_bid_price": 10,
111 + "number_of_bids": 25,
112 + "primary_image_name": "b91ff621-a42a-4604-bdb1-89504bdaf75d",
113 + "reserve_amount": 0.0,
114 + "start_timestamp": "2026-08-26T21:00:00Z",
115 + "status": "Completed_Sold",
116 + "title": "2000 Pokemon Black Star Promo #23 Zapdos - PSA GEM MT 10"
117 + },
118 + {
119 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
120 + "auction_type": "Weekly",
121 + "buyer_premium": 22.0,
122 + "company_id": "",
123 + "current_price": 450,
124 + "end_timestamp": "2026-09-07T03:37:35Z",
125 + "lot_id": "202608-1820-4748-1e11f0b1-a48c-4b6f-8e9f-202256a89b27",
126 + "lot_number": 1198,
127 + "meta_slug": "2020-pokemon-sword-shield-zacian-zamazenta-factory-sealed-ultra-premiud4bg6",
128 + "min_bid_price": 10,
129 + "number_of_bids": 27,
130 + "primary_image_name": "0d8f376f-b720-4e52-be30-096889afd204",
131 + "reserve_amount": 0.0,
132 + "start_timestamp": "2026-08-26T21:00:00Z",
133 + "status": "Completed_Sold",
134 + "title": "2020 Pokemon Sword & Shield Zacian & Zamazenta Factory-Sealed Ultra Premium Collection (16 Packs)"
135 + },
136 + {
137 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
138 + "auction_type": "Weekly",
139 + "buyer_premium": 22.0,
140 + "company_id": "",
141 + "current_price": 401,
142 + "end_timestamp": "2026-09-07T03:36:40Z",
143 + "lot_id": "202608-1914-3146-7195fb18-db2f-4522-8516-01d17a9dcb44",
144 + "lot_number": 1215,
145 + "meta_slug": "2021-pokemon-sword-and-shield-shining-fates-factory-sealed-elite-traint40o5",
146 + "min_bid_price": 10,
147 + "number_of_bids": 44,
148 + "primary_image_name": "83127153-250b-4db3-a73b-76fd21826df2",
149 + "reserve_amount": 0.0,
150 + "start_timestamp": "2026-08-26T21:00:00Z",
151 + "status": "Completed_Sold",
152 + "title": "2021 Pokemon Sword and Shield Shining Fates Factory-Sealed Elite Trainer Box Collection (3) - Possible Charizard VMAX Cards"
153 + },
154 + {
155 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
156 + "auction_type": "Weekly",
157 + "buyer_premium": 22.0,
158 + "company_id": "",
159 + "current_price": 1105,
160 + "end_timestamp": "2026-09-07T03:36:40Z",
161 + "lot_id": "202608-1914-3146-1bc896a3-4404-4142-9740-d8ddece6e40e",
162 + "lot_number": 1228,
163 + "meta_slug": "2022-pokemon-sword-shield-ultra-premium-collection-charizard-factory-sfftat",
164 + "min_bid_price": 10,
165 + "number_of_bids": 54,
166 + "primary_image_name": "2255ed3c-ffa6-4e63-b905-adc16c57fef6",
167 + "reserve_amount": 0.0,
168 + "start_timestamp": "2026-08-26T21:00:00Z",
169 + "status": "Completed_Sold",
170 + "title": "2022 Pokemon Sword & Shield Ultra Premium Collection: Charizard Factory-Sealed Box Pair (2 Boxes, 16 Packs Per Box) - Including Charizard V, Charizard VMAX, Charizard VSTAR Promo Cards"
171 + },
172 + {
173 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
174 + "auction_type": "Weekly",
175 + "buyer_premium": 22.0,
176 + "company_id": "",
177 + "current_price": 91,
178 + "end_timestamp": "2026-09-07T03:36:40Z",
179 + "lot_id": "202608-1719-2617-ed6c8546-98f1-4691-91c4-819c979e9aa8",
180 + "lot_number": 1258,
181 + "meta_slug": "2024-pokemon-scarlet-violet-factory-sealed-twilight-masquerade-elite-tg75y8",
182 + "min_bid_price": 10,
183 + "number_of_bids": 14,
184 + "primary_image_name": "057f7a01-2331-426e-a866-1921df41e6b8",
185 + "reserve_amount": 0.0,
186 + "start_timestamp": "2026-08-26T21:00:00Z",
187 + "status": "Completed_Sold",
188 + "title": "2024 Pokemon Scarlet & Violet Factory-Sealed Twilight Masquerade Elite Trainer Box (9 Packs) - Possible Greninja ex Special Illustration Rare Card"
189 + },
190 + {
191 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
192 + "auction_type": "Weekly",
193 + "buyer_premium": 22.0,
194 + "company_id": "",
195 + "current_price": 1001,
196 + "end_timestamp": "2026-09-07T03:34:45Z",
197 + "lot_id": "202608-1914-3152-571930a4-2df4-4e4e-a373-4a03e94d6b08",
198 + "lot_number": 1035,
199 + "meta_slug": "1999-pokemon-topps-tv-series-1-character-cards-tv2-pikachu-psa-gem-mtsdpkp",
200 + "min_bid_price": 10,
201 + "number_of_bids": 48,
202 + "primary_image_name": "3bfcdb81-9c85-46d7-baef-0a81310a1742",
203 + "reserve_amount": 0.0,
204 + "start_timestamp": "2026-08-26T21:00:00Z",
205 + "status": "Completed_Sold",
206 + "title": "1999 Pokemon Topps TV Series 1 Character Cards #TV2 Pikachu - PSA GEM MT 10"
207 + },
208 + {
209 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
210 + "auction_type": "Weekly",
211 + "buyer_premium": 22.0,
212 + "company_id": "",
213 + "current_price": 405,
214 + "end_timestamp": "2026-09-07T03:32:27Z",
215 + "lot_id": "202607-3013-4327-6014ae22-acec-45d2-8822-0ef5f00238cf",
216 + "lot_number": 1117,
217 + "meta_slug": "1999-pokemon-jungle-1st-edition-holo-7-nidoqueen-psa-mint-94jg0b",
218 + "min_bid_price": 10,
219 + "number_of_bids": 21,
220 + "primary_image_name": "e7ade7af-7a6b-4d1c-8ce7-e80ad7374e86",
221 + "reserve_amount": 0.0,
222 + "start_timestamp": "2026-08-26T21:00:00Z",
223 + "status": "Completed_Sold",
224 + "title": "1999 Pokemon Jungle 1st Edition Holo #7 Nidoqueen - PSA MINT 9"
225 + },
226 + {
227 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
228 + "auction_type": "Weekly",
229 + "buyer_premium": 22.0,
230 + "company_id": "",
231 + "current_price": 805,
232 + "end_timestamp": "2026-09-07T03:26:27Z",
233 + "lot_id": "202608-1820-4747-d3c5e937-5426-4e41-bbc8-3591fd0cd79e",
234 + "lot_number": 1291,
235 + "meta_slug": "2025-pokemon-prismatic-evolutions-factory-sealed-pokemon-center-elite6mi2w",
236 + "min_bid_price": 10,
237 + "number_of_bids": 30,
238 + "primary_image_name": "49d45dfb-b60c-4681-a6d4-e6d2d379d7f6",
239 + "reserve_amount": 0.0,
240 + "start_timestamp": "2026-08-26T21:00:00Z",
241 + "status": "Completed_Sold",
242 + "title": "2025 Pokemon Prismatic Evolutions Factory-Sealed Pokemon Center Elite Trainer Box Pair (2 Boxes/11 Packs Per Box) - Possible Umbreon ex, Espeon ex, Sylveon ex Cards"
243 + },
244 + {
245 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
246 + "auction_type": "Weekly",
247 + "buyer_premium": 22.0,
248 + "company_id": "",
249 + "current_price": 205,
250 + "end_timestamp": "2026-09-07T03:25:42Z",
251 + "lot_id": "202608-1820-4748-e9dd4322-696c-4505-b6ec-ee4b0fc8e8b2",
252 + "lot_number": 1218,
253 + "meta_slug": "2022-pokemon-go-factory-sealed-tin-collection-6-tins-4-packs-per-tin-p4ixlm",
254 + "min_bid_price": 10,
255 + "number_of_bids": 19,
256 + "primary_image_name": "def668d3-7c7d-49cf-804e-903ce71f486f",
257 + "reserve_amount": 0.0,
258 + "start_timestamp": "2026-08-26T21:00:00Z",
259 + "status": "Completed_Sold",
260 + "title": "2022 Pokemon Go Factory-Sealed Tin Collection (6 Tins/ 4 Packs Per Tin) - Possible Mewtwo V Full Art Card"
261 + },
262 + {
263 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
264 + "auction_type": "Weekly",
265 + "buyer_premium": 22.0,
266 + "company_id": "",
267 + "current_price": 195,
268 + "end_timestamp": "2026-09-07T03:24:59Z",
269 + "lot_id": "202608-1720-5238-a0c92cf2-99aa-437b-8ca7-d577d6139775",
270 + "lot_number": 1296,
271 + "meta_slug": "2025-pokemon-scarlet-violet-black-bolt-factory-sealed-booster-bundle-6xqly4",
272 + "min_bid_price": 10,
273 + "number_of_bids": 30,
274 + "primary_image_name": "ea0f2d20-adc4-428f-bbff-6ead06b3b73b",
275 + "reserve_amount": 0.0,
276 + "start_timestamp": "2026-08-26T21:00:00Z",
277 + "status": "Completed_Sold",
278 + "title": "2025 Pokemon Scarlet & Violet Black Bolt Factory-Sealed Booster Bundle Collection (3 Boxes/6 Packs Per) - Possible Zekrom ex, Victini, Seismitoad Cards"
279 + },
280 + {
281 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
282 + "auction_type": "Weekly",
283 + "buyer_premium": 22.0,
284 + "company_id": "",
285 + "current_price": 180,
286 + "end_timestamp": "2026-09-07T03:23:51Z",
287 + "lot_id": "202608-1820-4748-f4025b4d-3f38-4fd1-b86d-888eb0bf3a6e",
288 + "lot_number": 1241,
289 + "meta_slug": "2023-pokemon-scarlet-violet-151-factory-sealed-mini-tin-collection-5-txykxr",
290 + "min_bid_price": 10,
291 + "number_of_bids": 22,
292 + "primary_image_name": "2c6ea27e-3d8d-4888-9371-b7cbfd06bee4",
293 + "reserve_amount": 0.0,
294 + "start_timestamp": "2026-08-26T21:00:00Z",
295 + "status": "Completed_Sold",
296 + "title": "2023 Pokemon Scarlet & Violet 151 Factory-Sealed Mini Tin Collection (5 Tins/2 Packs Per Tin) - Possible Charizard ex, Blastoise ex, Venusaur ex"
297 + },
298 + {
299 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
300 + "auction_type": "Weekly",
301 + "buyer_premium": 22.0,
302 + "company_id": "",
303 + "current_price": 225,
304 + "end_timestamp": "2026-09-07T03:23:38Z",
305 + "lot_id": "202608-1814-1639-c00e86ed-8b85-4bb5-aa52-2c61e72763a2",
306 + "lot_number": 1345,
307 + "meta_slug": "2026-pokemon-mega-evolution-perfect-order-factory-sealed-pokemon-centeonh70",
308 + "min_bid_price": 10,
309 + "number_of_bids": 21,
310 + "primary_image_name": "372c8250-4cf9-4c45-96ac-766cdc5e61a0",
311 + "reserve_amount": 0.0,
312 + "start_timestamp": "2026-08-26T21:00:00Z",
313 + "status": "Completed_Sold",
314 + "title": "2026 Pokemon Mega Evolution Perfect Order Factory-Sealed Pokemon Center Elite Trainer Box Pair (2 Boxes/ 11 Packs Per Box) - Possible Mega Zygarde ex, Meowth ex, Rosa's Encouragement Cards"
315 + },
316 + {
317 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
318 + "auction_type": "Weekly",
319 + "buyer_premium": 22.0,
320 + "company_id": "",
321 + "current_price": 1931,
322 + "end_timestamp": "2026-09-07T03:23:23Z",
323 + "lot_id": "202608-1914-3148-c285ca79-b336-4789-8c3e-483092a6e028",
324 + "lot_number": 1072,
325 + "meta_slug": "2022-pokemon-sword-and-shield-silver-tempest-factory-sealed-sleeved-bom1gl1",
326 + "min_bid_price": 10,
327 + "number_of_bids": 58,
328 + "primary_image_name": "a41f6edc-4e02-4628-87ff-8fa7a53bc255",
329 + "reserve_amount": 0.0,
330 + "start_timestamp": "2026-08-26T21:00:00Z",
331 + "status": "Completed_Sold",
332 + "title": "2022 Pokemon Sword and Shield Silver Tempest Factory-Sealed Sleeved Booster Pack Case (144 Packs) - Possible Alolan Vulpix VSTAR, Lugia V, Lugia VSTAR"
333 + },
334 + {
335 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
336 + "auction_type": "Weekly",
337 + "buyer_premium": 22.0,
338 + "company_id": "",
339 + "current_price": 1702,
340 + "end_timestamp": "2026-09-07T03:23:19Z",
341 + "lot_id": "202606-1617-1858-6c0341be-d150-40b5-9bdc-7fd02dac9d7e",
342 + "lot_number": 1087,
343 + "meta_slug": "1996-pokemon-japanese-base-set-holo-6-charizardomdlr",
344 + "min_bid_price": 10,
345 + "number_of_bids": 47,
346 + "primary_image_name": "f5bb8fba-ce8a-4c84-be89-43ec770fd45b",
347 + "reserve_amount": 0.0,
348 + "start_timestamp": "2026-08-26T21:00:00Z",
349 + "status": "Completed_Sold",
350 + "title": "1996 Pokemon Base Set Japanese Rare Holofoil #6 Charizard - BGS NM-MT+ 8.5"
351 + },
352 + {
353 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
354 + "auction_type": "Weekly",
355 + "buyer_premium": 22.0,
356 + "company_id": "",
357 + "current_price": 83,
358 + "end_timestamp": "2026-09-07T03:23:09Z",
359 + "lot_id": "202608-2513-1320-e5f415bc-5763-46bb-aae5-12139ddbed69",
360 + "lot_number": 1037,
361 + "meta_slug": "2000-pokemon-japanese-promo-trainer-champion-road-2000-fruit-of-miraclkz5iu",
362 + "min_bid_price": 10,
363 + "number_of_bids": 23,
364 + "primary_image_name": "6b65bee0-b5f0-4e78-b0b1-2d9335e7c5c8",
365 + "reserve_amount": 0.0,
366 + "start_timestamp": "2026-08-26T21:00:00Z",
367 + "status": "Completed_Sold",
368 + "title": "2000 Pokemon Japanese Promo Trainer - Champion Road 2000 Fruit of Miracle - PSA MINT 9"
369 + },
370 + {
371 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
372 + "auction_type": "Weekly",
373 + "buyer_premium": 22.0,
374 + "company_id": "",
375 + "current_price": 3251,
376 + "end_timestamp": "2026-09-07T03:17:43Z",
377 + "lot_id": "202608-2518-3215-a4cc54fd-75ab-42b6-b06b-fa5d06a8da54",
378 + "lot_number": 1039,
379 + "meta_slug": "2001-pokemon-neo-discovery-factory-sealed-2-pack-blister-possible-rareq4f47",
380 + "min_bid_price": 10,
381 + "number_of_bids": 36,
382 + "primary_image_name": "d7661b87-84ff-444e-a039-23232a82b07f",
383 + "reserve_amount": 0.0,
384 + "start_timestamp": "2026-08-26T21:00:00Z",
385 + "status": "Completed_Sold",
386 + "title": "2001 Pokemon Neo Discovery Factory-Sealed 2-Pack Blister - Possible Rare Holo Umbreon, Espeon, Tyranitar Cards"
387 + },
388 + {
389 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
390 + "auction_type": "Weekly",
391 + "buyer_premium": 22.0,
392 + "company_id": "",
393 + "current_price": 8566,
394 + "end_timestamp": "2026-09-07T03:13:42Z",
395 + "lot_id": "202608-2614-4047-23bfc4b8-bdf4-4538-8ac3-cf6b89ff2485",
396 + "lot_number": 1031,
397 + "meta_slug": "2016-pokemon-xy-black-star-promo-snorlax-gx-box-xy179-snorlax-psa-gemy884l",
398 + "min_bid_price": 10,
399 + "number_of_bids": 62,
400 + "primary_image_name": "a3ee0d2d-c09a-46fe-9b0a-1842d6b2cce2",
401 + "reserve_amount": 0.0,
402 + "start_timestamp": "2026-08-26T21:00:00Z",
403 + "status": "Completed_Sold",
404 + "title": "2016 Pokemon XY Black Star Promo Snorlax GX Box #XY179 Snorlax - PSA GEM MT 10"
405 + },
406 + {
407 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
408 + "auction_type": "Weekly",
409 + "buyer_premium": 22.0,
410 + "company_id": "",
411 + "current_price": 3500,
412 + "end_timestamp": "2026-09-07T03:12:54Z",
413 + "lot_id": "202608-2420-0056-d3133524-975b-4d13-9d9c-cea062efa715",
414 + "lot_number": 1040,
415 + "meta_slug": "2002-pokemon-expedition-color-proofing-test-card-101-clefairy-psa-custmvxw2",
416 + "min_bid_price": 10,
417 + "number_of_bids": 38,
418 + "primary_image_name": "222d2922-587d-4a97-a81e-7a14d5e3a101",
419 + "reserve_amount": 0.0,
420 + "start_timestamp": "2026-08-26T21:00:00Z",
421 + "status": "Completed_Sold",
422 + "title": "2002 Pokemon Expedition Color Proofing Test Card #101 Clefairy - PSA Custom Encapsulation"
423 + },
424 + {
425 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
426 + "auction_type": "Weekly",
427 + "buyer_premium": 22.0,
428 + "company_id": "",
429 + "current_price": 190,
430 + "end_timestamp": "2026-09-07T03:11:21Z",
431 + "lot_id": "202607-2920-0510-7a66104c-7125-4d18-bf2b-f5773846825b",
432 + "lot_number": 1105,
433 + "meta_slug": "1999-pokemon-fossil-1st-edition-25-lapras-psa-mint-9f4tbj",
434 + "min_bid_price": 10,
435 + "number_of_bids": 31,
436 + "primary_image_name": "f20c5391-abb1-4fe0-b8f6-2aacdacee9d6",
437 + "reserve_amount": 0.0,
438 + "start_timestamp": "2026-08-26T21:00:00Z",
439 + "status": "Completed_Sold",
440 + "title": "1999 Pokemon Fossil 1st Edition #25 Lapras - PSA MINT 9"
441 + },
442 + {
443 + "auction_id": "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00",
444 + "auction_type": "Weekly",
445 + "buyer_premium": 22.0,
446 + "company_id": "",
447 + "current_price": 364,
448 + "end_timestamp": "2026-09-07T03:11:38Z",
449 + "lot_id": "202608-1820-4745-8b1cb579-97f3-419a-b9a9-f71968d475db",
450 + "lot_number": 1084,
451 + "meta_slug": "aug-1999-wizard-special-edition-pokemon-pikachu-cover-newsstand-psa-65azmi",
452 + "min_bid_price": 10,
453 + "number_of_bids": 39,
454 + "primary_image_name": "b18ae3df-a2a4-449c-82ff-ee83001eaed7",
455 + "reserve_amount": 0.0,
456 + "start_timestamp": "2026-08-26T21:00:00Z",
457 + "status": "Completed_Sold",
458 + "title": "Aug. 1999 Wizard Special Edition: Pokemon Pikachu Cover (Newsstand) - Pop 1, None Higher - PSA 6.0 - Lone Newsstand in PSA Census - Wizard #96 Insert"
459 + }
460 + ],
461 + "auctions": {
462 + "202607-0713-1008-64d1433b-af54-480e-b236-44fc99c61d00": {
463 + "title": "TCG Weekly Auction Aug 26 - Sep 6",
464 + "auction_type": "Weekly",
465 + "end_timestamp": "2026-09-07T02:00:00Z",
466 + "buyer_premium": 22,
467 + "status": "Completed"
468 + }
469 + }
470 + }
471 + },
472 + "expect": {
473 + "count": 24,
474 + "kinds": [
475 + "sale"
476 + ],
477 + "requiredFields": [
478 + "saleDate",
479 + "price",
480 + "currency",
481 + "rawTitle",
482 + "attributes.categorySlug",
483 + "sourceUrl",
484 + "externalId"
485 + ]
486 + },
487 + "note": "Captured live from the Goldin Sold Items grid (lots_v2 XHR during Scrapfly rendering). Prices include buyer premium."
488 +}
\ No newline at end of file
added data/fixtures/goldin/sports-cards-sold-page.json +491 −0
@@ -0,0 +1,491 @@
1 +{
2 + "raw": {
3 + "url": "https://goldin.co/buy/c/Sports_Cards?page=1&number_of_lots=24&show_only=Sold%20Items&sort=Most_Recent_Bids",
4 + "externalId": "/buy/c/Sports_Cards#1",
5 + "kind": "sale",
6 + "engine": "scrapfly",
7 + "fetchedAt": "2026-09-07T04:34:00.186432+00:00",
8 + "payload": {
9 + "kind": "sold_page",
10 + "seed": {
11 + "path": "/buy/c/Sports_Cards",
12 + "categorySlug": "other_sports_cards"
13 + },
14 + "page": 1,
15 + "pageUrl": "https://goldin.co/buy/c/Sports_Cards?page=1&number_of_lots=24&show_only=Sold%20Items&sort=Most_Recent_Bids",
16 + "request": {
17 + "queryType": "Most_Recent_Bids",
18 + "category": [
19 + "Sport"
20 + ],
21 + "item_type": [
22 + "Single Cards"
23 + ],
24 + "size": 240,
25 + "from": 240,
26 + "show_only": "Sold",
27 + "hasAnalyticsConsent": false
28 + },
29 + "total": 307200,
30 + "lots": [
31 + {
32 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
33 + "auction_type": "Weekly",
34 + "buyer_premium": 22.0,
35 + "company_id": "",
36 + "current_price": 320,
37 + "end_timestamp": "2026-09-04T02:38:19Z",
38 + "lot_id": "202608-1817-5254-3e8e2d7a-cbe2-472a-b615-cf39ea96caf6",
39 + "lot_number": 1423,
40 + "meta_slug": "2018-19-panini-select-silver-prizm-7-shai-gilgeous-alexander-rookie-ca68cud",
41 + "min_bid_price": 10,
42 + "number_of_bids": 22,
43 + "primary_image_name": "a44729ab-1579-438d-a3a9-a24dee98a3b8",
44 + "reserve_amount": 0.0,
45 + "start_timestamp": "2026-08-25T21:00:00Z",
46 + "status": "Completed_Sold",
47 + "title": "2018-19 Panini Select Silver Prizm #7 Shai Gilgeous-Alexander Rookie Card - PSA GEM MT 10"
48 + },
49 + {
50 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
51 + "auction_type": "Weekly",
52 + "buyer_premium": 22.0,
53 + "company_id": "",
54 + "current_price": 377,
55 + "end_timestamp": "2026-09-04T02:37:57Z",
56 + "lot_id": "202608-1914-3147-ccb6b7f7-f59e-4ae6-bec7-960df19bd15b",
57 + "lot_number": 1320,
58 + "meta_slug": "2024-topps-finest-f1-finest-autograph-red-refractor-fac-zho-zhou-guanym0z5z",
59 + "min_bid_price": 10,
60 + "number_of_bids": 40,
61 + "primary_image_name": "abfd3d69-84e4-4931-8357-e87a27fb1e6d",
62 + "reserve_amount": 0.0,
63 + "start_timestamp": "2026-08-25T21:00:00Z",
64 + "status": "Completed_Sold",
65 + "title": "2024 Topps Finest F1 Finest Autograph Red Refractor #FAC-ZHO Zhou Guanyu Signed Card (#4/5) - PSA GEM MT 10"
66 + },
67 + {
68 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
69 + "auction_type": "Weekly",
70 + "buyer_premium": 22.0,
71 + "company_id": "",
72 + "current_price": 1300,
73 + "end_timestamp": "2026-09-04T02:37:42Z",
74 + "lot_id": "202604-2718-2921-bc9b8b2e-38e4-4af3-976e-8b8f49a230cc",
75 + "lot_number": 1060,
76 + "meta_slug": "2024-25-panini-mosaic-black-mosaic-38-shai-gilgeous-alexander-1-1een6t",
77 + "min_bid_price": 10,
78 + "number_of_bids": 44,
79 + "primary_image_name": "55c7d257-3c0b-4830-87d8-29308849d970",
80 + "reserve_amount": 0.0,
81 + "start_timestamp": "2026-08-25T21:00:00Z",
82 + "status": "Completed_Sold",
83 + "title": "2024-25 Panini Mosaic International Black #38 Shai Gilgeous-Alexander (#1/1) - PSA NM 7"
84 + },
85 + {
86 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
87 + "auction_type": "Weekly",
88 + "buyer_premium": 22.0,
89 + "company_id": "",
90 + "current_price": 405,
91 + "end_timestamp": "2026-09-04T02:37:37Z",
92 + "lot_id": "202608-1318-4848-80efaa2c-5c00-41c3-9b3d-eeb7aa7f9bac",
93 + "lot_number": 1482,
94 + "meta_slug": "1998-topps-power-brokers-refractor-pb3-ken-griffey-jr-psa-mint-9d5jui",
95 + "min_bid_price": 10,
96 + "number_of_bids": 17,
97 + "primary_image_name": "85e01252-92d0-44ad-baf0-5122d627b45c",
98 + "reserve_amount": 0.0,
99 + "start_timestamp": "2026-08-25T21:00:00Z",
100 + "status": "Completed_Sold",
101 + "title": "1998 Topps Power Brokers Refractor #PB3 Ken Griffey Jr. - PSA MINT 9"
102 + },
103 + {
104 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
105 + "auction_type": "Weekly",
106 + "buyer_premium": 22.0,
107 + "company_id": "",
108 + "current_price": 230,
109 + "end_timestamp": "2026-09-04T02:37:14Z",
110 + "lot_id": "202608-1720-5236-401f95aa-7797-4793-af45-f03a1e7b50d0",
111 + "lot_number": 1307,
112 + "meta_slug": "2024-25-panini-one-one-fourth-dimension-fd-gia-giannis-antetokounmpo-0v77pu",
113 + "min_bid_price": 10,
114 + "number_of_bids": 31,
115 + "primary_image_name": "b76d7ded-9611-4ce8-abb1-24b2ab2f2c3f",
116 + "reserve_amount": 0.0,
117 + "start_timestamp": "2026-08-25T21:00:00Z",
118 + "status": "Completed_Sold",
119 + "title": "2024-25 Panini One & One Fourth Dimension #FD-GIA Giannis Antetokounmpo (#05/10) - Panini Encased"
120 + },
121 + {
122 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
123 + "auction_type": "Weekly",
124 + "buyer_premium": 22.0,
125 + "company_id": "",
126 + "current_price": 140,
127 + "end_timestamp": "2026-09-04T02:37:08Z",
128 + "lot_id": "202608-1318-4846-940a66b0-ae40-4e23-861f-2da90dad8053",
129 + "lot_number": 1547,
130 + "meta_slug": "1970-topps-90-o-j-simpson-rookie-card-psa-ex-mt-6c8phh",
131 + "min_bid_price": 10,
132 + "number_of_bids": 13,
133 + "primary_image_name": "6f7373cb-60f2-4ad3-a96f-b02b37ddd28f",
134 + "reserve_amount": 0.0,
135 + "start_timestamp": "2026-08-25T21:00:00Z",
136 + "status": "Completed_Sold",
137 + "title": "1970 Topps #90 O.J. Simpson Rookie Card - PSA EX-MT 6"
138 + },
139 + {
140 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
141 + "auction_type": "Weekly",
142 + "buyer_premium": 22.0,
143 + "company_id": "",
144 + "current_price": 375,
145 + "end_timestamp": "2026-09-04T02:36:59Z",
146 + "lot_id": "202608-1915-2040-39affd62-0834-4141-9e12-8768f68b5770",
147 + "lot_number": 1197,
148 + "meta_slug": "2026-topps-finest-gustographs-ga-bh-bryce-harper-signed-card-unused-retaksj",
149 + "min_bid_price": 10,
150 + "number_of_bids": 44,
151 + "primary_image_name": "52700420-c8f0-4574-bf98-0d6a58b56569",
152 + "reserve_amount": 0.0,
153 + "start_timestamp": "2026-08-25T21:00:00Z",
154 + "status": "Completed_Sold",
155 + "title": "2026 Topps Finest Gustographs #GA-BH Bryce Harper Signed Card - Unused Redemption Card"
156 + },
157 + {
158 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
159 + "auction_type": "Weekly",
160 + "buyer_premium": 22.0,
161 + "company_id": "",
162 + "current_price": 193,
163 + "end_timestamp": "2026-09-04T02:36:17Z",
164 + "lot_id": "202608-1715-3548-af987d11-c0f5-4834-876e-71d1efed6d91",
165 + "lot_number": 1240,
166 + "meta_slug": "2025-topps-dynasty-autograph-patch-dap-cb3-carlos-beltran-signed-gameyi6hw",
167 + "min_bid_price": 10,
168 + "number_of_bids": 18,
169 + "primary_image_name": "033f59d7-675d-46ce-bba1-bc339c22e959",
170 + "reserve_amount": 0.0,
171 + "start_timestamp": "2026-08-25T21:00:00Z",
172 + "status": "Completed_Sold",
173 + "title": "2025 Topps Dynasty Autograph Patch #DAP-CB3 Carlos Beltran Signed Game-Used Patch Card (#06/10) - Topps Encased"
174 + },
175 + {
176 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
177 + "auction_type": "Weekly",
178 + "buyer_premium": 22.0,
179 + "company_id": "",
180 + "current_price": 2501,
181 + "end_timestamp": "2026-09-04T02:36:12Z",
182 + "lot_id": "202608-1317-5031-b2213510-1353-41b1-939d-43dac4c7a2c2",
183 + "lot_number": 1324,
184 + "meta_slug": "2024-panini-select-wnba-future-gold-flash-prizm-4-caitlin-clark-rookieky491",
185 + "min_bid_price": 10,
186 + "number_of_bids": 45,
187 + "primary_image_name": "8ddbe960-7e47-4e99-a49c-25a365f7b2e3",
188 + "reserve_amount": 0.0,
189 + "start_timestamp": "2026-08-25T21:00:00Z",
190 + "status": "Completed_Sold",
191 + "title": "2024 Panini Select WNBA Future Gold Flash Prizm #4 Caitlin Clark Rookie Card (#03/10) - PSA GEM MT 10"
192 + },
193 + {
194 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
195 + "auction_type": "Weekly",
196 + "buyer_premium": 22.0,
197 + "company_id": "",
198 + "current_price": 270,
199 + "end_timestamp": "2026-09-04T02:36:11Z",
200 + "lot_id": "202608-2513-1323-c992ff53-4256-45e1-ac96-c086e77607da",
201 + "lot_number": 1267,
202 + "meta_slug": "2025-topps-chrome-f1-refractor-8-kimi-antonelli-rookie-card-psa-mint-957lid",
203 + "min_bid_price": 10,
204 + "number_of_bids": 6,
205 + "primary_image_name": "6822d905-6d8d-4327-afe5-78e472dd70d1",
206 + "reserve_amount": 0.0,
207 + "start_timestamp": "2026-08-25T21:00:00Z",
208 + "status": "Completed_Sold",
209 + "title": "2025 Topps Chrome F1 Refractor #8 Kimi Antonelli Rookie Card - PSA MINT 9"
210 + },
211 + {
212 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
213 + "auction_type": "Weekly",
214 + "buyer_premium": 22.0,
215 + "company_id": "",
216 + "current_price": 675,
217 + "end_timestamp": "2026-09-04T02:36:09Z",
218 + "lot_id": "202608-2114-1915-eef7996c-de07-40bf-9b5b-c3c5bfda6b67",
219 + "lot_number": 1194,
220 + "meta_slug": "2026-topps-tribute-autograph-i-purple-ta-mmu-munetaka-murakami-signedjagng",
221 + "min_bid_price": 10,
222 + "number_of_bids": 21,
223 + "primary_image_name": "f2416b42-6cfb-4e80-95be-372606f18b05",
224 + "reserve_amount": 0.0,
225 + "start_timestamp": "2026-08-25T21:00:00Z",
226 + "status": "Completed_Sold",
227 + "title": "2026 Topps Tribute Autograph I Purple #TA-MMU Munetaka Murakami Signed Card (#/75) - Unused Redemption Card"
228 + },
229 + {
230 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
231 + "auction_type": "Weekly",
232 + "buyer_premium": 22.0,
233 + "company_id": "",
234 + "current_price": 33,
235 + "end_timestamp": "2026-09-04T02:35:36Z",
236 + "lot_id": "202606-3021-2029-8f4487d5-e9bf-443c-9e29-aa5ef2460e5b",
237 + "lot_number": 1426,
238 + "meta_slug": "2018-19-panini-prizm-184-shai-gilgeous-alexander-rookie-card-psa-mintpygrj",
239 + "min_bid_price": 10,
240 + "number_of_bids": 11,
241 + "primary_image_name": "d0d179fe-bb24-4f70-a45c-e56d62f2459e",
242 + "reserve_amount": 0.0,
243 + "start_timestamp": "2026-08-25T21:00:00Z",
244 + "status": "Completed_Sold",
245 + "title": "2018-19 Panini Prizm #184 Shai Gilgeous-Alexander Rookie Card - PSA MINT 9"
246 + },
247 + {
248 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
249 + "auction_type": "Weekly",
250 + "buyer_premium": 22.0,
251 + "company_id": "",
252 + "current_price": 34,
253 + "end_timestamp": "2026-09-04T02:35:06Z",
254 + "lot_id": "202607-2220-5235-9a610040-ed1a-45cb-b03a-34ee38927214",
255 + "lot_number": 1205,
256 + "meta_slug": "2025-26-topps-201-cooper-flagg-rookie-card-psa-mint-95s9fx",
257 + "min_bid_price": 10,
258 + "number_of_bids": 12,
259 + "primary_image_name": "218ee629-2a49-4459-a2f6-06af399a8a80",
260 + "reserve_amount": 0.0,
261 + "start_timestamp": "2026-08-25T21:00:00Z",
262 + "status": "Completed_Sold",
263 + "title": "2025-26 Topps #201 Cooper Flagg Rookie Card - PSA MINT 9"
264 + },
265 + {
266 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
267 + "auction_type": "Weekly",
268 + "buyer_premium": 22.0,
269 + "company_id": "",
270 + "current_price": 1981,
271 + "end_timestamp": "2026-09-04T02:34:39Z",
272 + "lot_id": "202608-1220-1310-57bd4fff-1c11-46cd-9d5f-a203a5de51cc",
273 + "lot_number": 1123,
274 + "meta_slug": "1982-topps-610-rickey-henderson-psa-gem-mt-10df2z3",
275 + "min_bid_price": 10,
276 + "number_of_bids": 16,
277 + "primary_image_name": "cd4b97d8-f6f2-48a0-9faf-1b7cdb0a599c",
278 + "reserve_amount": 0.0,
279 + "start_timestamp": "2026-08-25T21:00:00Z",
280 + "status": "Completed_Sold",
281 + "title": "1982 Topps #610 Rickey Henderson - PSA GEM MT 10"
282 + },
283 + {
284 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
285 + "auction_type": "Weekly",
286 + "buyer_premium": 22.0,
287 + "company_id": "",
288 + "current_price": 1000,
289 + "end_timestamp": "2026-09-04T02:34:29Z",
290 + "lot_id": "202608-1317-5031-c7cae1d5-4784-436a-989c-58320aea2a2f",
291 + "lot_number": 1325,
292 + "meta_slug": "2024-panini-select-turbocharged-tie-dye-prizm-24-drake-maye-rookie-caryf54l",
293 + "min_bid_price": 10,
294 + "number_of_bids": 39,
295 + "primary_image_name": "befe0455-e515-4a50-930a-2fea938db2c0",
296 + "reserve_amount": 0.0,
297 + "start_timestamp": "2026-08-25T21:00:00Z",
298 + "status": "Completed_Sold",
299 + "title": "2024 Panini Select Turbocharged Tie-Dye Prizm #24 Drake Maye Rookie Card (#15/25) - PSA GEM MT 10"
300 + },
301 + {
302 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
303 + "auction_type": "Weekly",
304 + "buyer_premium": 22.0,
305 + "company_id": "",
306 + "current_price": 286,
307 + "end_timestamp": "2026-09-04T02:34:22Z",
308 + "lot_id": "202608-2416-2842-7ebb6a1c-aa7c-4d63-a612-b4b6d45e4c98",
309 + "lot_number": 1412,
310 + "meta_slug": "2020-topps-chrome-f1-sapphire-edition-aqua-177-charles-leclerc-83-99-pqjryx",
311 + "min_bid_price": 10,
312 + "number_of_bids": 30,
313 + "primary_image_name": "a13651de-e422-48d2-a02a-80169706eae2",
314 + "reserve_amount": 0.0,
315 + "start_timestamp": "2026-08-25T21:00:00Z",
316 + "status": "Completed_Sold",
317 + "title": "2020 Topps Chrome F1 Sapphire Edition Aqua #177 Charles Leclerc (#83/99) - PSA GEM MT 10"
318 + },
319 + {
320 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
321 + "auction_type": "Weekly",
322 + "buyer_premium": 22.0,
323 + "company_id": "",
324 + "current_price": 315,
325 + "end_timestamp": "2026-09-04T02:33:25Z",
326 + "lot_id": "202608-1714-4422-cfad9beb-5a28-4e43-b518-22455683fd4b",
327 + "lot_number": 1247,
328 + "meta_slug": "2025-topps-dynasty-autograph-patch-dapb-rj1-reggie-jackson-signed-game1rgr7",
329 + "min_bid_price": 10,
330 + "number_of_bids": 20,
331 + "primary_image_name": "abf0e6a3-a3f5-45cf-9800-83e6f44c290a",
332 + "reserve_amount": 0.0,
333 + "start_timestamp": "2026-08-25T21:00:00Z",
334 + "status": "Completed_Sold",
335 + "title": "2025 Topps Dynasty Autograph Patch #DAPB-RJ1 Reggie Jackson Signed Game-Used Patch Card (#08/10) - Topps Encased"
336 + },
337 + {
338 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
339 + "auction_type": "Weekly",
340 + "buyer_premium": 22.0,
341 + "company_id": "",
342 + "current_price": 1202,
343 + "end_timestamp": "2026-09-04T02:32:59Z",
344 + "lot_id": "202607-2413-2730-3af9b927-41a7-4140-9330-10f354a4e1f0",
345 + "lot_number": 1441,
346 + "meta_slug": "2016-topps-dynasty-autograph-patch-ap-nr8-nolan-ryan-signed-patch-cardy26vo",
347 + "min_bid_price": 10,
348 + "number_of_bids": 55,
349 + "primary_image_name": "eb19f5bb-a7ba-4c83-96f7-86f2f77aa099",
350 + "reserve_amount": 0.0,
351 + "start_timestamp": "2026-08-25T21:00:00Z",
352 + "status": "Completed_Sold",
353 + "title": "2016 Topps Dynasty Autograph Patch #AP-NR8 Nolan Ryan Signed Patch Card (#07/10) - Topps Encased"
354 + },
355 + {
356 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
357 + "auction_type": "Weekly",
358 + "buyer_premium": 22.0,
359 + "company_id": "",
360 + "current_price": 20,
361 + "end_timestamp": "2026-09-04T02:32:58Z",
362 + "lot_id": "202608-1315-3430-570b0f75-0723-4b2b-8ddc-af887d929ed3",
363 + "lot_number": 1319,
364 + "meta_slug": "2024-topps-now-11-jayden-daniels-rookie-card-sgc-gm-10hhsxp",
365 + "min_bid_price": 10,
366 + "number_of_bids": 6,
367 + "primary_image_name": "b0aae2f5-af5b-4a1a-a001-146175bc0d04",
368 + "reserve_amount": 0.0,
369 + "start_timestamp": "2026-08-25T21:00:00Z",
370 + "status": "Completed_Sold",
371 + "title": "2024 Topps Now #11 Jayden Daniels Rookie Card - SGC GM 10"
372 + },
373 + {
374 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
375 + "auction_type": "Weekly",
376 + "buyer_premium": 22.0,
377 + "company_id": "",
378 + "current_price": 507,
379 + "end_timestamp": "2026-09-04T02:32:43Z",
380 + "lot_id": "202608-1420-5827-4b89544e-3ce7-4f18-a9b0-ddbd1fe5ed42",
381 + "lot_number": 1245,
382 + "meta_slug": "2025-topps-dynasty-autograph-patch-design-b-gold-dapb-oh1-orel-hershis0mxhq",
383 + "min_bid_price": 10,
384 + "number_of_bids": 38,
385 + "primary_image_name": "b3ddc6ac-b5de-45e1-bd36-1a48a9d78196",
386 + "reserve_amount": 0.0,
387 + "start_timestamp": "2026-08-25T21:00:00Z",
388 + "status": "Completed_Sold",
389 + "title": "2025 Topps Dynasty Autograph Patch Design B Gold #DAPB-OH1 Orel Hershiser Signed Game-Used Patch Card (#1/1) - Topps Encased"
390 + },
391 + {
392 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
393 + "auction_type": "Weekly",
394 + "buyer_premium": 22.0,
395 + "company_id": "",
396 + "current_price": 135,
397 + "end_timestamp": "2026-09-04T02:32:42Z",
398 + "lot_id": "202608-1420-5826-f700b614-22b1-40f3-82dd-5809d54a28e1",
399 + "lot_number": 1256,
400 + "meta_slug": "2025-topps-dynasty-autograph-patch-design-b-dapb-cse2-cory-seager-signy17m9",
401 + "min_bid_price": 10,
402 + "number_of_bids": 28,
403 + "primary_image_name": "bd47aef3-8b14-44e4-ad9a-9c1e91d166a4",
404 + "reserve_amount": 0.0,
405 + "start_timestamp": "2026-08-25T21:00:00Z",
406 + "status": "Completed_Sold",
407 + "title": "2025 Topps Dynasty Autograph Patch Design B #DAPB-CSE2 Cory Seager Signed Game-Used Patch Card (#09/10) - Topps Encased"
408 + },
409 + {
410 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
411 + "auction_type": "Weekly",
412 + "buyer_premium": 22.0,
413 + "company_id": "",
414 + "current_price": 661,
415 + "end_timestamp": "2026-09-04T02:32:29Z",
416 + "lot_id": "202608-1317-5029-56273f16-c136-406c-91e4-fe79e5a8c6dd",
417 + "lot_number": 1510,
418 + "meta_slug": "1989-90-fleer-sticker-3-michael-jordan-psa-mint-9az7ry",
419 + "min_bid_price": 10,
420 + "number_of_bids": 6,
421 + "primary_image_name": "f89b62cf-4ac0-43fc-ab6e-19a0441b0243",
422 + "reserve_amount": 0.0,
423 + "start_timestamp": "2026-08-25T21:00:00Z",
424 + "status": "Completed_Sold",
425 + "title": "1989-90 Fleer Sticker #3 Michael Jordan - PSA MINT 9"
426 + },
427 + {
428 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
429 + "auction_type": "Weekly",
430 + "buyer_premium": 22.0,
431 + "company_id": "",
432 + "current_price": 240,
433 + "end_timestamp": "2026-09-04T02:32:24Z",
434 + "lot_id": "202608-2102-2436-8483e290-8970-4f1b-a0a0-b2a9e6af0593",
435 + "lot_number": 1103,
436 + "meta_slug": "2015-16-immaculate-collection-signatures-blue-sca-carmelo-anthony-signq3ekh",
437 + "min_bid_price": 10,
438 + "number_of_bids": 27,
439 + "primary_image_name": "ce7ba138-7562-4ea4-a9b4-605c005f396d",
440 + "reserve_amount": 0.0,
441 + "start_timestamp": "2026-08-25T21:00:00Z",
442 + "status": "Completed_Sold",
443 + "title": "2015-16 Immaculate Collection Signatures Blue #SCA Carmelo Anthony Signed Card (#04/10) - BGS NM-MT+ 8.5"
444 + },
445 + {
446 + "auction_id": "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806",
447 + "auction_type": "Weekly",
448 + "buyer_premium": 22.0,
449 + "company_id": "",
450 + "current_price": 175,
451 + "end_timestamp": "2026-09-04T02:32:11Z",
452 + "lot_id": "202608-2102-2432-7bd61896-09cc-4c1c-899b-904efb2204e8",
453 + "lot_number": 1470,
454 + "meta_slug": "2003-04-campioni-di-futuro-sky-54-roger-federer-psa-gem-mt-10edu3c",
455 + "min_bid_price": 10,
456 + "number_of_bids": 22,
457 + "primary_image_name": "ccfeb1d8-49ea-48c3-b984-ef97f10d383b",
458 + "reserve_amount": 0.0,
459 + "start_timestamp": "2026-08-25T21:00:00Z",
460 + "status": "Completed_Sold",
461 + "title": "2003-04 Campioni Di Futuro Sky #54 Roger Federer - PSA GEM MT 10"
462 + }
463 + ],
464 + "auctions": {
465 + "202603-0419-0721-c5607146-069a-47ef-8151-7ae9a6ad3806": {
466 + "title": "2026 Weekly Auction Aug 25 - Sep 3",
467 + "auction_type": "Weekly",
468 + "end_timestamp": "2026-09-04T02:00:00Z",
469 + "buyer_premium": 22,
470 + "status": "Completed"
471 + }
472 + }
473 + }
474 + },
475 + "expect": {
476 + "count": 24,
477 + "kinds": [
478 + "sale"
479 + ],
480 + "requiredFields": [
481 + "saleDate",
482 + "price",
483 + "currency",
484 + "rawTitle",
485 + "attributes.categorySlug",
486 + "sourceUrl",
487 + "externalId"
488 + ]
489 + },
490 + "note": "Captured live from the Goldin Sold Items grid (lots_v2 XHR during Scrapfly rendering). Prices include buyer premium."
491 +}
\ No newline at end of file
added data/fixtures/phillips-watches/CH080226.json +29 −0
@@ -0,0 +1,29 @@
1 +{
2 + "raw": {
3 + "url": "https://www.phillips.com/auction/CH080226",
4 + "externalId": "CH080226",
5 + "kind": "sale",
6 + "engine": "firecrawl",
7 + "fetchedAt": "2026-09-07T04:42:56.067Z",
8 + "payload": {
9 + "kind": "auction_results",
10 + "url": "https://www.phillips.com/auction/CH080226",
11 + "saleNumber": "CH080226",
12 + "title": "The Geneva Watch Auction: XXIII",
13 + "location": "GENEVA",
14 + "startDate": "2026-05-09T14:00:00+02:00",
15 + "endDate": "2026-05-10T18:00:00+02:00",
16 + "lotCount": 225,
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\nLive Auction\n\n# The Geneva Watch Auction: XXIII\n\nGeneva\n\nConcludedMay 10 2026\n\nBrowse Upcoming Sales[View Calendar](https://www.phillips.com/calendar)\n\n![The Geneva Watch Auction: XXIII](https://dist.phillips.com/auction-assets/CH080226/CH080226.jpg?fit=cover&optimize=medium&width=1302)\n\nOverviewBrowse lots\n\nFilters\n\nLot Navigation\n\nShow Lot123456789101112131415161718192021222324252627282930313233343536373940414243444546474849505152535455565758596061626364656667687071727374757677787980818283848586878890919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229\n\n## 225 Lots\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231278_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nÉlégante 48\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF82,550](https://www.phillips.com/detail/f.p.-journe/231278)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227857_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n2\\\\\n\\\\\nKrayon\\\\\n\\\\\nAnywhere Métiers d’Art Azur\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF209,550](https://www.phillips.com/detail/krayon/227857)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231344_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n3\\\\\n\\\\\nDaniel Roth\\\\\nRef. DBB001\\\\\nExtra Plat\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF57,150](https://www.phillips.com/detail/daniel-roth/231344)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227654_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n4\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nOcta Lune \"38mm Brass Movement\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF533,400](https://www.phillips.com/detail/f.p.-journe/227654)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230434_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n5\\\\\n\\\\\nDaniel Roth\\\\\nRef. C187\\\\\nTourbillon Regulateur Double Face \"White Gold\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF241,300](https://www.phillips.com/detail/daniel-roth/230434)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229223_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n6\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nChronomètre à Résonance \"Souscription No. 18\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF450,000–900,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF4,875,500](https://www.phillips.com/detail/f.p.-journe/229223)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/191565_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n7\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5055G\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF10,000–20,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF21,590](https://www.phillips.com/detail/patek-philippe/191565)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/191562_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n8\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5000J\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF6,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF11,430](https://www.phillips.com/detail/patek-philippe/191562)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/191622_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n9\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5004P\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF180,000–360,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF457,200](https://www.phillips.com/detail/patek-philippe/191622)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/191639_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n10\\\\\n\\\\\nPatek Philippe\\\\\nRef. 130\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF44,450](https://www.phillips.com/detail/patek-philippe/191639)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232880_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n11\\\\\n\\\\\nCharles Frodsham\\\\\n\\\\\n\"Minute Repeating Split Seconds Chronograph \"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF10,000–20,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF40,640](https://www.phillips.com/detail/charles-frodsham/232880)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232869_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n12\\\\\n\\\\\nJ. W. Benson\\\\\n\\\\\n\"Double Dial Two Time-Zones\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF15,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF177,800](https://www.phillips.com/detail/j.-w.-benson/232869)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232876_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n13\\\\\n\\\\\nCharles Frodsham\\\\\n\\\\\n\"Split Seconds Chronograph Tourbillon\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF152,400](https://www.phillips.com/detail/charles-frodsham/232876)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232866_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n14\\\\\n\\\\\nKarl Geitz\\\\\n\\\\\n\"Flying Tourbillon with Spring Detent Escapement\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF355,600](https://www.phillips.com/detail/karl-geitz/232866)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/191633_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n15\\\\\n\\\\\nRolex\\\\\nRef. 116515LN\\\\\nCosmograph Daytona\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF30,480](https://www.phillips.com/detail/rolex/191633)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232557_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n16\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3700\\\\\nNautilus \"Jumbo\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF273,050](https://www.phillips.com/detail/patek-philippe/232557)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229799_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n17\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 5402\\\\\nRoyal Oak \"A Series\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF120,650](https://www.phillips.com/detail/audemars-piguet/229799)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231911_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n18\\\\\n\\\\\nRolex\\\\\nRef. 4768\\\\\nAnti-Magnetique\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF90,000–180,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF292,100](https://www.phillips.com/detail/rolex/231911)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231677_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n19\\\\\n\\\\\nRolex\\\\\nRef. 6234\\\\\nOyster Chronograph “Pre-Daytona”\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF203,200](https://www.phillips.com/detail/rolex/231677)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230933_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n20\\\\\n\\\\\nRolex\\\\\nRef. 6200\\\\\nSubmariner \"Big Crown\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF139,700](https://www.phillips.com/detail/rolex/230933)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229751_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n21\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5070G-014\\\\\n\"Saatchi Gallery\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF250,000–500,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF711,200](https://www.phillips.com/detail/patek-philippe/229751)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/226544_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n22\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3998J-013\\\\\nUnique \"HALMUT NAUTUN\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF444,500](https://www.phillips.com/detail/patek-philippe/226544)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232746_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n23\\\\\n\\\\\nZenith\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF15,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF88,900](https://www.phillips.com/detail/zenith/232746)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231681_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n24\\\\\n\\\\\nAgassiz Watch Co.\\\\\n\\\\\n\"Victory Watch - Charles de Gaulle\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF300,000–600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF1,460,500](https://www.phillips.com/detail/agassiz-watch-co./231681)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/223003_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n25\\\\\n\\\\\nPatek Philippe\\\\\n\\\\\n\"Minute Repeating Perpetual Calendar Chronograph\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF190,500](https://www.phillips.com/detail/patek-philippe/223003)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229851_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n26\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 5503\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF400,000–800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF1,092,200](https://www.phillips.com/detail/audemars-piguet/229851)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231940_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n27\\\\\n\\\\\nPatek Philippe\\\\\nRef. 2523\\\\\n\"Polychrome Two-crown World-time\", \"Doppia Corona Policromo\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nIn excess of CHF5,000,000 / €5,490,000 / $6,340,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF7,961,000](https://www.phillips.com/detail/patek-philippe/231940)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231912_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n28\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5231J-001\\\\\nWorld Time\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF120,650](https://www.phillips.com/detail/patek-philippe/231912)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229325_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n29\\\\\n\\\\\nPatek Philippe\\\\\nRef. 788\\\\\nRicochet\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF63,500](https://www.phillips.com/detail/patek-philippe/229325)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232259_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n30\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3619\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF368,300](https://www.phillips.com/detail/patek-philippe/232259)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231276_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n31\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5168G-001\\\\\nAquanaut\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF95,250](https://www.phillips.com/detail/patek-philippe/231276)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231277_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n32\\\\\n\\\\\nRolex\\\\\nRef. 126506\\\\\nCosmograph Daytona\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF114,300](https://www.phillips.com/detail/rolex/231277)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230804_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n33\\\\\n\\\\\nUrwerk\\\\\nRef. UR-103.02\\\\\nUR103\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF27,940](https://www.phillips.com/detail/urwerk/230804)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231711_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n34\\\\\n\\\\\nUrban Jürgensen\\\\\n\\\\\nReference 6\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF152,400](https://www.phillips.com/detail/urban-j%C3%BCrgensen/231711)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227678_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n35\\\\\n\\\\\nDe Bethune\\\\\nRef. DBK2V1\\\\\nDB Kind of Two Jumping GMT\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF177,800](https://www.phillips.com/detail/de-bethune/227678)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/226172_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n36\\\\\n\\\\\nAkrivia\\\\\n\\\\\nAK-06\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF350,000–700,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF3,000,000](https://www.phillips.com/detail/akrivia/226172)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232269_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n37\\\\\n\\\\\nHautlence\\\\\nRef. HLS 02\\\\\nHLS 02\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF8,000–16,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF15,240](https://www.phillips.com/detail/hautlence/232269)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229538_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n39\\\\\n\\\\\nPiaget\\\\\nRef. 9731C210\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF15,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF35,560](https://www.phillips.com/detail/piaget/229538)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229329_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n40\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 6346\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF10,000–20,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF16,510](https://www.phillips.com/detail/vacheron-constantin/229329)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232264_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n41\\\\\n\\\\\nPatek Philippe\\\\\nRef. 4397/1\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF165,100](https://www.phillips.com/detail/patek-philippe/232264)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231523_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n42\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3589/1\\\\\nGrand Ellipse\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF12,000–24,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF33,020](https://www.phillips.com/detail/patek-philippe/231523)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230433_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n43\\\\\n\\\\\nChaumet\\\\\nRef. 10A\\\\\nPléiade\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF5,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF72,390](https://www.phillips.com/detail/chaumet/230433)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230427_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n44\\\\\n\\\\\nPatek Philippe\\\\\nRef. 4232/1\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF279,400](https://www.phillips.com/detail/patek-philippe/230427)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230320_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n45\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3940J-028\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF342,900](https://www.phillips.com/detail/patek-philippe/230320)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/226593_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n46\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 15305ST\\\\\nRoyal Oak\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF25,000–50,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF114,300](https://www.phillips.com/detail/audemars-piguet/226593)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/225455_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n47\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5970P\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF140,000–280,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF355,600](https://www.phillips.com/detail/patek-philippe/225455)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230435_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n48\\\\\n\\\\\nCredor\\\\\nRef. GBAQ958\\\\\nCaliber 6870 25th Anniversary\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF6,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF19,050](https://www.phillips.com/detail/credor/230435)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232802_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n49\\\\\n\\\\\nGrand Seiko\\\\\nRef. 6145-8030\\\\\n61GS\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF5,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF38,100](https://www.phillips.com/detail/grand-seiko/232802)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232803_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n50\\\\\n\\\\\nGrand Seiko\\\\\nRef. J14070\\\\\nGrand Seiko \"The First\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF7,000–14,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF19,050](https://www.phillips.com/detail/grand-seiko/232803)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/226591_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n51\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5070R-001\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF35,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF82,550](https://www.phillips.com/detail/patek-philippe/226591)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230777_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n52\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5261R-001\\\\\nAquanaut\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF215,900](https://www.phillips.com/detail/patek-philippe/230777)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230485_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n53\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5711/1A-014\\\\\nNautilus \"Green Dial\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF190,500](https://www.phillips.com/detail/patek-philippe/230485)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230330_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n54\\\\\n\\\\\nRichard Mille\\\\\nRef. RM027-RN\\\\\nRM27 \"Nadal\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF500,000–1,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF952,500](https://www.phillips.com/detail/richard-mille/230330)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231348_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n55\\\\\n\\\\\nRichard Mille\\\\\nRef. RM65-01\\\\\nRM65-01\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF150,000–300,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF241,300](https://www.phillips.com/detail/richard-mille/231348)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231522_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n56\\\\\n\\\\\nRolex\\\\\nRef. 1803\\\\\nDay-Date\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF18,000–36,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF33,020](https://www.phillips.com/detail/rolex/231522)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231281_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n57\\\\\n\\\\\nRolex\\\\\nRef. 16238\\\\\nDatejust \"Lapis Lazuli\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF15,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF44,450](https://www.phillips.com/detail/rolex/231281)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/226541_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n58\\\\\n\\\\\nRolex\\\\\nRef. 16600\\\\\nSea-Dweller\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF5,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF10,160](https://www.phillips.com/detail/rolex/226541)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/226540_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n59\\\\\n\\\\\nRolex\\\\\nRef. 126660\\\\\nSea-Dweller, Deepsea “James Cameron”\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF5,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF19,050](https://www.phillips.com/detail/rolex/226540)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229239_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n60\\\\\n\\\\\nRolex\\\\\nRef. 16528, caseback stamped 16500 to the inside\\\\\nCosmograph Daytona \"Floating\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF25,000–50,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF40,640](https://www.phillips.com/detail/rolex/229239)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230798_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n61\\\\\n\\\\\nAndersen Geneve\\\\\n\\\\\nWorld Time \"Columbus\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF5,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF24,130](https://www.phillips.com/detail/andersen-geneve/230798)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230755_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n62\\\\\n\\\\\nUrban Jürgensen\\\\\nRef. 1140\\\\\n\"Unique\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF25,000–50,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF88,900](https://www.phillips.com/detail/urban-j%C3%BCrgensen/230755)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227497_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n63\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nTourbillon Souverain \"Ruthenium\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF300,000–600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF825,500](https://www.phillips.com/detail/f.p.-journe/227497)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230657_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n64\\\\\n\\\\\nDe Bethune\\\\\nRef. DB27\\\\\nTitan Hawk V2\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF95,250](https://www.phillips.com/detail/de-bethune/230657)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231703_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n65\\\\\n\\\\\nGreubel Forsey X Philippe Dufour X Michel Boulanger\\\\\n\\\\\nNaissance d'Une Montre 1 (N°1/11)\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF400,000–800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF1,651,000](https://www.phillips.com/detail/greubel-forsey-x-philippe-dufour-x-michel-boulanger/231703)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/221608_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n66\\\\\n\\\\\nRolex\\\\\nRef. 6536/1\\\\\nSubmariner \"Red Depth\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF15,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF19,050](https://www.phillips.com/detail/rolex/221608)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/213790_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n67\\\\\n\\\\\nRolex\\\\\nRef. 1675\\\\\nGMT-Master\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF15,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF24,130](https://www.phillips.com/detail/rolex/213790)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227996_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n68\\\\\n\\\\\nRolex\\\\\nRef. 6239\\\\\nCosmograph Daytona \"Jumbo Logo\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF25,000–50,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF63,500](https://www.phillips.com/detail/rolex/227996)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231114_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n70\\\\\n\\\\\nRolex\\\\\nRef. 5510\\\\\nSubmariner \"Big Crown\", \"Coroncione\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF127,000](https://www.phillips.com/detail/rolex/231114)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232881_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n71\\\\\n\\\\\nSwiss\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF5,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF17,780](https://www.phillips.com/detail/swiss/232881)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232882_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n72\\\\\n\\\\\nSwiss\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF5,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF13,970](https://www.phillips.com/detail/swiss/232882)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232745_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n73\\\\\n\\\\\nIlbery\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF25,000–50,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF35,560](https://www.phillips.com/detail/ilbery/232745)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232750_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n74\\\\\n\\\\\nCharles Gretton\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF71,120](https://www.phillips.com/detail/charles-gretton/232750)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232239_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n75\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 25712BA\\\\\nGrande Complication\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF152,400](https://www.phillips.com/detail/audemars-piguet/232239)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232240_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n76\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 25913PT\\\\\nJules Audemars Star Wheel Two Faces\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF114,300](https://www.phillips.com/detail/audemars-piguet/232240)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231005_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n77\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 25947OR\\\\\nEdward Piguet N°1\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF15,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF88,900](https://www.phillips.com/detail/audemars-piguet/231005)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229296_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n78\\\\\n\\\\\nRolex\\\\\nRef. 116509\\\\\nCosmograph Daytona\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF57,150](https://www.phillips.com/detail/rolex/229296)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229225_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n79\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5711/1R-001\\\\\nNautilus\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF90,000–180,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF165,100](https://www.phillips.com/detail/patek-philippe/229225)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229297_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n80\\\\\n\\\\\nRolex\\\\\n\\\\\nDay-Date\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF203,200](https://www.phillips.com/detail/rolex/229297)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/225447_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n81\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3940G-013\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF25,000–50,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF88,900](https://www.phillips.com/detail/patek-philippe/225447)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/226595_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n82\\\\\n\\\\\nRolex\\\\\nRef. 116659SABR\\\\\nSubmariner\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF120,650](https://www.phillips.com/detail/rolex/226595)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230110_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n83\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 136.829\\\\\nLange 1 Zeitzone\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF127,000](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/230110)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232558_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n84\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5071G\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF220,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF381,000](https://www.phillips.com/detail/patek-philippe/232558)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232273_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n85\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5270G-001\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF107,950](https://www.phillips.com/detail/patek-philippe/232273)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/225462_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n86\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5738/50G-019\\\\\nGolden Ellipse Rare Handcraft \"Callithrix\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF228,600](https://www.phillips.com/detail/patek-philippe/225462)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227556_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n87\\\\\n\\\\\nRolex\\\\\nRef. 1804\\\\\nDay-Date \"Octopussy\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF215,900](https://www.phillips.com/detail/rolex/227556)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229796_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n88\\\\\n\\\\\nRolex\\\\\nRef. 6062\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF500,000–1,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF533,400](https://www.phillips.com/detail/rolex/229796)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230750_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n90\\\\\n\\\\\nBreguet\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF82,550](https://www.phillips.com/detail/breguet/230750)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232748_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n91\\\\\n\\\\\nBreguet\\\\\n\\\\\n\"One Minute Tourbillon - James Pellaton\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF139,700](https://www.phillips.com/detail/breguet/232748)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/191702_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n92\\\\\n\\\\\nPatek Philippe\\\\\nRef. 550\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF4,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF33,020](https://www.phillips.com/detail/patek-philippe/191702)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/191680_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n93\\\\\n\\\\\nPatek Philippe\\\\\nRef. 2455\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF8,000–16,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF22,860](https://www.phillips.com/detail/patek-philippe/191680)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/191580_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n94\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5110P\\\\\nWorldtime\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF15,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF33,020](https://www.phillips.com/detail/patek-philippe/191580)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/191706_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n95\\\\\n\\\\\nPatek Philippe\\\\\nRef. 448/2\\\\\nCalatrava\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF4,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF7,620](https://www.phillips.com/detail/patek-philippe/191706)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/191674_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n96\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3970E\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF190,500](https://www.phillips.com/detail/patek-philippe/191674)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/191577_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n97\\\\\n\\\\\nPatek Philippe\\\\\nRef. 1526\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF152,400](https://www.phillips.com/detail/patek-philippe/191577)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232270_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n98\\\\\n\\\\\nAndersen Geneve\\\\\nRef. 10853\\\\\nEros XL \"Venezia Con Amore\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF10,000–20,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF38,100](https://www.phillips.com/detail/andersen-geneve/232270)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227653_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n99\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nOcta Calendrier \"38mm Brass Movement\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF635,000](https://www.phillips.com/detail/f.p.-journe/227653)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232127_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n100\\\\\n\\\\\nLederer\\\\\n\\\\\nInverto \"Prototype 00\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF342,900](https://www.phillips.com/detail/lederer/232127)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231274_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n101\\\\\n\\\\\nAUFFRET PARIS\\\\\n\\\\\nGiverny \"Prototype\" Blue Train\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF571,500](https://www.phillips.com/detail/auffret-paris/231274)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227679_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n102\\\\\n\\\\\nGrönefeld\\\\\n\\\\\n1941 Grönograaf\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF190,500](https://www.phillips.com/detail/gr%C3%B6nefeld/227679)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231758_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n103\\\\\n\\\\\nLudovic Ballouard X Atelier Blandenier\\\\\n\\\\\nUpside Down \"Quel Homard Est Il?\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF152,400](https://www.phillips.com/detail/ludovic-ballouard-x-atelier-blandenier/231758)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232255_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n104\\\\\n\\\\\nL. Leroy\\\\\n\\\\\nMinute Repeater\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF12,000–24,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF40,640](https://www.phillips.com/detail/l.-leroy/232255)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232257_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n105\\\\\n\\\\\nLongines\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF3,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF7,620](https://www.phillips.com/detail/longines/232257)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232878_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n106\\\\\n\\\\\nFridlander\\\\\n\\\\\n\"Grande & Petite Sonnerie Minute Repeating Perpetual Calendar Chronograph\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF95,250](https://www.phillips.com/detail/fridlander/232878)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232877_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n107\\\\\n\\\\\nGolay Fils & Stahl\\\\\n\\\\\n\"Minute Repeating with Sunrise, Sunset and Equation of Time made for the Maharaja of Patiala\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF647,700](https://www.phillips.com/detail/golay-fils-&-stahl/232877)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232871_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n108\\\\\n\\\\\nLouis Richard\\\\\n\\\\\n\"Triple Detent Constant Force One Minute Tourbillon Chronometer\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF3,968,000](https://www.phillips.com/detail/louis-richard/232871)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227559_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n109\\\\\n\\\\\nRolex\\\\\nRef. 18098\\\\\nDay-Date\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF114,300](https://www.phillips.com/detail/rolex/227559)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/228514_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n110\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 25654SA\\\\\nRoyal Oak Quantième Perpétuel\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF76,200](https://www.phillips.com/detail/audemars-piguet/228514)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/191632_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n111\\\\\n\\\\\nRolex\\\\\nRef. 16519\\\\\nCosmograph Daytona\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF50,800](https://www.phillips.com/detail/rolex/191632)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/191586_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n112\\\\\n\\\\\nOmega\\\\\nRef. 311.32.42.30.04.001\\\\\nSpeedmaster Alaska Project\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF5,000–10,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF27,940](https://www.phillips.com/detail/omega/191586)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227412_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n113\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 14802ST\\\\\nRoyal Oak Jubilee\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF48,260](https://www.phillips.com/detail/audemars-piguet/227412)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230329_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n114\\\\\n\\\\\nRolex\\\\\nRef. 16520, caseback stamped 16500\\\\\nCosmograph Daytona \"prototype dial\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF180,000–360,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF203,200](https://www.phillips.com/detail/rolex/230329)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231521_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n115\\\\\n\\\\\nRolex\\\\\nRef. 18039, inside caseback stamped 18000\\\\\nDay-Date\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF18,000–36,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF30,480](https://www.phillips.com/detail/rolex/231521)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227790_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n116\\\\\n\\\\\nRolex\\\\\nRef. 3525\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF40,640](https://www.phillips.com/detail/rolex/227790)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229604_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n117\\\\\n\\\\\nRolex\\\\\nRef. 6262\\\\\nCosmograph Daytona “Paul Newman”\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF120,000–240,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF304,800](https://www.phillips.com/detail/rolex/229604)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230932_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n118\\\\\n\\\\\nRolex\\\\\nRef. 6036\\\\\n\"Datocompax Killy\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF500,000–1,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF685,800](https://www.phillips.com/detail/rolex/230932)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229921_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n119\\\\\n\\\\\nRolex\\\\\nRef. 6085\\\\\n\"The Dragon\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF500,000–1,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF571,500](https://www.phillips.com/detail/rolex/229921)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229224_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n120\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5711/1A-010\\\\\nNautilus\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF88,900](https://www.phillips.com/detail/patek-philippe/229224)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229226_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n121\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5726/1A-001\\\\\nNautilus\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF82,550](https://www.phillips.com/detail/patek-philippe/229226)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232083_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n122\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3970EG-016\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF190,500](https://www.phillips.com/detail/patek-philippe/232083)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227499_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n123\\\\\n\\\\\nPierre Kunz\\\\\nRef. PKA 701 T JDR\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF25,000–50,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF27,940](https://www.phillips.com/detail/pierre-kunz/227499)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230800_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n124\\\\\n\\\\\nLang & Heyne\\\\\n\\\\\nFriedrich II Remontoir The Lavish Attic Edition\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF50,800](https://www.phillips.com/detail/lang-&-heyne/230800)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231466_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n125\\\\\n\\\\\nDaniel Roth\\\\\nRef. DAAD01\\\\\nTourbillon\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF120,650](https://www.phillips.com/detail/daniel-roth/231466)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231469_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n126\\\\\n\\\\\nRoger Smith\\\\\n\\\\\nSeries 3\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF300,000–600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF711,200](https://www.phillips.com/detail/roger-smith/231469)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229237_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n127\\\\\n\\\\\nDe Bethune\\\\\nRef. DB8W S1\\\\\nDB8 \"Prototype N° 0\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF292,100](https://www.phillips.com/detail/de-bethune/229237)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227409_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n128\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nOcta Chronographe \"Straight Côtes de Genève\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF150,000–300,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF1,714,500](https://www.phillips.com/detail/f.p.-journe/227409)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232874_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n129\\\\\n\\\\\nLouis Richard\\\\\n\\\\\n\"Triple Bridge Tourbillon\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF304,800](https://www.phillips.com/detail/louis-richard/232874)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232747_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n130\\\\\n\\\\\nVictor Kullberg\\\\\n\\\\\n\"One Minute Tourbillon Chronometer with Earnshaw Spring Detent Escapement\\*\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF266,700](https://www.phillips.com/detail/victor-kullberg/232747)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232873_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n131\\\\\n\\\\\nRobert Pennington & Richard Pendleton\\\\\n\\\\\n\"One Day Marine Chronometer in the form of a Mudge Constant Force Timekeeper\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF203,200](https://www.phillips.com/detail/robert-pennington-&-richard-pendleton/232873)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232245_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n132\\\\\n\\\\\nPiaget\\\\\nRef. 612406\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF10,000–20,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF82,550](https://www.phillips.com/detail/piaget/232245)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/228796_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n133\\\\\n\\\\\nPiaget\\\\\nRef. 14661 C701\\\\\nPolo Automatique\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF15,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF152,400](https://www.phillips.com/detail/piaget/228796)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230005_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n134\\\\\n\\\\\nBreguet\\\\\nRef. 3357\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF44,450](https://www.phillips.com/detail/breguet/230005)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/210818_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n135\\\\\n\\\\\nBlancpain\\\\\nRef. 5335\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF69,850](https://www.phillips.com/detail/blancpain/210818)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232749_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n136\\\\\n\\\\\nCharles Frodsham\\\\\n\\\\\n\"Minute Repeating Split-Seconds Chronograph with One-Minute Tourbillon\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF406,400](https://www.phillips.com/detail/charles-frodsham/232749)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232865_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n137\\\\\n\\\\\nLouis Audemars & Co\\\\\n\\\\\nLa Royale \"Super Complication\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF400,000–800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF2,516,000](https://www.phillips.com/detail/louis-audemars-&-co/232865)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232872_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n138\\\\\n\\\\\nPaul Ditisheim\\\\\n\\\\\n\"Minute Detent Escapement Tourbillon\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF1,270,000](https://www.phillips.com/detail/paul-ditisheim/232872)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231175_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n139\\\\\n\\\\\nIWC\\\\\nRef. 3770-25\\\\\nGrande Complication\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF88,900](https://www.phillips.com/detail/iwc/231175)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/233015_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n140\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5160/500G\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF120,650](https://www.phillips.com/detail/patek-philippe/233015)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231337_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n141\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5740/1G-001\\\\\nNautilus Perpetual Calendar\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF177,800](https://www.phillips.com/detail/patek-philippe/231337)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227464_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n142\\\\\n\\\\\nPatek Philippe\\\\\nRef. 6102P-001\\\\\nCelestial\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF120,000–240,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF215,900](https://www.phillips.com/detail/patek-philippe/227464)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231960_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n143\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5070P-001\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF165,100](https://www.phillips.com/detail/patek-philippe/231960)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231959_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n144\\\\\n\\\\\nPatek Philippe\\\\\nRef. 6002G-010\\\\\nSky Moon Tourbillon\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF2,000,000–4,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF3,242,000](https://www.phillips.com/detail/patek-philippe/231959)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227272_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n145\\\\\n\\\\\nDaniel Roth\\\\\nRef. C137/2137\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF25,000–50,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF76,200](https://www.phillips.com/detail/daniel-roth/227272)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231710_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n146\\\\\n\\\\\nUrban Jürgensen\\\\\n\\\\\nReference 2 \"Prototype\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF508,000](https://www.phillips.com/detail/urban-j%C3%BCrgensen/231710)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229854_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n147\\\\\n\\\\\nUrban Jürgensen\\\\\nRef. 1140PT\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF60,960](https://www.phillips.com/detail/urban-j%C3%BCrgensen/229854)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230801_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n148\\\\\n\\\\\nVianney Halter\\\\\n\\\\\nLiberty\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF57,150](https://www.phillips.com/detail/vianney-halter/230801)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229536_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n149\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nChronomètre à Résonance \"Pisa\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF450,000–900,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF2,334,500](https://www.phillips.com/detail/f.p.-journe/229536)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232272_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n150\\\\\n\\\\\nDe Bethune\\\\\nRef. DB25VGTIS3\\\\\nDB25 GMT Starry Varius\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF95,250](https://www.phillips.com/detail/de-bethune/232272)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232266_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n151\\\\\n\\\\\nPiaget\\\\\nRef. 91104\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF8,000–16,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF48,260](https://www.phillips.com/detail/piaget/232266)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232246_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n152\\\\\n\\\\\nCartier\\\\\nRef. 2514\\\\\nBaignoire Allongée\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF10,000–20,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF30,480](https://www.phillips.com/detail/cartier/232246)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232886_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n153\\\\\n\\\\\nRolex\\\\\nRef. 3393\\\\\nCellini \"Maha\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF228,600](https://www.phillips.com/detail/rolex/232886)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232800_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n154\\\\\n\\\\\nCartier\\\\\n\\\\\nCrash \"Paris\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF150,000–300,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF431,800](https://www.phillips.com/detail/cartier/232800)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231676_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n155\\\\\n\\\\\nCartier\\\\\nRef. 78096\\\\\nCristallor\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF15,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF62,230](https://www.phillips.com/detail/cartier/231676)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/191589_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n156\\\\\n\\\\\nBulgari\\\\\nRef. 55 - 7471\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF2,000–4,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF21,590](https://www.phillips.com/detail/bulgari/191589)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232261_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n157\\\\\n\\\\\nPatek Philippe\\\\\nRef. 4121/1\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF55,880](https://www.phillips.com/detail/patek-philippe/232261)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229035_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n158\\\\\n\\\\\nCartier\\\\\nRef. 78102\\\\\nCoussin Bamboo \"Jumbo\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF88,900](https://www.phillips.com/detail/cartier/229035)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232244_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n159\\\\\n\\\\\nBreguet\\\\\nRef. 3441BA/82/A95DDDD\\\\\nMarine\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF90,000–180,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF190,500](https://www.phillips.com/detail/breguet/232244)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227134_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n160\\\\\n\\\\\nRolex\\\\\nRef. 18366, caseback stamped 18200 to the inside\\\\\nDay-Date\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF133,350](https://www.phillips.com/detail/rolex/227134)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229798_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n161\\\\\n\\\\\nRolex\\\\\nRef. 6239 inside caseback stamped 6238\\\\\nCosmograph \"Double Swiss Underline\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF190,500](https://www.phillips.com/detail/rolex/229798)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230795_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n162\\\\\n\\\\\nRolex\\\\\nRef. 6098\\\\\nOyster Perpetual Ovettone Stelline\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF90,000–180,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF139,700](https://www.phillips.com/detail/rolex/230795)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/228883_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n163\\\\\n\\\\\nRolex\\\\\nRef. 6241\\\\\nPaul Newman \"Champagne\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF350,000–700,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF825,500](https://www.phillips.com/detail/rolex/228883)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/226539_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n164\\\\\n\\\\\nRolex\\\\\nRef. 16520 inside caseback stamped 16500\\\\\nCosmograph Daytona \"Patrizzi Dial\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF45,720](https://www.phillips.com/detail/rolex/226539)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/226538_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n165\\\\\n\\\\\nRolex\\\\\nRef. 16520\\\\\nCosmograph Daytona \"Porcelain\" Dial\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF139,700](https://www.phillips.com/detail/rolex/226538)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/226536_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n166\\\\\n\\\\\nRolex\\\\\nRef. 16520, inside caseback stamped 16500\\\\\nCosmograph Daytona \"4-liner\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF38,100](https://www.phillips.com/detail/rolex/226536)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229141_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n167\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5004P-021\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF150,000–300,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF381,000](https://www.phillips.com/detail/patek-philippe/229141)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229326_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n168\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5370P-011\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF120,000–240,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF177,800](https://www.phillips.com/detail/patek-philippe/229326)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231944_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n169\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5711/1P-010\\\\\nNautilus\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF393,700](https://www.phillips.com/detail/patek-philippe/231944)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229381_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n170\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 15202IP\\\\\nRoyal Oak\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF101,600](https://www.phillips.com/detail/audemars-piguet/229381)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227789_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n171\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 26615TI\\\\\nRoyal Oak\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF146,050](https://www.phillips.com/detail/audemars-piguet/227789)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/178808_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n172\\\\\n\\\\\nRolex\\\\\nRef. 6265\\\\\nCosmograph Daytona\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF57,150](https://www.phillips.com/detail/rolex/178808)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227495_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n173\\\\\n\\\\\nRolex\\\\\nRef. 5513/5517\\\\\nSubmariner \"Milsub\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF100,000–200,000](https://www.phillips.com/detail/rolex/227495)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232084_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n174\\\\\n\\\\\nCartier\\\\\nRef. HP101529\\\\\nCrash Tigrée\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF330,200](https://www.phillips.com/detail/cartier/232084)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231173_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n175\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 47650\\\\\nHistoriques Toledo 1952\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF134,620](https://www.phillips.com/detail/vacheron-constantin/231173)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229853_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n176\\\\\n\\\\\nRolex\\\\\nRef. 18206\\\\\nDay-Date\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF44,450](https://www.phillips.com/detail/rolex/229853)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229935_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n177\\\\\n\\\\\nRolex\\\\\nRef. 18338\\\\\nDay-Date\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF76,200](https://www.phillips.com/detail/rolex/229935)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232801_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n179\\\\\n\\\\\nCredor\\\\\nRef. 6L75-00C0\\\\\nGCCD983\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF3,000–6,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF9,525](https://www.phillips.com/detail/credor/232801)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/222303_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n180\\\\\n\\\\\nMB&F\\\\\nRef. MB-90\\\\\nHorological Machine 9 \"Flow Titanium Air\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF152,400](https://www.phillips.com/detail/mb&f/222303)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231739_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n181\\\\\n\\\\\nMoritz Grossmann\\\\\n\\\\\nTefnut Silver-Plated by Friction - Philippe & Elisabeth Dufour Foundation\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF25,000–45,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF53,340](https://www.phillips.com/detail/moritz-grossmann/231739)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232250_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n182\\\\\n\\\\\nDino & Roberto Falcone\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF889,000](https://www.phillips.com/detail/dino-&-roberto-falcone/232250)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/228797_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n183\\\\\n\\\\\nDe Bethune\\\\\nRef. DB10R\\\\\nDB10 \"N° 001\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF25,000–50,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF81,280](https://www.phillips.com/detail/de-bethune/228797)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232253_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n184\\\\\n\\\\\nGreubel Forsey\\\\\n\\\\\nTourbillon 24 Secondes Edition Historique\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF120,000–240,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF254,000](https://www.phillips.com/detail/greubel-forsey/232253)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232870_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n185\\\\\n\\\\\nGutkaes, Dresden\\\\\n\\\\\n\"Chronometer with Detent Escapement\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF10,000–20,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF33,020](https://www.phillips.com/detail/gutkaes,-dresden/232870)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/225902_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n186\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 101.002\\\\\nLange 1\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF25,000–50,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF35,560](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/225902)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232875_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n187\\\\\n\\\\\nA. Lange & Söhne\\\\\n\\\\\n\"Minute Repeating Perpetual Calendar made for Prince Friedrich II of Solms-Baruth\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF150,000–300,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF215,900](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/232875)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/225464_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n188\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 403.035\\\\\nDatograph\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF82,550](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/225464)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/226535_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n189\\\\\n\\\\\nRolex\\\\\nRef. 16520\\\\\nCosmograph Daytona\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF35,560](https://www.phillips.com/detail/rolex/226535)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229752_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n190\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5270/1R-001\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF139,700](https://www.phillips.com/detail/patek-philippe/229752)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/226537_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n191\\\\\n\\\\\nRolex\\\\\nRef. 16520\\\\\nCosmograph Daytona \"High Serif\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF46,990](https://www.phillips.com/detail/rolex/226537)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227785_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n192\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3800/1\\\\\nNautilus \"Pink Gold\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF304,800](https://www.phillips.com/detail/patek-philippe/227785)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227410_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n193\\\\\n\\\\\nRolex\\\\\nRef. 6265\\\\\nCosmograph Daytona\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF63,500](https://www.phillips.com/detail/rolex/227410)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227411_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n194\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3800/1\\\\\nNautilus \"Tiffany & Co\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF24,000–48,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF120,650](https://www.phillips.com/detail/patek-philippe/227411)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/178759_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n195\\\\\n\\\\\nRolex\\\\\nRef. 6238\\\\\n\"Pre-Daytona\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF15,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF50,800](https://www.phillips.com/detail/rolex/178759)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/226592_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n196\\\\\n\\\\\nPatek Philippe\\\\\nRef. 2526\\\\\nCalatrava\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF115,570](https://www.phillips.com/detail/patek-philippe/226592)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229646_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n197\\\\\n\\\\\nRolex\\\\\nRef. 6264\\\\\nCosmograph Daytona \"Paul Newman\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF120,000–240,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF317,500](https://www.phillips.com/detail/rolex/229646)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232384_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n198\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5074R-001\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF250,000–500,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF508,000](https://www.phillips.com/detail/patek-philippe/232384)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230008_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n199\\\\\n\\\\\nBreguet\\\\\nRef. 3477\\\\\nClassique “Grande Complication”\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF12,000–24,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF76,200](https://www.phillips.com/detail/breguet/230008)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/228072_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n200\\\\\n\\\\\nBreguet\\\\\nRef. 3310\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF15,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF50,800](https://www.phillips.com/detail/breguet/228072)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232271_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n201\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5990/1A-001\\\\\nNautilus Travel Time Chronograph\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF101,600](https://www.phillips.com/detail/patek-philippe/232271)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230111_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n202\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 191.066\\\\\nLange 1 \"25th Anniversary\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF54,610](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/230111)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/228481_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n203\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 252.029\\\\\nRichard Lange Jumping Seconds\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF63,500](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/228481)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231174_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n204\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 25980AI.OO.D003SU.01\\\\\nRoyal Oak Concept Watch (CW1)\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF203,200](https://www.phillips.com/detail/audemars-piguet/231174)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227125_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n205\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nOcta Réserve de Marche \"Souscription\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF508,000](https://www.phillips.com/detail/f.p.-journe/227125)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227856_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n206\\\\\n\\\\\nHaldimann\\\\\nRef. H1\\\\\nH1 Central Tourbillon\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF482,600](https://www.phillips.com/detail/haldimann/227856)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/228527_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n207\\\\\n\\\\\nFranck Muller\\\\\n\\\\\nJanus\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF190,500](https://www.phillips.com/detail/franck-muller/228527)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227498_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n208\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nTourbillon Souverain à Remontoir d'Egalité\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF350,000–700,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF1,524,000](https://www.phillips.com/detail/f.p.-journe/227498)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232243_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n209\\\\\n\\\\\nBlancpain\\\\\n\\\\\nVilleret\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF101,600](https://www.phillips.com/detail/blancpain/232243)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/221605_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n210\\\\\n\\\\\nPatek Philippe\\\\\nRef. 2461\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF38,100](https://www.phillips.com/detail/patek-philippe/221605)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231923_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n211\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3541\\\\\nCalatrava\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF10,000–20,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF48,260](https://www.phillips.com/detail/patek-philippe/231923)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232242_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n212\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 26299OR.OO.D001GA.01\\\\\nRoyal Oak Offshore \"Marcus Edition\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF49,530](https://www.phillips.com/detail/audemars-piguet/232242)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/230006_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n213\\\\\n\\\\\nRolex\\\\\nRef. 16528\\\\\nCosmograph Daytona \"Tiffany & Co.\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF107,950](https://www.phillips.com/detail/rolex/230006)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/178741_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n214\\\\\n\\\\\nRolex\\\\\nRef. 6265\\\\\nCosmograph Daytona \"Big Red\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF88,900](https://www.phillips.com/detail/rolex/178741)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232556_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n215\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 14802ST\\\\\nRoyal Oak Jubilee\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF114,300](https://www.phillips.com/detail/audemars-piguet/232556)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229327_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n216\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3800/1\\\\\nNautilus \"Platinum\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF133,350](https://www.phillips.com/detail/patek-philippe/229327)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232263_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n217\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5007P\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF114,300](https://www.phillips.com/detail/patek-philippe/232263)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/229801_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n218\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3700/11\\\\\nNautilus \"Jumbo\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF146,050](https://www.phillips.com/detail/patek-philippe/229801)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232559_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n219\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5070P-013\\\\\n\"Saatchi Gallery\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF406,400](https://www.phillips.com/detail/patek-philippe/232559)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/231335_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n220\\\\\n\\\\\nPatek Philippe\\\\\nRef. 2499/100\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF350,000–650,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF889,000](https://www.phillips.com/detail/patek-philippe/231335)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232265_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n221\\\\\n\\\\\nPatek Philippe\\\\\nRef. 4359/1\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF150,000–300,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF330,200](https://www.phillips.com/detail/patek-philippe/232265)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232868_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n222\\\\\n\\\\\nVacheron Constantin\\\\\n\\\\\n\"Marine Chronometer with Detent Escapement\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF190,500](https://www.phillips.com/detail/vacheron-constantin/232868)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/221609_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n223\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 4591\\\\\n\"The Hour Glass\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF15,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF38,100](https://www.phillips.com/detail/vacheron-constantin/221609)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/221602_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n224\\\\\n\\\\\nVacheron Constantin\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF15,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF82,550](https://www.phillips.com/detail/vacheron-constantin/221602)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232267_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n225\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 4764\\\\\n\"Cioccolatone\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF250,000–500,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF635,000](https://www.phillips.com/detail/vacheron-constantin/232267)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/227991_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n226\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 4639\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF101,600](https://www.phillips.com/detail/vacheron-constantin/227991)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/221606_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n227\\\\\n\\\\\nCartier\\\\\n\\\\\n\"Tank Basculante\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF76,200](https://www.phillips.com/detail/cartier/221606)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232879_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n228\\\\\n\\\\\nCartier\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF15,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF48,260](https://www.phillips.com/detail/cartier/232879)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/CH080226/232744_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n229\\\\\n\\\\\nCartier\\\\\n\\\\\nMystery clock\\\\\n\\\\\nEstimate\\\\\n\\\\\nCHF600,000–1,200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nCHF1,219,200](https://www.phillips.com/detail/cartier/232744)\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 + }
19 + },
20 + "expect": {
21 + "minCount": 10,
22 + "kinds": [
23 + "sale",
24 + "auction_lot"
25 + ]
26 + },
27 + "note": "captured live from https://www.phillips.com/auction/CH080226",
28 + "capturedAt": "2026-09-07T04:42:56.076Z"
29 +}
\ No newline at end of file
added data/fixtures/phillips-watches/HK080226.json +29 −0
@@ -0,0 +1,29 @@
1 +{
2 + "raw": {
3 + "url": "https://www.phillips.com/auction/HK080226",
4 + "externalId": "HK080226",
5 + "kind": "sale",
6 + "engine": "firecrawl",
7 + "fetchedAt": "2026-09-07T04:43:24.804Z",
8 + "payload": {
9 + "kind": "auction_results",
10 + "url": "https://www.phillips.com/auction/HK080226",
11 + "saleNumber": "HK080226",
12 + "title": "https://www.phillips.com/auction/HK080226",
13 + "location": "Hong Kong",
14 + "startDate": null,
15 + "endDate": "2026-05-31T00:00:00.000Z",
16 + "lotCount": 294,
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\nLive Auction\n\n# The Hong Kong Watch Auction: XXII\n\nHong Kong\n\nConcludedMay 31 2026\n\nBrowse Upcoming Sales[View Calendar](https://www.phillips.com/calendar)\n\n![The Hong Kong Watch Auction: XXII](https://dist.phillips.com/auction-assets/HK080226/HK080226.jpg?fit=cover&optimize=medium&width=1302)\n\nOverviewBrowse lots\n\nFilters\n\nLot Navigation\n\nShow Lot8018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109129139149159179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097\n\n## 294 Lots\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233843_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n801\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nPendulette Réveil Souveraine\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$120,650](https://www.phillips.com/detail/f.p.-journe/233843)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230477_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n802\\\\\n\\\\\nF.P. Journe\\\\\nRef. ELT\\\\\nÉlégante 40mm Titalyt®\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$300,000–600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$825,500](https://www.phillips.com/detail/f.p.-journe/230477)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/225091_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n803\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nOcta Automatique Réserve, Boutique Edition\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$320,000–630,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$2,095,500](https://www.phillips.com/detail/f.p.-journe/225091)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233628_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n804\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nOcta Calendrier\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$480,000–960,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$2,222,500](https://www.phillips.com/detail/f.p.-journe/233628)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233555_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n805\\\\\n\\\\\nRolex\\\\\nRef. 16570\\\\\nExplorer II\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$88,900](https://www.phillips.com/detail/rolex/233555)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233554_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n806\\\\\n\\\\\nRolex\\\\\nRef. 124270\\\\\nExplorer\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$53,340](https://www.phillips.com/detail/rolex/233554)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233162_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n807\\\\\n\\\\\nRolex\\\\\nRef. 336934\\\\\nSky-Dweller\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$190,500](https://www.phillips.com/detail/rolex/233162)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232317_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n808\\\\\n\\\\\nRolex\\\\\nRef. 116519LN\\\\\nCosmograph Daytona\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$406,400](https://www.phillips.com/detail/rolex/232317)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/231790_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n809\\\\\n\\\\\nRolex\\\\\nRef. 118399BR\\\\\nDay-Date\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$444,500](https://www.phillips.com/detail/rolex/231790)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234094_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n810\\\\\n\\\\\nRolex\\\\\nRef. 116759SANR\\\\\nGMT-Master II\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$698,500](https://www.phillips.com/detail/rolex/234094)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229616_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n811\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 25970ST.OO.1010ST.01\\\\\nRoyal Oak Offshore Dual Time Hong Kong Edition\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$140,000–240,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$304,800](https://www.phillips.com/detail/audemars-piguet/229616)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233940_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n812\\\\\n\\\\\nBreguet\\\\\nRef. 3999BA/15/286\\\\\nClassique Hong Kong Handover\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$177,800](https://www.phillips.com/detail/breguet/233940)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230108_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n813\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 43050-000J-17\\\\\nMercator, Europa-Asia\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$240,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$952,500](https://www.phillips.com/detail/vacheron-constantin/230108)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230211_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n814\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 43050/000J-8806\\\\\nMercator 2000 Germany\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$240,000–480,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$609,600](https://www.phillips.com/detail/vacheron-constantin/230211)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233853_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n815\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5077/100R-056\\\\\nCalatrava, Kimonos with Floral Patterns\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–960,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$635,000](https://www.phillips.com/detail/patek-philippe/233853)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234028_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n816\\\\\n\\\\\nPatek Philippe\\\\\nRef. 1459\\\\\nColibris à raquette by Anita Porchet\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$700,000–1,400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,270,000](https://www.phillips.com/detail/patek-philippe/234028)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234157_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n817\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 48250\\\\\nEvasion World Time\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$241,300](https://www.phillips.com/detail/vacheron-constantin/234157)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234229_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n818\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 48250\\\\\nEvasion World Time\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$330,200](https://www.phillips.com/detail/vacheron-constantin/234229)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233553_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n819\\\\\n\\\\\nJaeger-LeCoultre\\\\\nRef. 270.2.68\\\\\nReverso Tourbillon\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$160,000–260,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$406,400](https://www.phillips.com/detail/jaeger-lecoultre/233553)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233150_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n820\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5109R-001\\\\\nGondolo\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$165,100](https://www.phillips.com/detail/patek-philippe/233150)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229599_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n821\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3940, Third Series\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$160,000–320,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$571,500](https://www.phillips.com/detail/patek-philippe/229599)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232979_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n822\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5140J-001\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$160,000–320,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$355,600](https://www.phillips.com/detail/patek-philippe/232979)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229745_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n823\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 310.021\\\\\nLangematik Perpetual\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$200,000–450,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$406,400](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/229745)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232321_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n824\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5070R-001\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$300,000–600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$444,500](https://www.phillips.com/detail/patek-philippe/232321)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233252_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n825\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5070G-001\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$350,000–650,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$482,600](https://www.phillips.com/detail/patek-philippe/233252)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232329_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n826\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5740/1G-001\\\\\nNautilus\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$1,200,000–2,400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,905,000](https://www.phillips.com/detail/patek-philippe/232329)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232768_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n827\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5066A-010\\\\\nAquanaut “Japan”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$220,000–350,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$482,600](https://www.phillips.com/detail/patek-philippe/232768)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233151_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n828\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5066A-001\\\\\nAquanaut\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$160,000–320,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$533,400](https://www.phillips.com/detail/patek-philippe/233151)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233184_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n829\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 77350CE.OO.1266CE.02.A\\\\\nRoyal Oak, Carolina Bucci\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$240,000–480,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$609,600](https://www.phillips.com/detail/audemars-piguet/233184)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233185_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n830\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 15407ST.OO.1220ST.01\\\\\nRoyal Oak Double Balance wheel Openworked\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$500,000–1,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,016,000](https://www.phillips.com/detail/audemars-piguet/233185)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232333_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n831\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 56303PT.OO.0789PT.01\\\\\nRoyal Oak\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$170,000–270,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$228,600](https://www.phillips.com/detail/audemars-piguet/232333)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233163_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n832\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 56175TT.OO.0789TT.01\\\\\nRoyal Oak Championship\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$215,900](https://www.phillips.com/detail/audemars-piguet/233163)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232678_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n833\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 14506BA\\\\\nBamboo\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$160,000–320,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$406,400](https://www.phillips.com/detail/audemars-piguet/232678)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233371_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n834\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3503/5\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$40,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$82,550](https://www.phillips.com/detail/patek-philippe/233371)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230420_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n835\\\\\n\\\\\nPatek Philippe\\\\\nRef. 4119/1\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–300,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$304,800](https://www.phillips.com/detail/patek-philippe/230420)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229292_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n836\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3800/4G-001\\\\\nNautilus\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–640,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$990,600](https://www.phillips.com/detail/patek-philippe/229292)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234219_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n837\\\\\n\\\\\nCartier\\\\\nRef. WGTA0235\\\\\nTank à Guichets Privé\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$300,000–600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$762,000](https://www.phillips.com/detail/cartier/234219)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234013_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n838\\\\\n\\\\\nCartier\\\\\nRef. 2390\\\\\nTank Basculante, Australian Federation 100th Anniversary\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$215,900](https://www.phillips.com/detail/cartier/234013)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233842_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n839\\\\\n\\\\\nCartier\\\\\nRef. WGTA0074\\\\\nTank Chinoise\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$241,300](https://www.phillips.com/detail/cartier/233842)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233653_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n840\\\\\n\\\\\nCartier\\\\\nRef. 1601 1\\\\\nTank Louis Cartier\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–250,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$177,800](https://www.phillips.com/detail/cartier/233653)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233158_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n841\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 703.032F\\\\\nCabaret Tourbillon\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$300,000–600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$825,500](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/233158)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233933_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n842\\\\\n\\\\\nF.P. Journe\\\\\nRef. T\\\\\nTourbillon Souverain\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$2,400,000–4,800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$11,239,500](https://www.phillips.com/detail/f.p.-journe/233933)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232337_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n843\\\\\n\\\\\nYosuke Sekiguchi\\\\\nRef. 39RG-BKWH\\\\\nPrimevère 2023\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$500,000–1,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,143,000](https://www.phillips.com/detail/yosuke-sekiguchi/232337)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232336_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n844\\\\\n\\\\\nHaldimann\\\\\nRef. H11/12\\\\\nCentral Balance\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,968,500](https://www.phillips.com/detail/haldimann/232336)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/231547_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n845\\\\\n\\\\\nUrban Jürgensen\\\\\nRef. 11C\\\\\nPrototype Detent Escapement\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$450,000–900,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,397,000](https://www.phillips.com/detail/urban-j%C3%BCrgensen/231547)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/231661_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n846\\\\\n\\\\\nChopard\\\\\nRef. 168604-3001\\\\\nL.U.C. Full Strike\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,270,000](https://www.phillips.com/detail/chopard/231661)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232346_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n847\\\\\n\\\\\nKonstantin Chaykin\\\\\nRef. Joker Sandmann OW\\\\\nJoker Sandmann Only Watch 2024\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$320,000–640,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$952,500](https://www.phillips.com/detail/konstantin-chaykin/232346)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233160_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n848\\\\\n\\\\\nRESERVOIR\\\\\nRef. RSV01.KN/733\\\\\nKanister Palladium, Only Watch 2021\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$130,000–260,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$152,400](https://www.phillips.com/detail/reservoir/233160)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230209_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n849\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 25829TR.OO.0944TR.01\\\\\nRoyal Oak Quantième Perpetuel Automatique\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$750,000–1,500,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,968,500](https://www.phillips.com/detail/audemars-piguet/230209)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229217_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n850\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 25563OR.PP.A002XX.01\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$698,500](https://www.phillips.com/detail/audemars-piguet/229217)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233370_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n851\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 5183BA\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$40,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$203,200](https://www.phillips.com/detail/audemars-piguet/233370)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230478_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n852\\\\\n\\\\\nJaeger-LeCoultre\\\\\nRef. Q5063540, 186.3.26.S\\\\\nMaster Grande Tradition à Quantième Perpétuel 8 Jours SQ\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–640,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$533,400](https://www.phillips.com/detail/jaeger-lecoultre/230478)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/228510_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n853\\\\\n\\\\\nCartier\\\\\nRef. CRHPI01088\\\\\nCrash Squelette No. 1\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$1,000,000–2,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$9,207,500](https://www.phillips.com/detail/cartier/228510)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230901_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n854\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5726/1A-010\\\\\nNautilus\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$914,400](https://www.phillips.com/detail/patek-philippe/230901)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233662_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n855\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5960/1A-001\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$310,000–470,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$355,600](https://www.phillips.com/detail/patek-philippe/233662)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232325_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n856\\\\\n\\\\\nRolex\\\\\nRef. 116509-0044\\\\\nCosmograph Daytona\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$355,600](https://www.phillips.com/detail/rolex/232325)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232318_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n857\\\\\n\\\\\nRolex\\\\\nRef. 218399BR\\\\\nDay-Date II\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$381,000](https://www.phillips.com/detail/rolex/232318)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/231907_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n858\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5110J-001\\\\\nWorld Time\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–250,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$254,000](https://www.phillips.com/detail/patek-philippe/231907)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233563_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n859\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5146J-001\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–250,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$254,000](https://www.phillips.com/detail/patek-philippe/233563)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230605_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n860\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3970EJ, Second Series\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$1,000,000–2,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$2,159,000](https://www.phillips.com/detail/patek-philippe/230605)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233938_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n861\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3919J-016\\\\\nCalatrava\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$60,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$139,700](https://www.phillips.com/detail/patek-philippe/233938)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229741_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n862\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5196P-001\\\\\nCalatrava\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–300,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$355,600](https://www.phillips.com/detail/patek-philippe/229741)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229740_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n863\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5396G-001\\\\\nCalatrava\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$120,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$279,400](https://www.phillips.com/detail/patek-philippe/229740)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229739_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n864\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5296G-001\\\\\nCalatrava\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$241,300](https://www.phillips.com/detail/patek-philippe/229739)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230923_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n865\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5033P-012\\\\\nGondolo\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$1,800,000–2,800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$3,048,000](https://www.phillips.com/detail/patek-philippe/230923)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232665_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n866\\\\\n\\\\\nRolex\\\\\nRef. 971\\\\\nPrince Brancard, White gold\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$160,000–320,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$381,000](https://www.phillips.com/detail/rolex/232665)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233364_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n867\\\\\n\\\\\nPatek Philippe\\\\\nRef. 2591/2\\\\\nCalatrava\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$120,000–240,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$152,400](https://www.phillips.com/detail/patek-philippe/233364)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232185_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n868\\\\\n\\\\\nPatek Philippe\\\\\nRef. 2570/1\\\\\n\"Amagnetic\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$750,000–1,500,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,778,000](https://www.phillips.com/detail/patek-philippe/232185)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230208_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n869\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 4072\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$240,000–380,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$711,200](https://www.phillips.com/detail/vacheron-constantin/230208)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234020_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n870\\\\\n\\\\\nRolex\\\\\nRef. 1601\\\\\nDatejust, Red Jasper in pink gold\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–300,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$508,000](https://www.phillips.com/detail/rolex/234020)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230894_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n871\\\\\n\\\\\nRolex\\\\\nRef. 18038\\\\\nDay-Date, “Golden Walnut”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$80,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$381,000](https://www.phillips.com/detail/rolex/230894)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232332_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n872\\\\\n\\\\\nRolex\\\\\nRef. 16018\\\\\nDatejust Electric Blue\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$120,000–240,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$698,500](https://www.phillips.com/detail/rolex/232332)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/231906_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n873\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3700/3\\\\\nNautilus\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$750,000–1,500,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,397,000](https://www.phillips.com/detail/patek-philippe/231906)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232853_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n874\\\\\n\\\\\nRolex\\\\\nRef. 6263\\\\\nCosmograph Daytona “Big Red”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$685,800](https://www.phillips.com/detail/rolex/232853)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233257_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n875\\\\\n\\\\\nRolex\\\\\nRef. 116568BR\\\\\nCosmograph Daytona\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$500,000–1,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,143,000](https://www.phillips.com/detail/rolex/233257)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230417_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n876\\\\\n\\\\\nRolex\\\\\nRef. 128235\\\\\nDay-Date “Rainbow”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$300,000–600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$533,400](https://www.phillips.com/detail/rolex/230417)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232982_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n877\\\\\n\\\\\nPhilippe Dufour\\\\\n\\\\\nSimplicity in steel\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$2,800,000–5,600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$9,461,500](https://www.phillips.com/detail/philippe-dufour/232982)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232981_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n878\\\\\n\\\\\nOscillon\\\\\n\\\\\nL’instant de Vérité\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$800,000–1,600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$4,953,000](https://www.phillips.com/detail/oscillon/232981)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232561_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n879\\\\\n\\\\\nJ.N. Shapiro\\\\\n\\\\\nInfinity\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$160,000–320,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$266,700](https://www.phillips.com/detail/j.n.-shapiro/232561)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233247_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n880\\\\\n\\\\\nH. Moser & Cie\\\\\nRef. 341.501\\\\\nMoser Perpetual 1\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$120,000–240,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$203,200](https://www.phillips.com/detail/h.-moser-&-cie/233247)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233667_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n881\\\\\n\\\\\nH. Moser & Cie\\\\\nRef. 3811-1200\\\\\nPioneer Cylindrical Tourbillon\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$320,000–480,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$355,600](https://www.phillips.com/detail/h.-moser-&-cie/233667)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232846_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n882\\\\\n\\\\\nDe Bethune\\\\\nRef. DB28TIS5C6BS\\\\\nDB28\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$300,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$698,500](https://www.phillips.com/detail/de-bethune/232846)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234087_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n883\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nChronographe Monopoussoir Rattrapante\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$1,400,000–2,400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$2,413,000](https://www.phillips.com/detail/f.p.-journe/234087)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/231240_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n884\\\\\n\\\\\nRolex\\\\\nRef. 126529LN\\\\\nCosmograph Daytona “Le Mans”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$800,000–1,600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,714,500](https://www.phillips.com/detail/rolex/231240)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233551_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n885\\\\\n\\\\\nRolex\\\\\nRef. 116519LN\\\\\nCosmograph Daytona Meteorite Dial\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$320,000–640,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$596,900](https://www.phillips.com/detail/rolex/233551)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230039_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n886\\\\\n\\\\\nRolex\\\\\nRef. 118239\\\\\nDay-Date Meteorite Dial\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$482,600](https://www.phillips.com/detail/rolex/230039)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232554_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n887\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 15206PT.OO.1240PT.01\\\\\nRoyal Oak Jumbo Extra-thin “Yoshida”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$800,000–1,600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,079,500](https://www.phillips.com/detail/audemars-piguet/232554)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232641_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n888\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 26574ST.OO.1220ST.01\\\\\nRoyal Oak Perpetual Calendar\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$500,000–700,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$698,500](https://www.phillips.com/detail/audemars-piguet/232641)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230603_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n889\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 26395BC.OO.D002KB.01\\\\\nCODE 11.59 Minute Repeater Supersonnerie\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$750,000–1,500,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,778,000](https://www.phillips.com/detail/audemars-piguet/230603)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233248_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n890\\\\\n\\\\\nCredor\\\\\nRef. GCLP989\\\\\nSakura Fubuki Raden Edition\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$88,900](https://www.phillips.com/detail/credor/233248)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232494_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n891\\\\\n\\\\\nCredor\\\\\nRef. GBBD968\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$55,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$120,650](https://www.phillips.com/detail/credor/232494)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230210_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n892\\\\\n\\\\\nCasio\\\\\nRef. G-D5000-9JR\\\\\nG-Shock Dream Project “Pure Gold”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$635,000](https://www.phillips.com/detail/casio/230210)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233630_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n893\\\\\n\\\\\nIWC\\\\\nRef. IW379201\\\\\nIngenieur Perpetual Calendar Digital Date-Month\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$48,000–96,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$127,000](https://www.phillips.com/detail/iwc/233630)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232740_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n894\\\\\n\\\\\nGirard-Perregaux\\\\\nRef. 99270-21-000-BA6E\\\\\nNeo Tourbillon with Three Bridges\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$240,000–480,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$304,800](https://www.phillips.com/detail/girard-perregaux/232740)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232174_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n895\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nTourbillon Souverain, “Chine 2010 38”\\\\\n\\\\\nEstimate\\\\\n\\\\\nIn Excess of HKD7,800,000/ USD 1,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$32,965,000](https://www.phillips.com/detail/f.p.-journe/232174)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/231341_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n896\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5230P-010\\\\\nWorld Time, Shanghai 10th Anniversary Edition\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$800,000–1,400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,524,000](https://www.phillips.com/detail/patek-philippe/231341)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232344_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n897\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5160/500G-001\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$600,000–1,200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,524,000](https://www.phillips.com/detail/patek-philippe/232344)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232675_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n898\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 110.029\\\\\nLange 1 Soirée MOP\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$250,000–500,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$762,000](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/232675)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233155_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n899\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 205.086\\\\\nSaxonia Thin, Copper-blue gold flux dial\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$190,500](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/233155)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232437_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n900\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 15210BC.OO.A021CR.01\\\\\nCODE 11.59 “Sodalite”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$230,000–360,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$304,800](https://www.phillips.com/detail/audemars-piguet/232437)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233854_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n901\\\\\n\\\\\nJaeger-LeCoultre\\\\\nRef. Q5023580, 187.3.46.S\\\\\nMaster Grande Tradition Grande Complication\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$320,000–640,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$952,500](https://www.phillips.com/detail/jaeger-lecoultre/233854)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/231549_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n902\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 47712/1\\\\\nMalte Perpetual Calendar Chronograph\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$250,000–500,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$381,000](https://www.phillips.com/detail/vacheron-constantin/231549)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233936_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n903\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 47247/000P-9022\\\\\nPatrimony Retrograde\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$140,000–220,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$355,600](https://www.phillips.com/detail/vacheron-constantin/233936)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229216_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n904\\\\\n\\\\\nHarry Winston\\\\\n\\\\\n“Wall Street” by Antoine Preziuzo No,001, Unique\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,524,000](https://www.phillips.com/detail/harry-winston/229216)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234224_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n905\\\\\n\\\\\nJean-Pierre Hagmann\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–300,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$158,750](https://www.phillips.com/detail/jean-pierre-hagmann/234224)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233935_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n906\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nChronomètre à Résonance\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$2,000,000–4,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$4,191,000](https://www.phillips.com/detail/f.p.-journe/233935)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230986_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n907\\\\\n\\\\\nCartier\\\\\n\\\\\nTank Obus \"Rectangulaire à Pattes Vis Armurier\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$444,500](https://www.phillips.com/detail/cartier/230986)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233937_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n908\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5028G-001\\\\\nGolden Ellipse\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$304,800](https://www.phillips.com/detail/patek-philippe/233937)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/231413_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n909\\\\\n\\\\\nPiaget\\\\\nRef. G0A47543\\\\\nBlack Tie, Unique Edition\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$500,000–1,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$952,500](https://www.phillips.com/detail/piaget/231413)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232676_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n910\\\\\n\\\\\nBreguet\\\\\nRef. 5839BB/6D/9ZU DD0D\\\\\nHorloger De La Marine Chronograph Tourbillon\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$600,000–1,200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$889,000](https://www.phillips.com/detail/breguet/232676)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/226230_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n912\\\\\n\\\\\nOmega\\\\\nRef. CK 2998\\\\\nSpeedmaster 2998-6\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$95,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$139,700](https://www.phillips.com/detail/omega/226230)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234227_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n913\\\\\n\\\\\nRolex\\\\\nRef. 1016\\\\\nExplorer\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$88,900](https://www.phillips.com/detail/rolex/234227)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232191_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n914\\\\\n\\\\\nRolex\\\\\nRef. 1675\\\\\nGMT-Master \"Tropical MK III\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$195,000–350,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$698,500](https://www.phillips.com/detail/rolex/232191)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229975_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n915\\\\\n\\\\\nRolex\\\\\nRef. 5512\\\\\nSubmariner “Pointed Crown Guards”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$250,000–450,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$444,500](https://www.phillips.com/detail/rolex/229975)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/224820_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n917\\\\\n\\\\\nRolex\\\\\nRef. 5513\\\\\nSubmariner “MilSub”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$970,000–1,940,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,397,000](https://www.phillips.com/detail/rolex/224820)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233256_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n918\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3700/11\\\\\nNautilus “Jumbo”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$550,000–1,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$952,500](https://www.phillips.com/detail/patek-philippe/233256)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230784_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n919\\\\\n\\\\\nCartier\\\\\nRef. W1507451\\\\\nBaignoire Allongée “Maxi Oval”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$762,000](https://www.phillips.com/detail/cartier/230784)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232671_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n920\\\\\n\\\\\nCartier\\\\\n\\\\\nTonneau\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$120,650](https://www.phillips.com/detail/cartier/232671)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232741_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n921\\\\\n\\\\\nDe Bethune\\\\\nRef. DB25LRS1V1\\\\\nDB25L\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$444,500](https://www.phillips.com/detail/de-bethune/232741)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233627_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n922\\\\\n\\\\\nDe Bethune\\\\\nRef. DB25RS1\\\\\nDB25 Power Reserve\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$160,000–320,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$330,200](https://www.phillips.com/detail/de-bethune/233627)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233844_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n923\\\\\n\\\\\nDaniel Roth\\\\\nRef. 2137/C137\\\\\nChronograph Mono-pusher\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$952,500](https://www.phillips.com/detail/daniel-roth/233844)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234086_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n924\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5970P-018\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$3,500,000–7,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$10,414,000](https://www.phillips.com/detail/patek-philippe/234086)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234084_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n925\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5711/111P-001\\\\\nNautilus\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$2,400,000–4,800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$6,731,000](https://www.phillips.com/detail/patek-philippe/234084)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/225391_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n926\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 414.028\\\\\n1815 Chronograph\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$240,000–480,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$444,500](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/225391)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/225392_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n927\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 236.049\\\\\n1815 Anniversary F.A. Lange\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$55,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$165,100](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/225392)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232980_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n928\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 297.026\\\\\n1815 “Homage to Walter Lange”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$200,000–360,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$381,000](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/232980)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/225393_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n929\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5970G-001\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$850,000–1,700,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,714,500](https://www.phillips.com/detail/patek-philippe/225393)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232761_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n930\\\\\n\\\\\nCartier New York\\\\\n\\\\\nModel A\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$2,400,000–4,800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$3,937,000](https://www.phillips.com/detail/cartier-new-york/232761)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232762_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n931\\\\\n\\\\\nCartier\\\\\n\\\\\n“Brûlé Parfum Jade de Nankin”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$2,286,000](https://www.phillips.com/detail/cartier/232762)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229163_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n932\\\\\n\\\\\nCartier\\\\\n\\\\\nBarometer\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$800,000–1,600,000](https://www.phillips.com/detail/cartier/229163)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232760_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n933\\\\\n\\\\\nBovet\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$640,000–1,280,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$762,000](https://www.phillips.com/detail/bovet/232760)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232763_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n934\\\\\n\\\\\nJuvet\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$160,000–320,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$304,800](https://www.phillips.com/detail/juvet/232763)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232756_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n935\\\\\n\\\\\nBarraud\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$160,000–320,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$355,600](https://www.phillips.com/detail/barraud/232756)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233659_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n936\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3878J\\\\\nSquelette\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$230,000–420,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$508,000](https://www.phillips.com/detail/patek-philippe/233659)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233658_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n937\\\\\n\\\\\nPiaget\\\\\nRef. 900 H\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$45,000–75,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$88,900](https://www.phillips.com/detail/piaget/233658)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/231241_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n938\\\\\n\\\\\nVacheron Constantin\\\\\n\\\\\nChronomètre Royal\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$30,000–50,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$76,200](https://www.phillips.com/detail/vacheron-constantin/231241)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233858_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n939\\\\\n\\\\\nPatek Philippe\\\\\n\\\\\nMinute repeater\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–240,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$254,000](https://www.phillips.com/detail/patek-philippe/233858)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232759_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n940\\\\\n\\\\\nPatek Philippe\\\\\n\\\\\nNo. 97183\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$240,000–480,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,079,500](https://www.phillips.com/detail/patek-philippe/232759)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234083_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n941\\\\\n\\\\\nPatek Philippe\\\\\nRef. 2499 “The Pink First Series”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$24,000,000–48,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$80,370,000](https://www.phillips.com/detail/patek-philippe/234083)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233343_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n942\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nÉlégante 48\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$240,000–480,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$825,500](https://www.phillips.com/detail/f.p.-journe/233343)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229987_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n943\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nOcta Sport Indy 500\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$300,000–600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$2,159,000](https://www.phillips.com/detail/f.p.-journe/229987)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229321_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n944\\\\\n\\\\\nTiffany & Co.\\\\\nRef. 72917049\\\\\nTime for Speed Race Car Clock\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$381,000](https://www.phillips.com/detail/tiffany-&-co./229321)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232493_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n945\\\\\n\\\\\nRolex\\\\\nRef. 124300\\\\\nOyster Perpetual 41\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$82,550](https://www.phillips.com/detail/rolex/232493)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232849_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n946\\\\\n\\\\\nRolex\\\\\nRef. 116610LN\\\\\nSubmariner “GIGN”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$90,000–180,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$355,600](https://www.phillips.com/detail/rolex/232849)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232316_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n947\\\\\n\\\\\nRolex\\\\\nRef. 116520\\\\\nCosmograph Daytona\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$120,000–240,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$177,800](https://www.phillips.com/detail/rolex/232316)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232324_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n948\\\\\n\\\\\nRolex\\\\\nRef. 16610LV\\\\\nSubmariner, “Kermit, Flat 4 MK I\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$165,100](https://www.phillips.com/detail/rolex/232324)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230149_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n949\\\\\n\\\\\nRolex\\\\\nRef. 16710\\\\\nGMT-Master II\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$60,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$139,700](https://www.phillips.com/detail/rolex/230149)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232334_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n950\\\\\n\\\\\nRolex\\\\\nRef. 14270\\\\\nExplorer\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$75,000–150,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$152,400](https://www.phillips.com/detail/rolex/232334)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233254_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n951\\\\\n\\\\\nRolex\\\\\nRef. 116520\\\\\nCosmograph Daytona\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$279,400](https://www.phillips.com/detail/rolex/233254)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232327_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n952\\\\\n\\\\\nRolex\\\\\nRef. 116509-0064\\\\\nCosmograph Daytona\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$381,000](https://www.phillips.com/detail/rolex/232327)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232330_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n953\\\\\n\\\\\nRolex\\\\\nRef. 126679SABR\\\\\nYacht-Master 40, “Cotton Candy”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–780,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,295,400](https://www.phillips.com/detail/rolex/232330)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232322_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n954\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5711/1A-010\\\\\nNautilus\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$952,500](https://www.phillips.com/detail/patek-philippe/232322)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/231403_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n955\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5821/1A-001\\\\\nCubitus\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$774,700](https://www.phillips.com/detail/patek-philippe/231403)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233622_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n956\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5968G-001\\\\\nAquanaut Chronograph\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$450,000–950,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,016,000](https://www.phillips.com/detail/patek-philippe/233622)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232178_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n957\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5712R-001\\\\\nNautilus\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$280,000–560,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$762,000](https://www.phillips.com/detail/patek-philippe/232178)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232176_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n958\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5270G-001\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$480,000–960,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$889,000](https://www.phillips.com/detail/patek-philippe/232176)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233835_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n959\\\\\n\\\\\nBlancpain\\\\\nRef. 5008 11B30 NABA\\\\\nFifty Fathoms Mil-Spec Hodinkee\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$107,950](https://www.phillips.com/detail/blancpain/233835)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233633_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n960\\\\\n\\\\\nPanerai\\\\\nRef. PAM00671\\\\\nLuminor Submersible 1950 3 Days Automatic Bronzo\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$88,900](https://www.phillips.com/detail/panerai/233633)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233624_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n961\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 26007BA.OO.D088CR.01\\\\\nRoyal Oak Offshore Chronograph “Arnold Schwarzenegger”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$100,000–180,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$165,100](https://www.phillips.com/detail/audemars-piguet/233624)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233626_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n962\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 25808BA.OO.D009XX.01\\\\\nRoyal Oak Offshore Complete Calendar\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$64,000–128,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$114,300](https://www.phillips.com/detail/audemars-piguet/233626)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232633_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n963\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 25636BA.OO.0944BA.01\\\\\nRoyal Oak Perpetual Calendar Openworked\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$500,000–1,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,651,000](https://www.phillips.com/detail/audemars-piguet/232633)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232845_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n964\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 30066-67/1\\\\\nMalte Tourbillon Openworked\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$450,000–800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$685,800](https://www.phillips.com/detail/vacheron-constantin/232845)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230212_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n965\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5330G-010\\\\\nWorld Time Date, Limited Edition Tokyo 2023\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$480,000–900,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$825,500](https://www.phillips.com/detail/patek-philippe/230212)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232319_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n966\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5230G-010\\\\\nWorld Time, New York Edition\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$250,000–500,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$571,500](https://www.phillips.com/detail/patek-philippe/232319)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233062_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n967\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5230R-001\\\\\nWorld Time\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$279,400](https://www.phillips.com/detail/patek-philippe/233062)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229293_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n968\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 43050/000J\\\\\nMercator\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$160,000–320,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$635,000](https://www.phillips.com/detail/vacheron-constantin/229293)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230040_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n969\\\\\n\\\\\nPiaget\\\\\nRef. G0A39151\\\\\nAltiplano Scrimshaw\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–300,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$254,000](https://www.phillips.com/detail/piaget/230040)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233939_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n970\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5034J-001\\\\\nTravel Time\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$50,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$114,300](https://www.phillips.com/detail/patek-philippe/233939)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232342_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n971\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3919J-001\\\\\nCalatrava\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$40,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$107,950](https://www.phillips.com/detail/patek-philippe/232342)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233637_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n972\\\\\n\\\\\nRoger Dubuis\\\\\nRef. S34 575\\\\\nSympathie\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$48,000–96,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$254,000](https://www.phillips.com/detail/roger-dubuis/233637)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233859_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n973\\\\\n\\\\\nRoger Dubuis\\\\\nRef. H46 56 5\\\\\nHommage\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–250,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$190,500](https://www.phillips.com/detail/roger-dubuis/233859)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234091_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n974\\\\\n\\\\\nParmigiani Fleurier\\\\\n\\\\\nToric Tourbillon\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$250,000–500,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$762,000](https://www.phillips.com/detail/parmigiani-fleurier/234091)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233638_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n975\\\\\n\\\\\nVacheron Constantin\\\\\nRef. V42215/00R-9225\\\\\nPatrimony Grand Date\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$24,000–48,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$69,850](https://www.phillips.com/detail/vacheron-constantin/233638)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233369_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n976\\\\\n\\\\\nBreguet\\\\\nRef. 1747BA/11/286\\\\\nClassique Regulator 1747, 250th anniversary of Breguet\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$40,000–64,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$95,250](https://www.phillips.com/detail/breguet/233369)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232674_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n977\\\\\n\\\\\nBreguet\\\\\nRef. 5353BR/9B/9V6\\\\\nClassique Tourbillon, The Hour Glass Edition, No. 8/25\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$250,000–500,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$609,600](https://www.phillips.com/detail/breguet/232674)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232331_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n978\\\\\n\\\\\nJaeger-LeCoultre\\\\\nRef. 270.8.62\\\\\nReverso Grande Taille “Batman Forever”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$63,000–95,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$355,600](https://www.phillips.com/detail/jaeger-lecoultre/232331)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233159_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n979\\\\\n\\\\\nJaeger-LeCoultre\\\\\nRef. 215.8.D4, Q3988482\\\\\nReverso Tribute Duoface small seconds\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$50,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$88,900](https://www.phillips.com/detail/jaeger-lecoultre/233159)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233365_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n980\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 91003/000B-8397\\\\\nLes Historiques “Jalousie”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–250,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$317,500](https://www.phillips.com/detail/vacheron-constantin/233365)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232670_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n981\\\\\n\\\\\nCorum\\\\\nRef. 113.770.55/0001 GN01\\\\\nGolden Bridge Black Baton\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$76,200](https://www.phillips.com/detail/corum/232670)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229572_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n982\\\\\n\\\\\nCartier\\\\\nRef. 2396\\\\\nTortue Monopoussoir CPCP\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$180,000–360,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$635,000](https://www.phillips.com/detail/cartier/229572)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233837_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n983\\\\\n\\\\\nGirard-Perregaux\\\\\n\\\\\nFerrari 250 GTO 64\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$127,000](https://www.phillips.com/detail/girard-perregaux/233837)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233636_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n984\\\\\n\\\\\nRichard Mille\\\\\nRef. RM010 AI RG\\\\\nRM 010\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$863,600](https://www.phillips.com/detail/richard-mille/233636)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230996_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n985\\\\\n\\\\\nOtsuka Lotec\\\\\n\\\\\nModel No. 7.5\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$53,340](https://www.phillips.com/detail/otsuka-lotec/230996)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233154_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n986\\\\\n\\\\\nMING\\\\\nRef. 20.09\\\\\n20.09 Tourbillon, Special Projects Cave\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$280,000–500,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$444,500](https://www.phillips.com/detail/ming/233154)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233161_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n987\\\\\n\\\\\nMB&F\\\\\n\\\\\nLMX\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$300,000–600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$812,800](https://www.phillips.com/detail/mb&f/233161)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233623_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n988\\\\\n\\\\\nMoritz Grossmann\\\\\nRef. Wristwatch: MG-002071\\\\\nWristwatch: ATUM 37 Hommage, unique set\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$160,000–240,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$508,000](https://www.phillips.com/detail/moritz-grossmann/233623)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233625_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n989\\\\\n\\\\\nArnold & Son\\\\\nRef. 1ARAP.W01A.C120P\\\\\nTBR\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$88,900](https://www.phillips.com/detail/arnold-&-son/233625)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233632_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n990\\\\\n\\\\\nMIH\\\\\n\\\\\nMIH - Musee International d'horlogerie\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$16,000–32,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$69,850](https://www.phillips.com/detail/mih/233632)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234017_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n991\\\\\n\\\\\nCartier\\\\\nRef. 30026\\\\\nPasha Perpetual Calendar\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$75,000–150,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$254,000](https://www.phillips.com/detail/cartier/234017)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/231404_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n992\\\\\n\\\\\nGérald Genta\\\\\nRef. G2989.7\\\\\nGefica Regatta Chronograph\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$86,360](https://www.phillips.com/detail/g%C3%A9rald-genta/231404)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233635_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n993\\\\\n\\\\\nPaul Gerber\\\\\nRef. 157\\\\\nRetro Twin\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$56,000–112,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$241,300](https://www.phillips.com/detail/paul-gerber/233635)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233157_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n994\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 304.049\\\\\nGrosse Langematik Gangreserve, No.100/100\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$120,000–240,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$444,500](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/233157)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233631_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n995\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 232.025\\\\\nRichard Lange\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$120,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$215,900](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/233631)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233246_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n996\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 148.038\\\\\nZeitwerk Date\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$609,600](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/233246)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234082_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n997\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5016P-010\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$3,500,000–6,500,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$6,731,000](https://www.phillips.com/detail/patek-philippe/234082)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229165_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n998\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3970E, Fourth Series\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$960,000–1,760,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,587,500](https://www.phillips.com/detail/patek-philippe/229165)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/231459_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n999\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5038G\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$368,300](https://www.phillips.com/detail/patek-philippe/231459)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232772_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1000\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nOcta Réserve de Marche, No. 34\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$780,000–1,560,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$3,302,000](https://www.phillips.com/detail/f.p.-journe/232772)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232669_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1001\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nChronomètre Souverain\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$300,000–600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,524,000](https://www.phillips.com/detail/f.p.-journe/232669)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233368_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1002\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5500J\\\\\nPagoda\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$70,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$152,400](https://www.phillips.com/detail/patek-philippe/233368)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229738_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1003\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5124G-001\\\\\nGondolo\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$254,000](https://www.phillips.com/detail/patek-philippe/229738)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233363_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1004\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5200G-001\\\\\nGondolo, Error dial\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$160,000–320,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$457,200](https://www.phillips.com/detail/patek-philippe/233363)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229574_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1005\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3998P\\\\\nCalatrava\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$78,000–155,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$304,800](https://www.phillips.com/detail/patek-philippe/229574)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233651_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1006\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5055G-010\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$190,500](https://www.phillips.com/detail/patek-philippe/233651)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233560_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1007\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3970E, Third Series\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$750,000–1,500,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,524,000](https://www.phillips.com/detail/patek-philippe/233560)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232175_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1008\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5102PR-001\\\\\nCelestial\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$800,000–1,600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,905,000](https://www.phillips.com/detail/patek-philippe/232175)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232320_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1009\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5131G-001\\\\\nWorld Time\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$500,000–1,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$825,500](https://www.phillips.com/detail/patek-philippe/232320)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232978_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1010\\\\\n\\\\\nJaquet Droz\\\\\nRef. J032634270\\\\\nMagic Lotus Automaton\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$350,000–650,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$596,900](https://www.phillips.com/detail/jaquet-droz/232978)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234078_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1011\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5077P-033\\\\\nCalatrava, Canards Mandarins\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–700,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$635,000](https://www.phillips.com/detail/patek-philippe/234078)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234081_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1012\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5077P-036\\\\\nCalatrava, Canards Mandarins\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–700,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$698,500](https://www.phillips.com/detail/patek-philippe/234081)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234080_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1013\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5077P-035\\\\\nCalatrava, Canards Mandarins\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–700,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$990,600](https://www.phillips.com/detail/patek-philippe/234080)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234079_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1014\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5077P-034\\\\\nCalatrava, Canards Mandarins\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–700,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,092,200](https://www.phillips.com/detail/patek-philippe/234079)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230421_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1015\\\\\n\\\\\nPatek Philippe\\\\\nRef. 4239/1\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–300,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$698,500](https://www.phillips.com/detail/patek-philippe/230421)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229575_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1016\\\\\n\\\\\nPatek Philippe\\\\\nRef. 4283/5J-001\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$120,000–240,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$457,200](https://www.phillips.com/detail/patek-philippe/229575)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230213_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1017\\\\\n\\\\\nOmega\\\\\n\\\\\nLouis Brandt perpetual calendar\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$75,000–150,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$165,100](https://www.phillips.com/detail/omega/230213)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233654_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1018\\\\\n\\\\\nCartier\\\\\nRef. WGMB0003\\\\\nClash \\[Un\\]limited\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–250,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$215,900](https://www.phillips.com/detail/cartier/233654)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229573_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1019\\\\\n\\\\\nCartier\\\\\nRef. 2672\\\\\nBaignoire Allongée\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$330,200](https://www.phillips.com/detail/cartier/229573)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233191_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1020\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3700/1\\\\\nNautilus “Jumbo”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$800,000–1,600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,778,000](https://www.phillips.com/detail/patek-philippe/233191)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232323_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1021\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3700/11\\\\\nNautilus\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$500,000–1,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$762,000](https://www.phillips.com/detail/patek-philippe/232323)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230419_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1022\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 5402ST\\\\\nRoyal Oak “A Series”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$280,000–550,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$584,200](https://www.phillips.com/detail/audemars-piguet/230419)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233192_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1023\\\\\n\\\\\nIWC\\\\\nRef. 1832\\\\\nIngenieur SL “Jumbo”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$203,200](https://www.phillips.com/detail/iwc/233192)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234089_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1024\\\\\n\\\\\nIWC\\\\\nRef. 9225\\\\\nIngenieur, Royal Khanjar\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$120,000–220,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$431,800](https://www.phillips.com/detail/iwc/234089)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234021_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1025\\\\\n\\\\\nUniversal Genève\\\\\nRef. 885.107\\\\\nCompax “Exotic Nina”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$342,900](https://www.phillips.com/detail/universal-gen%C3%A8ve/234021)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234019_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n1026\\\\\n\\\\\nBlancpain\\\\\n\\\\\nFifty Fathoms \"No Radiations\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–300,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$330,200](https://www.phillips.com/detail/blancpain/234019)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232854_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1028\\\\\n\\\\\nRolex\\\\\nRef. 1665\\\\\nSea-Dweller, “Double Red Tropical MK II”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$320,000–640,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$546,100](https://www.phillips.com/detail/rolex/232854)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233341_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1029\\\\\n\\\\\nRolex\\\\\nRef. 6262\\\\\nCosmograph Daytona “Paul Newman”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$750,000–1,500,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,905,000](https://www.phillips.com/detail/rolex/233341)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229236_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1030\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nChronomètre à Résonance, \"Parking Meter\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$1,200,000–2,400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$6,096,000](https://www.phillips.com/detail/f.p.-journe/229236)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232553_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1031\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5970R-017\\\\\nUnique dial\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$4,000,000–8,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$12,827,000](https://www.phillips.com/detail/patek-philippe/232553)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232177_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1032\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5160J-001\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,651,000](https://www.phillips.com/detail/patek-philippe/232177)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233552_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1033\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5050R\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$406,400](https://www.phillips.com/detail/patek-philippe/233552)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233634_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1034\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5059J-015\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$120,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$254,000](https://www.phillips.com/detail/patek-philippe/233634)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233340_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n1035\\\\\n\\\\\nOmega\\\\\nRef. 310.55.42.50.99.002\\\\\nSpeedmaster Professional Moonwatch Rainbow\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$800,000–1,600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$825,500](https://www.phillips.com/detail/omega/233340)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234220_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1036\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5522A-001\\\\\nCalatrava Pilot, New York 2017\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–300,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$355,600](https://www.phillips.com/detail/patek-philippe/234220)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233661_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1037\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5520P-001\\\\\nAlarm Travel Time\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$750,000–1,500,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$952,500](https://www.phillips.com/detail/patek-philippe/233661)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233629_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1038\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nOcta Sport Aluminium\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$2,032,000](https://www.phillips.com/detail/f.p.-journe/233629)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229517_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1039\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 26589IO.OO.D002CA.01\\\\\nRoyal Oak Concept Flying Tourbillon GMT\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$600,000–1,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$762,000](https://www.phillips.com/detail/audemars-piguet/229517)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233255_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1040\\\\\n\\\\\nRichard Mille\\\\\nRef. RM014 CA-FQ\\\\\nRM 014 \"Perini Navi” Japanese Edition, No. 00/07\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$2,200,000–4,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$3,429,000](https://www.phillips.com/detail/richard-mille/233255)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232983_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1041\\\\\n\\\\\nParmigiani Fleurier\\\\\nRef. PFH282-1002400-HA4041\\\\\nTonda Chronor Anniversaire\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$120,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$355,600](https://www.phillips.com/detail/parmigiani-fleurier/232983)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233152_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1042\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 401.032\\\\\n1815 Chronograph, First Generation\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$406,400](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/233152)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229791_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1043\\\\\n\\\\\nJaeger-LeCoultre\\\\\nRef. 151.6.67.S\\\\\nMaster Minute Repeater\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$140,000–280,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$444,500](https://www.phillips.com/detail/jaeger-lecoultre/229791)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229790_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1044\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 49005/000P-8\\\\\nLes Complications\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$100,000–180,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$406,400](https://www.phillips.com/detail/vacheron-constantin/229790)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232847_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1045\\\\\n\\\\\nGirard-Perregaux\\\\\nRef. 99535OR\\\\\n1966 Tourbillon Gold Bridge\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$165,100](https://www.phillips.com/detail/girard-perregaux/232847)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233856_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1046\\\\\n\\\\\nZenith\\\\\nRef. 18.2210.4810/01.C713\\\\\nAcademy Force Constante, Georges Favre-Jacot\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–250,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$279,400](https://www.phillips.com/detail/zenith/233856)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233156_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1047\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 260.028\\\\\nRichard Lange “Pour le Mérite”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$300,000–500,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$635,000](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/233156)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232338_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1048\\\\\n\\\\\nArmin Strom\\\\\n\\\\\nMirrored Force Resonance Ruby, Unique Piece\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$400,000–800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$889,000](https://www.phillips.com/detail/armin-strom/232338)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232739_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1049\\\\\n\\\\\nGreubel Forsey\\\\\n\\\\\nDouble Tourbillon 30˚ Technique\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$960,000–1,600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,397,000](https://www.phillips.com/detail/greubel-forsey/232739)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230604_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1050\\\\\n\\\\\nBulgari\\\\\nRef. 102794\\\\\nOcto Finissimo Minute Repeater Carbon\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$320,000–640,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$609,600](https://www.phillips.com/detail/bulgari/230604)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/228704_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1051\\\\\n\\\\\nHublot\\\\\nRef. 507.CX.9012.RX.TAK23\\\\\nClassic Fusion Takashi Murakami Black Ceramic Yellow & Orange Sapphires\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$350,000–650,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$825,500](https://www.phillips.com/detail/hublot/228704)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234085_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1052\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5650G-001\\\\\nAdvanced Research Aquanaut Travel Time\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$2,000,000–4,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$5,842,000](https://www.phillips.com/detail/patek-philippe/234085)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233660_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1053\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5066A-010\\\\\nAquanaut “Japan”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$450,000–620,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$939,800](https://www.phillips.com/detail/patek-philippe/233660)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/230418_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1054\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3711/1\\\\\nNautilus\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$600,000–1,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$2,032,000](https://www.phillips.com/detail/patek-philippe/230418)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232555_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1055\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 15202IP.OO.1240IP.01\\\\\nRoyal Oak “Jumbo Extra-thin”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$600,000–1,200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$889,000](https://www.phillips.com/detail/audemars-piguet/232555)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233186_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1056\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 26730ST.OO.1320ST.01\\\\\nRoyal Oak Selfwinding Flying Tourbillon “50th Anniversary”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$650,000–1,300,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,079,500](https://www.phillips.com/detail/audemars-piguet/233186)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229568_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1057\\\\\n\\\\\nCartier\\\\\nRef. WJLI0018\\\\\nLibre Baignoire Allongée\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$300,000–600,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,206,500](https://www.phillips.com/detail/cartier/229568)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233372_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1058\\\\\n\\\\\nPatek Philippe\\\\\nRef. 4897/300G-001\\\\\nCalatrava\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$165,100](https://www.phillips.com/detail/patek-philippe/233372)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233655_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1059\\\\\n\\\\\nCartier\\\\\nRef. WGTN0005\\\\\nTonneau Privé\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–250,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$203,200](https://www.phillips.com/detail/cartier/233655)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233649_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1060\\\\\n\\\\\nCartier\\\\\nRef. 2295\\\\\nBaignoire, Bi-Plan Louis Cartier\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$30,000–50,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$127,000](https://www.phillips.com/detail/cartier/233649)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233855_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1061\\\\\n\\\\\nLaurent Ferrier\\\\\nRef. LCF025.AC.CW\\\\\nGalet Annual Calendar School Piece\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$170,000–310,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$241,300](https://www.phillips.com/detail/laurent-ferrier/233855)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233432_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1062\\\\\n\\\\\nFranck Muller\\\\\nRef. 7002T\\\\\nImperial Tourbillon\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$120,000–220,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$279,400](https://www.phillips.com/detail/franck-muller/233432)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233860_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1063\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 26561BC.OO.D002CR.01\\\\\nJules Audemars Tourbillon\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$280,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$457,200](https://www.phillips.com/detail/audemars-piguet/233860)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229988_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1064\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nChronomètre à Résonance\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$1,950,000–3,500,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$5,715,000](https://www.phillips.com/detail/f.p.-journe/229988)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233834_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1065\\\\\n\\\\\nGirard-Perregaux\\\\\nRef. 49534-52-R22-BB60\\\\\nThe Chamber of Wonders, Center of the Universe Sun\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$228,600](https://www.phillips.com/detail/girard-perregaux/233834)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233836_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1066\\\\\n\\\\\nMoritz Grossmann\\\\\nRef. MG-001950\\\\\nCorner Stone\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$165,100](https://www.phillips.com/detail/moritz-grossmann/233836)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233435_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1067\\\\\n\\\\\nCartier\\\\\nRef. WGTA0121\\\\\nTank Louis Cartier “Europe Edition”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$120,000–350,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$304,800](https://www.phillips.com/detail/cartier/233435)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233436_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1068\\\\\n\\\\\nCartier\\\\\nRef. WGTA0058\\\\\nTank Louis Cartier\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$120,000–350,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$254,000](https://www.phillips.com/detail/cartier/233436)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234088_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1069\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5204G-001\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$1,000,000–2,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,397,000](https://www.phillips.com/detail/patek-philippe/234088)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234090_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1070\\\\\n\\\\\nRolex\\\\\nRef. 16618\\\\\nSubmariner “Sultan” dial\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–300,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$203,200](https://www.phillips.com/detail/rolex/234090)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234228_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1071\\\\\n\\\\\nRolex\\\\\nRef. 16758\\\\\nGMT-Master\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$95,000–150,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$177,800](https://www.phillips.com/detail/rolex/234228)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233264_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n1072\\\\\n\\\\\nRolex\\\\\nRef. 116500LN\\\\\nCosmograph Daytona\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–250,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$241,300](https://www.phillips.com/detail/rolex/233264)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234092_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1073\\\\\n\\\\\nRolex\\\\\nRef. 116520\\\\\nCosmograph Daytona, \"Panna Dial\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$406,400](https://www.phillips.com/detail/rolex/234092)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232328_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1074\\\\\n\\\\\nRolex\\\\\nRef. 116589RBR\\\\\nCosmograph Daytona\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$250,000–500,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$304,800](https://www.phillips.com/detail/rolex/232328)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232844_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1075\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 25820SP.OO.0944SP.01\\\\\nRoyal Oak Quantième Perpétuel Automatique\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$450,000–800,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$698,500](https://www.phillips.com/detail/audemars-piguet/232844)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232666_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1076\\\\\n\\\\\nPatek Philippe\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$65,000–130,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$139,700](https://www.phillips.com/detail/patek-philippe/232666)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233153_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1077\\\\\n\\\\\nPatek Philippe\\\\\nRef. 1491\\\\\n\"Ricciolo\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$787,400](https://www.phillips.com/detail/patek-philippe/233153)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/229166_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1078\\\\\n\\\\\nPatek Philippe\\\\\nRef. 1518, First series MK III\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$1,600,000–3,200,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$4,699,000](https://www.phillips.com/detail/patek-philippe/229166)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232668_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n1079\\\\\n\\\\\nRolex\\\\\nRef. 4127\\\\\nAthlete\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$32,000–48,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$95,250](https://www.phillips.com/detail/rolex/232668)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232667_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1080\\\\\n\\\\\nUlysse Nardin\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$75,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$127,000](https://www.phillips.com/detail/ulysse-nardin/232667)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233559_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1081\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 4218\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$40,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$304,800](https://www.phillips.com/detail/vacheron-constantin/233559)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/234124_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1082\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 4178\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$150,000–300,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$406,400](https://www.phillips.com/detail/vacheron-constantin/234124)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232664_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n1083\\\\\n\\\\\nRolex\\\\\nRef. 6036\\\\\nOyster \"Dato-Compax\"\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$450,000–750,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$508,000](https://www.phillips.com/detail/rolex/232664)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233656_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1084\\\\\n\\\\\nOmega\\\\\nRef. 145.012-67 SP\\\\\nSpeedmaster “Racing” Dial\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$230,000–470,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$762,000](https://www.phillips.com/detail/omega/233656)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232753_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1085\\\\\n\\\\\nNicole Nielsen & Co for W. Lister & Sons\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$120,000–240,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$698,500](https://www.phillips.com/detail/nicole-nielsen-&-co-for-w.-lister-&-sons/232753)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232755_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1086\\\\\n\\\\\nCartier Paris\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$160,000–320,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$495,300](https://www.phillips.com/detail/cartier-paris/232755)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232764_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1087\\\\\n\\\\\nCartier\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$64,000–128,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$139,700](https://www.phillips.com/detail/cartier/232764)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232765_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1088\\\\\n\\\\\nCartier\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$64,000–128,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$304,800](https://www.phillips.com/detail/cartier/232765)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232758_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1089\\\\\n\\\\\nAttributed to Piguet Meylan\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$160,000–320,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,066,800](https://www.phillips.com/detail/attributed-to-piguet-meylan/232758)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232754_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1090\\\\\n\\\\\nWest End Watch Co.\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$120,000–240,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$228,600](https://www.phillips.com/detail/west-end-watch-co./232754)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232757_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1091\\\\\n\\\\\nIlbery\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$160,000–320,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$444,500](https://www.phillips.com/detail/ilbery/232757)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232767_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1092\\\\\n\\\\\nSwiss\\\\\n\\\\\n“Bouquets de Chine”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$82,550](https://www.phillips.com/detail/swiss/232767)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232766_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1093\\\\\n\\\\\nSwiss\\\\\n\\\\\n“Bouquets de Chine”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$88,900](https://www.phillips.com/detail/swiss/232766)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/220043_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1094\\\\\n\\\\\nJaeger-LeCoultre\\\\\n\\\\\nAtmos Marqueterie “Gustav Klimt”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$780,000–1,560,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$1,003,300](https://www.phillips.com/detail/jaeger-lecoultre/220043)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/232743_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1095\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3417\\\\\nAmagnetic\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$235,000–390,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$444,500](https://www.phillips.com/detail/patek-philippe/232743)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233857_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1096\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3445\\\\\nCalatrava\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$90,000–150,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$190,500](https://www.phillips.com/detail/patek-philippe/233857)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/HK080226/233663_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1097\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3448\\\\\nPadellone “Tokyo White”\\\\\n\\\\\nEstimate\\\\\n\\\\\nHK$6,000,000–12,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\nHK$13,716,000](https://www.phillips.com/detail/patek-philippe/233663)\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 + }
19 + },
20 + "expect": {
21 + "minCount": 10,
22 + "kinds": [
23 + "sale",
24 + "auction_lot"
25 + ]
26 + },
27 + "note": "captured live from https://www.phillips.com/auction/HK080226",
28 + "capturedAt": "2026-09-07T04:43:24.810Z"
29 +}
\ No newline at end of file
added data/fixtures/phillips-watches/NY080126.json +29 −0
@@ -0,0 +1,29 @@
1 +{
2 + "raw": {
3 + "url": "https://www.phillips.com/auction/NY080126",
4 + "externalId": "NY080126",
5 + "kind": "sale",
6 + "engine": "firecrawl",
7 + "fetchedAt": "2026-09-07T04:42:17.754Z",
8 + "payload": {
9 + "kind": "auction_results",
10 + "url": "https://www.phillips.com/auction/NY080126",
11 + "saleNumber": "NY080126",
12 + "title": "The New York Watch Auction: XIV",
13 + "location": "NEW YORK",
14 + "startDate": "2026-06-13T10:00:00-04:00",
15 + "endDate": "2026-06-14T12:00:00-04:00",
16 + "lotCount": 156,
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\nLive Auction\n\n# The New York Watch Auction: XIV\n\nNew York\n\nConcludedJun 14 2026\n\nBrowse Upcoming Sales[View Calendar](https://www.phillips.com/calendar)\n\n![The New York Watch Auction: XIV](https://dist.phillips.com/auction-assets/NY080126/NY080126.jpg?fit=cover&optimize=medium&width=1302)\n\nOverviewBrowse lots\n\nFilters\n\nLot Navigation\n\nShow Lot123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102104105106107108109110111112113114115116117118119120121122124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158\n\n## 156 Lots\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231119_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n1\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nChronomètre Souverain “Nacre”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$508,000](https://www.phillips.com/detail/f.p.-journe/231119)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/232038_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n2\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 117.040\\\\\nGrande Lange 1 Limited Edition for Dubail Paris\\\\\n\\\\\nEstimate\\\\\n\\\\\n$40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$279,400](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/232038)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/229047_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n3\\\\\n\\\\\nKrayon\\\\\n\\\\\nAnywhere Aurora Limited Edition\\\\\n\\\\\nEstimate\\\\\n\\\\\n$60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$241,300](https://www.phillips.com/detail/krayon/229047)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234115_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n4\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5168G-010\\\\\nAquanaut \"Tiffany & Co.\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$203,200](https://www.phillips.com/detail/patek-philippe/234115)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234114_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n5\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5960/1A-001\\\\\n\"Tiffany & Co.\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$127,000](https://www.phillips.com/detail/patek-philippe/234114)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234116_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n6\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5740/1G-001\\\\\nNautilus Perpetual Calendar “Tiffany & Co.”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$150,000–300,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$469,900](https://www.phillips.com/detail/patek-philippe/234116)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233328_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n7\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5004P-022\\\\\n\\\\\nEstimate\\\\\n\\\\\n$180,000–360,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$571,500](https://www.phillips.com/detail/patek-philippe/233328)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234006_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n8\\\\\n\\\\\nRichard Mille\\\\\nRef. RM035 AL ALMG\\\\\nRM035 \"Baby Nadal\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$190,500](https://www.phillips.com/detail/richard-mille/234006)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/230868_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n9\\\\\n\\\\\nVoutilainen\\\\\n\\\\\nVingt-8 Inversé\\\\\n\\\\\nEstimate\\\\\n\\\\\n$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,155,700](https://www.phillips.com/detail/voutilainen/230868)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/230170_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n10\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nChronomètre à Résonance “Souscription, No. 007”\\\\\n\\\\\nEstimate\\\\\n\\\\\nIn excess of $1,000,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$13,922,000](https://www.phillips.com/detail/f.p.-journe/230170)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/232130_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n11\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nChronomètre Souverain “008”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$177,800](https://www.phillips.com/detail/f.p.-journe/232130)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234138_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n12\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5035G-043\\\\\nAnnual Calendar \"Sincere Fine Watches\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$50,800](https://www.phillips.com/detail/patek-philippe/234138)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234418_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n13\\\\\n\\\\\nCartier\\\\\nRef. 2843\\\\\nTank Cintrée CPCP\\\\\n\\\\\nEstimate\\\\\n\\\\\n$40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$88,900](https://www.phillips.com/detail/cartier/234418)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233452_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n14\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5970R-019\\\\\nPerpetual Calendar Chronograph “Special Order\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$400,000–800,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$825,500](https://www.phillips.com/detail/patek-philippe/233452)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233471_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n15\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 15212NB.00.A002KB.01\\\\\nCode 11.59, Star Wheel\\\\\n\\\\\nEstimate\\\\\n\\\\\n$40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$69,850](https://www.phillips.com/detail/audemars-piguet/233471)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/232708_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n16\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 25902OR.OO.1110OR.01\\\\\nRoyal Oak Tourbillon\\\\\n\\\\\nEstimate\\\\\n\\\\\n$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$317,500](https://www.phillips.com/detail/audemars-piguet/232708)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/226757_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n17\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 3200T/001P-B578\\\\\nTraditionnelle Twin-Beat Perpetual Calendar\\\\\n\\\\\nEstimate\\\\\n\\\\\n$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$260,350](https://www.phillips.com/detail/vacheron-constantin/226757)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/229670_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n18\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 26574BC\\\\\nRoyal Oak Perpetual Calendar “Qatar Edition”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$254,000](https://www.phillips.com/detail/audemars-piguet/229670)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/230709_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n19\\\\\n\\\\\nDe Bethune\\\\\nRef. DB15WT\\\\\nDB15 \"Number 001\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$406,400](https://www.phillips.com/detail/de-bethune/230709)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/228973_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n20\\\\\n\\\\\nUrban Jürgensen\\\\\nRef. Proto of 3pcs\\\\\nTourbillon Minute Repeater “Unique Piece, Prototype”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$120,000–240,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,041,400](https://www.phillips.com/detail/urban-j%C3%BCrgensen/228973)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/228010_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n21\\\\\n\\\\\nUniversal Genève\\\\\nRef. 22522\\\\\nFilm-Compax\\\\\n\\\\\nEstimate\\\\\n\\\\\n$12,000–24,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$101,600](https://www.phillips.com/detail/universal-gen%C3%A8ve/228010)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/229882_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n22\\\\\n\\\\\nOmega\\\\\nRef. 2998-5\\\\\nSpeedmaster\\\\\n\\\\\nEstimate\\\\\n\\\\\n$12,000–24,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$22,860](https://www.phillips.com/detail/omega/229882)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233993_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n23\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3417\\\\\nAmagnetic\\\\\n\\\\\nEstimate\\\\\n\\\\\n$50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$190,500](https://www.phillips.com/detail/patek-philippe/233993)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/230236_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n24\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3205/43\\\\\n\\\\\nEstimate\\\\\n\\\\\n$50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$215,900](https://www.phillips.com/detail/patek-philippe/230236)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233455_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n25\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3940\\\\\nPerpetual Calendar \"First Series, Beyer\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$300,000–600,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$965,200](https://www.phillips.com/detail/patek-philippe/233455)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233442_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n26\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3700/11\\\\\nNautilus “Jumbo” Tiffany & Co.\\\\\n\\\\\nEstimate\\\\\n\\\\\n$300,000–600,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$355,600](https://www.phillips.com/detail/patek-philippe/233442)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231350_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n27\\\\\n\\\\\nPatek Philippe\\\\\n\\\\\n\"Tiffany & Co., Paul Starrett\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$15,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$292,100](https://www.phillips.com/detail/patek-philippe/231350)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234075_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n28\\\\\n\\\\\nRolex\\\\\nRef. 1680\\\\\nSubmariner, \"Meters First\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$120,650](https://www.phillips.com/detail/rolex/234075)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234450_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n29\\\\\n\\\\\nRolex\\\\\nRef. 6098\\\\\nOyster Perpetual Ovettone \"Stelline\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$114,300](https://www.phillips.com/detail/rolex/234450)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233992_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n30\\\\\n\\\\\nRolex\\\\\nRef. 6263\\\\\nCosmograph Daytona “Paul Newman Panda”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$300,000–600,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$825,500](https://www.phillips.com/detail/rolex/233992)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233229_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n31\\\\\n\\\\\nRolex\\\\\nRef. 6241\\\\\nCosmograph Daytona “John Player Special”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$700,000–1,400,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,803,400](https://www.phillips.com/detail/rolex/233229)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/230878_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n32\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 223.026\\\\\n1815 Up/Down Homage to Walter Lange\\\\\n\\\\\nEstimate\\\\\n\\\\\n$18,000–36,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$44,450](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/230878)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/230877_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n33\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 223.032\\\\\n1815 Up/Down Homage to Walter Lange\\\\\n\\\\\nEstimate\\\\\n\\\\\n$18,000–36,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$52,070](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/230877)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233473_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n34\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5230G-010\\\\\nWorld-Time, “New York Edition”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$78,740](https://www.phillips.com/detail/patek-philippe/233473)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231516_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n35\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5236P-010\\\\\nIn-Line Perpetual Calendar “Salmon”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$114,300](https://www.phillips.com/detail/patek-philippe/231516)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231515_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n36\\\\\n\\\\\nPatek Philippe\\\\\nRef. 7140G-001\\\\\nLadies' Perpetual Calendar\\\\\n\\\\\nEstimate\\\\\n\\\\\n$30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$63,500](https://www.phillips.com/detail/patek-philippe/231515)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231517_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n37\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5822P-001\\\\\nCubitus\\\\\n\\\\\nEstimate\\\\\n\\\\\n$60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$177,800](https://www.phillips.com/detail/patek-philippe/231517)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231655_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n38\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5711/1A-014\\\\\nNautilus\\\\\n\\\\\nEstimate\\\\\n\\\\\n$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$266,700](https://www.phillips.com/detail/patek-philippe/231655)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231519_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n39\\\\\n\\\\\nPatek Philippe\\\\\nRef. 7968/300R-001\\\\\nAquanaut Luce \"Rainbow\" Chronograph\\\\\n\\\\\nEstimate\\\\\n\\\\\n$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$444,500](https://www.phillips.com/detail/patek-philippe/231519)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233461_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n40\\\\\n\\\\\nOmega\\\\\nRef. 310.55.42.50.99.002\\\\\nSpeedmaster Professional Moonwatch “Rainbow, Moonshine Gold”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$107,950](https://www.phillips.com/detail/omega/233461)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233469_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n41\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 345.056\\\\\nLange 1 Perpetual Calendar\\\\\n\\\\\nEstimate\\\\\n\\\\\n$60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$158,750](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/233469)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233454_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n42\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5070G-014\\\\\n\"Saatchi Gallery\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$350,000–700,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$889,000](https://www.phillips.com/detail/patek-philippe/233454)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233453_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n43\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5373P-001\\\\\n\\\\\nEstimate\\\\\n\\\\\n$350,000–700,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$558,800](https://www.phillips.com/detail/patek-philippe/233453)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233577_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n44\\\\\n\\\\\nPatek Philippe\\\\\n\\\\\n“Observatory Chronometer”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$8,000–16,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$33,020](https://www.phillips.com/detail/patek-philippe/233577)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234034_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n45\\\\\n\\\\\nPatek Philippe\\\\\nRef. 1569\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$44,450](https://www.phillips.com/detail/patek-philippe/234034)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233240_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n46\\\\\n\\\\\nRolex\\\\\nRef. 6262\\\\\nCosmograph Daytona \"Baby Blue\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$25,000–50,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$57,150](https://www.phillips.com/detail/rolex/233240)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233475_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n47\\\\\n\\\\\nPatek Philippe\\\\\nRef. 2526\\\\\n\\\\\nEstimate\\\\\n\\\\\n$25,000–50,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$95,250](https://www.phillips.com/detail/patek-philippe/233475)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/229373_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n48\\\\\n\\\\\nRolex\\\\\nRef. 1802\\\\\nDay-Date \"Platinum, Large Diamond Indices\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$44,450](https://www.phillips.com/detail/rolex/229373)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233481_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n49\\\\\n\\\\\nPatek Philippe\\\\\nRef. 570\\\\\nCalatrava\\\\\n\\\\\nEstimate\\\\\n\\\\\n$20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$57,150](https://www.phillips.com/detail/patek-philippe/233481)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233462_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n50\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3711/1G-001\\\\\nNautilus “Jumbo”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$196,850](https://www.phillips.com/detail/patek-philippe/233462)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233266_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n51\\\\\n\\\\\nRolex\\\\\nRef. 128396TBR\\\\\nDay-Date\\\\\n\\\\\nEstimate\\\\\n\\\\\n$50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$95,250](https://www.phillips.com/detail/rolex/233266)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/229671_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n52\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 26730ST.00.1320ST.02\\\\\nRoyal Oak Flying Tourbillon\\\\\n\\\\\nEstimate\\\\\n\\\\\n$70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$165,100](https://www.phillips.com/detail/audemars-piguet/229671)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/229660_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n53\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 26589IO.OO.D002CA.01\\\\\nRoyal Oak Concept Flying Tourbillon GMT\\\\\n\\\\\nEstimate\\\\\n\\\\\n$70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$101,600](https://www.phillips.com/detail/audemars-piguet/229660)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231511_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n54\\\\\n\\\\\nRichard Mille\\\\\nRef. RM011\\\\\nRM011 AO RG-CA R. Grosjean\\\\\n\\\\\nEstimate\\\\\n\\\\\n$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$254,000](https://www.phillips.com/detail/richard-mille/231511)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234139_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n55\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 110.030\\\\\nLange 1 “Soirée”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$127,000](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/234139)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234141_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n56\\\\\n\\\\\nCartier\\\\\nRef. WGTA0175\\\\\nTank Louis Cartier\\\\\n\\\\\nEstimate\\\\\n\\\\\n$18,000–36,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$85,090](https://www.phillips.com/detail/cartier/234141)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233477_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n57\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 77350CE.OO.1266CE.03\\\\\nRoyal Oak\\\\\n\\\\\nEstimate\\\\\n\\\\\n$25,000–50,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$69,850](https://www.phillips.com/detail/audemars-piguet/233477)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233474_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n58\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 182.886\\\\\nLittle Lange 1 Moon Phase “Gold Flux”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$69,850](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/233474)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233259_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n59\\\\\n\\\\\nRolex\\\\\nRef. 126518LN-0014\\\\\nCosmograph Daytona “Alcaraz”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$107,950](https://www.phillips.com/detail/rolex/233259)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234099_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n60\\\\\n\\\\\nRolex\\\\\nRef. 126679SABR\\\\\nYacht-Master 40 “Cotton Candy”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$196,850](https://www.phillips.com/detail/rolex/234099)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233466_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n61\\\\\n\\\\\nRolex\\\\\nRef. 126506\\\\\nCosmograph Daytona “Platona”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$165,100](https://www.phillips.com/detail/rolex/233466)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231963_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n62\\\\\n\\\\\nRolex\\\\\nRef. 18238\\\\\nDay-Date “Malachite”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$203,200](https://www.phillips.com/detail/rolex/231963)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/232709_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n63\\\\\n\\\\\nCartier\\\\\n\\\\\nCrash \"Platinum\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$150,000–300,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$571,500](https://www.phillips.com/detail/cartier/232709)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233458_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n64\\\\\n\\\\\nPatek Philippe\\\\\nRef. 982/116J-001\\\\\nRare Handcrafts Pocket Watch “Swan”, Pièce Unique\\\\\n\\\\\nEstimate\\\\\n\\\\\n$150,000–300,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$393,700](https://www.phillips.com/detail/patek-philippe/233458)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234113_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n65\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5970P-001\\\\\n“Factory Double-Sealed”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$150,000–300,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$381,000](https://www.phillips.com/detail/patek-philippe/234113)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231518_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n66\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5271/11P-010\\\\\nPerpetual Calendar Chronograph “Sapphire-Set”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$160,000–320,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$508,000](https://www.phillips.com/detail/patek-philippe/231518)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/232088_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n67\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nÉlégante 40 \"Platinum\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$355,600](https://www.phillips.com/detail/f.p.-journe/232088)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/232691_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n68\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nChronomètre Souverain “Black Label”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$317,500](https://www.phillips.com/detail/f.p.-journe/232691)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231118_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n69\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nOcta Chronographe “38MM”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$711,200](https://www.phillips.com/detail/f.p.-journe/231118)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233320_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n70\\\\\n\\\\\nCredor\\\\\nRef. GBLT998\\\\\nEichi II\\\\\n\\\\\nEstimate\\\\\n\\\\\n$18,000–36,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$38,100](https://www.phillips.com/detail/credor/233320)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/229586_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n71\\\\\n\\\\\nDe Bethune\\\\\nRef. DB28XSZM\\\\\nDB28 “Aérolite”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$177,800](https://www.phillips.com/detail/de-bethune/229586)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/229666_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n72\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 4300V/220R-B509\\\\\nOverseas Perpetual Calendar Ultra-Thin\\\\\n\\\\\nEstimate\\\\\n\\\\\n$40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$95,250](https://www.phillips.com/detail/vacheron-constantin/229666)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/229668_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n73\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 26240CE.OO.1225CE.02\\\\\nRoyal Oak Chronograph “Black Ceramic”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$95,250](https://www.phillips.com/detail/audemars-piguet/229668)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233464_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n74\\\\\n\\\\\nGreubel Forsey\\\\\n\\\\\nBalancier Contemporain\\\\\n\\\\\nEstimate\\\\\n\\\\\n$80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$254,000](https://www.phillips.com/detail/greubel-forsey/233464)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234005_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n75\\\\\n\\\\\nRichard Mille\\\\\nRef. RM67-02 FQ-CA TPT GR2\\\\\nRM67-02 “Alexander Zverev”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$150,000–300,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$381,000](https://www.phillips.com/detail/richard-mille/234005)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/228974_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n76\\\\\n\\\\\nUrban Jürgensen\\\\\n\\\\\nReference 3\\\\\n\\\\\nEstimate\\\\\n\\\\\n$40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$279,400](https://www.phillips.com/detail/urban-j%C3%BCrgensen/228974)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234677_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n77\\\\\n\\\\\nRoger Smith\\\\\nRef. Series 3\\\\\nSeries 3 “Unique Piece”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$300,000–600,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,219,200](https://www.phillips.com/detail/roger-smith/234677)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/230865_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n78\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nOcta Divine “36MM, Brass Movement”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$533,400](https://www.phillips.com/detail/f.p.-journe/230865)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233231_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n79\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nTourbillon Anniversaire Historique “T30”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$600,000–1,200,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$2,032,000](https://www.phillips.com/detail/f.p.-journe/233231)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/230864_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n80\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nOcta Automatique Lune “Nacre”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$482,600](https://www.phillips.com/detail/f.p.-journe/230864)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/230710_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n81\\\\\n\\\\\nDe Bethune\\\\\nRef. DB25VUS\\\\\nDB25 Starry Varius “Number 1 of 5”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$25,000–50,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$120,650](https://www.phillips.com/detail/de-bethune/230710)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/230872_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n82\\\\\n\\\\\nVoutilainen\\\\\n\\\\\nObservatoire\\\\\n\\\\\nEstimate\\\\\n\\\\\n$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,041,400](https://www.phillips.com/detail/voutilainen/230872)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234489_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n83\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nOcta Chronographe “Swiss FineTiming”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$2,032,000](https://www.phillips.com/detail/f.p.-journe/234489)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234490_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n84\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nChronomètre Souverain “Swiss FineTiming”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,968,500](https://www.phillips.com/detail/f.p.-journe/234490)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231660_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n85\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nTourbillon Souverain Anniversaire “Hong Kong”, \"Number 1 of 5”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$600,000–1,200,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$4,355,000](https://www.phillips.com/detail/f.p.-journe/231660)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233465_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n86\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5711/1A-010\\\\\nNautilus “Eric Clapton\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$266,700](https://www.phillips.com/detail/patek-philippe/233465)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233459_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n87\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3940G-029\\\\\n\"Saatchi Edition\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$419,100](https://www.phillips.com/detail/patek-philippe/233459)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233451_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n88\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5004G-020\\\\\n“Eric Clapton”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$700,000–1,400,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$5,202,000](https://www.phillips.com/detail/patek-philippe/233451)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/230875_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n89\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 302.025\\\\\nLangematik Anniversary Jubilee\\\\\n\\\\\nEstimate\\\\\n\\\\\n$20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$48,260](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/230875)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/230882_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n90\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 101.035\\\\\nLange 1 “Darth”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$15,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$57,150](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/230882)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/230867_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n91\\\\\n\\\\\nA. Lange & Söhne\\\\\nRef. 701.021\\\\\nPour Le Mérite Tourbillon\\\\\n\\\\\nEstimate\\\\\n\\\\\n$120,000–240,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$469,900](https://www.phillips.com/detail/a.-lange-&-s%C3%B6hne/230867)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/229776_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n92\\\\\n\\\\\nRolex\\\\\nRef. 9630\\\\\nKing Midas \"Buddy Bray\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$82,550](https://www.phillips.com/detail/rolex/229776)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/229777_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n93\\\\\n\\\\\nRolex\\\\\nRef. 1400\\\\\nCocktail\\\\\n\\\\\nEstimate\\\\\n\\\\\n$4,000–8,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$15,240](https://www.phillips.com/detail/rolex/229777)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234679_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n94\\\\\n\\\\\nPatek Philippe\\\\\nRef. 974/24J\\\\\n“Blue-headed Macaw” by Anita Porchet\\\\\n\\\\\nEstimate\\\\\n\\\\\n$70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$127,000](https://www.phillips.com/detail/patek-philippe/234679)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234678_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n95\\\\\n\\\\\nPatek Philippe\\\\\nRef. 974/21\\\\\n“Gazelle” by Anita Porchet\\\\\n\\\\\nEstimate\\\\\n\\\\\n$70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$107,950](https://www.phillips.com/detail/patek-philippe/234678)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231716_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n96\\\\\n\\\\\nCartier\\\\\n\\\\\nLouis Cartier Tank\\\\\n\\\\\nEstimate\\\\\n\\\\\n$20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$44,450](https://www.phillips.com/detail/cartier/231716)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233476_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n97\\\\\n\\\\\nPatek Philippe\\\\\nRef. 6196P-001\\\\\nCalatrava\\\\\n\\\\\nEstimate\\\\\n\\\\\n$25,000–50,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$63,500](https://www.phillips.com/detail/patek-philippe/233476)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/232899_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n98\\\\\n\\\\\nPatek Philippe\\\\\nRef. 2550\\\\\n\"Lindo Turtle\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$254,000](https://www.phillips.com/detail/patek-philippe/232899)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/232963_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n99\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3700/11\\\\\nNautilus “Jumbo”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$228,600](https://www.phillips.com/detail/patek-philippe/232963)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233457_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n100\\\\\n\\\\\nPatek Philippe\\\\\nRef. 3970\\\\\n“First Series”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$838,200](https://www.phillips.com/detail/patek-philippe/233457)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233450_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n101\\\\\n\\\\\nPatek Philippe\\\\\nRef. 1518\\\\\n\\\\\nEstimate\\\\\n\\\\\n$1,200,000–2,400,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$3,992,000](https://www.phillips.com/detail/patek-philippe/233450)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234033_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n102\\\\\n\\\\\nRolex\\\\\nRef. 6305\\\\\nDatejust Ovettone “Serpico & Laino”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$82,550](https://www.phillips.com/detail/rolex/234033)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233230_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n104\\\\\n\\\\\nRolex\\\\\nRef. 6239\\\\\nCosmograph Daytona “Paul Newman”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$600,000–1,200,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,079,500](https://www.phillips.com/detail/rolex/233230)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/230873_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n105\\\\\n\\\\\nVoutilainen\\\\\n\\\\\nMasterpiece Chronograph II “Number 1 of 10”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$120,000–240,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,841,500](https://www.phillips.com/detail/voutilainen/230873)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234007_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n106\\\\\n\\\\\nRichard Mille\\\\\nRef. RM61-01 CA-TZP\\\\\nYohan Blake “The Beast 2”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$130,000–260,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$177,800](https://www.phillips.com/detail/richard-mille/234007)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/229667_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n107\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 15412BA.YG.1224BA.01-B\\\\\nRoyal Oak Frosted Gold Double Balance Wheel Openworked “Rainbow”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$406,400](https://www.phillips.com/detail/audemars-piguet/229667)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231513_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n108\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 26530Ti.00.1220Ti.01\\\\\nRoyal Oak “Flying Tourbillon”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$127,000](https://www.phillips.com/detail/audemars-piguet/231513)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231302_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n109\\\\\n\\\\\nRichard Mille\\\\\nRef. RM52-01 AN RG-TZP\\\\\nRM52-01 Tourbillon “Skull, Piece Unique”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$400,000–800,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,397,000](https://www.phillips.com/detail/richard-mille/231302)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/229662_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n110\\\\\n\\\\\nBreguet\\\\\nRef. 7727\\\\\nClassique La Chronométrie “10Hz”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$12,000–24,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$53,340](https://www.phillips.com/detail/breguet/229662)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/219947_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n111\\\\\n\\\\\nBreguet\\\\\nRef. 7057BR\\\\\nLa Tradition\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–20,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$44,450](https://www.phillips.com/detail/breguet/219947)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231514_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n112\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5037/1G-001\\\\\nAnnual Calendar\\\\\n\\\\\nEstimate\\\\\n\\\\\n$20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$27,940](https://www.phillips.com/detail/patek-philippe/231514)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/230682_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n113\\\\\n\\\\\nRolex\\\\\nRef. 80285\\\\\nPearlmaster Lady-Datejust\\\\\n\\\\\nEstimate\\\\\n\\\\\n$15,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$38,100](https://www.phillips.com/detail/rolex/230682)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233268_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n114\\\\\n\\\\\nRolex\\\\\nRef. 228348RBR\\\\\nDay-Date 40 “Green Ombré”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$76,200](https://www.phillips.com/detail/rolex/233268)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233463_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n115\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5980/60G-001\\\\\nNautilus\\\\\n\\\\\nEstimate\\\\\n\\\\\n$80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$177,800](https://www.phillips.com/detail/patek-philippe/233463)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233468_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n116\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 16202BC.OO.1240BC.02\\\\\nRoyal Oak “Jumbo” Extra-Thin\\\\\n\\\\\nEstimate\\\\\n\\\\\n$60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$127,000](https://www.phillips.com/detail/audemars-piguet/233468)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233456_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n117\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5711/1P-001\\\\\nNautilus \"40th Anniversary, Factory Double-Sealed\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$250,000–500,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$546,100](https://www.phillips.com/detail/patek-philippe/233456)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233326_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n118\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5950A-001\\\\\n\\\\\nEstimate\\\\\n\\\\\n$250,000–500,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$520,700](https://www.phillips.com/detail/patek-philippe/233326)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233478_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n119\\\\\n\\\\\nCartier\\\\\nRef. WGSA0036\\\\\nSantos Dumont XL “La Demoiselle”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$40,640](https://www.phillips.com/detail/cartier/233478)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234331_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n120\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 47101/2\\\\\nChronographe Historique\\\\\n\\\\\nEstimate\\\\\n\\\\\n$20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$74,930](https://www.phillips.com/detail/vacheron-constantin/234331)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/232372_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n121\\\\\n\\\\\nGirard Perregaux\\\\\n\\\\\nFerrari F50 Owner\\\\\n\\\\\nEstimate\\\\\n\\\\\n$8,000–16,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$22,860](https://www.phillips.com/detail/girard-perregaux/232372)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233479_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n122\\\\\n\\\\\nJaeger-LeCoultre\\\\\nRef. 216.2.S0, LE50 Q389256J\\\\\nReverso Tribute Chronograph\\\\\n\\\\\nEstimate\\\\\n\\\\\n$20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$48,260](https://www.phillips.com/detail/jaeger-lecoultre/233479)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/229663_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n124\\\\\n\\\\\nGrand Seiko\\\\\nRef. SBGZ007\\\\\nSpring Drive Masterpiece Collection, Boutique Limited Edition\\\\\n\\\\\nEstimate\\\\\n\\\\\n$30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$78,740](https://www.phillips.com/detail/grand-seiko/229663)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/230711_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n125\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 47070/000J-9085\\\\\nPatrimony Tribute to the Great Explorers, Christopher Columbus\\\\\n\\\\\nEstimate\\\\\n\\\\\n$25,000–50,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$87,630](https://www.phillips.com/detail/vacheron-constantin/230711)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/229661_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n126\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 5300S\\\\\nHarmony Chronograph 260th Anniversary\\\\\n\\\\\nEstimate\\\\\n\\\\\n$30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$60,960](https://www.phillips.com/detail/vacheron-constantin/229661)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233472_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n127\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 26238CE.OO.1300CE.02\\\\\nRoyal Oak Offshore “Black Ceramic”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$76,200](https://www.phillips.com/detail/audemars-piguet/233472)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/229665_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n128\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 6000V/110R-B733\\\\\nOverseas Tourbillon\\\\\n\\\\\nEstimate\\\\\n\\\\\n$60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$133,350](https://www.phillips.com/detail/vacheron-constantin/229665)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231654_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n129\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5980/1A-014\\\\\nNautilus Chronograph\\\\\n\\\\\nEstimate\\\\\n\\\\\n$40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$101,600](https://www.phillips.com/detail/patek-philippe/231654)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233467_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n130\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5170P-010\\\\\n\\\\\nEstimate\\\\\n\\\\\n$60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$127,000](https://www.phillips.com/detail/patek-philippe/233467)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233318_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n131\\\\\n\\\\\nPatek Philippe\\\\\nRef. 5970R-001\\\\\n\\\\\nEstimate\\\\\n\\\\\n$120,000–240,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$241,300](https://www.phillips.com/detail/patek-philippe/233318)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231512_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n132\\\\\n\\\\\nRichard Mille\\\\\nRef. MON-01784\\\\\nRM11-05 Automatic Flyback Chronograph GMT\\\\\n\\\\\nEstimate\\\\\n\\\\\n$180,000–360,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$330,200](https://www.phillips.com/detail/richard-mille/231512)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234419_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n133\\\\\n\\\\\nCartier\\\\\nRef. 78092\\\\\nTank Normale\\\\\n\\\\\nEstimate\\\\\n\\\\\n$6,000–12,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$17,780](https://www.phillips.com/detail/cartier/234419)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/230680_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n134\\\\\n\\\\\nCartier\\\\\nRef. 2671\\\\\nTank Louis Cartier Squelette\\\\\n\\\\\nEstimate\\\\\n\\\\\n$20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$33,020](https://www.phillips.com/detail/cartier/230680)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/219945_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n135\\\\\n\\\\\nBulgari\\\\\nRef. 103527\\\\\nOcto Finissimo Skeleton\\\\\n\\\\\nEstimate\\\\\n\\\\\n$10,000–20,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$17,780](https://www.phillips.com/detail/bulgari/219945)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/229664_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n136\\\\\n\\\\\nVacheron Constantin\\\\\nRef. 4500V/110A-B128\\\\\nOverseas\\\\\n\\\\\nEstimate\\\\\n\\\\\n$12,000–24,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$33,020](https://www.phillips.com/detail/vacheron-constantin/229664)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233299_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n137\\\\\n\\\\\nBreguet\\\\\nRef. 3617\\\\\nPerpetual Calendar Chronograph, Classique\\\\\n\\\\\nEstimate\\\\\n\\\\\n$25,000–50,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$85,090](https://www.phillips.com/detail/breguet/233299)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234681_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n138\\\\\n\\\\\nDe Bethune\\\\\nRef. DB8RETIS1\\\\\nDB Eight\\\\\n\\\\\nEstimate\\\\\n\\\\\n$30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$107,950](https://www.phillips.com/detail/de-bethune/234681)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/229302_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n139\\\\\n\\\\\nRomain Gauthier\\\\\n\\\\\nC by Romain Gauthier, Titanium Edition\\\\\n\\\\\nEstimate\\\\\n\\\\\n$20,000–40,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$44,450](https://www.phillips.com/detail/romain-gauthier/229302)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/228975_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n140\\\\\n\\\\\nVoutilainen\\\\\n\\\\\nVingt-8 ISO\\\\\n\\\\\nEstimate\\\\\n\\\\\n$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$1,206,500](https://www.phillips.com/detail/voutilainen/228975)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233460_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n141\\\\\n\\\\\nGreubel Forsey\\\\\n\\\\\nBalancier Convexe GMT Brazalete\\\\\n\\\\\nEstimate\\\\\n\\\\\n$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$355,600](https://www.phillips.com/detail/greubel-forsey/233460)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/234680_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n142\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nOcta Automatique Lune \"Number 016”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$70,000–140,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$203,200](https://www.phillips.com/detail/f.p.-journe/234680)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233470_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n143\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 15510BC.OO.1320BC.04\\\\\nRoyal Oak Selfwinding\\\\\n\\\\\nEstimate\\\\\n\\\\\n$50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$95,250](https://www.phillips.com/detail/audemars-piguet/233470)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233269_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n144\\\\\n\\\\\nAudemars Piguet\\\\\nRef. 26331BA.OO.1220BA.02\\\\\nRoyal Oak Chronograph 41MM “Limited Edition of 125”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$177,800](https://www.phillips.com/detail/audemars-piguet/233269)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/229046_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n145\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nChronographe Rattrapante\\\\\n\\\\\nEstimate\\\\\n\\\\\n$80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$304,800](https://www.phillips.com/detail/f.p.-journe/229046)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/232692_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n146\\\\\n\\\\\nRichard Mille\\\\\nRef. MON-02072\\\\\nRM33-03 Automatic\\\\\n\\\\\nEstimate\\\\\n\\\\\n$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$190,500](https://www.phillips.com/detail/richard-mille/232692)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231653_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n147\\\\\n\\\\\nRolex\\\\\nRef. 116520\\\\\nCosmograph Daytona\\\\\n\\\\\nEstimate\\\\\n\\\\\n$12,000–24,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$25,400](https://www.phillips.com/detail/rolex/231653)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233480_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n148\\\\\n\\\\\nRolex\\\\\nRef. 16520\\\\\nCosmograph Daytona \"New-Old-Stock\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$18,000–36,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$60,960](https://www.phillips.com/detail/rolex/233480)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233309_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n149\\\\\n\\\\\nRolex\\\\\nRef. 1019\\\\\nMilgauss \"From the Collection of Isaac Slade\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$15,000–30,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$33,020](https://www.phillips.com/detail/rolex/233309)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/232835_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n150\\\\\n\\\\\nRolex\\\\\nRef. 6239\\\\\nCosmograph Daytona “Jumbo Logo”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$30,000–60,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$57,150](https://www.phillips.com/detail/rolex/232835)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231369_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\nNo Reserve\\\\\n151\\\\\n\\\\\nRolex\\\\\nRef. 6036\\\\\n“Dato-Compax Killy”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$50,000–100,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$152,400](https://www.phillips.com/detail/rolex/231369)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/232037_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n152\\\\\n\\\\\nRolex\\\\\nRef. 6265\\\\\nCosmograph Daytona \"Big Red\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$40,000–80,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$114,300](https://www.phillips.com/detail/rolex/232037)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233267_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n153\\\\\n\\\\\nRolex\\\\\nRef. 128238\\\\\nDay-Date \"Eastern Arabic\"\\\\\n\\\\\nEstimate\\\\\n\\\\\n$35,000–70,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$76,200](https://www.phillips.com/detail/rolex/233267)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231520_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n154\\\\\n\\\\\nRolex\\\\\nRef. 116598RBOW\\\\\nCosmograph Daytona “Rainbow”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$200,000–400,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$330,200](https://www.phillips.com/detail/rolex/231520)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231208_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n155\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nOcta Réserve de Marche\\\\\n\\\\\nEstimate\\\\\n\\\\\n$60,000–120,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$406,400](https://www.phillips.com/detail/f.p.-journe/231208)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/233239_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n156\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nCentigraphe Souverain\\\\\n\\\\\nEstimate\\\\\n\\\\\n$80,000–160,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$482,600](https://www.phillips.com/detail/f.p.-journe/233239)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/231120_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n157\\\\\n\\\\\nF.P. Journe\\\\\n\\\\\nChronomètre à Résonance “RQ 40MM”\\\\\n\\\\\nEstimate\\\\\n\\\\\n$120,000–240,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$609,600](https://www.phillips.com/detail/f.p.-journe/231120)\n\n[![Brought to you by Phillips](https://dist.phillips.com/auction-assets/NY080126/230869_001.jpg?fit=cover&offset-x=50&offset-y=100&width=928)\\\\\n\\\\\n158\\\\\n\\\\\nVianney Halter\\\\\n\\\\\nAntiqua\\\\\n\\\\\nEstimate\\\\\n\\\\\n$100,000–200,000\\\\\n\\\\\nSold For\\\\\n\\\\\n$584,200](https://www.phillips.com/detail/vianney-halter/230869)\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 + }
19 + },
20 + "expect": {
21 + "minCount": 10,
22 + "kinds": [
23 + "sale",
24 + "auction_lot"
25 + ]
26 + },
27 + "note": "captured live from https://www.phillips.com/auction/NY080126",
28 + "capturedAt": "2026-09-07T04:42:17.762Z"
29 +}
\ No newline at end of file
added data/fixtures/pokemontcg/base1-1.json +98 −0
@@ -0,0 +1,98 @@
1 +{
2 + "raw": {
3 + "url": "https://api.pokemontcg.io/v2/cards/base1-1",
4 + "externalId": "base1-1",
5 + "kind": "catalog_item",
6 + "engine": "api",
7 + "fetchedAt": "2026-09-07T04:27:44.899Z",
8 + "payload": {
9 + "card": {
10 + "id": "base1-1",
11 + "name": "Alakazam",
12 + "supertype": "Pokémon",
13 + "subtypes": [
14 + "Stage 2"
15 + ],
16 + "hp": "80",
17 + "types": [
18 + "Psychic"
19 + ],
20 + "number": "1",
21 + "artist": "Ken Sugimori",
22 + "rarity": "Rare Holo",
23 + "flavorText": "Its brain can outperform a supercomputer. Its intelligence quotient is said to be 5000.",
24 + "nationalPokedexNumbers": [
25 + 65
26 + ],
27 + "images": {
28 + "small": "https://images.pokemontcg.io/base1/1.png",
29 + "large": "https://images.pokemontcg.io/base1/1_hires.png"
30 + },
31 + "set": {
32 + "id": "base1",
33 + "name": "Base",
34 + "series": "Base",
35 + "printedTotal": 102,
36 + "total": 102,
37 + "ptcgoCode": "BS",
38 + "releaseDate": "1999/01/09",
39 + "updatedAt": "2022/10/10 15:12:00",
40 + "images": {
41 + "symbol": "https://images.pokemontcg.io/base1/symbol.png",
42 + "logo": "https://images.pokemontcg.io/base1/logo.png"
43 + }
44 + },
45 + "tcgplayer": {
46 + "url": "https://prices.pokemontcg.io/tcgplayer/base1-1",
47 + "updatedAt": "2026/09/06",
48 + "prices": {
49 + "holofoil": {
50 + "low": 43.99,
51 + "mid": 59.99,
52 + "high": 9999,
53 + "market": 69.34,
54 + "directLow": 385
55 + }
56 + }
57 + },
58 + "cardmarket": {
59 + "url": "https://prices.pokemontcg.io/cardmarket/base1-1",
60 + "updatedAt": "2026/07/01",
61 + "prices": {
62 + "averageSellPrice": 125,
63 + "lowPrice": 69.94,
64 + "trendPrice": 268.62,
65 + "germanProLow": 0,
66 + "suggestedPrice": 0,
67 + "reverseHoloSell": 0,
68 + "reverseHoloLow": 0,
69 + "reverseHoloTrend": 0,
70 + "lowPriceExPlus": 250,
71 + "avg1": 125,
72 + "avg7": 282.13,
73 + "avg30": 188.1,
74 + "reverseHoloAvg1": 0,
75 + "reverseHoloAvg7": 0,
76 + "reverseHoloAvg30": 0
77 + }
78 + }
79 + },
80 + "source": "api"
81 + }
82 + },
83 + "expect": {
84 + "minCount": 1,
85 + "kinds": [
86 + "catalog_item",
87 + "price_observation"
88 + ],
89 + "requiredFields": [
90 + "attributes.identifiers.pokemontcg_id",
91 + "attributes.set",
92 + "attributes.number",
93 + "attributes.year"
94 + ]
95 + },
96 + "note": "Live capture of https://api.pokemontcg.io/v2/cards?q=set.id:base1 (trimmed).",
97 + "capturedAt": "2026-09-07T04:27:53.271Z"
98 +}
\ No newline at end of file
added data/fixtures/pokemontcg/base1-102.json +89 −0
@@ -0,0 +1,89 @@
1 +{
2 + "raw": {
3 + "url": "https://api.pokemontcg.io/v2/cards/base1-102",
4 + "externalId": "base1-102",
5 + "kind": "catalog_item",
6 + "engine": "api",
7 + "fetchedAt": "2026-09-07T04:27:44.899Z",
8 + "payload": {
9 + "card": {
10 + "id": "base1-102",
11 + "name": "Water Energy",
12 + "supertype": "Energy",
13 + "subtypes": [
14 + "Basic"
15 + ],
16 + "number": "102",
17 + "artist": "Keiji Kinebuchi",
18 + "images": {
19 + "small": "https://images.pokemontcg.io/base1/102.png",
20 + "large": "https://images.pokemontcg.io/base1/102_hires.png"
21 + },
22 + "set": {
23 + "id": "base1",
24 + "name": "Base",
25 + "series": "Base",
26 + "printedTotal": 102,
27 + "total": 102,
28 + "ptcgoCode": "BS",
29 + "releaseDate": "1999/01/09",
30 + "updatedAt": "2022/10/10 15:12:00",
31 + "images": {
32 + "symbol": "https://images.pokemontcg.io/base1/symbol.png",
33 + "logo": "https://images.pokemontcg.io/base1/logo.png"
34 + }
35 + },
36 + "tcgplayer": {
37 + "url": "https://prices.pokemontcg.io/tcgplayer/base1-102",
38 + "updatedAt": "2026/09/06",
39 + "prices": {
40 + "normal": {
41 + "low": 0.03,
42 + "mid": 0.39,
43 + "high": 9.99,
44 + "market": 0.54,
45 + "directLow": 0.1
46 + }
47 + }
48 + },
49 + "cardmarket": {
50 + "url": "https://prices.pokemontcg.io/cardmarket/base1-102",
51 + "updatedAt": "2026/01/16",
52 + "prices": {
53 + "averageSellPrice": 0.24,
54 + "lowPrice": 0.02,
55 + "trendPrice": 0.35,
56 + "germanProLow": 0,
57 + "suggestedPrice": 0,
58 + "reverseHoloSell": 0,
59 + "reverseHoloLow": 0,
60 + "reverseHoloTrend": 1.66,
61 + "lowPriceExPlus": 0.02,
62 + "avg1": 0.2,
63 + "avg7": 0.29,
64 + "avg30": 0.23,
65 + "reverseHoloAvg1": 4,
66 + "reverseHoloAvg7": 0.83,
67 + "reverseHoloAvg30": 0.92
68 + }
69 + }
70 + },
71 + "source": "api"
72 + }
73 + },
74 + "expect": {
75 + "minCount": 1,
76 + "kinds": [
77 + "catalog_item",
78 + "price_observation"
79 + ],
80 + "requiredFields": [
81 + "attributes.identifiers.pokemontcg_id",
82 + "attributes.set",
83 + "attributes.number",
84 + "attributes.year"
85 + ]
86 + },
87 + "note": "Live capture of https://api.pokemontcg.io/v2/cards?q=set.id:base1 (trimmed).",
88 + "capturedAt": "2026-09-07T04:27:53.272Z"
89 +}
\ No newline at end of file
added data/fixtures/pokemontcg/base1-4-mirror.json +60 −0
@@ -0,0 +1,60 @@
1 +{
2 + "raw": {
3 + "url": "https://api.pokemontcg.io/v2/cards/base1-4",
4 + "externalId": "base1-4",
5 + "kind": "catalog_item",
6 + "engine": "feed",
7 + "fetchedAt": "2026-09-07T04:27:44.899Z",
8 + "payload": {
9 + "card": {
10 + "id": "base1-4",
11 + "name": "Charizard",
12 + "supertype": "Pokémon",
13 + "subtypes": [
14 + "Stage 2"
15 + ],
16 + "hp": "120",
17 + "types": [
18 + "Fire"
19 + ],
20 + "number": "4",
21 + "artist": "Mitsuhiro Arita",
22 + "rarity": "Rare Holo",
23 + "flavorText": "Spits fire that is hot enough to melt boulders. Known to unintentionally cause forest fires.",
24 + "nationalPokedexNumbers": [
25 + 6
26 + ],
27 + "images": {
28 + "small": "https://images.pokemontcg.io/base1/4.png",
29 + "large": "https://images.pokemontcg.io/base1/4_hires.png"
30 + },
31 + "set": {
32 + "id": "base1",
33 + "name": "Base",
34 + "series": "Base",
35 + "printedTotal": 102,
36 + "total": 102,
37 + "ptcgoCode": "BS",
38 + "releaseDate": "1999/01/09",
39 + "updatedAt": "2022/10/10 15:12:00",
40 + "images": {
41 + "symbol": "https://images.pokemontcg.io/base1/symbol.png",
42 + "logo": "https://images.pokemontcg.io/base1/logo.png"
43 + }
44 + }
45 + },
46 + "source": "github-mirror"
47 + }
48 + },
49 + "expect": {
50 + "count": 1,
51 + "kinds": [
52 + "catalog_item"
53 + ],
54 + "first": {
55 + "attributes.variant": null
56 + }
57 + },
58 + "note": "GitHub mirror fallback (PokemonTCG/pokemon-tcg-data): catalog only, no prices.",
59 + "capturedAt": "2026-09-07T04:27:53.682Z"
60 +}
\ No newline at end of file
added data/fixtures/pokemontcg/base1-4.json +98 −0
@@ -0,0 +1,98 @@
1 +{
2 + "raw": {
3 + "url": "https://api.pokemontcg.io/v2/cards/base1-4",
4 + "externalId": "base1-4",
5 + "kind": "catalog_item",
6 + "engine": "api",
7 + "fetchedAt": "2026-09-07T04:27:44.899Z",
8 + "payload": {
9 + "card": {
10 + "id": "base1-4",
11 + "name": "Charizard",
12 + "supertype": "Pokémon",
13 + "subtypes": [
14 + "Stage 2"
15 + ],
16 + "hp": "120",
17 + "types": [
18 + "Fire"
19 + ],
20 + "number": "4",
21 + "artist": "Mitsuhiro Arita",
22 + "rarity": "Rare Holo",
23 + "flavorText": "Spits fire that is hot enough to melt boulders. Known to unintentionally cause forest fires.",
24 + "nationalPokedexNumbers": [
25 + 6
26 + ],
27 + "images": {
28 + "small": "https://images.pokemontcg.io/base1/4.png",
29 + "large": "https://images.pokemontcg.io/base1/4_hires.png"
30 + },
31 + "set": {
32 + "id": "base1",
33 + "name": "Base",
34 + "series": "Base",
35 + "printedTotal": 102,
36 + "total": 102,
37 + "ptcgoCode": "BS",
38 + "releaseDate": "1999/01/09",
39 + "updatedAt": "2022/10/10 15:12:00",
40 + "images": {
41 + "symbol": "https://images.pokemontcg.io/base1/symbol.png",
42 + "logo": "https://images.pokemontcg.io/base1/logo.png"
43 + }
44 + },
45 + "tcgplayer": {
46 + "url": "https://prices.pokemontcg.io/tcgplayer/base1-4",
47 + "updatedAt": "2026/09/06",
48 + "prices": {
49 + "holofoil": {
50 + "low": 449.99,
51 + "mid": 999,
52 + "high": 4761.9,
53 + "market": 897.19,
54 + "directLow": null
55 + }
56 + }
57 + },
58 + "cardmarket": {
59 + "url": "https://prices.pokemontcg.io/cardmarket/base1-4",
60 + "updatedAt": "2026/07/01",
61 + "prices": {
62 + "averageSellPrice": 1531,
63 + "lowPrice": 799,
64 + "trendPrice": 4184.6,
65 + "germanProLow": 0,
66 + "suggestedPrice": 0,
67 + "reverseHoloSell": 0,
68 + "reverseHoloLow": 0,
69 + "reverseHoloTrend": 0,
70 + "lowPriceExPlus": 1750,
71 + "avg1": 14950,
72 + "avg7": 3939.88,
73 + "avg30": 2427.79,
74 + "reverseHoloAvg1": 0,
75 + "reverseHoloAvg7": 0,
76 + "reverseHoloAvg30": 0
77 + }
78 + }
79 + },
80 + "source": "api"
81 + }
82 + },
83 + "expect": {
84 + "minCount": 1,
85 + "kinds": [
86 + "catalog_item",
87 + "price_observation"
88 + ],
89 + "requiredFields": [
90 + "attributes.identifiers.pokemontcg_id",
91 + "attributes.set",
92 + "attributes.number",
93 + "attributes.year"
94 + ]
95 + },
96 + "note": "Live capture of https://api.pokemontcg.io/v2/cards?q=set.id:base1 (trimmed).",
97 + "capturedAt": "2026-09-07T04:27:53.271Z"
98 +}
\ No newline at end of file
added data/fixtures/pokemontcg/base1-58.json +98 −0
@@ -0,0 +1,98 @@
1 +{
2 + "raw": {
3 + "url": "https://api.pokemontcg.io/v2/cards/base1-58",
4 + "externalId": "base1-58",
5 + "kind": "catalog_item",
6 + "engine": "api",
7 + "fetchedAt": "2026-09-07T04:27:44.899Z",
8 + "payload": {
9 + "card": {
10 + "id": "base1-58",
11 + "name": "Pikachu",
12 + "supertype": "Pokémon",
13 + "subtypes": [
14 + "Basic"
15 + ],
16 + "hp": "40",
17 + "types": [
18 + "Lightning"
19 + ],
20 + "number": "58",
21 + "artist": "Mitsuhiro Arita",
22 + "rarity": "Common",
23 + "flavorText": "When several of these Pokémon gather, their electricity can cause lightning storms.",
24 + "nationalPokedexNumbers": [
25 + 25
26 + ],
27 + "images": {
28 + "small": "https://images.pokemontcg.io/base1/58.png",
29 + "large": "https://images.pokemontcg.io/base1/58_hires.png"
30 + },
31 + "set": {
32 + "id": "base1",
33 + "name": "Base",
34 + "series": "Base",
35 + "printedTotal": 102,
36 + "total": 102,
37 + "ptcgoCode": "BS",
38 + "releaseDate": "1999/01/09",
39 + "updatedAt": "2022/10/10 15:12:00",
40 + "images": {
41 + "symbol": "https://images.pokemontcg.io/base1/symbol.png",
42 + "logo": "https://images.pokemontcg.io/base1/logo.png"
43 + }
44 + },
45 + "tcgplayer": {
46 + "url": "https://prices.pokemontcg.io/tcgplayer/base1-58",
47 + "updatedAt": "2026/09/06",
48 + "prices": {
49 + "normal": {
50 + "low": 4.78,
51 + "mid": 13.41,
52 + "high": 1000,
53 + "market": 16.1,
54 + "directLow": 7.07
55 + }
56 + }
57 + },
58 + "cardmarket": {
59 + "url": "https://prices.pokemontcg.io/cardmarket/base1-58",
60 + "updatedAt": "2026/06/21",
61 + "prices": {
62 + "averageSellPrice": 23.99,
63 + "lowPrice": 7.49,
64 + "trendPrice": 14.44,
65 + "germanProLow": 0,
66 + "suggestedPrice": 0,
67 + "reverseHoloSell": 0,
68 + "reverseHoloLow": 0,
69 + "reverseHoloTrend": 0,
70 + "lowPriceExPlus": 7.49,
71 + "avg1": 28,
72 + "avg7": 19.5,
73 + "avg30": 12.24,
74 + "reverseHoloAvg1": 0,
75 + "reverseHoloAvg7": 0,
76 + "reverseHoloAvg30": 0
77 + }
78 + }
79 + },
80 + "source": "api"
81 + }
82 + },
83 + "expect": {
84 + "minCount": 1,
85 + "kinds": [
86 + "catalog_item",
87 + "price_observation"
88 + ],
89 + "requiredFields": [
90 + "attributes.identifiers.pokemontcg_id",
91 + "attributes.set",
92 + "attributes.number",
93 + "attributes.year"
94 + ]
95 + },
96 + "note": "Live capture of https://api.pokemontcg.io/v2/cards?q=set.id:base1 (trimmed).",
97 + "capturedAt": "2026-09-07T04:27:53.272Z"
98 +}
\ No newline at end of file
added data/fixtures/pricecharting/comic-books-amazing-spider-man__amazing-spider-man-300-1988.json +2789 −0
@@ -0,0 +1,2789 @@
1 +{
2 + "raw": {
3 + "url": "https://www.pricecharting.com/game/comic-books-amazing-spider-man/amazing-spider-man-300-1988",
4 + "externalId": "2315040",
5 + "kind": "catalog_item",
6 + "engine": "api",
7 + "fetchedAt": "2026-09-07T04:33:37.977Z",
8 + "payload": {
9 + "kind": "product",
10 + "url": "https://www.pricecharting.com/game/comic-books-amazing-spider-man/amazing-spider-man-300-1988",
11 + "productId": "2315040",
12 + "consoleUri": "comic-books-amazing-spider-man",
13 + "consoleName": "Amazing Spider-Man",
14 + "title": "Amazing Spider-Man #300 (1988)",
15 + "flags": {
16 + "isComic": true,
17 + "isLegoSet": false,
18 + "isFunkoPop": false,
19 + "isCard": false,
20 + "isCoin": false,
21 + "isSystem": false
22 + },
23 + "columnLabels": [
24 + "Ungraded",
25 + "4.0 / VG",
26 + "6.0 / Fine",
27 + "8.0 / VF",
28 + "9.2 / NM-",
29 + "9.8",
30 + "8.0 / VF",
31 + "9.2 / NM-",
32 + "9.8"
33 + ],
34 + "prices": [
35 + {
36 + "key": "used_price",
37 + "value": 377,
38 + "raw": "$377.00"
39 + },
40 + {
41 + "key": "complete_price",
42 + "value": 307.1,
43 + "raw": "$307.10"
44 + },
45 + {
46 + "key": "new_price",
47 + "value": 358.79,
48 + "raw": "$358.79"
49 + },
50 + {
51 + "key": "graded_price",
52 + "value": 451.03,
53 + "raw": "$451.03"
54 + },
55 + {
56 + "key": "box_only_price",
57 + "value": 587.44,
58 + "raw": "$587.44"
59 + },
60 + {
61 + "key": "manual_only_price",
62 + "value": 2930.82,
63 + "raw": "$2,930.82"
64 + }
65 + ],
66 + "sales": [
67 + {
68 + "tab": "used",
69 + "date": "2026-09-03",
70 + "title": "The Amazing Spider-Man #300 (Marvel Comics May 1988) 1988",
71 + "price": 240,
72 + "ebayId": "178456781993",
73 + "listedPrice": 300
74 + },
75 + {
76 + "tab": "used",
77 + "date": "2026-09-03",
78 + "title": "Amazing Spider-Man #300 May 1988 First Venom 1988",
79 + "price": 365,
80 + "ebayId": "188846672724",
81 + "listedPrice": null
82 + },
83 + {
84 + "tab": "used",
85 + "date": "2026-09-02",
86 + "title": "Amazing Spider-Man #300 1st Full Venom Todd McFarlane Marvel 1988 Direct Edition 1988",
87 + "price": 400,
88 + "ebayId": "398351859717",
89 + "listedPrice": null
90 + },
91 + {
92 + "tab": "used",
93 + "date": "2026-09-02",
94 + "title": "1988 The Amazing Spider-Man #300 25th Anniversary Venom McFarlane Cover 1988",
95 + "price": 355,
96 + "ebayId": "137661937446",
97 + "listedPrice": null
98 + },
99 + {
100 + "tab": "used",
101 + "date": "2026-09-01",
102 + "title": "AMAZING SPIDER-MAN #300 1988 1st Full Venom Todd McFarlane Direct Edition 1988",
103 + "price": 360,
104 + "ebayId": "307149793642",
105 + "listedPrice": 424.99
106 + },
107 + {
108 + "tab": "used",
109 + "date": "2026-08-29",
110 + "title": "The Amazing Spider-Man #300 (Marvel Comics May 1988) 1988",
111 + "price": 700,
112 + "ebayId": "257710800291",
113 + "listedPrice": 750
114 + },
115 + {
116 + "tab": "used",
117 + "date": "2026-08-28",
118 + "title": "The Amazing Spider-Man #300 Todd McFarlane Marvel Comics NM+ 1988",
119 + "price": 350,
120 + "ebayId": "117381868179",
121 + "listedPrice": null
122 + },
123 + {
124 + "tab": "used",
125 + "date": "2026-08-24",
126 + "title": "** 1988 THE AMAZING SPIDER-MAN #300 MARVEL COMICS GOOD+ 1988",
127 + "price": 220,
128 + "ebayId": "278307905372",
129 + "listedPrice": 249.99
130 + },
131 + {
132 + "tab": "used",
133 + "date": "2026-08-24",
134 + "title": "1988 AMAZING SPIDER-MAN COMIC BOOK..VOL.1..NO.300..MARVEL..1ST FULL VENOM..KEY!! 1988 #300",
135 + "price": 425,
136 + "ebayId": "198580303139",
137 + "listedPrice": null
138 + },
139 + {
140 + "tab": "used",
141 + "date": "2026-08-22",
142 + "title": "Amazing Spider-Man #300 1st Full Venom App Todd McFarlane Raw Key Marvel 1988 1988",
143 + "price": 877,
144 + "ebayId": "128027258808",
145 + "listedPrice": null
146 + },
147 + {
148 + "tab": "used",
149 + "date": "2026-08-20",
150 + "title": "AMAZING SPIDER-MAN # 300 - (NM+) -MCFARLANE-ORIGIN/1ST APP OF VENOM-WHTE PAGES",
151 + "price": 990,
152 + "ebayId": "298582930857",
153 + "listedPrice": null
154 + },
155 + {
156 + "tab": "used",
157 + "date": "2026-08-18",
158 + "title": "The Amazing Spider-Man #300 (Marvel Comics May 1988) 1988",
159 + "price": 380,
160 + "ebayId": "287519592277",
161 + "listedPrice": null
162 + },
163 + {
164 + "tab": "used",
165 + "date": "2026-08-17",
166 + "title": "Amazing Spider-Man #300 1988 1st Full App Venom McFarlane Never Pressed Cleaned 1988",
167 + "price": 500,
168 + "ebayId": "327305831471",
169 + "listedPrice": null
170 + },
171 + {
172 + "tab": "used",
173 + "date": "2026-08-16",
174 + "title": "Amazing Spider-Man #300 F/VF, 1st full Venom. Todd McFarlane, Marvel Comics 1988",
175 + "price": 378,
176 + "ebayId": "800479851979",
177 + "listedPrice": null
178 + },
179 + {
180 + "tab": "used",
181 + "date": "2026-08-16",
182 + "title": "Amazing Spider-Man 300 (1988) Origin and 1st full app of Venom. Todd Mc Farlane 1988",
183 + "price": 372.3,
184 + "ebayId": "407086955238",
185 + "listedPrice": null
186 + },
187 + {
188 + "tab": "used",
189 + "date": "2026-08-16",
190 + "title": "AMAZING SPIDER-MAN #300 MCFARLANE CLASSIC FIRST APP VENOM 1988 VF+ 1988",
191 + "price": 405,
192 + "ebayId": "206479190367",
193 + "listedPrice": null
194 + },
195 + {
196 + "tab": "used",
197 + "date": "2026-08-15",
198 + "title": "The Amazing Spider-Man #300 - Venom 1st Appearance (Marvel 1988) VF/VF+ 1988",
199 + "price": 530,
200 + "ebayId": "126571859276",
201 + "listedPrice": 574.99
202 + },
203 + {
204 + "tab": "used",
205 + "date": "2026-08-14",
206 + "title": "Amazing Spider-Man #300 Marvel Comics 1st Venom appearance Todd McFarlane 1988",
207 + "price": 430,
208 + "ebayId": "117344559036",
209 + "listedPrice": null
210 + },
211 + {
212 + "tab": "used",
213 + "date": "2026-08-13",
214 + "title": "10 Consecutive Amazing Spider-Man Comics 295-304 1st Venom, McFarlane 1987-1988 1988 #300",
215 + "price": 765,
216 + "ebayId": "257666239389",
217 + "listedPrice": null
218 + },
219 + {
220 + "tab": "used",
221 + "date": "2026-08-13",
222 + "title": "The Amazing Spider-Man #300 (Marvel Comics May 1988) 1988",
223 + "price": 400,
224 + "ebayId": "188788255535",
225 + "listedPrice": null
226 + },
227 + {
228 + "tab": "used",
229 + "date": "2026-08-13",
230 + "title": "Marvel The Amazing Spider-Man #300 1988 Variant Cover Michelinie McFarlane 1988",
231 + "price": 19.5,
232 + "ebayId": "800483238012",
233 + "listedPrice": null
234 + },
235 + {
236 + "tab": "used",
237 + "date": "2026-08-13",
238 + "title": "The Amazing Spider-Man #300 (1988) NM- Condition! 1st Full App of Venom! 1988",
239 + "price": 464,
240 + "ebayId": "147487355768",
241 + "listedPrice": null
242 + },
243 + {
244 + "tab": "used",
245 + "date": "2026-08-11",
246 + "title": "Marvel The Amazing Spider-Man #300 (1988) David Michelinie Todd McFarlane 1988",
247 + "price": 500,
248 + "ebayId": "128018237333",
249 + "listedPrice": null
250 + },
251 + {
252 + "tab": "used",
253 + "date": "2026-08-10",
254 + "title": "The Amazing Spider-Man #300 & Marvel Super Heroes Secret Wars #8 1984 and 1988",
255 + "price": 415,
256 + "ebayId": "287499908309",
257 + "listedPrice": null
258 + },
259 + {
260 + "tab": "used",
261 + "date": "2026-08-10",
262 + "title": "Amazing Spider-Man #300 1st Appearance of Venom Todd McFarlane Raw Key (TF) F1",
263 + "price": 759.27,
264 + "ebayId": "327281620971",
265 + "listedPrice": null
266 + },
267 + {
268 + "tab": "used",
269 + "date": "2026-08-08",
270 + "title": "AMAZING SPIDER-MAN #300- 1st FULL VENOM APPEARANCE Bright Colors VF/NM Range 1988",
271 + "price": 485,
272 + "ebayId": "278237822019",
273 + "listedPrice": null
274 + },
275 + {
276 + "tab": "used",
277 + "date": "2026-08-08",
278 + "title": "Marvel Comics The Amazing Spider-Man #300 25th Anniv Michelinie/McFarlane Direct 1988",
279 + "price": 229.5,
280 + "ebayId": "358876231735",
281 + "listedPrice": null
282 + },
283 + {
284 + "tab": "used",
285 + "date": "2026-08-07",
286 + "title": "Marvel The Amazing Spider-Man #300 (1988) Spider-Man & Venom David Michelinie 1988",
287 + "price": 220,
288 + "ebayId": "398255391858",
289 + "listedPrice": 300
290 + },
291 + {
292 + "tab": "used",
293 + "date": "2026-08-06",
294 + "title": "The Amazing Spider-Man #300 9.8 NM-M. 1st FULL VENOM. Marvel Comics May 1988) 1988",
295 + "price": 2000,
296 + "ebayId": "357061567620",
297 + "listedPrice": 2800
298 + },
299 + {
300 + "tab": "used",
301 + "date": "2026-08-06",
302 + "title": "The Amazing Spider-Man #300 (Marvel Comics May 1988) 1988",
303 + "price": 300,
304 + "ebayId": "388604431793",
305 + "listedPrice": 500
306 + },
307 + {
308 + "tab": "cib",
309 + "date": "2026-08-09",
310 + "title": "Amazing Spider-Man #300 CGC 4 1st Marvel 1988",
311 + "price": 340,
312 + "ebayId": "206443835894",
313 + "listedPrice": 365
314 + },
315 + {
316 + "tab": "cib",
317 + "date": "2025-06-09",
318 + "title": "The Amazing Spider-Man #300 CGC 4.5 Comic Book! 1st Full Venom Appearance! 1988",
319 + "price": 275,
320 + "ebayId": "326613848166",
321 + "listedPrice": null
322 + },
323 + {
324 + "tab": "cib",
325 + "date": "2025-01-26",
326 + "title": "Amazing Spider-Man #300 CGC 4.0 Marvel Comics 1988 1st App Venom 1988",
327 + "price": 275,
328 + "ebayId": "335773165358",
329 + "listedPrice": null
330 + },
331 + {
332 + "tab": "cib",
333 + "date": "2024-11-23",
334 + "title": "The Amazing Spider-Man #300 CGC 4.5 Comic Book! 1st Full Venom Appearance! 1988",
335 + "price": 300,
336 + "ebayId": "326341682140",
337 + "listedPrice": null
338 + },
339 + {
340 + "tab": "cib",
341 + "date": "2024-06-27",
342 + "title": "Amazing Spider-Man (1963) #300 Todd McFarlane CGC 4.5 1st Full Venom OW/WH Pages 1988",
343 + "price": 280,
344 + "ebayId": "166842449098",
345 + "listedPrice": null
346 + },
347 + {
348 + "tab": "cib",
349 + "date": "2024-05-31",
350 + "title": "Amazing Spider-Man #300 CGC 4.5 1st App of Venom Eddie Brock (1988) 4406505005 1988",
351 + "price": 255,
352 + "ebayId": "256524488027",
353 + "listedPrice": null
354 + },
355 + {
356 + "tab": "cib",
357 + "date": "2023-10-10",
358 + "title": "Amazing Spider-Man #300 - Marvel Comics 1988 CGC 4.0 Origin + 1st full appearanc 1988",
359 + "price": 279,
360 + "ebayId": "235240336849",
361 + "listedPrice": null
362 + },
363 + {
364 + "tab": "cib",
365 + "date": "2023-05-04",
366 + "title": "The Amazing Spider-Man #300 CGC 4.0 (Marvel, May 1988) NEVER CLEANED OR PRESSED 1988",
367 + "price": 315,
368 + "ebayId": "404259601252",
369 + "listedPrice": null
370 + },
371 + {
372 + "tab": "cib",
373 + "date": "2022-12-22",
374 + "title": "Amazing Spider-Man #300 (Marvel 1988) Origin & 1st appearance of Venom - CGC 4.5 1988 #300",
375 + "price": 375,
376 + "ebayId": "295068124202",
377 + "listedPrice": null
378 + },
379 + {
380 + "tab": "cib",
381 + "date": "2022-12-17",
382 + "title": "AMAZING SPIDERMAN 300 CGC 4.0 White pages 1st Venom 1988 #300",
383 + "price": 250,
384 + "ebayId": "364075049710",
385 + "listedPrice": null
386 + },
387 + {
388 + "tab": "cib",
389 + "date": "2022-11-18",
390 + "title": "Amazing Spider-Man #300 1st Full Venom Marvel Comics 1988 CBCS 4.0 VG Key Marvel 1988 #300",
391 + "price": 349.99,
392 + "ebayId": "195395291175",
393 + "listedPrice": null
394 + },
395 + {
396 + "tab": "cib",
397 + "date": "2022-11-07",
398 + "title": "AMAZING SPIDER-MAN #300 CGC 4.0 1ST FULL VENOM APPEARANCE TODD McFARLANE 1988 1988 #300",
399 + "price": 232.5,
400 + "ebayId": "364035584433",
401 + "listedPrice": null
402 + },
403 + {
404 + "tab": "cib",
405 + "date": "2022-10-10",
406 + "title": "CBCS 4.0 VG RESTORED THE AMAZING SPIDER-MAN (MARVEL,1988) #300 1ST VENOM ~ 1988 #300",
407 + "price": 280,
408 + "ebayId": "165714808299",
409 + "listedPrice": null
410 + },
411 + {
412 + "tab": "cib",
413 + "date": "2022-09-26",
414 + "title": "AMAZING SPIDERMAN 300 CGC 4.0 White pages 1st Venom 1988 #300",
415 + "price": 300,
416 + "ebayId": "304635412024",
417 + "listedPrice": null
418 + },
419 + {
420 + "tab": "cib",
421 + "date": "2022-08-29",
422 + "title": "Amazing Spider-Man #300 CGC 4.5 1st Appearance Of Venom Key. Ready to Ship! WP 1988",
423 + "price": 285,
424 + "ebayId": "255686068982",
425 + "listedPrice": null
426 + },
427 + {
428 + "tab": "cib",
429 + "date": "2022-08-01",
430 + "title": "CGC 4.0 Amazing Spider-man 300 1st APP Venom ASM Purple Label McFarlane HTF 1988 #300",
431 + "price": 350,
432 + "ebayId": "394183006169",
433 + "listedPrice": null
434 + },
435 + {
436 + "tab": "cib",
437 + "date": "2022-05-20",
438 + "title": "Amazing Spider-Man #300 CGC 4.5 1st Appearance Of Venom🔑 Key. Ready to Ship! 1988",
439 + "price": 327.5,
440 + "ebayId": "265690982408",
441 + "listedPrice": null
442 + },
443 + {
444 + "tab": "cib",
445 + "date": "2022-05-16",
446 + "title": "Marvel AMAZING SPIDER-MAN (1988) #300 CGC 4.0 VG Key 1st VENOM App McFARLANE 1988 #300",
447 + "price": 300,
448 + "ebayId": "354061581261",
449 + "listedPrice": null
450 + },
451 + {
452 + "tab": "cib",
453 + "date": "2022-04-04",
454 + "title": "AMAZING SPIDER-MAN #300 CGC 4.0 (5/88) ORIGIN 1ST APP VENOM 💥 WHITE PAGES 💥 1988 #300",
455 + "price": 459.87,
456 + "ebayId": "294671659859",
457 + "listedPrice": null
458 + },
459 + {
460 + "tab": "cib",
461 + "date": "2022-01-21",
462 + "title": "Amazing Spider-Man #300 CGC 4.5 1st Venom Appearance/Todd McFarlane/Comic Book 1988",
463 + "price": 395,
464 + "ebayId": "125106639212",
465 + "listedPrice": null
466 + },
467 + {
468 + "tab": "cib",
469 + "date": "2021-12-05",
470 + "title": "The Amazing Spider-Man #300 CGC 4.5 White Pages 1st Full Venom Appearance 1988 #300",
471 + "price": 465,
472 + "ebayId": "294607847246",
473 + "listedPrice": null
474 + },
475 + {
476 + "tab": "cib",
477 + "date": "2021-12-05",
478 + "title": "The Amazing Spider-Man #300 CGC 4.5 White Pages 1st Full Venom Appearance 1988 #300",
479 + "price": 400,
480 + "ebayId": "294599823709",
481 + "listedPrice": null
482 + },
483 + {
484 + "tab": "cib",
485 + "date": "2021-10-06",
486 + "title": "Amazing Spider-Man #300 CGC 4.5 1st App of Venom and Origin - HOT BOOK 🔥 1988 #300",
487 + "price": 395,
488 + "ebayId": "274975302292",
489 + "listedPrice": null
490 + },
491 + {
492 + "tab": "new",
493 + "date": "2026-08-13",
494 + "title": "Amazing Spider-Man # 300 1988 Marvel Comics CGC 6.5 White Pages! 1st Venom! 1988",
495 + "price": 374.95,
496 + "ebayId": "206480595111",
497 + "listedPrice": null
498 + },
499 + {
500 + "tab": "new",
501 + "date": "2026-08-08",
502 + "title": "Amazing Spider-Man 300 (1988) CGC 6.5-Origin & First Full Appearance of Venom🔑 1988 #300",
503 + "price": 400,
504 + "ebayId": "147458605403",
505 + "listedPrice": null
506 + },
507 + {
508 + "tab": "new",
509 + "date": "2026-07-10",
510 + "title": "Marvel AMAZING SPIDER-MAN 1988 #300 Key 1st VENOM Todd McFARLANE PSA CGC FN+ 6.5 1988",
511 + "price": 404.99,
512 + "ebayId": "358243724130",
513 + "listedPrice": null
514 + },
515 + {
516 + "tab": "new",
517 + "date": "2026-07-07",
518 + "title": "The Amazing Spider-Man #300 (Marvel Comics May 1988) CGC 6.5 1988",
519 + "price": 350,
520 + "ebayId": "147384404995",
521 + "listedPrice": null
522 + },
523 + {
524 + "tab": "new",
525 + "date": "2026-06-26",
526 + "title": "Amazing Spider-Man 300 CGC 6.0 Origin & 1st App of Venom 1988 1988 #300",
527 + "price": 329.99,
528 + "ebayId": "147391685751",
529 + "listedPrice": null
530 + },
531 + {
532 + "tab": "new",
533 + "date": "2026-06-08",
534 + "title": "The Amazing Spider-Man #300 CGC 6.5 WHITE PAGES! First Appearance Of Venom! 1988",
535 + "price": 310,
536 + "ebayId": "336614317016",
537 + "listedPrice": 334
538 + },
539 + {
540 + "tab": "new",
541 + "date": "2026-05-25",
542 + "title": "AMAZING SPIDER-MAN #300 CGC 6.5 white 1988 McFarlane 1st appearance VENOM 1988",
543 + "price": 330,
544 + "ebayId": "227355972774",
545 + "listedPrice": 345
546 + },
547 + {
548 + "tab": "new",
549 + "date": "2026-05-21",
550 + "title": "The Amazing Spider-Man #300 CGC 6.5 WHITE PAGES! (Marvel Comics May 1988) 1988",
551 + "price": 325,
552 + "ebayId": "178090567833",
553 + "listedPrice": null
554 + },
555 + {
556 + "tab": "new",
557 + "date": "2026-05-07",
558 + "title": "AMAZING SPIDER-MAN #300 CGC 6.5 (1988) First FULL appearance VENOM (Marvel)",
559 + "price": 319.08,
560 + "ebayId": "146821254997",
561 + "listedPrice": null
562 + },
563 + {
564 + "tab": "new",
565 + "date": "2026-05-03",
566 + "title": "Amazing Spider-Man #300 CGC 6.5 1st Venom Todd McFarlane Marvel Comics",
567 + "price": 399.99,
568 + "ebayId": "198319050328",
569 + "listedPrice": null
570 + },
571 + {
572 + "tab": "new",
573 + "date": "2026-04-19",
574 + "title": "AMAZING SPIDER-MAN # 300 Marvel CGC 6.0 White Pages 1988 Origin & 1st Full Venom 1988",
575 + "price": 375,
576 + "ebayId": "198282188124",
577 + "listedPrice": null
578 + },
579 + {
580 + "tab": "new",
581 + "date": "2026-04-05",
582 + "title": "Amazing Spider-Man #300 CGC 6.0 1st Full Appearance Venom! 1988",
583 + "price": 330.29,
584 + "ebayId": "168274161526",
585 + "listedPrice": null
586 + },
587 + {
588 + "tab": "new",
589 + "date": "2026-03-23",
590 + "title": "Amazing Spider-Man #300 CGC 6.5 White pages 1988",
591 + "price": 280,
592 + "ebayId": "198216160103",
593 + "listedPrice": 345
594 + },
595 + {
596 + "tab": "new",
597 + "date": "2026-03-13",
598 + "title": "1988 The Amazing Spider-Man #300 25th Anniversary CGC 6.5 Marvel Comics Graded 1988",
599 + "price": 399,
600 + "ebayId": "157733064089",
601 + "listedPrice": null
602 + },
603 + {
604 + "tab": "new",
605 + "date": "2026-03-13",
606 + "title": "The Amazing Spider-Man #300 May 1988 - 1st Appearance of Venom - CGC Graded 6.5 1988",
607 + "price": 300,
608 + "ebayId": "336426961157",
609 + "listedPrice": 320
610 + },
611 + {
612 + "tab": "new",
613 + "date": "2026-03-03",
614 + "title": "Amazing Spider-Man #300 CGC 6.5 ORIGIN 1ST FULL VENON APPEARANCE #4649635004",
615 + "price": 385,
616 + "ebayId": "317599609558",
617 + "listedPrice": 399
618 + },
619 + {
620 + "tab": "new",
621 + "date": "2026-02-21",
622 + "title": "Amazing Spider-Man 300 Direct First Venom CGC 6.0 White Pages McFarlane 1988",
623 + "price": 340,
624 + "ebayId": "376753884663",
625 + "listedPrice": 370
626 + },
627 + {
628 + "tab": "new",
629 + "date": "2025-12-13",
630 + "title": "Amazing Spider-Man #300 CGC 6.5 1988",
631 + "price": 290,
632 + "ebayId": "177570277005",
633 + "listedPrice": 345
634 + },
635 + {
636 + "tab": "new",
637 + "date": "2025-11-10",
638 + "title": "The Amazing Spider-Man #300 CGC 6.0 1988",
639 + "price": 305,
640 + "ebayId": "317046808895",
641 + "listedPrice": 350
642 + },
643 + {
644 + "tab": "new",
645 + "date": "2025-11-08",
646 + "title": "Amazing Spider-Man #300 CGC 6.0 OW/W 1st Venom Custom label Direct edition 1988",
647 + "price": 274.75,
648 + "ebayId": "336273002825",
649 + "listedPrice": null
650 + },
651 + {
652 + "tab": "new",
653 + "date": "2025-09-08",
654 + "title": "AMAZING SPIDER-MAN # 300 Marvel CGC 6.0 White Pages 1988 Origin & 1st Full Venom 1988",
655 + "price": 299.99,
656 + "ebayId": "267390373935",
657 + "listedPrice": null
658 + },
659 + {
660 + "tab": "new",
661 + "date": "2025-09-06",
662 + "title": "1988 Amazing Spider-Man 300 CGC 6.5 1st Venom 1988 #300",
663 + "price": 350,
664 + "ebayId": "334036044434",
665 + "listedPrice": null
666 + },
667 + {
668 + "tab": "new",
669 + "date": "2025-09-05",
670 + "title": "1988 Amazing Spider-Man #300 CGC 6.5 Venom! 1st App. 25th Anniversary Comic 1988",
671 + "price": 325,
672 + "ebayId": "397006551029",
673 + "listedPrice": null
674 + },
675 + {
676 + "tab": "new",
677 + "date": "2025-09-04",
678 + "title": "Amazing Spider-Man #300 CGC 6.0 1988 1988",
679 + "price": 276,
680 + "ebayId": "187460308680",
681 + "listedPrice": null
682 + },
683 + {
684 + "tab": "new",
685 + "date": "2025-08-10",
686 + "title": "The Amazing Spider-Man #300 (Marvel Comics May 1988) cgc 6.5 ASM graded 1988",
687 + "price": 335,
688 + "ebayId": "388800451739",
689 + "listedPrice": null
690 + },
691 + {
692 + "tab": "new",
693 + "date": "2025-07-30",
694 + "title": "Amazing Spider-Man #300 CGC 6.0 1988 1988",
695 + "price": 300,
696 + "ebayId": "187393053238",
697 + "listedPrice": null
698 + },
699 + {
700 + "tab": "new",
701 + "date": "2025-07-30",
702 + "title": "Amazing Spider-Man #300 CGC 6.0 Great Looking Book! 1st App of Venom",
703 + "price": 265.09,
704 + "ebayId": "365723070794",
705 + "listedPrice": null
706 + },
707 + {
708 + "tab": "new",
709 + "date": "2025-07-14",
710 + "title": "AMAZING SPIDER-MAN # 300 Marvel CGC 6.0 White Pages 1988 Origin & 1st Full Venom 1988",
711 + "price": 300,
712 + "ebayId": "396818817282",
713 + "listedPrice": null
714 + },
715 + {
716 + "tab": "new",
717 + "date": "2025-06-29",
718 + "title": "AMAZING SPIDER-MAN # 300 Marvel CGC 6.0 White Pages 1988 Origin & 1st Full Venom 1988",
719 + "price": 283,
720 + "ebayId": "396764992146",
721 + "listedPrice": null
722 + },
723 + {
724 + "tab": "new",
725 + "date": "2025-06-24",
726 + "title": "Amazing Spider-Man #300 Marvel 1988 Origin 1st Appearance Venom CGC 6.0",
727 + "price": 242.5,
728 + "ebayId": "365675879354",
729 + "listedPrice": null
730 + },
731 + {
732 + "tab": "graded",
733 + "date": "2026-09-05",
734 + "title": "Amazing Spider-Man #300 1988 Direct CGC 8.5 1st App Venom Black Suit Key 🔑 1988",
735 + "price": 540,
736 + "ebayId": "307151724085",
737 + "listedPrice": null
738 + },
739 + {
740 + "tab": "graded",
741 + "date": "2026-09-04",
742 + "title": "The Amazing Spider-Man #300 (Marvel, 1988) CGC VF+ 8.5 White pages....",
743 + "price": 427,
744 + "ebayId": null,
745 + "listedPrice": null
746 + },
747 + {
748 + "tab": "graded",
749 + "date": "2026-09-03",
750 + "title": "Amazing Spider-Man #300 (1988) CGC 8.0 White Page, 1st Venom , Key Comic 1988",
751 + "price": 404.58,
752 + "ebayId": "257710301149",
753 + "listedPrice": 539.44
754 + },
755 + {
756 + "tab": "graded",
757 + "date": "2026-09-02",
758 + "title": "The Amazing Spider-Man #300 CGC 8.5 White 1st appearance of Venom 1988",
759 + "price": 539.99,
760 + "ebayId": "366622804026",
761 + "listedPrice": null
762 + },
763 + {
764 + "tab": "graded",
765 + "date": "2026-08-31",
766 + "title": "Amazing Spider-Man #300 CGC 8.5 – Origin & 1st Full Appearance of Venom 1988",
767 + "price": 431.49,
768 + "ebayId": "800531856949",
769 + "listedPrice": null
770 + },
771 + {
772 + "tab": "graded",
773 + "date": "2026-08-31",
774 + "title": "Marvel Comics Amazing Spider-Man #300 (1988) CGC 8.5 Key Issue 1988",
775 + "price": 406.51,
776 + "ebayId": "137653598791",
777 + "listedPrice": null
778 + },
779 + {
780 + "tab": "graded",
781 + "date": "2026-08-30",
782 + "title": "Amazing Spider-Man #300, CGC 8.5, WHITE, 1st APPEARANCE VENOM/Eddie Brock, 1988 1988",
783 + "price": 449.99,
784 + "ebayId": "117382822672",
785 + "listedPrice": null
786 + },
787 + {
788 + "tab": "graded",
789 + "date": "2026-08-25",
790 + "title": "Amazing Spider-Man #300 CGC 8.5 – Origin & 1st Full Appearance of Venom 1988",
791 + "price": 447.82,
792 + "ebayId": "168623371281",
793 + "listedPrice": null
794 + },
795 + {
796 + "tab": "graded",
797 + "date": "2026-08-22",
798 + "title": "Amazing Spider-Man #300 Direct CGC 8.5 1988 - 1st full app. Venom 1988",
799 + "price": 442.77,
800 + "ebayId": "198573814411",
801 + "listedPrice": null
802 + },
803 + {
804 + "tab": "graded",
805 + "date": "2026-08-16",
806 + "title": "Amazing Spider-Man #300 CGC 8.5 – Origin & 1st Full Appearance of Venom 1988",
807 + "price": 468.47,
808 + "ebayId": "236971959196",
809 + "listedPrice": null
810 + },
811 + {
812 + "tab": "graded",
813 + "date": "2026-08-15",
814 + "title": "Amazing Spider-Man #300 CGC 8.5 1988",
815 + "price": 495,
816 + "ebayId": "377389924472",
817 + "listedPrice": null
818 + },
819 + {
820 + "tab": "graded",
821 + "date": "2026-08-12",
822 + "title": "custom label Amazing Spider-Man 300 CGC 8.0 . Origin & 1st full app of Venom 1988",
823 + "price": 452.07,
824 + "ebayId": "407086863847",
825 + "listedPrice": null
826 + },
827 + {
828 + "tab": "graded",
829 + "date": "2026-08-11",
830 + "title": "Amazing Spider-Man #300 Direct CGC 8.5 1988 - 1st full app. Venom 1988",
831 + "price": 430,
832 + "ebayId": "227462207300",
833 + "listedPrice": null
834 + },
835 + {
836 + "tab": "graded",
837 + "date": "2026-08-09",
838 + "title": "Amazing Spider-Man 300 (1988) CGC 8.0 . Origin & 1st full app of Venom 1988",
839 + "price": 445.19,
840 + "ebayId": "407068194624",
841 + "listedPrice": null
842 + },
843 + {
844 + "tab": "graded",
845 + "date": "2026-08-09",
846 + "title": "The Amazing Spider-Man #300 (Marvel Comics May 1988) CBCS 8.5 1988",
847 + "price": 400,
848 + "ebayId": "227463928956",
849 + "listedPrice": null
850 + },
851 + {
852 + "tab": "graded",
853 + "date": "2026-08-06",
854 + "title": "The Amazing Spider-Man #300 (Marvel Comics May 1988) CGC 8.5 1988",
855 + "price": 523.99,
856 + "ebayId": "227279544158",
857 + "listedPrice": null
858 + },
859 + {
860 + "tab": "graded",
861 + "date": "2026-08-06",
862 + "title": "Marvel Amazing Spider-Man #300 (1988) CGC 8.0 Todd McFarlane 1st Print 1988",
863 + "price": 400,
864 + "ebayId": "800468467267",
865 + "listedPrice": 420
866 + },
867 + {
868 + "tab": "graded",
869 + "date": "2026-08-02",
870 + "title": "*Amazing Spider-Man 300 CGC 8.0 White (1st app Venom)- #001 Custom Label +magnet 1988",
871 + "price": 525.01,
872 + "ebayId": "256907837525",
873 + "listedPrice": null
874 + },
875 + {
876 + "tab": "graded",
877 + "date": "2026-08-01",
878 + "title": "AMAZING SPIDER-MAN #300 1ST FULL VENOM! MARVEL COMICS, 1988 CGC 8.5 OW/W PAGES! 1988",
879 + "price": 510,
880 + "ebayId": "157973893819",
881 + "listedPrice": null
882 + },
883 + {
884 + "tab": "graded",
885 + "date": "2026-07-27",
886 + "title": "CGC 8.5 Amazing Spider-Man #300 Spider-Man Venom Marvel 1988 1988",
887 + "price": 349.99,
888 + "ebayId": "318639477604",
889 + "listedPrice": null
890 + },
891 + {
892 + "tab": "graded",
893 + "date": "2026-07-26",
894 + "title": "Marvel Comics Amazing Spider-Man #300 (1988) CGC 8.5 Venom McFarlane 1988",
895 + "price": 475,
896 + "ebayId": "127912890216",
897 + "listedPrice": null
898 + },
899 + {
900 + "tab": "graded",
901 + "date": "2026-07-22",
902 + "title": "MARVEL Amazing Spider-Man 300 CGC 8.5 05/1988 1st Appearance Venom 1988",
903 + "price": 458.8,
904 + "ebayId": "236912045182",
905 + "listedPrice": null
906 + },
907 + {
908 + "tab": "graded",
909 + "date": "2026-07-20",
910 + "title": "Amazing Spider-Man #300 (1988) Marvel CGC 8.0, 1st App of Venom, Todd McFarlane 1988",
911 + "price": 499.99,
912 + "ebayId": "389467300508",
913 + "listedPrice": null
914 + },
915 + {
916 + "tab": "graded",
917 + "date": "2026-07-09",
918 + "title": "Marvel Comics CGC 8.5 Amazing Spider-Man #300 1988 First Venom Eddie Brock 1988",
919 + "price": 505,
920 + "ebayId": "800172637859",
921 + "listedPrice": 525
922 + },
923 + {
924 + "tab": "graded",
925 + "date": "2026-07-06",
926 + "title": "The Amazing Spider-Man #300 (Marvel Comics May 1988) CGC 8.5 1988",
927 + "price": 475,
928 + "ebayId": "287442409840",
929 + "listedPrice": 500
930 + },
931 + {
932 + "tab": "graded",
933 + "date": "2026-07-04",
934 + "title": "The Amazing Spider-Man #300 (Marvel Comics May 1988) - CGC 8.5 1988",
935 + "price": 399.99,
936 + "ebayId": "127955823169",
937 + "listedPrice": null
938 + },
939 + {
940 + "tab": "graded",
941 + "date": "2026-07-04",
942 + "title": "amazing spiderman 300 cgc 8.5 1st Full Venom",
943 + "price": 430,
944 + "ebayId": "168504290829",
945 + "listedPrice": null
946 + },
947 + {
948 + "tab": "graded",
949 + "date": "2026-06-28",
950 + "title": "Amazing Spider-Man #300 CGC 8.5 1st Venom Appearance 1988 1988",
951 + "price": 462,
952 + "ebayId": "388193344579",
953 + "listedPrice": null
954 + },
955 + {
956 + "tab": "graded",
957 + "date": "2026-06-20",
958 + "title": "Amazing Spider-Man 300 Cgc 8.0 White Pages 1988 #300",
959 + "price": 380,
960 + "ebayId": "267698221250",
961 + "listedPrice": null
962 + },
963 + {
964 + "tab": "graded",
965 + "date": "2026-06-16",
966 + "title": "1988 Amazing Spider Man #300 cgc8.5 1988",
967 + "price": 464,
968 + "ebayId": "127911446161",
969 + "listedPrice": null
970 + },
971 + {
972 + "tab": "box-only",
973 + "date": "2026-09-04",
974 + "title": "The Amazing Spider-Man #300 (Marvel, 1988) CGC NM- 9.2 White pages....",
975 + "price": 561,
976 + "ebayId": null,
977 + "listedPrice": null
978 + },
979 + {
980 + "tab": "box-only",
981 + "date": "2026-09-04",
982 + "title": "Amazing Spider Man #300 CGC 9.2 1st App Venom & Origin Key App. See Description 1988",
983 + "price": 625,
984 + "ebayId": "137695108438",
985 + "listedPrice": null
986 + },
987 + {
988 + "tab": "box-only",
989 + "date": "2026-08-24",
990 + "title": "AMAZING SPIDER-MAN #300 CGC 9.2 WHITE PAGES 1ST VENOM TODD MCFARLANE 1988 KEY 1988",
991 + "price": 602,
992 + "ebayId": "206490958226",
993 + "listedPrice": null
994 + },
995 + {
996 + "tab": "box-only",
997 + "date": "2026-08-13",
998 + "title": "Amazing Spider-Man #300 CGC 9.2 NM- 1st Venom Todd McFarlane 1988 Marvel 1988",
999 + "price": 585,
1000 + "ebayId": "206486730729",
1001 + "listedPrice": null
1002 + },
1003 + {
1004 + "tab": "box-only",
1005 + "date": "2026-08-12",
1006 + "title": "AMAZING SPIDER-MAN #300 CGC 9.2 1ST FULL VENOM APPEARANCE TODD MCFARLANE ART 1988",
1007 + "price": 615,
1008 + "ebayId": "145740697929",
1009 + "listedPrice": null
1010 + },
1011 + {
1012 + "tab": "box-only",
1013 + "date": "2026-08-11",
1014 + "title": "Amazing Spider-Man 300 CGC 9.2 NM- WP 1st Venom McFarlane Marvel 1988 1988 #300",
1015 + "price": 625,
1016 + "ebayId": "257673652415",
1017 + "listedPrice": null
1018 + },
1019 + {
1020 + "tab": "box-only",
1021 + "date": "2026-08-08",
1022 + "title": "Amazing Spider-Man #300 CGC 9.2 1988 White Pages Todd McFarlane Venom Brock 1988",
1023 + "price": 599,
1024 + "ebayId": "318499670031",
1025 + "listedPrice": null
1026 + },
1027 + {
1028 + "tab": "box-only",
1029 + "date": "2026-08-02",
1030 + "title": "AMAZING SPIDER-MAN # 300 Marvel CGC 9.2 White Pages 1988 Origin & 1st Full Venom 1988",
1031 + "price": 589.89,
1032 + "ebayId": "327291034290",
1033 + "listedPrice": null
1034 + },
1035 + {
1036 + "tab": "box-only",
1037 + "date": "2026-08-01",
1038 + "title": "AMAZING SPIDER-MAN #300 CGC 9.2 - 1st FULL VENOM APPEARANCE - White Pages 1988 1988",
1039 + "price": 584.95,
1040 + "ebayId": "227456561167",
1041 + "listedPrice": null
1042 + },
1043 + {
1044 + "tab": "box-only",
1045 + "date": "2026-07-29",
1046 + "title": "AMAZING SPIDER-MAN #300 CGC 9.2 **FREE SHIPPING** 1st FULL VENOM APPEARANCE 1988 1988",
1047 + "price": 624.95,
1048 + "ebayId": "358850097649",
1049 + "listedPrice": null
1050 + },
1051 + {
1052 + "tab": "box-only",
1053 + "date": "2026-07-29",
1054 + "title": "The Amazing Spider-Man # 300 CGC 9.2 Marvel 1988 1st App Of Venom [CR] 1988",
1055 + "price": 584.81,
1056 + "ebayId": "236955911222",
1057 + "listedPrice": null
1058 + },
1059 + {
1060 + "tab": "box-only",
1061 + "date": "2026-07-27",
1062 + "title": "Amazing Spider-Man #300 CGC 9.2 (1988) Origin & 1st App. of Venom! L@@K! 1988",
1063 + "price": 570,
1064 + "ebayId": "227432737463",
1065 + "listedPrice": null
1066 + },
1067 + {
1068 + "tab": "box-only",
1069 + "date": "2026-07-18",
1070 + "title": "Amazing Spider-Man #300 CGC 9.2 White Pages 1st Full Venom. Todd McFarlane. 1988",
1071 + "price": 565,
1072 + "ebayId": "278182742147",
1073 + "listedPrice": 599
1074 + },
1075 + {
1076 + "tab": "box-only",
1077 + "date": "2026-07-12",
1078 + "title": "Amazing Spiderman 300. Cgc 9.2 Newstand Edition WP. 1st Venom.",
1079 + "price": 640,
1080 + "ebayId": "198493668955",
1081 + "listedPrice": 675
1082 + },
1083 + {
1084 + "tab": "box-only",
1085 + "date": "2026-06-27",
1086 + "title": "Amazing Spider-Man #300 CGC 9.2 1st Full App. of Venom Todd McFarlane 1988 1988",
1087 + "price": 640,
1088 + "ebayId": "407029840259",
1089 + "listedPrice": null
1090 + },
1091 + {
1092 + "tab": "box-only",
1093 + "date": "2026-06-24",
1094 + "title": "AMAZING SPIDER-MAN #300 CGC 9.2 White Origin & 1st Full Appearance of Venom",
1095 + "price": 520,
1096 + "ebayId": "318465931125",
1097 + "listedPrice": null
1098 + },
1099 + {
1100 + "tab": "box-only",
1101 + "date": "2026-06-22",
1102 + "title": "Amazing Spider-Man #300 CGC 9.2 White Pages 1st Full Venom. Todd McFarlane. 1988",
1103 + "price": 580,
1104 + "ebayId": "127929722972",
1105 + "listedPrice": 625
1106 + },
1107 + {
1108 + "tab": "box-only",
1109 + "date": "2026-06-21",
1110 + "title": "Amazing Spider-Man #300 CGC 9.2 White Pages 1st Full Venom Appearance 1st Print 1988",
1111 + "price": 580,
1112 + "ebayId": "188529078061",
1113 + "listedPrice": null
1114 + },
1115 + {
1116 + "tab": "box-only",
1117 + "date": "2026-06-21",
1118 + "title": "Amazing Spider-Man 300 CGC 9.2 ~ 1st Full Venom ~ Marvel Comics 1988 1988 #300",
1119 + "price": 599,
1120 + "ebayId": "198377461554",
1121 + "listedPrice": null
1122 + },
1123 + {
1124 + "tab": "box-only",
1125 + "date": "2026-06-17",
1126 + "title": "Amazing Spider-Man #300 CGC 9.2 Incredible Looking Book! 1st App of Venom 1988 1988",
1127 + "price": 535,
1128 + "ebayId": "366425247544",
1129 + "listedPrice": null
1130 + },
1131 + {
1132 + "tab": "box-only",
1133 + "date": "2026-06-14",
1134 + "title": "Amazing Spider-Man #300 CGC 9.2 White Pages 1st Full Venom Appearance",
1135 + "price": 600,
1136 + "ebayId": "147367092031",
1137 + "listedPrice": null
1138 + },
1139 + {
1140 + "tab": "box-only",
1141 + "date": "2026-06-12",
1142 + "title": "Amazing Spider-Man #300 CGC 9.2 (W) Origin & 1st Appearance of Venom 1988",
1143 + "price": 600,
1144 + "ebayId": "397939662890",
1145 + "listedPrice": 641.95
1146 + },
1147 + {
1148 + "tab": "box-only",
1149 + "date": "2026-06-10",
1150 + "title": "Amazing Spider-Man #300 CGC 9.2 Incredible Looking Book! 1st App of Venom 1988 1988",
1151 + "price": 534,
1152 + "ebayId": "366424835180",
1153 + "listedPrice": null
1154 + },
1155 + {
1156 + "tab": "box-only",
1157 + "date": "2026-06-03",
1158 + "title": "Amazing Spider-Man #300 1988 Marvel CGC 9.2 1st Full App Venom Direct 1988",
1159 + "price": 599.99,
1160 + "ebayId": "336606282490",
1161 + "listedPrice": null
1162 + },
1163 + {
1164 + "tab": "box-only",
1165 + "date": "2026-05-31",
1166 + "title": "Amazing Spider-Man #300 CGC 9.2 1st Full App Venom 1988 Secret Wars Symbiote 1988",
1167 + "price": 600,
1168 + "ebayId": "226887268947",
1169 + "listedPrice": null
1170 + },
1171 + {
1172 + "tab": "box-only",
1173 + "date": "2026-05-30",
1174 + "title": "MEGA KEY VENOM ISSUE AMAZING SPIDER-MAN #300 CGC 9.2 1ST FULL VENOM 1988",
1175 + "price": 568,
1176 + "ebayId": "406947018240",
1177 + "listedPrice": null
1178 + },
1179 + {
1180 + "tab": "box-only",
1181 + "date": "2026-05-27",
1182 + "title": "Marvel the Amazing Spider-Man #300 Comic Book (May 1988) CGC 9.2 1988",
1183 + "price": 550,
1184 + "ebayId": "178162531759",
1185 + "listedPrice": null
1186 + },
1187 + {
1188 + "tab": "box-only",
1189 + "date": "2026-05-27",
1190 + "title": "Amazing Spider-Man #300 Direct CGC 9.2 1988 3933529001 1st full app. Venom 1988",
1191 + "price": 675,
1192 + "ebayId": "366372039424",
1193 + "listedPrice": 940
1194 + },
1195 + {
1196 + "tab": "box-only",
1197 + "date": "2026-05-25",
1198 + "title": "The Amazing Spider-Man # 300 CGC 9.2 1st App Of Venom 1988",
1199 + "price": 560,
1200 + "ebayId": "306953656919",
1201 + "listedPrice": null
1202 + },
1203 + {
1204 + "tab": "box-only",
1205 + "date": "2026-05-20",
1206 + "title": "S-832 1988 MARVEL COMICS AMAZING SPIDER-MAN #300 CGC 9.2 NEAR MINT- WHITE PAGES 1988",
1207 + "price": 532,
1208 + "ebayId": "327159303343",
1209 + "listedPrice": null
1210 + },
1211 + {
1212 + "tab": "manual-only",
1213 + "date": "2026-08-23",
1214 + "title": "The Amazing Spider-Man #300 (Marvel Comics May 1988) 1988",
1215 + "price": 3150,
1216 + "ebayId": "327312823518",
1217 + "listedPrice": null
1218 + },
1219 + {
1220 + "tab": "manual-only",
1221 + "date": "2026-08-22",
1222 + "title": "Amazing Spider-Man #300 CGC 9.8 WP 1st Full Venom McFarlane (read description) 1988",
1223 + "price": 2261.69,
1224 + "ebayId": "178410747721",
1225 + "listedPrice": null
1226 + },
1227 + {
1228 + "tab": "manual-only",
1229 + "date": "2026-08-19",
1230 + "title": "Amazing Spider-Man #300 CGC 9.8 Absolutely Stunning Book! 1st App of Venom 1988 1988",
1231 + "price": 3175,
1232 + "ebayId": "206453163614",
1233 + "listedPrice": null
1234 + },
1235 + {
1236 + "tab": "manual-only",
1237 + "date": "2026-08-18",
1238 + "title": "Amazing Spider-Man #300 Origin & 1st App. Venom McFarlane Marvel 1988 CGC 9.8 1988",
1239 + "price": 3058,
1240 + "ebayId": "147496466188",
1241 + "listedPrice": null
1242 + },
1243 + {
1244 + "tab": "manual-only",
1245 + "date": "2026-08-15",
1246 + "title": "The Amazing Spider-Man 300 Direct CGC 9.8 White Pages 1st Full Eddie Brock Venom 1988 #300",
1247 + "price": 2950,
1248 + "ebayId": "168370957311",
1249 + "listedPrice": 3645
1250 + },
1251 + {
1252 + "tab": "manual-only",
1253 + "date": "2026-08-15",
1254 + "title": "Amazing Spider-Man #300 Origin And 1st Appearance Of Venom CGC 9.8 Marvel 1988. 1988",
1255 + "price": 3000,
1256 + "ebayId": "168564466404",
1257 + "listedPrice": 3899.99
1258 + },
1259 + {
1260 + "tab": "manual-only",
1261 + "date": "2026-08-13",
1262 + "title": "Amazing Spider-Man #300 CGC 9.8 White Pages 1st Eddie Brock Venom! Combine Ship 1988",
1263 + "price": 3000,
1264 + "ebayId": "257667380802",
1265 + "listedPrice": 3200
1266 + },
1267 + {
1268 + "tab": "manual-only",
1269 + "date": "2026-08-11",
1270 + "title": "AMAZING SPIDER-MAN #300 CGC 9.8 White Pgs 1st Venom McFarlane 1988 1988",
1271 + "price": 3199,
1272 + "ebayId": "147495574968",
1273 + "listedPrice": null
1274 + },
1275 + {
1276 + "tab": "manual-only",
1277 + "date": "2026-08-08",
1278 + "title": "Amazing Spider-Man #300 CGC 9.8 White Pages 1st Full Venom McFarlane KEY NR READ 1988",
1279 + "price": 3100,
1280 + "ebayId": "147476829944",
1281 + "listedPrice": null
1282 + },
1283 + {
1284 + "tab": "manual-only",
1285 + "date": "2026-08-08",
1286 + "title": "AMAZING SPIDER-MAN #300 CGC 9.8 KEY 1ST VENOM APPEARANCE APP TODD McFARLANE W Pg 1988",
1287 + "price": 3200,
1288 + "ebayId": "305150250518",
1289 + "listedPrice": null
1290 + },
1291 + {
1292 + "tab": "manual-only",
1293 + "date": "2026-08-02",
1294 + "title": "Amazing Spider-man #300 CGC 9.8 White Pages 1st Venom",
1295 + "price": 2800,
1296 + "ebayId": "117327212262",
1297 + "listedPrice": 3200
1298 + },
1299 + {
1300 + "tab": "manual-only",
1301 + "date": "2026-07-23",
1302 + "title": "Amazing Spider-Man #300 - Marvel Comics 1988 CGC 9.8 Origin + 1st full appearanc 1988",
1303 + "price": 3413,
1304 + "ebayId": "137486097512",
1305 + "listedPrice": null
1306 + },
1307 + {
1308 + "tab": "manual-only",
1309 + "date": "2026-07-17",
1310 + "title": "the amazing spiderman #300 (CGC 9.8 ) WHITE PAGES , FIRST APP. OF VENOM. 1988",
1311 + "price": 3000,
1312 + "ebayId": "276950029016",
1313 + "listedPrice": 3699.99
1314 + },
1315 + {
1316 + "tab": "manual-only",
1317 + "date": "2026-07-16",
1318 + "title": "Amazing Spider-Man # 300 CGC 9.8 White Pages 1st full appearance Venom 1988",
1319 + "price": 2950,
1320 + "ebayId": "236939267459",
1321 + "listedPrice": 3149
1322 + },
1323 + {
1324 + "tab": "manual-only",
1325 + "date": "2026-07-15",
1326 + "title": "Amazing Spider-Man #300 (May 1988) CGC 9.8 1988",
1327 + "price": 1499.95,
1328 + "ebayId": "307013772775",
1329 + "listedPrice": null
1330 + },
1331 + {
1332 + "tab": "manual-only",
1333 + "date": "2026-07-10",
1334 + "title": "Amazing Spider-Man #300 CGC 9.8 1988 1st App. Venom 1988",
1335 + "price": 3200,
1336 + "ebayId": "377217955136",
1337 + "listedPrice": null
1338 + },
1339 + {
1340 + "tab": "manual-only",
1341 + "date": "2026-07-09",
1342 + "title": "Amazing Spider-Man #300 CGC 9.8 White Pages 1st Eddie Brock Venom! Combine Ship 1988",
1343 + "price": 3100,
1344 + "ebayId": "227417969436",
1345 + "listedPrice": 3200
1346 + },
1347 + {
1348 + "tab": "manual-only",
1349 + "date": "2026-07-05",
1350 + "title": "AMAZING SPIDER-MAN #300 CGC 9.8 WHITE PAGES MARVEL COMICS 1988 1988",
1351 + "price": 2899,
1352 + "ebayId": "257581436531",
1353 + "listedPrice": null
1354 + },
1355 + {
1356 + "tab": "manual-only",
1357 + "date": "2026-06-29",
1358 + "title": "Amazing Spider-Man #300 - Marvel Comics 1988 CGC 9.8 Origin + 1st full appearanc 1988",
1359 + "price": 840,
1360 + "ebayId": "137465170214",
1361 + "listedPrice": null
1362 + },
1363 + {
1364 + "tab": "manual-only",
1365 + "date": "2026-06-29",
1366 + "title": "The Amazing Spider-Man #300 CGC 9.8 - WoW CHROMIUM - 1st VENOM - Brand New Day 1988",
1367 + "price": 160.5,
1368 + "ebayId": "398092413192",
1369 + "listedPrice": null
1370 + },
1371 + {
1372 + "tab": "manual-only",
1373 + "date": "2026-06-27",
1374 + "title": "Amazing Spider-Man #300 CGC NM/MT 9.8 White Pages 1st Full Appearance Venom! 1988",
1375 + "price": 3195,
1376 + "ebayId": "227404826600",
1377 + "listedPrice": null
1378 + },
1379 + {
1380 + "tab": "manual-only",
1381 + "date": "2026-06-26",
1382 + "title": "amazing spider-man #300 marvel comics 1988 cgc 9.8 white pages 1988",
1383 + "price": 2430,
1384 + "ebayId": "158010728150",
1385 + "listedPrice": null
1386 + },
1387 + {
1388 + "tab": "manual-only",
1389 + "date": "2026-06-24",
1390 + "title": "amazing spider-man 300 cgc 9.8",
1391 + "price": 2911,
1392 + "ebayId": "158007888589",
1393 + "listedPrice": null
1394 + },
1395 + {
1396 + "tab": "manual-only",
1397 + "date": "2026-06-20",
1398 + "title": "Amazing Spider-Man #300 (May 1988) CGC 9.8 1988",
1399 + "price": 1499.95,
1400 + "ebayId": "306960419788",
1401 + "listedPrice": null
1402 + },
1403 + {
1404 + "tab": "manual-only",
1405 + "date": "2026-06-16",
1406 + "title": "Marvel Amazing Spider-Man 300 Comic Book. CGC 9.8 White Pages. First Venom App 1988 #300",
1407 + "price": 2708,
1408 + "ebayId": "198413763700",
1409 + "listedPrice": 2850
1410 + },
1411 + {
1412 + "tab": "manual-only",
1413 + "date": "2026-06-10",
1414 + "title": "Amazing Spider-Man #300 CGC 9.8 (1988) Marvel Comics Venom McFarlane 1988",
1415 + "price": 2750,
1416 + "ebayId": "377201328476",
1417 + "listedPrice": null
1418 + },
1419 + {
1420 + "tab": "manual-only",
1421 + "date": "2026-05-26",
1422 + "title": "AMAZING SPIDER-MAN #300 CGC 9.8 WHITE PAGES MARVEL COMICS 1988 1988",
1423 + "price": 2900,
1424 + "ebayId": "376916713163",
1425 + "listedPrice": null
1426 + },
1427 + {
1428 + "tab": "manual-only",
1429 + "date": "2026-05-23",
1430 + "title": "Amazing Spider-Man #300 (CGC 9.8) 1988 White Pages, 1st Appearance of Venom 1988",
1431 + "price": 2900,
1432 + "ebayId": "257386980750",
1433 + "listedPrice": null
1434 + },
1435 + {
1436 + "tab": "manual-only",
1437 + "date": "2026-05-20",
1438 + "title": "Amazing Spider-Man #300 CGC 9.8 (1988) Marvel Comics Venom McFarlane 1988",
1439 + "price": 2500,
1440 + "ebayId": "377193510279",
1441 + "listedPrice": null
1442 + },
1443 + {
1444 + "tab": "manual-only",
1445 + "date": "2026-05-14",
1446 + "title": "The Amazing Spider-Man #300 (Marvel, 1988) CGC NM/MT 9.8 White pages....",
1447 + "price": 2257,
1448 + "ebayId": null,
1449 + "listedPrice": null
1450 + },
1451 + {
1452 + "tab": "loose-and-manual",
1453 + "date": "2023-12-31",
1454 + "title": "Amazing Spider-Man #300 1988 . 1st App Of Venom Todd McFarlane CBCS 2.5 1988",
1455 + "price": 209.99,
1456 + "ebayId": "176128847439",
1457 + "listedPrice": null
1458 + },
1459 + {
1460 + "tab": "loose-and-manual",
1461 + "date": "2023-11-26",
1462 + "title": "Amazing Spider-Man #300 1st Appearance Venom CGC 2.0 Custom Label 1988",
1463 + "price": 275,
1464 + "ebayId": "235296110124",
1465 + "listedPrice": null
1466 + },
1467 + {
1468 + "tab": "loose-and-manual",
1469 + "date": "2023-03-13",
1470 + "title": "The Amazing Spider-Man #300 (Marvel, 1988) CBCS GD 2.0 Off-white pages....",
1471 + "price": 159,
1472 + "ebayId": null,
1473 + "listedPrice": null
1474 + },
1475 + {
1476 + "tab": "loose-and-manual",
1477 + "date": "2023-02-09",
1478 + "title": "AMAZING SPIDER-MAN #300 CGC 2.5 1ST APPEARANCE OF VENOM 1988",
1479 + "price": 220,
1480 + "ebayId": "234887328594",
1481 + "listedPrice": null
1482 + },
1483 + {
1484 + "tab": "loose-and-manual",
1485 + "date": "2022-10-30",
1486 + "title": "CBCS 2.0 GD THE AMAZING SPIDER-MAN COMIC (MARVEL,1988) #300 1ST VENOM COPPER AGE 1988 #300",
1487 + "price": 280,
1488 + "ebayId": "155198611027",
1489 + "listedPrice": null
1490 + },
1491 + {
1492 + "tab": "loose-and-manual",
1493 + "date": "2022-09-25",
1494 + "title": "Amazing Spider-Man 300 CGC 2.5 Origin & 1st Appearance VENOM News Stand SWEET! 1988 #300",
1495 + "price": 199,
1496 + "ebayId": "175428054293",
1497 + "listedPrice": null
1498 + },
1499 + {
1500 + "tab": "box-and-manual",
1501 + "date": "2026-09-04",
1502 + "title": "Amazing Spider-Man #300 CGC 9.6 WP NM+ Marvel Comics 1988 McFarlane 1st Venom 1988",
1503 + "price": 999.99,
1504 + "ebayId": "117394454230",
1505 + "listedPrice": null
1506 + },
1507 + {
1508 + "tab": "box-and-manual",
1509 + "date": "2026-09-04",
1510 + "title": "The Amazing Spider-Man #300 Todd McFarlane White Pages CGC Graded 9.6/Near Mint 1988",
1511 + "price": 925,
1512 + "ebayId": "257717308643",
1513 + "listedPrice": 979.99
1514 + },
1515 + {
1516 + "tab": "box-and-manual",
1517 + "date": "2026-09-04",
1518 + "title": "Marvel The Amazing Spider-Man #300 (1988) CGC 9.6 McFarlane 25th Anniv!WOW!LOOK 1988",
1519 + "price": 979,
1520 + "ebayId": "407175153396",
1521 + "listedPrice": null
1522 + },
1523 + {
1524 + "tab": "box-and-manual",
1525 + "date": "2026-09-03",
1526 + "title": "Amazing Spider-Man #300 CGC 9.6 Origin & 1st Full App of Venom Todd McFarlane 1988",
1527 + "price": 950,
1528 + "ebayId": "198608711337",
1529 + "listedPrice": null
1530 + },
1531 + {
1532 + "tab": "box-and-manual",
1533 + "date": "2026-09-02",
1534 + "title": "The Amazing Spider-Man #300 (Marvel Comics May 1988) CGC 9.6 1988",
1535 + "price": 1025,
1536 + "ebayId": "800563653756",
1537 + "listedPrice": null
1538 + },
1539 + {
1540 + "tab": "box-and-manual",
1541 + "date": "2026-09-01",
1542 + "title": "Amazing Spider-Man #300 CGC 9.6 WP NM+ Marvel Comics 1988 McFarlane 1st Venom 1988",
1543 + "price": 1150,
1544 + "ebayId": "128042319838",
1545 + "listedPrice": null
1546 + },
1547 + {
1548 + "tab": "box-and-manual",
1549 + "date": "2026-08-25",
1550 + "title": "Amazing Spider-Man #300 Origin & 1st App. Venom McFarlane Marvel 1988 CGC 9.6 1988",
1551 + "price": 1175,
1552 + "ebayId": "318731745317",
1553 + "listedPrice": null
1554 + },
1555 + {
1556 + "tab": "box-and-manual",
1557 + "date": "2026-08-17",
1558 + "title": "THE AMAZING SPIDER-MAN #300 SPECIAL 25TH ANNIVERSARY ISSUE 9.6 CGC GRADE",
1559 + "price": 1000,
1560 + "ebayId": "168576065372",
1561 + "listedPrice": 1100
1562 + },
1563 + {
1564 + "tab": "box-and-manual",
1565 + "date": "2026-08-13",
1566 + "title": "Amazing Spider-Man #300 CGC 9.6 White Pages 1st Full Appearance Venom 1988Direct 1988",
1567 + "price": 1250,
1568 + "ebayId": "318647976575",
1569 + "listedPrice": null
1570 + },
1571 + {
1572 + "tab": "box-and-manual",
1573 + "date": "2026-08-12",
1574 + "title": "Amazing Spider-Man #300 CGC 9.6 Marvel 5/88 FIRST 1st Venom McFarlane",
1575 + "price": 940,
1576 + "ebayId": "278266980569",
1577 + "listedPrice": 990
1578 + },
1579 + {
1580 + "tab": "box-and-manual",
1581 + "date": "2026-08-08",
1582 + "title": "Marvel The Amazing Spider-Man #300 (1988) CGC 9.6 McFarlane 25th Anniv 1988",
1583 + "price": 950,
1584 + "ebayId": "287495697325",
1585 + "listedPrice": null
1586 + },
1587 + {
1588 + "tab": "box-and-manual",
1589 + "date": "2026-08-07",
1590 + "title": "Amazing Spiderman #300 CGC 9.6 Comic Book 1988 1st App. of Venom KEY 1988",
1591 + "price": 1000,
1592 + "ebayId": "407048182415",
1593 + "listedPrice": 1100
1594 + },
1595 + {
1596 + "tab": "box-and-manual",
1597 + "date": "2026-08-01",
1598 + "title": "AMAZING SPIDER-MAN #300 1ST FULL VENOM! MARVEL COMICS, 1988 CGC 9.6 WHITE PAGES! 1988",
1599 + "price": 912.47,
1600 + "ebayId": "117294274308",
1601 + "listedPrice": 1403.8
1602 + },
1603 + {
1604 + "tab": "box-and-manual",
1605 + "date": "2026-07-19",
1606 + "title": "Amazing Spider-Man 300 Cgc 9.6 1st Appearance of Venom 1988 1988 #300",
1607 + "price": 1200,
1608 + "ebayId": "188649294347",
1609 + "listedPrice": null
1610 + },
1611 + {
1612 + "tab": "box-and-manual",
1613 + "date": "2026-07-10",
1614 + "title": "Amazing Spider-Man #300 CGC 9.6 (1988) 1st Full Venom Todd McFarlane 1988",
1615 + "price": 997,
1616 + "ebayId": "117289934792",
1617 + "listedPrice": 1049.99
1618 + },
1619 + {
1620 + "tab": "box-and-manual",
1621 + "date": "2026-07-09",
1622 + "title": "AMAZING SPIDER-MAN #300 1ST FULL VENOM! MARVEL COMICS, 1988 CGC 9.6 WHITE PAGES! 1988",
1623 + "price": 848.93,
1624 + "ebayId": "117292575444",
1625 + "listedPrice": 1386
1626 + },
1627 + {
1628 + "tab": "box-and-manual",
1629 + "date": "2026-07-09",
1630 + "title": "AMAZING SPIDER-MAN #300 1ST FULL VENOM! MARVEL COMICS, 1988 CGC 9.6 WHITE PAGES! 1988",
1631 + "price": 866.25,
1632 + "ebayId": "117251324456",
1633 + "listedPrice": 1386
1634 + },
1635 + {
1636 + "tab": "box-and-manual",
1637 + "date": "2026-07-07",
1638 + "title": "Amazing Spider-Man 300 Cgc 9.6 1st Appearance of Venom 1988 1988 #300",
1639 + "price": 857.57,
1640 + "ebayId": "168504514015",
1641 + "listedPrice": null
1642 + },
1643 + {
1644 + "tab": "box-and-manual",
1645 + "date": "2026-07-07",
1646 + "title": "AMAZING SPIDER-MAN 300 CGC 9.6 FIRST FULL APPEARANCE OF VENOM!!!! TODD MCFARLANE 1988 #300",
1647 + "price": 821.51,
1648 + "ebayId": "227410251491",
1649 + "listedPrice": null
1650 + },
1651 + {
1652 + "tab": "box-and-manual",
1653 + "date": "2026-07-04",
1654 + "title": "🕸️AMAZING SPIDERMAN #300 1ST APPEARANCE OF VENOM (CGC 9.6 WHITE PAGES)🕸️ 1988",
1655 + "price": 1050,
1656 + "ebayId": "398132571034",
1657 + "listedPrice": null
1658 + },
1659 + {
1660 + "tab": "box-and-manual",
1661 + "date": "2026-07-01",
1662 + "title": "Amazing Spiderman #300 CGC 9.6 Origin & 1st Full App. Of Venom (Eddie Brock) 1988",
1663 + "price": 1090.32,
1664 + "ebayId": "358411516822",
1665 + "listedPrice": 1244.37
1666 + },
1667 + {
1668 + "tab": "box-and-manual",
1669 + "date": "2026-06-21",
1670 + "title": "Amazing Spider-Man #300 Direct CGC 9.6 1988 3765452005 1st full app. Venom 1988",
1671 + "price": 1160,
1672 + "ebayId": "318410399746",
1673 + "listedPrice": null
1674 + },
1675 + {
1676 + "tab": "box-and-manual",
1677 + "date": "2026-06-20",
1678 + "title": "Amazing Spider-Man #300 1988 Direct CGC 9.6 White 1st Full Venom Marvel Comics 1988",
1679 + "price": 1050,
1680 + "ebayId": "168472193692",
1681 + "listedPrice": 1160
1682 + },
1683 + {
1684 + "tab": "box-and-manual",
1685 + "date": "2026-06-17",
1686 + "title": "The Amazing Spider-Man #300 (Marvel Comics May 1988) 1988",
1687 + "price": 999,
1688 + "ebayId": "267664156831",
1689 + "listedPrice": null
1690 + },
1691 + {
1692 + "tab": "box-and-manual",
1693 + "date": "2026-06-15",
1694 + "title": "The Amazing Spider-Man #300 CGC 9.6 Direct Variant FIRST VENOM APPEARENCE 1988",
1695 + "price": 1000,
1696 + "ebayId": "306989228150",
1697 + "listedPrice": null
1698 + },
1699 + {
1700 + "tab": "box-and-manual",
1701 + "date": "2026-06-04",
1702 + "title": "Amazing Spider-Man #300 CGC 9.6 White Pages | Marvel 1988 | 1st Venom McFarlane 1988",
1703 + "price": 960,
1704 + "ebayId": "406906259713",
1705 + "listedPrice": 1150
1706 + },
1707 + {
1708 + "tab": "box-and-manual",
1709 + "date": "2026-05-30",
1710 + "title": "Amazing Spider-Man #300 CGC NM+ 9.6 White Pages 1st Full Appearance Venom! 1988",
1711 + "price": 1139,
1712 + "ebayId": "389990923456",
1713 + "listedPrice": null
1714 + },
1715 + {
1716 + "tab": "box-and-manual",
1717 + "date": "2026-05-27",
1718 + "title": "AMAZING SPIDER-MAN #300 1st Full VENOM 1988 McFarlane CGC 9.6 (White Pages) 1988",
1719 + "price": 860,
1720 + "ebayId": "267672759028",
1721 + "listedPrice": null
1722 + },
1723 + {
1724 + "tab": "box-and-manual",
1725 + "date": "2026-05-27",
1726 + "title": "Amazing Spider-Man #300 CGC 9.6 WP NM+ Marvel Comics 1988 McFarlane 1st Venom 1988",
1727 + "price": 958,
1728 + "ebayId": "127873653678",
1729 + "listedPrice": null
1730 + },
1731 + {
1732 + "tab": "box-and-manual",
1733 + "date": "2026-05-19",
1734 + "title": "Amazing Spider-Man #300 CGC 9.6 Origin & 1st Full App of Venom Todd McFarlane 1988",
1735 + "price": 990,
1736 + "ebayId": "168366373336",
1737 + "listedPrice": 1100
1738 + },
1739 + {
1740 + "tab": "grade-three",
1741 + "date": "2025-12-02",
1742 + "title": "The Amazing Spider-Man #300 (Marvel, 1988) CGC VG- 3.5 White pages....",
1743 + "price": 149,
1744 + "ebayId": null,
1745 + "listedPrice": null
1746 + },
1747 + {
1748 + "tab": "grade-three",
1749 + "date": "2023-07-11",
1750 + "title": "AMAZING SPIDER-MAN #300 - 1st Appearance VENOM CBCS 3.5 1988",
1751 + "price": 320,
1752 + "ebayId": "334920779350",
1753 + "listedPrice": null
1754 + },
1755 + {
1756 + "tab": "grade-three",
1757 + "date": "2023-06-17",
1758 + "title": "AMAZING SPIDER-MAN #300 - 1st Appearance VENOM CBCS 3.5 1988",
1759 + "price": 202.5,
1760 + "ebayId": "225613129896",
1761 + "listedPrice": null
1762 + },
1763 + {
1764 + "tab": "grade-three",
1765 + "date": "2023-06-14",
1766 + "title": "Amazing Spider-Man #300 (News) CBCS 3.5 McFarlane, 1st Full & Origin Venom 1988",
1767 + "price": 299,
1768 + "ebayId": "295758804612",
1769 + "listedPrice": null
1770 + },
1771 + {
1772 + "tab": "grade-three",
1773 + "date": "2023-06-13",
1774 + "title": "Amazing Spider-Man #300 (News) CBCS 3.5 McFarlane, 1st Full & Origin Venom 1988",
1775 + "price": 194.5,
1776 + "ebayId": "304970561805",
1777 + "listedPrice": null
1778 + },
1779 + {
1780 + "tab": "grade-three",
1781 + "date": "2022-02-14",
1782 + "title": "AMAZING SPIDER-MAN #300 CGC 3.5 VG- ORIGIN & 1ST APPEARANCE OF VENOM NEW LABEL 1988 #300",
1783 + "price": 350,
1784 + "ebayId": "384721294807",
1785 + "listedPrice": null
1786 + },
1787 + {
1788 + "tab": "grade-three",
1789 + "date": "2022-01-31",
1790 + "title": "AMAZING SPIDER-MAN #300 CGC 3.5 VG- ORIGIN & 1ST APPEARANCE OF VENOM NEW LABEL 1988 #300",
1791 + "price": 365,
1792 + "ebayId": "384697484507",
1793 + "listedPrice": null
1794 + },
1795 + {
1796 + "tab": "grade-three",
1797 + "date": "2021-10-03",
1798 + "title": "ASM AMAZING SPIDER-MAN 300 CGC 3.5 OW/ WHITE Pages FIRST VENOM not press/cleaned 1988 #300",
1799 + "price": 425,
1800 + "ebayId": "265334200848",
1801 + "listedPrice": null
1802 + },
1803 + {
1804 + "tab": "grade-four",
1805 + "date": "2026-07-09",
1806 + "title": "Amazing Spider-Man #300 ( Marvel, 1988) CGC 5.5 1st Full App. & Origin Venom! 1988",
1807 + "price": 274,
1808 + "ebayId": "178282469532",
1809 + "listedPrice": null
1810 + },
1811 + {
1812 + "tab": "grade-four",
1813 + "date": "2026-05-19",
1814 + "title": "Amazing Spider-Man #300 CGC 5.0 1988 1st Appearance Of Venom Marvel Comics 1988",
1815 + "price": 250,
1816 + "ebayId": "257509504433",
1817 + "listedPrice": null
1818 + },
1819 + {
1820 + "tab": "grade-four",
1821 + "date": "2026-04-23",
1822 + "title": "AMAZING SPIDER-MAN 300 CGC 5.5 1ST FULL APPEARANCE VENOM. Custom CGC Banner! 1988 #300",
1823 + "price": 270,
1824 + "ebayId": "277916549653",
1825 + "listedPrice": 325
1826 + },
1827 + {
1828 + "tab": "grade-four",
1829 + "date": "2026-02-26",
1830 + "title": "Amazing Spider-Man #300 CGC 5.0 - Venom Custom Label 1988",
1831 + "price": 445,
1832 + "ebayId": "225797272597",
1833 + "listedPrice": null
1834 + },
1835 + {
1836 + "tab": "grade-four",
1837 + "date": "2025-12-02",
1838 + "title": "The Amazing Spider-Man #300 (Marvel, 1988) CGC FN- 5.5 Off-white to white pages....",
1839 + "price": 216,
1840 + "ebayId": null,
1841 + "listedPrice": null
1842 + },
1843 + {
1844 + "tab": "grade-four",
1845 + "date": "2025-11-03",
1846 + "title": "The Amazing Spider-man #300 1988 cgc 5.5 key issue. First appearance of Venom 1988",
1847 + "price": 280,
1848 + "ebayId": "356500727684",
1849 + "listedPrice": null
1850 + },
1851 + {
1852 + "tab": "grade-four",
1853 + "date": "2025-10-20",
1854 + "title": "The Amazing Spider-Man #300 (1988) - Origin and 1st Full App. of Venom - CGC 5.0 1988",
1855 + "price": 230,
1856 + "ebayId": "236400906594",
1857 + "listedPrice": null
1858 + },
1859 + {
1860 + "tab": "grade-four",
1861 + "date": "2025-09-29",
1862 + "title": "Amazing Spiderman #300 (1988) First Full Venom, McFarlane CGC 5.0 1988",
1863 + "price": 300,
1864 + "ebayId": "286740909178",
1865 + "listedPrice": null
1866 + },
1867 + {
1868 + "tab": "grade-four",
1869 + "date": "2025-08-22",
1870 + "title": "Marvel Comics Amazing Spiderman #300 CGC 5.0 OWW Origin 1st appearance of Venom 1988",
1871 + "price": 300,
1872 + "ebayId": "205672122794",
1873 + "listedPrice": null
1874 + },
1875 + {
1876 + "tab": "grade-four",
1877 + "date": "2025-06-24",
1878 + "title": "AMAZING SPIDER-MAN #300 CGC 5.5 FN- 1988 1ST APPEARANCE OF VENOM MARVEL COMICS 1988",
1879 + "price": 319.97,
1880 + "ebayId": "267178261533",
1881 + "listedPrice": null
1882 + },
1883 + {
1884 + "tab": "grade-four",
1885 + "date": "2025-02-26",
1886 + "title": "Amazing Spider-Man #300 CGC 5.5 1st Full App of Venom Classic Cover 1988",
1887 + "price": 303.36,
1888 + "ebayId": "226595696529",
1889 + "listedPrice": null
1890 + },
1891 + {
1892 + "tab": "grade-four",
1893 + "date": "2025-02-20",
1894 + "title": "Amazing Spider-Man #300 1988 CGC 5.0 (1st Full App of Venom) 1988",
1895 + "price": 300,
1896 + "ebayId": "197027104116",
1897 + "listedPrice": null
1898 + },
1899 + {
1900 + "tab": "grade-four",
1901 + "date": "2025-01-05",
1902 + "title": "The Amazing Spider-Man #300 (Marvel Comics 1988) 1st Appearance Venom! CGC 5.5 1988",
1903 + "price": 339.99,
1904 + "ebayId": "156543839613",
1905 + "listedPrice": null
1906 + },
1907 + {
1908 + "tab": "grade-four",
1909 + "date": "2024-11-15",
1910 + "title": "Amazing Spider-Man #300, CGC 5.5, Marvel May 1988, 1st Venom, Todd McFarlane 1988",
1911 + "price": 324.99,
1912 + "ebayId": "186561818320",
1913 + "listedPrice": null
1914 + },
1915 + {
1916 + "tab": "grade-four",
1917 + "date": "2024-04-13",
1918 + "title": "Amazing Spider-Man #300 CGC 5.0 3877185003 Venom Label 1st Appearance Key Issue 1988",
1919 + "price": 267.55,
1920 + "ebayId": "204729559558",
1921 + "listedPrice": null
1922 + },
1923 + {
1924 + "tab": "grade-four",
1925 + "date": "2023-12-17",
1926 + "title": "AMAZING SPIDER-MAN #300 CGC 5.5 1st Full App. Venom Marvel Comics 1988 McFarlane 1988",
1927 + "price": 200,
1928 + "ebayId": "196125256635",
1929 + "listedPrice": null
1930 + },
1931 + {
1932 + "tab": "grade-four",
1933 + "date": "2023-10-22",
1934 + "title": "Amazing Spider-Man #300 CGC 5.0 - Origin and First Appearance of Venom! 1988",
1935 + "price": 371.19,
1936 + "ebayId": "386174405268",
1937 + "listedPrice": null
1938 + },
1939 + {
1940 + "tab": "grade-four",
1941 + "date": "2023-09-03",
1942 + "title": "Amazing Spider-Man # 300, Marvel 5/1988, CGC 5.5, Venom’s 1st full appearance 1988",
1943 + "price": 250.57,
1944 + "ebayId": "204448698265",
1945 + "listedPrice": null
1946 + },
1947 + {
1948 + "tab": "grade-four",
1949 + "date": "2023-08-20",
1950 + "title": "Amazing Spider-Man #300 Direct Variant CBCS 5.5 1988 1st Venom 1988",
1951 + "price": 265,
1952 + "ebayId": "404437228921",
1953 + "listedPrice": null
1954 + },
1955 + {
1956 + "tab": "grade-four",
1957 + "date": "2023-08-13",
1958 + "title": "Amazing Spider-Man #300 Direct Variant CGC 5.0 1988 0292363009 1st Venom 1988",
1959 + "price": 359,
1960 + "ebayId": "204413101137",
1961 + "listedPrice": null
1962 + },
1963 + {
1964 + "tab": "grade-four",
1965 + "date": "2023-06-30",
1966 + "title": "The Amazing Spider-Man #300 CGC 5.5 1988",
1967 + "price": 380,
1968 + "ebayId": "334922136759",
1969 + "listedPrice": null
1970 + },
1971 + {
1972 + "tab": "grade-four",
1973 + "date": "2023-06-30",
1974 + "title": "1988 Amazing Spider-Man 300 CGC 5.0 1st Venom 1988 #300",
1975 + "price": 350,
1976 + "ebayId": "225541243580",
1977 + "listedPrice": null
1978 + },
1979 + {
1980 + "tab": "grade-four",
1981 + "date": "2023-05-28",
1982 + "title": "Amazing Spider-Man #300 (1988) CGC 5.0 - KEY 1st Full Venom Appearance.. 1988",
1983 + "price": 300,
1984 + "ebayId": "325671871507",
1985 + "listedPrice": null
1986 + },
1987 + {
1988 + "tab": "grade-four",
1989 + "date": "2023-05-14",
1990 + "title": "AMAZING SPIDER-MAN # 300 5.5 CGC (same as CBCS) Last Black Suit 1st Full Venom 1988",
1991 + "price": 329.99,
1992 + "ebayId": "235002501904",
1993 + "listedPrice": null
1994 + },
1995 + {
1996 + "tab": "grade-four",
1997 + "date": "2023-03-07",
1998 + "title": "Amazing Spider-Man #300 CGC Grade 5.0 - Todd McFarlane Art, 1st appearance Venom 1988 #300",
1999 + "price": 344.99,
2000 + "ebayId": "325553385057",
2001 + "listedPrice": null
2002 + },
2003 + {
2004 + "tab": "grade-four",
2005 + "date": "2023-02-22",
2006 + "title": "AMAZING SPIDER-MAN #300 - Origin/1st Full Appearance VENOM! CGC 5.5 1988 #300",
2007 + "price": 375,
2008 + "ebayId": "134046072348",
2009 + "listedPrice": null
2010 + },
2011 + {
2012 + "tab": "grade-four",
2013 + "date": "2023-02-19",
2014 + "title": "Amazing Spider-Man 300 1988 Marvel Comics CGC 5.0 OFF-WHITE TO WHITE 2020 #300",
2015 + "price": 419.95,
2016 + "ebayId": "385040540943",
2017 + "listedPrice": null
2018 + },
2019 + {
2020 + "tab": "grade-four",
2021 + "date": "2023-02-12",
2022 + "title": "AMAZING SPIDER-MAN #300 CGC 5.5 WHITE PAGES // ORIGIN + 1ST FULL APP VENOM 1988 1988",
2023 + "price": 322.46,
2024 + "ebayId": "394448080907",
2025 + "listedPrice": null
2026 + },
2027 + {
2028 + "tab": "grade-four",
2029 + "date": "2023-01-04",
2030 + "title": "AMAZING SPIDER-MAN #300 CBCS 5.5 OW/W ORIGIN + 1ST FULL APP VENOM 1988 #300",
2031 + "price": 425,
2032 + "ebayId": "185505886153",
2033 + "listedPrice": null
2034 + },
2035 + {
2036 + "tab": "grade-four",
2037 + "date": "2022-12-24",
2038 + "title": "Amazing Spider-Man Spiderman #300 CBCS Graded 5.0 First Appearance Venom 1988",
2039 + "price": 290,
2040 + "ebayId": "155236462398",
2041 + "listedPrice": null
2042 + },
2043 + {
2044 + "tab": "grade-five",
2045 + "date": "2026-09-03",
2046 + "title": "Amazing Spider-Man #300 CGC 7.5 ~ FIRST APPEARANCE VENOM 🕷️ 1988",
2047 + "price": 396,
2048 + "ebayId": "147531834116",
2049 + "listedPrice": null
2050 + },
2051 + {
2052 + "tab": "grade-five",
2053 + "date": "2026-08-17",
2054 + "title": "Marvel Comics The Amazing Spider-Man #300 CGC 7.0 25th Anniv Key 1st Venom 1988",
2055 + "price": 400,
2056 + "ebayId": "206217068305",
2057 + "listedPrice": 420
2058 + },
2059 + {
2060 + "tab": "grade-five",
2061 + "date": "2026-08-17",
2062 + "title": "Marvel Amazing Spider-Man #300 (1988) CGC 7.0 Key Issue 1st Venom 1988",
2063 + "price": 400,
2064 + "ebayId": "318725400217",
2065 + "listedPrice": 460
2066 + },
2067 + {
2068 + "tab": "grade-five",
2069 + "date": "2026-08-05",
2070 + "title": "The Amazing Spider-Man #300 Marvel Comics 1988 Bought N SeaId In The Uk CGC 7.0 1988",
2071 + "price": 250,
2072 + "ebayId": "128004862661",
2073 + "listedPrice": null
2074 + },
2075 + {
2076 + "tab": "grade-five",
2077 + "date": "2026-08-02",
2078 + "title": "Amazing Spider-Man #300 (1988) WP CGC 7.5 Origin & First Full Appearance Venom! 1988",
2079 + "price": 350,
2080 + "ebayId": "206455958608",
2081 + "listedPrice": 399
2082 + },
2083 + {
2084 + "tab": "grade-five",
2085 + "date": "2026-08-02",
2086 + "title": "Amazing Spider-Man 300 CGC 7.0 FN/VF W/Pages 1988 #300",
2087 + "price": 345,
2088 + "ebayId": "257646348415",
2089 + "listedPrice": null
2090 + },
2091 + {
2092 + "tab": "grade-five",
2093 + "date": "2026-07-31",
2094 + "title": "Marvel Amazing Spider-Man #300 CBCS 7.0 1st Full Appearance Venom Eddie Brock",
2095 + "price": 380,
2096 + "ebayId": "257640608539",
2097 + "listedPrice": null
2098 + },
2099 + {
2100 + "tab": "grade-five",
2101 + "date": "2026-06-29",
2102 + "title": "Amazing Spider-Man 300 CGC 7.0 Origin & 1st App of Venom 1988 1988 #300",
2103 + "price": 349.99,
2104 + "ebayId": "407015921585",
2105 + "listedPrice": null
2106 + },
2107 + {
2108 + "tab": "grade-five",
2109 + "date": "2026-06-27",
2110 + "title": "Amazing Spider-Man 300 CGC 7.0 Origin & 1st App of Venom 1988 1988 #300",
2111 + "price": 349.99,
2112 + "ebayId": "147386162180",
2113 + "listedPrice": null
2114 + },
2115 + {
2116 + "tab": "grade-five",
2117 + "date": "2026-06-12",
2118 + "title": "Amazing Spider-Man #300 - Marvel Comics 1988 CGC 7.5 Origin + 1st full appearanc 1988",
2119 + "price": 398,
2120 + "ebayId": "358655623877",
2121 + "listedPrice": null
2122 + },
2123 + {
2124 + "tab": "grade-five",
2125 + "date": "2026-06-11",
2126 + "title": "Amazing Spider-Man 300 CGC 7.5 1988 #300",
2127 + "price": 400,
2128 + "ebayId": "800135886056",
2129 + "listedPrice": null
2130 + },
2131 + {
2132 + "tab": "grade-five",
2133 + "date": "2026-05-31",
2134 + "title": "The Amazing Spider-Man #300 (Marvel Comics May 1988) CGC 7.5 1988",
2135 + "price": 370,
2136 + "ebayId": "277896606228",
2137 + "listedPrice": 425
2138 + },
2139 + {
2140 + "tab": "grade-five",
2141 + "date": "2026-05-14",
2142 + "title": "The Amazing Spider-Man #300 (Marvel, 1988) CGC VF- 7.5 White pages....",
2143 + "price": 268,
2144 + "ebayId": null,
2145 + "listedPrice": null
2146 + },
2147 + {
2148 + "tab": "grade-five",
2149 + "date": "2026-05-11",
2150 + "title": "Amazing Spider-Man #300 CGC 7.5 1st Full Appearance Venom! 1988",
2151 + "price": 360,
2152 + "ebayId": "277976738662",
2153 + "listedPrice": 399
2154 + },
2155 + {
2156 + "tab": "grade-five",
2157 + "date": "2026-05-10",
2158 + "title": "Marvel Amazing Spider-Man #300 CBCS 7.0 Key Issue Venom Todd McFarlane Cover 1988",
2159 + "price": 300,
2160 + "ebayId": "389969871457",
2161 + "listedPrice": null
2162 + },
2163 + {
2164 + "tab": "grade-five",
2165 + "date": "2026-04-09",
2166 + "title": "AMAZING SPIDERMAN 300 CGC 7.0 VENOM MCFARLANE 1988 MARVEL 1988 #300",
2167 + "price": 325,
2168 + "ebayId": "389867864488",
2169 + "listedPrice": 350
2170 + },
2171 + {
2172 + "tab": "grade-five",
2173 + "date": "2026-03-17",
2174 + "title": "Amazing Spider-Man #300 CGC VF- 7.5 White Pages 1st Full Appearance Venom! 1988",
2175 + "price": 425,
2176 + "ebayId": "257384297359",
2177 + "listedPrice": null
2178 + },
2179 + {
2180 + "tab": "grade-five",
2181 + "date": "2026-03-14",
2182 + "title": "Amazing Spider-Man #300 / CGC 7.0 1st Venom Appearance! 1988",
2183 + "price": 500,
2184 + "ebayId": "287146357814",
2185 + "listedPrice": null
2186 + },
2187 + {
2188 + "tab": "grade-five",
2189 + "date": "2026-03-05",
2190 + "title": "Amazing Spider-Man #300 CGC VF- 7.5 White Pages 1st Full Appearance Venom! 1988",
2191 + "price": 350,
2192 + "ebayId": "298086760015",
2193 + "listedPrice": 395
2194 + },
2195 + {
2196 + "tab": "grade-five",
2197 + "date": "2026-02-18",
2198 + "title": "The Amazing Spider-Man #300 1988 CGC 7.0 Key Issue First Appearance of Venom 1988",
2199 + "price": 380,
2200 + "ebayId": "397618348383",
2201 + "listedPrice": 400
2202 + },
2203 + {
2204 + "tab": "grade-five",
2205 + "date": "2026-02-08",
2206 + "title": "Amazing Spider-Man #300 / CGC 7.0 1st Venom Appearance! 1988",
2207 + "price": 320,
2208 + "ebayId": "317848936065",
2209 + "listedPrice": 345
2210 + },
2211 + {
2212 + "tab": "grade-five",
2213 + "date": "2026-02-06",
2214 + "title": "The Amazing Spider-Man #300 (Marvel Comics May 1988) 1988",
2215 + "price": 345,
2216 + "ebayId": "336414889474",
2217 + "listedPrice": null
2218 + },
2219 + {
2220 + "tab": "grade-five",
2221 + "date": "2026-02-03",
2222 + "title": "AMAZING SPIDER-MAN 300 CGC 7.0 F/VF ORIGIN AND 1ST VENOM MACFARLANE 1988 1988 #300",
2223 + "price": 345,
2224 + "ebayId": "227157269281",
2225 + "listedPrice": 360
2226 + },
2227 + {
2228 + "tab": "grade-five",
2229 + "date": "2026-02-03",
2230 + "title": "Amazing Spider-Man #300 CGC 7.5 Todd McFarlane 1st App Venom - White Pages 1988",
2231 + "price": 375,
2232 + "ebayId": "134324697510",
2233 + "listedPrice": 399
2234 + },
2235 + {
2236 + "tab": "grade-five",
2237 + "date": "2026-02-01",
2238 + "title": "Amazing Spider-Man 300 CGC 7.5 Venom Original, First Full Venom Appearance",
2239 + "price": 375,
2240 + "ebayId": "168072676855",
2241 + "listedPrice": null
2242 + },
2243 + {
2244 + "tab": "grade-five",
2245 + "date": "2026-01-28",
2246 + "title": "Amazing Spider-Man #300 CGC VF- 7.5 White Pages 1st Full Appearance Venom! 1988",
2247 + "price": 399,
2248 + "ebayId": "389474683122",
2249 + "listedPrice": null
2250 + },
2251 + {
2252 + "tab": "grade-five",
2253 + "date": "2026-01-24",
2254 + "title": "Amazing Spider-Man #300 CGC 7.5 OW/W Pages 1st Appearance Venom 1988",
2255 + "price": 441.64,
2256 + "ebayId": "168087650659",
2257 + "listedPrice": null
2258 + },
2259 + {
2260 + "tab": "grade-five",
2261 + "date": "2026-01-15",
2262 + "title": "Amazing Spider-Man #300 CGC 7.5 Todd McFarlane First Venom 1988",
2263 + "price": 330,
2264 + "ebayId": "136912398104",
2265 + "listedPrice": 400
2266 + },
2267 + {
2268 + "tab": "grade-five",
2269 + "date": "2026-01-08",
2270 + "title": "Buy it Now for Ebay ID bonsi513 1988",
2271 + "price": 628.85,
2272 + "ebayId": "406568047908",
2273 + "listedPrice": 632.47
2274 + },
2275 + {
2276 + "tab": "grade-five",
2277 + "date": "2026-01-07",
2278 + "title": "Custom Label Amazing Spider-Man 300 CGC 7.5 . Origin & 1st full app of Venom 1988",
2279 + "price": 404.84,
2280 + "ebayId": "406556294704",
2281 + "listedPrice": null
2282 + },
2283 + {
2284 + "tab": "grade-six",
2285 + "date": "2026-08-31",
2286 + "title": "Amazing Spider-Man #300 CGC 9.0 1st Full App Venom Marvel Comics Custom Label 1988",
2287 + "price": 599.99,
2288 + "ebayId": "188862972565",
2289 + "listedPrice": null
2290 + },
2291 + {
2292 + "tab": "grade-six",
2293 + "date": "2026-08-13",
2294 + "title": "Amazing Spider-Man #300 CGC 9.0 Todd McFarlane - White Pages - 1st app Venom 1988",
2295 + "price": 610,
2296 + "ebayId": "307109961810",
2297 + "listedPrice": null
2298 + },
2299 + {
2300 + "tab": "grade-six",
2301 + "date": "2026-08-09",
2302 + "title": "Amazing Spider-Man #300 Todd McFarlane 1988 CGC 9.0 1988",
2303 + "price": 499,
2304 + "ebayId": "398262333679",
2305 + "listedPrice": null
2306 + },
2307 + {
2308 + "tab": "grade-six",
2309 + "date": "2026-08-07",
2310 + "title": "Amazing Spider-Man #300 CBCS 9.0 (Marvel 1988) 1st appearance of Venom 1988",
2311 + "price": 502.48,
2312 + "ebayId": "389267273576",
2313 + "listedPrice": null
2314 + },
2315 + {
2316 + "tab": "grade-six",
2317 + "date": "2026-08-05",
2318 + "title": "Amazing Spider-Man #300 CGC 9.0 Todd McFarlane Cover- 1st app Of Venom 1988 1988",
2319 + "price": 577,
2320 + "ebayId": "318674841084",
2321 + "listedPrice": null
2322 + },
2323 + {
2324 + "tab": "grade-six",
2325 + "date": "2026-08-03",
2326 + "title": "Amazing Spider-Man #300 Direct CGC 9.0 1988 4696982006 1st full app. Venom 1988",
2327 + "price": 695,
2328 + "ebayId": "366553569981",
2329 + "listedPrice": null
2330 + },
2331 + {
2332 + "tab": "grade-six",
2333 + "date": "2026-08-01",
2334 + "title": "Marvel Amazing Spider-Man #300 (1988) CGC 9.0 Todd McFarlane Direct Ed 1988",
2335 + "price": 210,
2336 + "ebayId": "147474212687",
2337 + "listedPrice": 318
2338 + },
2339 + {
2340 + "tab": "grade-six",
2341 + "date": "2026-07-28",
2342 + "title": "Amazing Spider-Man #300 Direct Edition CGC 9.0 VF/NM ORIGIN + 1ST VENOM 26-392 1988",
2343 + "price": 494.99,
2344 + "ebayId": "137456988892",
2345 + "listedPrice": null
2346 + },
2347 + {
2348 + "tab": "grade-six",
2349 + "date": "2026-07-27",
2350 + "title": "AMAZING SPIDER-MAN #300 CGC 9.0 VF/NM 1988 WHITE PAGES MARVEL MCFARLANE VENOM 1988",
2351 + "price": 564.95,
2352 + "ebayId": "227375968888",
2353 + "listedPrice": null
2354 + },
2355 + {
2356 + "tab": "grade-six",
2357 + "date": "2026-07-26",
2358 + "title": "Amazing Spider-Man #300 CGC 9.0 (1988) Marvel Comics Venom McFarlane 1988",
2359 + "price": 415,
2360 + "ebayId": "358815926514",
2361 + "listedPrice": null
2362 + },
2363 + {
2364 + "tab": "grade-six",
2365 + "date": "2026-07-25",
2366 + "title": "The Amazing Spider-Man #300 (CGC 9.0) 1988",
2367 + "price": 550,
2368 + "ebayId": "315550105000",
2369 + "listedPrice": null
2370 + },
2371 + {
2372 + "tab": "grade-six",
2373 + "date": "2026-07-25",
2374 + "title": "Amazing Spider-Man 300 CGC 9.0 1st App of Venom Marvel Comics May 1988 1988 #300",
2375 + "price": 499,
2376 + "ebayId": "198521462736",
2377 + "listedPrice": null
2378 + },
2379 + {
2380 + "tab": "grade-six",
2381 + "date": "2026-07-20",
2382 + "title": "AMAZING SPIDER-MAN #300 CGC 9.0 VF/NM 1988 WHITE PAGES MARVEL MCFARLANE VENOM 1988",
2383 + "price": 425,
2384 + "ebayId": "267732843175",
2385 + "listedPrice": 465
2386 + },
2387 + {
2388 + "tab": "grade-six",
2389 + "date": "2026-07-20",
2390 + "title": "AMAZING SPIDER-MAN # 300 Marvel CGC 9.0 WP 1988 Origin & 1st Full App Venom 1988",
2391 + "price": 615,
2392 + "ebayId": "398088698314",
2393 + "listedPrice": null
2394 + },
2395 + {
2396 + "tab": "grade-six",
2397 + "date": "2026-07-14",
2398 + "title": "Amazing Spiderman #300 CGC 9.0 Origin 1st Appearance Venom",
2399 + "price": 540,
2400 + "ebayId": "286606572348",
2401 + "listedPrice": 580
2402 + },
2403 + {
2404 + "tab": "grade-six",
2405 + "date": "2026-07-03",
2406 + "title": "Amazing Spiderman 300 CGC 9.0",
2407 + "price": 540,
2408 + "ebayId": "377305687238",
2409 + "listedPrice": null
2410 + },
2411 + {
2412 + "tab": "grade-six",
2413 + "date": "2026-06-27",
2414 + "title": "Amazing Spider-Man 300 CGC 9.0 1st App of Venom Marvel Comics May 1988 1988 #300",
2415 + "price": 550,
2416 + "ebayId": "407013897035",
2417 + "listedPrice": null
2418 + },
2419 + {
2420 + "tab": "grade-six",
2421 + "date": "2026-06-23",
2422 + "title": "Amazing Spiderman 300 cgc 9.0 1988 #300",
2423 + "price": 440,
2424 + "ebayId": "287403064948",
2425 + "listedPrice": null
2426 + },
2427 + {
2428 + "tab": "grade-six",
2429 + "date": "2026-06-19",
2430 + "title": "Amazing Spider-Man #300 CGC 9.0 1st Full App Venom Marvel Comics 1988 🔥 1988",
2431 + "price": 539.99,
2432 + "ebayId": "298425078333",
2433 + "listedPrice": null
2434 + },
2435 + {
2436 + "tab": "grade-six",
2437 + "date": "2026-06-15",
2438 + "title": "The Amazing Spider-Man #300 (Marvel Comic May 1988)Origin 1st Full Venom CGC 9.0 1988",
2439 + "price": 580,
2440 + "ebayId": "286494567858",
2441 + "listedPrice": null
2442 + },
2443 + {
2444 + "tab": "grade-six",
2445 + "date": "2026-06-10",
2446 + "title": "Amazing Spider-Man #300 CGC 9.0 1st Full App Venom Marvel Comics 1988 🔥 1988",
2447 + "price": 525,
2448 + "ebayId": "188468292789",
2449 + "listedPrice": 600
2450 + },
2451 + {
2452 + "tab": "grade-six",
2453 + "date": "2026-06-08",
2454 + "title": "Amazing Spider-Man 300 (1988 Marvel) CGC 9.0 1st Full Venom Appearance 1988 #300",
2455 + "price": 549.99,
2456 + "ebayId": "389886567867",
2457 + "listedPrice": null
2458 + },
2459 + {
2460 + "tab": "grade-six",
2461 + "date": "2026-06-07",
2462 + "title": "Amazing Spider-Man # 300 Marvel Comics CGC 9.0 Key Issue Venom #300",
2463 + "price": 575,
2464 + "ebayId": "198389100733",
2465 + "listedPrice": null
2466 + },
2467 + {
2468 + "tab": "grade-six",
2469 + "date": "2026-06-05",
2470 + "title": "🔥🔑Amazing Spider-Man #300 - CGC 9.0 - 1st Venom - Classic McFarlane Cover🔥🔑 1988",
2471 + "price": 487.91,
2472 + "ebayId": "127904152466",
2473 + "listedPrice": null
2474 + },
2475 + {
2476 + "tab": "grade-six",
2477 + "date": "2026-06-04",
2478 + "title": "AMAZING SPIDER-MAN #300 CGC 9.0 VF/NM 1998 WHITE PAGES MARVEL MCFARLANE VENOM 1988",
2479 + "price": 549.95,
2480 + "ebayId": "227138631764",
2481 + "listedPrice": null
2482 + },
2483 + {
2484 + "tab": "grade-six",
2485 + "date": "2026-06-04",
2486 + "title": "🔥🔑Amazing Spider-Man #300 - CGC 9.0 - 1st Venom - Classic McFarlane Cover🔥🔑 1988",
2487 + "price": 507.3,
2488 + "ebayId": "127890319274",
2489 + "listedPrice": null
2490 + },
2491 + {
2492 + "tab": "grade-six",
2493 + "date": "2026-06-01",
2494 + "title": "🔥🔑Amazing Spider-Man #300 - CGC 9.0 - 1st Venom - Classic McFarlane Cover🔥🔑 1988",
2495 + "price": 435,
2496 + "ebayId": "318356191130",
2497 + "listedPrice": null
2498 + },
2499 + {
2500 + "tab": "grade-six",
2501 + "date": "2026-05-30",
2502 + "title": "The Amazing Spider-Man #300 CGC 9.0 (Marvel Comics May 1988) 1988",
2503 + "price": 485,
2504 + "ebayId": "306957694715",
2505 + "listedPrice": null
2506 + },
2507 + {
2508 + "tab": "grade-six",
2509 + "date": "2026-05-29",
2510 + "title": "Amazing Spider-Man #300 Marvel 1988 CGC 9.0 White Pages, 1st Appearance Venom! 1988",
2511 + "price": 520,
2512 + "ebayId": "287337804863",
2513 + "listedPrice": 529.95
2514 + },
2515 + {
2516 + "tab": "grade-six",
2517 + "date": "2026-05-26",
2518 + "title": "Marvel The Amazing Spider-Man #300 (1988) CGC 9.0 Spider-Man Venom 1988",
2519 + "price": 500,
2520 + "ebayId": "406946571361",
2521 + "listedPrice": null
2522 + },
2523 + {
2524 + "tab": "grade-seventeen",
2525 + "date": "2026-09-01",
2526 + "title": "🔥1988 AMAZING SPIDER-MAN #300 COMIC BOOK GRADED CGC 9.4 GRAIL 🔥 1988",
2527 + "price": 661.55,
2528 + "ebayId": "278320308937",
2529 + "listedPrice": null
2530 + },
2531 + {
2532 + "tab": "grade-seventeen",
2533 + "date": "2026-08-29",
2534 + "title": "Marvel Comics Amazing Spider-Man Issue #300 1988 1st Venom Appearance CGC 9.4 1988",
2535 + "price": 725,
2536 + "ebayId": "366620781459",
2537 + "listedPrice": null
2538 + },
2539 + {
2540 + "tab": "grade-seventeen",
2541 + "date": "2026-08-25",
2542 + "title": "Amazing Spider-Man #300 CGC 9.4 WP NM Marvel Comics 1988 McFarlane 1st Venom 1988",
2543 + "price": 639,
2544 + "ebayId": "117365228097",
2545 + "listedPrice": null
2546 + },
2547 + {
2548 + "tab": "grade-seventeen",
2549 + "date": "2026-08-20",
2550 + "title": "1988 AMAZING SPIDER-MAN #300 COMIC BOOK GRADED CGC 9.4 FANTASTIC",
2551 + "price": 622,
2552 + "ebayId": "227476502609",
2553 + "listedPrice": null
2554 + },
2555 + {
2556 + "tab": "grade-seventeen",
2557 + "date": "2026-08-17",
2558 + "title": "Amazing Spider-Man #300 CGC 9.4 1st Full Venom McFarlane Direct 1988 1988",
2559 + "price": 675,
2560 + "ebayId": "137533846714",
2561 + "listedPrice": 724.99
2562 + },
2563 + {
2564 + "tab": "grade-seventeen",
2565 + "date": "2026-08-14",
2566 + "title": "Amazing Spider-Man #300 CGC 9.4 - 1st Full Appearance Venom (Eddie Brock) 1988",
2567 + "price": 700,
2568 + "ebayId": "147470888526",
2569 + "listedPrice": null
2570 + },
2571 + {
2572 + "tab": "grade-seventeen",
2573 + "date": "2026-08-13",
2574 + "title": "Marvel Comics 1988 the Amazing Spider-Man #300 First Venom Appearance! CGC 9.4🔥 1988",
2575 + "price": 675,
2576 + "ebayId": "168609716215",
2577 + "listedPrice": 690
2578 + },
2579 + {
2580 + "tab": "grade-seventeen",
2581 + "date": "2026-08-12",
2582 + "title": "Amazing Spider-Man #300 CGC 9.4 Incredible Looking Book! 1st App of Venom 1988 1988",
2583 + "price": 730,
2584 + "ebayId": "206448823095",
2585 + "listedPrice": null
2586 + },
2587 + {
2588 + "tab": "grade-seventeen",
2589 + "date": "2026-08-08",
2590 + "title": "AMAZING SPIDER-MAN #300 (Venom 1st full app) CGC 9.4 NM Marvel Comics 1988 1988",
2591 + "price": 700,
2592 + "ebayId": "178383211790",
2593 + "listedPrice": 749.99
2594 + },
2595 + {
2596 + "tab": "grade-seventeen",
2597 + "date": "2026-08-08",
2598 + "title": "The Amazing Spider-Man #300 (Marvel Comics May 1988) 9.4 CGC GRADE 1988",
2599 + "price": 715,
2600 + "ebayId": "366588777353",
2601 + "listedPrice": null
2602 + },
2603 + {
2604 + "tab": "grade-seventeen",
2605 + "date": "2026-08-07",
2606 + "title": "AMAZING SPIDER-MAN #300 (Venom 1st full app) CGC 9.4 NM Marvel Comics 1988 1988",
2607 + "price": 720,
2608 + "ebayId": "366584196676",
2609 + "listedPrice": 749.99
2610 + },
2611 + {
2612 + "tab": "grade-seventeen",
2613 + "date": "2026-08-05",
2614 + "title": "The Amazing Spider-Man #300 CGC 9.4 1st Full Venom McFarlane Direct 1988 1988",
2615 + "price": 621,
2616 + "ebayId": "377378990260",
2617 + "listedPrice": null
2618 + },
2619 + {
2620 + "tab": "grade-seventeen",
2621 + "date": "2026-07-24",
2622 + "title": "1988 Amazing Spider-Man # 300 CGC 9.4 (White Pages) First Full Venom Appearence 1988",
2623 + "price": 709.41,
2624 + "ebayId": "157913272078",
2625 + "listedPrice": null
2626 + },
2627 + {
2628 + "tab": "grade-seventeen",
2629 + "date": "2026-07-23",
2630 + "title": "The Amazing Spider-Man #300 (Marvel, 1988) CGC NM 9.4 White pages....",
2631 + "price": 610,
2632 + "ebayId": null,
2633 + "listedPrice": null
2634 + },
2635 + {
2636 + "tab": "grade-seventeen",
2637 + "date": "2026-07-23",
2638 + "title": "Amazing Spider-Man #300 CGC 9.4 1st Venom 1988, New Case With Custom Label, WP 1988",
2639 + "price": 664,
2640 + "ebayId": "407091956052",
2641 + "listedPrice": 699
2642 + },
2643 + {
2644 + "tab": "grade-seventeen",
2645 + "date": "2026-07-22",
2646 + "title": "Amazing Spider-Man 300 CGC Graded 9.4 NM 1st Venom Marvel Comics 1988 1988 #300",
2647 + "price": 724.95,
2648 + "ebayId": "188652267125",
2649 + "listedPrice": null
2650 + },
2651 + {
2652 + "tab": "grade-seventeen",
2653 + "date": "2026-07-19",
2654 + "title": "Marvel Amazing Spider-Man #300 (1988) CGC 9.4 Todd McFarlane Cover - White Pages 1988",
2655 + "price": 700,
2656 + "ebayId": "257618016607",
2657 + "listedPrice": null
2658 + },
2659 + {
2660 + "tab": "grade-seventeen",
2661 + "date": "2026-07-10",
2662 + "title": "Marvel Amazing Spider-Man #300, CGC 9.4, 1988, 1st Venom, McFarlane 1988",
2663 + "price": 575,
2664 + "ebayId": "198465838905",
2665 + "listedPrice": null
2666 + },
2667 + {
2668 + "tab": "grade-seventeen",
2669 + "date": "2026-07-10",
2670 + "title": "AMAZING SPIDER-MAN #300 (1988) - CGC GRADE 9.4 - 1ST FULL APPEARANCE VENOM 1988",
2671 + "price": 650,
2672 + "ebayId": "307048286238",
2673 + "listedPrice": null
2674 + },
2675 + {
2676 + "tab": "grade-seventeen",
2677 + "date": "2026-07-07",
2678 + "title": "AMAZING SPIDER-MAN #300 1ST FULL VENOM! MARVEL COMICS, 1988 CGC 9.4 WHITE PAGES! 1988",
2679 + "price": 617,
2680 + "ebayId": "227410246395",
2681 + "listedPrice": null
2682 + },
2683 + {
2684 + "tab": "grade-seventeen",
2685 + "date": "2026-07-06",
2686 + "title": "Amazing Spider-Man 300 CGC 9.4 White Pages Marvel Comics 1988 Venom 1988 #300",
2687 + "price": 609,
2688 + "ebayId": "227407730110",
2689 + "listedPrice": null
2690 + },
2691 + {
2692 + "tab": "grade-seventeen",
2693 + "date": "2026-07-02",
2694 + "title": "AMAZING SPIDER-MAN #300 1ST FULL VENOM! MARVEL COMICS, 1988 CGC 9.4 WHITE PAGES! 1988",
2695 + "price": 625,
2696 + "ebayId": "188567525559",
2697 + "listedPrice": 665
2698 + },
2699 + {
2700 + "tab": "grade-seventeen",
2701 + "date": "2026-07-01",
2702 + "title": "Amazing Spider-Man #300 CGC 9.4 White Pages NM 1st Venom Mega Key Marvel 1988 1988",
2703 + "price": 640,
2704 + "ebayId": "257581082054",
2705 + "listedPrice": null
2706 + },
2707 + {
2708 + "tab": "grade-seventeen",
2709 + "date": "2026-06-27",
2710 + "title": "Amazing Spider-Man #300 CGC 9.4 White Pages Venom 1st Appearance Todd McFarlane 1988",
2711 + "price": 717.95,
2712 + "ebayId": "158020267516",
2713 + "listedPrice": null
2714 + },
2715 + {
2716 + "tab": "grade-seventeen",
2717 + "date": "2026-06-21",
2718 + "title": "Amazing Spider-Man #300 CGC 9.4 Marvel 1988 Origin & 1st Full App of Venom 1988",
2719 + "price": 725,
2720 + "ebayId": "188499066635",
2721 + "listedPrice": null
2722 + },
2723 + {
2724 + "tab": "grade-seventeen",
2725 + "date": "2026-06-19",
2726 + "title": "AMAZING SPIDER-MAN #300 1ST FULL VENOM! MARVEL COMICS, 1988 CGC 9.4 WHITE PAGES! 1988",
2727 + "price": 729,
2728 + "ebayId": "157973869362",
2729 + "listedPrice": null
2730 + },
2731 + {
2732 + "tab": "grade-seventeen",
2733 + "date": "2026-06-17",
2734 + "title": "THE AMAZING SPIDER-MAN #300 MARVEL COMICS ORIGIN & 1ST VENOM GRADED CGC 9.4",
2735 + "price": 668,
2736 + "ebayId": "336620560416",
2737 + "listedPrice": null
2738 + },
2739 + {
2740 + "tab": "grade-seventeen",
2741 + "date": "2026-06-13",
2742 + "title": "AMAZING SPIDER-MAN # 300 Marvel CGC 9.4 WP 1988 Origin & 1st Full App Venom 1988",
2743 + "price": 819.18,
2744 + "ebayId": "398009378363",
2745 + "listedPrice": null
2746 + },
2747 + {
2748 + "tab": "grade-seventeen",
2749 + "date": "2026-06-12",
2750 + "title": "The Amazing Spider-Man #300 (1988) CGC 9.4 1988",
2751 + "price": 650,
2752 + "ebayId": "188498508468",
2753 + "listedPrice": null
2754 + },
2755 + {
2756 + "tab": "grade-seventeen",
2757 + "date": "2026-06-08",
2758 + "title": "Amazing Spider-Man #300 CGC 9.4. 1st Venom Appearance Marvel (1988)",
2759 + "price": 600.39,
2760 + "ebayId": "178203477229",
2761 + "listedPrice": null
2762 + }
2763 + ],
2764 + "details": {
2765 + "Is Key Issue": "Yes",
2766 + "Release Date": "May 1, 1988",
2767 + "Publisher": "Marvel",
2768 + "Model Number": "#300",
2769 + "UPC": "0-71486-02457-6-05",
2770 + "Comic.org ID": "44451",
2771 + "PriceCharting ID": "2315040"
2772 + },
2773 + "images": [
2774 + "https://storage.googleapis.com/images.pricecharting.com/c31a9ef36b24b32be9d26b3a840cd24f1cbcf72f82a345d8f8c26492fb90a3fe/240.jpg",
2775 + "https://storage.googleapis.com/images.pricecharting.com/c31a9ef36b24b32be9d26b3a840cd24f1cbcf72f82a345d8f8c26492fb90a3fe/1600.jpg"
2776 + ]
2777 + }
2778 + },
2779 + "expect": {
2780 + "minCount": 1,
2781 + "kinds": [
2782 + "catalog_item",
2783 + "price_observation",
2784 + "sale"
2785 + ]
2786 + },
2787 + "note": "captured live from https://www.pricecharting.com/game/comic-books-amazing-spider-man/amazing-spider-man-300-1988",
2788 + "capturedAt": "2026-09-07T04:33:38.091Z"
2789 +}
\ No newline at end of file
added data/fixtures/pricecharting/funko-pop-marvel__spider-man-metallic-3.json +126 −0
@@ -0,0 +1,126 @@
1 +{
2 + "raw": {
3 + "url": "https://www.pricecharting.com/game/funko-pop-marvel/spider-man-metallic-3",
4 + "externalId": "7491172",
5 + "kind": "catalog_item",
6 + "engine": "api",
7 + "fetchedAt": "2026-09-07T04:33:33.815Z",
8 + "payload": {
9 + "kind": "product",
10 + "url": "https://www.pricecharting.com/game/funko-pop-marvel/spider-man-metallic-3",
11 + "productId": "7491172",
12 + "consoleUri": "funko-pop-marvel",
13 + "consoleName": "Funko POP Marvel",
14 + "title": "Spider-Man [Metallic] #3",
15 + "flags": {
16 + "isComic": false,
17 + "isLegoSet": false,
18 + "isFunkoPop": true,
19 + "isCard": false,
20 + "isCoin": false,
21 + "isSystem": false
22 + },
23 + "columnLabels": [
24 + "Out of Box",
25 + "In Dmg Box",
26 + "New Price"
27 + ],
28 + "prices": [
29 + {
30 + "key": "used_price",
31 + "value": 1560,
32 + "raw": "$1,560.00"
33 + },
34 + {
35 + "key": "complete_price",
36 + "value": 2537.5,
37 + "raw": "$2,537.50"
38 + },
39 + {
40 + "key": "new_price",
41 + "value": 2600,
42 + "raw": "$2,600.00"
43 + }
44 + ],
45 + "sales": [
46 + {
47 + "tab": "cib",
48 + "date": "2026-07-31",
49 + "title": "Funko Pop Marvel Spider-Man #03 Metallic SDCC 480pcs & Fugitive Toys Monochrome Marvel #03",
50 + "price": 2800,
51 + "ebayId": "198538497166",
52 + "listedPrice": 3200
53 + },
54 + {
55 + "tab": "cib",
56 + "date": "2026-07-14",
57 + "title": "Funko POP Metallic Spider-Man 03 2011 - LE 480 Pieces MARVEL Marvel #3",
58 + "price": 2275,
59 + "ebayId": "236834119900",
60 + "listedPrice": null
61 + },
62 + {
63 + "tab": "cib",
64 + "date": "2025-06-09",
65 + "title": "Funko Pop! Metallic Marvel SDCC 2011 Spider-Man 03 LE 480 Pieces Marvel",
66 + "price": 2500,
67 + "ebayId": "297370332832",
68 + "listedPrice": null
69 + },
70 + {
71 + "tab": "cib",
72 + "date": "2025-05-19",
73 + "title": "Metallic SDCC 2011 Spider-man 03 Funko Pop Vinyl 480PCS + Acrylic Case Marvel",
74 + "price": 2306.16,
75 + "ebayId": "127114823147",
76 + "listedPrice": null
77 + },
78 + {
79 + "tab": "new",
80 + "date": "2025-09-14",
81 + "title": "Funko Pop! SPIDER-MAN 03 Metallic 2011 - Limited Edition 480 pieces Marvel #3",
82 + "price": 2600,
83 + "ebayId": "406162770949",
84 + "listedPrice": null
85 + },
86 + {
87 + "tab": "new",
88 + "date": "2025-09-01",
89 + "title": "Funko Pop SPIDER-MAN 03 Marvel Metallic 2011 - LE 480 Pieces Marvel",
90 + "price": 2500,
91 + "ebayId": "306366766671",
92 + "listedPrice": null
93 + },
94 + {
95 + "tab": "new",
96 + "date": "2025-01-09",
97 + "title": "2011 Spiderman #03 Metallic SDCC Exclusive *SPIDEY GRAIL* Funko Pop! Marvel",
98 + "price": 2650,
99 + "ebayId": "267099744374",
100 + "listedPrice": null
101 + }
102 + ],
103 + "details": {
104 + "Series": "Marvel Universe: Series 1",
105 + "Release Date": "January 1, 2011",
106 + "Publisher": "Funko",
107 + "Box Number": "#3",
108 + "PriceCharting ID": "7491172"
109 + },
110 + "images": [
111 + "https://storage.googleapis.com/images.pricecharting.com/osbjiilfl4xyblv3/240.jpg",
112 + "https://storage.googleapis.com/images.pricecharting.com/osbjiilfl4xyblv3/1600.jpg"
113 + ]
114 + }
115 + },
116 + "expect": {
117 + "minCount": 1,
118 + "kinds": [
119 + "catalog_item",
120 + "price_observation",
121 + "sale"
122 + ]
123 + },
124 + "note": "captured live from https://www.pricecharting.com/game/funko-pop-marvel/spider-man-metallic-3",
125 + "capturedAt": "2026-09-07T04:33:33.841Z"
126 +}
\ No newline at end of file
added data/fixtures/pricecharting/lego-star-wars__cloud-city-10123.json +1077 −0
@@ -0,0 +1,1077 @@
1 +{
2 + "raw": {
3 + "url": "https://www.pricecharting.com/game/lego-star-wars/cloud-city-10123",
4 + "externalId": "5863335",
5 + "kind": "catalog_item",
6 + "engine": "api",
7 + "fetchedAt": "2026-09-07T04:33:30.105Z",
8 + "payload": {
9 + "kind": "product",
10 + "url": "https://www.pricecharting.com/game/lego-star-wars/cloud-city-10123",
11 + "productId": "5863335",
12 + "consoleUri": "lego-star-wars",
13 + "consoleName": "LEGO Star Wars",
14 + "title": "Cloud City #10123",
15 + "flags": {
16 + "isComic": false,
17 + "isLegoSet": true,
18 + "isFunkoPop": false,
19 + "isCard": false,
20 + "isCoin": false,
21 + "isSystem": false
22 + },
23 + "columnLabels": [
24 + "Pieces Only",
25 + "Complete Price",
26 + "New Price",
27 + "Pieces & Manual",
28 + "Box Only Price",
29 + "Manual Only Price",
30 + "Pieces & Manual",
31 + "Box Only",
32 + "Manual Only"
33 + ],
34 + "prices": [
35 + {
36 + "key": "used_price",
37 + "value": 352,
38 + "raw": "$352.00"
39 + },
40 + {
41 + "key": "complete_price",
42 + "value": 3658.56,
43 + "raw": "$3,658.56"
44 + },
45 + {
46 + "key": "new_price",
47 + "value": 5750,
48 + "raw": "$5,750.00"
49 + },
50 + {
51 + "key": "graded_price",
52 + "value": 602,
53 + "raw": "$602.00"
54 + },
55 + {
56 + "key": "box_only_price",
57 + "value": 1057.96,
58 + "raw": "$1,057.96"
59 + },
60 + {
61 + "key": "manual_only_price",
62 + "value": 249.99,
63 + "raw": "$249.99"
64 + }
65 + ],
66 + "sales": [
67 + {
68 + "tab": "used",
69 + "date": "2026-08-20",
70 + "title": "LEGO Star Wars: Cloud City (10123). Read Description",
71 + "price": 530,
72 + "ebayId": "800499720317",
73 + "listedPrice": null
74 + },
75 + {
76 + "tab": "used",
77 + "date": "2026-08-06",
78 + "title": "LEGO Star Wars Cloud City 10123 Replacement Parts - Authentic Retired 2003",
79 + "price": 174,
80 + "ebayId": "117334650552",
81 + "listedPrice": null
82 + },
83 + {
84 + "tab": "used",
85 + "date": "2026-08-06",
86 + "title": "DEFECTIVE LEGO Star Wars Cloud City Princess Leia 10123 AUTHENTIC sw0104 G3D",
87 + "price": 199.08,
88 + "ebayId": "178307381822",
89 + "listedPrice": null
90 + },
91 + {
92 + "tab": "used",
93 + "date": "2026-06-30",
94 + "title": "DEFECTIVE LEGO Star Wars Cloud City Princess Leia 10123 AUTHENTIC sw0104 G3D",
95 + "price": 225,
96 + "ebayId": "178251283626",
97 + "listedPrice": null
98 + },
99 + {
100 + "tab": "used",
101 + "date": "2026-06-24",
102 + "title": "LEGO 10123 Cloud City Star Wars WITHOUT FIGURES Vintage Retro",
103 + "price": 660.14,
104 + "ebayId": "127934127224",
105 + "listedPrice": null
106 + },
107 + {
108 + "tab": "used",
109 + "date": "2026-06-24",
110 + "title": "LEGO Boba Fett Cloud City - Printed Arms & Legs 10123 sw0107",
111 + "price": 1422.74,
112 + "ebayId": "127873306092",
113 + "listedPrice": null
114 + },
115 + {
116 + "tab": "used",
117 + "date": "2026-06-20",
118 + "title": "LEGO Star Wars: Cloud City (10123)",
119 + "price": 1100,
120 + "ebayId": "257558031025",
121 + "listedPrice": null
122 + },
123 + {
124 + "tab": "used",
125 + "date": "2026-06-09",
126 + "title": "LEGO Star Wars: Cloud City (10123)",
127 + "price": 1200,
128 + "ebayId": "257556562436",
129 + "listedPrice": 1800
130 + },
131 + {
132 + "tab": "used",
133 + "date": "2026-06-09",
134 + "title": "LEGO 10123 Cloud City Star Wars COMPLETE WITHOUT FIGURES w/ Instructions Good",
135 + "price": 945.78,
136 + "ebayId": "127815273892",
137 + "listedPrice": null
138 + },
139 + {
140 + "tab": "used",
141 + "date": "2026-06-06",
142 + "title": "DEFECTIVE LEGO Star Wars Cloud City Princess Leia 10123 AUTHENTIC sw0104 G3D",
143 + "price": 202.5,
144 + "ebayId": "178154939848",
145 + "listedPrice": null
146 + },
147 + {
148 + "tab": "used",
149 + "date": "2026-05-24",
150 + "title": "LEGO Star Wars Cloud City 10123 Complete Set All Minifigs",
151 + "price": 3000,
152 + "ebayId": "358207765201",
153 + "listedPrice": null
154 + },
155 + {
156 + "tab": "used",
157 + "date": "2026-04-17",
158 + "title": "LEGO Luke Skywalker Cloud City 10123 sw0103 VERY GOOD Condition",
159 + "price": 575.55,
160 + "ebayId": "127627729205",
161 + "listedPrice": 692.03
162 + },
163 + {
164 + "tab": "used",
165 + "date": "2026-04-10",
166 + "title": "LEGO Star Wars Cloud City Princess Leia 10123 AUTHENTIC sw0104 MINT",
167 + "price": 225,
168 + "ebayId": "257377261940",
169 + "listedPrice": 245
170 + },
171 + {
172 + "tab": "used",
173 + "date": "2026-04-09",
174 + "title": "LEGO Cloud City 10123 Princess Leia SW0104",
175 + "price": 239,
176 + "ebayId": "267506565413",
177 + "listedPrice": null
178 + },
179 + {
180 + "tab": "used",
181 + "date": "2026-03-08",
182 + "title": "LEGO Princess Leia Organa Cloud City 10123 sw0104 VERY GOOD CONDITION",
183 + "price": 188.21,
184 + "ebayId": "127699082882",
185 + "listedPrice": null
186 + },
187 + {
188 + "tab": "used",
189 + "date": "2026-02-23",
190 + "title": "LEGO Star Wars Cloud City Princess Leia 10123 AUTHENTIC sw0104 MINT",
191 + "price": 237,
192 + "ebayId": "306785466116",
193 + "listedPrice": null
194 + },
195 + {
196 + "tab": "used",
197 + "date": "2026-01-06",
198 + "title": "Lego Star Wars Cloud City Manual 10123",
199 + "price": 250,
200 + "ebayId": "257097053006",
201 + "listedPrice": null
202 + },
203 + {
204 + "tab": "used",
205 + "date": "2025-08-08",
206 + "title": "LEGO Star Wars: Cloud City (10123) Manual",
207 + "price": 359.99,
208 + "ebayId": "406096494831",
209 + "listedPrice": null
210 + },
211 + {
212 + "tab": "used",
213 + "date": "2025-07-26",
214 + "title": "LEGO Cloud City 10123 Star Wars Ultimate Collector Series Remastered 2003 Set",
215 + "price": 428,
216 + "ebayId": "157140812251",
217 + "listedPrice": null
218 + },
219 + {
220 + "tab": "used",
221 + "date": "2025-07-16",
222 + "title": "LEGO Star Wars: Cloud City (10123)",
223 + "price": 300,
224 + "ebayId": "177258660132",
225 + "listedPrice": null
226 + },
227 + {
228 + "tab": "used",
229 + "date": "2025-06-24",
230 + "title": "RARE lego star wars cloud city 10123 100% complete build only",
231 + "price": 280,
232 + "ebayId": "357140493509",
233 + "listedPrice": null
234 + },
235 + {
236 + "tab": "used",
237 + "date": "2025-06-19",
238 + "title": "LEGO Star Wars: Cloud City (10123) BUILD + INSTRUCTIONS - COMPLETE",
239 + "price": 600,
240 + "ebayId": "405978650168",
241 + "listedPrice": null
242 + },
243 + {
244 + "tab": "used",
245 + "date": "2025-06-19",
246 + "title": "Cloud City Luke Skywalker 10123 100% Genuine LEGO",
247 + "price": 110,
248 + "ebayId": "336017108385",
249 + "listedPrice": null
250 + },
251 + {
252 + "tab": "used",
253 + "date": "2025-06-02",
254 + "title": "Lego Cloud City Luke 10123",
255 + "price": 310,
256 + "ebayId": "277163332303",
257 + "listedPrice": null
258 + },
259 + {
260 + "tab": "used",
261 + "date": "2025-04-14",
262 + "title": "Star Wars Lego 10123 Cloud City vintage set complete",
263 + "price": 825,
264 + "ebayId": "267220610006",
265 + "listedPrice": null
266 + },
267 + {
268 + "tab": "used",
269 + "date": "2025-03-19",
270 + "title": "Lego Cloud City Boba Fett 10123 Authentic Printed (no Legs) (used condition)",
271 + "price": 219,
272 + "ebayId": "286418003377",
273 + "listedPrice": null
274 + },
275 + {
276 + "tab": "used",
277 + "date": "2025-03-17",
278 + "title": "Lego Cloud City 10123 Boba Fett Legs Only",
279 + "price": 400,
280 + "ebayId": "286416457388",
281 + "listedPrice": null
282 + },
283 + {
284 + "tab": "used",
285 + "date": "2025-03-03",
286 + "title": "Lego 10123 Cloud City Princess Leia Read Description",
287 + "price": 149.99,
288 + "ebayId": "356625407396",
289 + "listedPrice": null
290 + },
291 + {
292 + "tab": "used",
293 + "date": "2025-02-25",
294 + "title": "* RARE *LEGO Star Wars Cloud City (10123)",
295 + "price": 767.83,
296 + "ebayId": "256823095410",
297 + "listedPrice": null
298 + },
299 + {
300 + "tab": "used",
301 + "date": "2025-01-28",
302 + "title": "2003 LEGO Star Wars Cloud City 10123 Lando Calrissian Figure Collection",
303 + "price": 629.51,
304 + "ebayId": "203256183181",
305 + "listedPrice": null
306 + },
307 + {
308 + "tab": "cib",
309 + "date": "2026-07-27",
310 + "title": "LEGO Star Wars Cloud City 10123 - Used - 100% Complete - All Figures and manual.",
311 + "price": 4000,
312 + "ebayId": "298446501387",
313 + "listedPrice": 5000
314 + },
315 + {
316 + "tab": "cib",
317 + "date": "2026-06-24",
318 + "title": "LEGO Star Wars Cloud City 10123 In 2003 Used Boba Fett & Figures",
319 + "price": 3599,
320 + "ebayId": "398066260392",
321 + "listedPrice": null
322 + },
323 + {
324 + "tab": "cib",
325 + "date": "2026-06-02",
326 + "title": "Lego Star Wars Cloud City 10123 W/ Manual. Retired, Used, Year 2003",
327 + "price": 799,
328 + "ebayId": "800055619842",
329 + "listedPrice": null
330 + },
331 + {
332 + "tab": "cib",
333 + "date": "2026-05-31",
334 + "title": "LEGO Star Wars: Cloud City (10123) Used 100% Complete with Instructions & Box",
335 + "price": 3700,
336 + "ebayId": "336610734633",
337 + "listedPrice": 4999
338 + },
339 + {
340 + "tab": "cib",
341 + "date": "2026-05-30",
342 + "title": "LEGO Star Wars Cloud City 10123, Original Owner",
343 + "price": 3500,
344 + "ebayId": "236847390694",
345 + "listedPrice": null
346 + },
347 + {
348 + "tab": "cib",
349 + "date": "2026-05-30",
350 + "title": "LEGO Cloud City 10123 100% Complete & Pristine | All figures, box and manual",
351 + "price": 6000,
352 + "ebayId": "298347078905",
353 + "listedPrice": 6500
354 + },
355 + {
356 + "tab": "cib",
357 + "date": "2026-05-26",
358 + "title": "LEGO 10123 Cloud City All Minifigures Boba Fett STAR WARS | RARE | 100% complete",
359 + "price": 1399,
360 + "ebayId": "318340057129",
361 + "listedPrice": null
362 + },
363 + {
364 + "tab": "cib",
365 + "date": "2026-05-24",
366 + "title": "LEGO Star Wars: Cloud City 10123 Mini Figure Boba Lando Luke GRAIL RARE Complete",
367 + "price": 3850,
368 + "ebayId": "188392816617",
369 + "listedPrice": null
370 + },
371 + {
372 + "tab": "cib",
373 + "date": "2026-05-16",
374 + "title": "LEGO 10123 Cloud City All Minifigures Boba Fett STAR WARS | RARE | 100% Complete",
375 + "price": 5696.24,
376 + "ebayId": "167252437550",
377 + "listedPrice": null
378 + },
379 + {
380 + "tab": "cib",
381 + "date": "2026-05-13",
382 + "title": "LEGO Star Wars Cloud City 10123 Complete Set w/ all Minifigs with Box & Instruct",
383 + "price": 4500,
384 + "ebayId": "236806135910",
385 + "listedPrice": null
386 + },
387 + {
388 + "tab": "cib",
389 + "date": "2026-05-01",
390 + "title": "LEGO Star Wars Cloud City 10123 Complete Set w/ Minifigures, Manual & Parts",
391 + "price": 2900,
392 + "ebayId": "206229109537",
393 + "listedPrice": null
394 + },
395 + {
396 + "tab": "cib",
397 + "date": "2026-04-25",
398 + "title": "💎Lego Star Wars Rare 10123 Cloud Ci plus bonuses",
399 + "price": 2500,
400 + "ebayId": "206230930165",
401 + "listedPrice": 3500
402 + },
403 + {
404 + "tab": "cib",
405 + "date": "2026-04-18",
406 + "title": "LEGO Cloud City 10123 | 100% Complete & Pristine | All figs, box, manual, & bags",
407 + "price": 5000,
408 + "ebayId": "257454452156",
409 + "listedPrice": 6000
410 + },
411 + {
412 + "tab": "cib",
413 + "date": "2026-04-02",
414 + "title": "star wars lego set Cloud City (10123), Retired, 2003, 7 Minifigures & Manual",
415 + "price": 3000,
416 + "ebayId": "389837480827",
417 + "listedPrice": 4200
418 + },
419 + {
420 + "tab": "cib",
421 + "date": "2026-03-27",
422 + "title": "LEGO Star Wars 10123 Cloud City – 100% Complete – Box + Instructions + Case",
423 + "price": 4500,
424 + "ebayId": "406802073344",
425 + "listedPrice": 4750
426 + },
427 + {
428 + "tab": "cib",
429 + "date": "2026-03-25",
430 + "title": "LEGO Star Wars: Cloud City (10123) 100% complete set with Boba Fett!! (2003)",
431 + "price": 4050,
432 + "ebayId": "358334639899",
433 + "listedPrice": null
434 + },
435 + {
436 + "tab": "cib",
437 + "date": "2026-03-24",
438 + "title": "LEGO Star Wars: Cloud City (10123) 100% COMPLETE!!! (Assembled Once in 2003)",
439 + "price": 4350,
440 + "ebayId": "298145843929",
441 + "listedPrice": null
442 + },
443 + {
444 + "tab": "cib",
445 + "date": "2026-03-17",
446 + "title": "Rare Collectors Lego Star Wars Cloud City 10123",
447 + "price": 2777.67,
448 + "ebayId": "227260832523",
449 + "listedPrice": 2909.94
450 + },
451 + {
452 + "tab": "cib",
453 + "date": "2026-03-07",
454 + "title": "LEGO STAR WARS Set 10123 Cloud City 2003 100% complete with Boba Fett!!",
455 + "price": 3450,
456 + "ebayId": "177921321503",
457 + "listedPrice": null
458 + },
459 + {
460 + "tab": "cib",
461 + "date": "2026-03-04",
462 + "title": "LEGO STAR WARS Set 10123 Cloud City 2003 100% complete with Boba Fett!!",
463 + "price": 3600,
464 + "ebayId": "177902916013",
465 + "listedPrice": null
466 + },
467 + {
468 + "tab": "cib",
469 + "date": "2026-02-24",
470 + "title": "LEGO STAR WARS Set 10123 Cloud City 2003 100% complete with Boba Fett!!",
471 + "price": 3050,
472 + "ebayId": "267579189893",
473 + "listedPrice": null
474 + },
475 + {
476 + "tab": "cib",
477 + "date": "2026-02-22",
478 + "title": "LEGO STAR WARS Set 10123 Cloud City 2003 100% complete with Boba Fett!!",
479 + "price": 4055,
480 + "ebayId": "177871649996",
481 + "listedPrice": null
482 + },
483 + {
484 + "tab": "cib",
485 + "date": "2026-02-17",
486 + "title": "LEGO STAR WARS Set 10123 Cloud City 2003 100% complete with Boba Fett!!",
487 + "price": 3250,
488 + "ebayId": "177858763965",
489 + "listedPrice": null
490 + },
491 + {
492 + "tab": "cib",
493 + "date": "2026-02-08",
494 + "title": "LEGO STAR WARS Set 10123 Cloud City 2003 100% complete with Boba Fett!!",
495 + "price": 3250,
496 + "ebayId": "177833331269",
497 + "listedPrice": null
498 + },
499 + {
500 + "tab": "cib",
501 + "date": "2026-02-01",
502 + "title": "LEGO STAR WARS Set 10123 Cloud City 2003 Inc Figures, Instructions sw0107 RARE!",
503 + "price": 3199.77,
504 + "ebayId": "206017421732",
505 + "listedPrice": null
506 + },
507 + {
508 + "tab": "cib",
509 + "date": "2026-01-03",
510 + "title": "LEGO Star Wars: Cloud City (10123) Complete, All Minifigures, Manual, No Box",
511 + "price": 3200,
512 + "ebayId": "136905451171",
513 + "listedPrice": null
514 + },
515 + {
516 + "tab": "cib",
517 + "date": "2025-12-28",
518 + "title": "LEGO Star Wars: Cloud City (10123) Minifigures",
519 + "price": 2900,
520 + "ebayId": "227133539310",
521 + "listedPrice": null
522 + },
523 + {
524 + "tab": "cib",
525 + "date": "2025-12-28",
526 + "title": "( Lego Star Wars cloud city set 10123 ) Please Read Description Before Buying",
527 + "price": 3300,
528 + "ebayId": "357981175115",
529 + "listedPrice": null
530 + },
531 + {
532 + "tab": "cib",
533 + "date": "2025-12-26",
534 + "title": "LEGO Star Wars: Cloud City (10123) New but box not sealed",
535 + "price": 4250,
536 + "ebayId": "336362057736",
537 + "listedPrice": null
538 + },
539 + {
540 + "tab": "cib",
541 + "date": "2025-12-20",
542 + "title": "LEGO Star Wars: Cloud City (10123)",
543 + "price": 4000,
544 + "ebayId": "297842057875",
545 + "listedPrice": null
546 + },
547 + {
548 + "tab": "new",
549 + "date": "2026-08-02",
550 + "title": "LEGO Star Wars: Cloud City (10123) NEW & SEALED - BOBA FETT MINIATURE",
551 + "price": 3500,
552 + "ebayId": "358867663173",
553 + "listedPrice": null
554 + },
555 + {
556 + "tab": "new",
557 + "date": "2026-08-02",
558 + "title": "LEGO Star Wars Cloud City 10123 New Sealed Rare Never Been Opened",
559 + "price": 8000,
560 + "ebayId": "188732256957",
561 + "listedPrice": null
562 + },
563 + {
564 + "tab": "new",
565 + "date": "2026-07-10",
566 + "title": "LEGO Star Wars Cloud City 10123 Vintage Complete Set 698 pcs 9+ Boba Fett Box",
567 + "price": 4500,
568 + "ebayId": "358761213158",
569 + "listedPrice": null
570 + },
571 + {
572 + "tab": "new",
573 + "date": "2026-07-08",
574 + "title": "💎LEGO 10123 CLOUD CITY SET WITH BOX *MINT CONDITION SOME SEALED* CC BOBA FETT",
575 + "price": 6000,
576 + "ebayId": "127945598206",
577 + "listedPrice": null
578 + },
579 + {
580 + "tab": "new",
581 + "date": "2026-06-20",
582 + "title": "LEGO Star Wars Cloud City 10123 Vintage Complete Set 698 pcs Box Age 9+",
583 + "price": 2499,
584 + "ebayId": "800124340175",
585 + "listedPrice": null
586 + },
587 + {
588 + "tab": "new",
589 + "date": "2026-06-11",
590 + "title": "LEGO Star Wars Cloud City 10123 - New, Sealed with Rare Boba Fett Minifigure",
591 + "price": 12503,
592 + "ebayId": "336612272659",
593 + "listedPrice": null
594 + },
595 + {
596 + "tab": "new",
597 + "date": "2026-06-09",
598 + "title": "LEGO Star Wars Cloud City 10123 Vintage Complete Set 698 pcs Box Age 9+",
599 + "price": 1389.99,
600 + "ebayId": "398023601710",
601 + "listedPrice": null
602 + },
603 + {
604 + "tab": "new",
605 + "date": "2026-05-31",
606 + "title": "LEGO Star Wars Cloud City 10123 Vintage Complete Set 698 pcs Box Age 9+",
607 + "price": 3995,
608 + "ebayId": "377223094599",
609 + "listedPrice": null
610 + },
611 + {
612 + "tab": "new",
613 + "date": "2026-05-29",
614 + "title": "LEGO Star Wars Cloud City 10123 - New, Sealed with Rare Boba Fett Minifigure",
615 + "price": 7499,
616 + "ebayId": "127882727016",
617 + "listedPrice": null
618 + },
619 + {
620 + "tab": "new",
621 + "date": "2026-05-26",
622 + "title": "LEGO Star Wars: Cloud City (10123) - New Sealed CC Boba Lando Luke - GRAIL RARE",
623 + "price": 12500,
624 + "ebayId": "227333009460",
625 + "listedPrice": 14999.99
626 + },
627 + {
628 + "tab": "new",
629 + "date": "2026-05-26",
630 + "title": "BRAND NEW LEGO Star Wars Cloud City Sealed Set 10123 EXTREMELY RARE!",
631 + "price": 7500,
632 + "ebayId": "397991721120",
633 + "listedPrice": null
634 + },
635 + {
636 + "tab": "new",
637 + "date": "2026-05-21",
638 + "title": "LEGO Star Wars Cloud City 10123 All 5 bags sealed. Instruction minifig",
639 + "price": 5500,
640 + "ebayId": "397968515846",
641 + "listedPrice": 6000
642 + },
643 + {
644 + "tab": "new",
645 + "date": "2026-05-21",
646 + "title": "Lego Star Wars Cloud City 10123 BRAND NEW SEALED Rare Boba Fett minifig see pics",
647 + "price": 8195,
648 + "ebayId": "406930387584",
649 + "listedPrice": null
650 + },
651 + {
652 + "tab": "new",
653 + "date": "2026-05-17",
654 + "title": "LEGO STAR WARS CLOUD CITY 10123 BOBA FETT LUKE LANDO NEW SEALED VERY RARE!",
655 + "price": 6600,
656 + "ebayId": "406914554614",
657 + "listedPrice": null
658 + },
659 + {
660 + "tab": "new",
661 + "date": "2026-04-17",
662 + "title": "LEGO Star Wars 10123 Cloud City Boba Fett AFA 9.0 - Rare",
663 + "price": 4000,
664 + "ebayId": "206212147538",
665 + "listedPrice": 5000
666 + },
667 + {
668 + "tab": "new",
669 + "date": "2026-03-29",
670 + "title": "LEGO Star Wars Cloud City 10123 Factory New",
671 + "price": 8000,
672 + "ebayId": "177973534504",
673 + "listedPrice": null
674 + },
675 + {
676 + "tab": "new",
677 + "date": "2026-03-25",
678 + "title": "10123 Lego Star Wars Cloud City Set NEW IN BOX RETIRED SET",
679 + "price": 13000,
680 + "ebayId": "157764992203",
681 + "listedPrice": null
682 + },
683 + {
684 + "tab": "new",
685 + "date": "2026-02-12",
686 + "title": "LEGO Cloud City 10123 SW0107 Very Rare New Retired Set",
687 + "price": 5596.91,
688 + "ebayId": "366183755232",
689 + "listedPrice": null
690 + },
691 + {
692 + "tab": "new",
693 + "date": "2026-02-09",
694 + "title": "⚜️[SEALED] MINT LEGO Star Wars: Cloud City (10123)",
695 + "price": 12500,
696 + "ebayId": "389594601497",
697 + "listedPrice": 12995.95
698 + },
699 + {
700 + "tab": "new",
701 + "date": "2026-01-17",
702 + "title": "LEGO Star Wars Cloud City 10123 AFA 8.5 Factory Sealed New Graded Not CAS Grail",
703 + "price": 14500,
704 + "ebayId": "236578416007",
705 + "listedPrice": null
706 + },
707 + {
708 + "tab": "new",
709 + "date": "2026-01-03",
710 + "title": "LEGO Star Wars Cloud City 10123 – Factory Sealed, Mint Condition, Ultra-Rare",
711 + "price": 12500,
712 + "ebayId": "326834534737",
713 + "listedPrice": null
714 + },
715 + {
716 + "tab": "new",
717 + "date": "2025-12-30",
718 + "title": "LEGO Cloud City 10123 SW0107 Very Rare New Retired Set",
719 + "price": 5460.4,
720 + "ebayId": "366091262347",
721 + "listedPrice": null
722 + },
723 + {
724 + "tab": "new",
725 + "date": "2025-12-30",
726 + "title": "LEGO Cloud City 10123 SW0107 Very Rare New Retired Set",
727 + "price": 5460.4,
728 + "ebayId": "366089445105",
729 + "listedPrice": null
730 + },
731 + {
732 + "tab": "new",
733 + "date": "2025-12-21",
734 + "title": "LEGO Star Wars Cloud City 10123 – Factory Sealed, Mint Condition, Ultra-Rare",
735 + "price": 11500,
736 + "ebayId": "187698094074",
737 + "listedPrice": 12500
738 + },
739 + {
740 + "tab": "new",
741 + "date": "2025-10-25",
742 + "title": "LEGO Star Wars Cloud City 10123 – Factory Sealed, Mint Condition, Ultra-Rare",
743 + "price": 12500,
744 + "ebayId": "326516473345",
745 + "listedPrice": null
746 + },
747 + {
748 + "tab": "new",
749 + "date": "2025-10-20",
750 + "title": "Lego Star Wars Cloud City set 10123 NEW UNOPENED",
751 + "price": 5913,
752 + "ebayId": "406299213194",
753 + "listedPrice": null
754 + },
755 + {
756 + "tab": "new",
757 + "date": "2025-10-09",
758 + "title": "Lego Star Wars Cloud City set 10123 NEW UNOPENED",
759 + "price": 10100,
760 + "ebayId": "226717294323",
761 + "listedPrice": null
762 + },
763 + {
764 + "tab": "new",
765 + "date": "2025-07-21",
766 + "title": "Lego Star Wars Set 10123 Cloud City UNUSED COMPLETE SEALED BAGS Original 2004",
767 + "price": 5342.8,
768 + "ebayId": "388730452005",
769 + "listedPrice": null
770 + },
771 + {
772 + "tab": "new",
773 + "date": "2025-04-18",
774 + "title": "LEGO Star Wars Cloud City 10123 - Factory Sealed, Mint, Ultra-Rare",
775 + "price": 8000,
776 + "ebayId": "306254551906",
777 + "listedPrice": null
778 + },
779 + {
780 + "tab": "new",
781 + "date": "2025-04-18",
782 + "title": "LEGO Star Wars Cloud City 10123 - Factory Sealed, Mint, Ultra-Rare",
783 + "price": 8000,
784 + "ebayId": "306254474462",
785 + "listedPrice": null
786 + },
787 + {
788 + "tab": "box-only",
789 + "date": "2026-01-20",
790 + "title": "LEGO Star Wars: Cloud City (10123) Box ONLY - Super Nice",
791 + "price": 999,
792 + "ebayId": "306720579787",
793 + "listedPrice": null
794 + },
795 + {
796 + "tab": "box-only",
797 + "date": "2026-01-11",
798 + "title": "LEGO 10123 Cloud City BOX ONLY Empty Box VERY GOOD Collectors Item Star Wars",
799 + "price": 2094.65,
800 + "ebayId": "127605557204",
801 + "listedPrice": null
802 + },
803 + {
804 + "tab": "box-only",
805 + "date": "2025-07-07",
806 + "title": "LEGO Star Wars 10123 Cloud City BOX ONLY – Rare Original Packaging",
807 + "price": 550,
808 + "ebayId": "365714839479",
809 + "listedPrice": null
810 + },
811 + {
812 + "tab": "box-only",
813 + "date": "2025-03-14",
814 + "title": "Lego 10123 Cloud City Box - 2003 - Star Wars - *Empty Box Only*",
815 + "price": 588.68,
816 + "ebayId": "276903663376",
817 + "listedPrice": null
818 + },
819 + {
820 + "tab": "box-only",
821 + "date": "2024-11-26",
822 + "title": "LEGO Star Wars: Cloud City (10123) - BOX ONLY - No Lego Pieces Or Figures",
823 + "price": 479.99,
824 + "ebayId": "395902064789",
825 + "listedPrice": null
826 + },
827 + {
828 + "tab": "box-only",
829 + "date": "2024-07-06",
830 + "title": "LEGO Star Wars: Cloud City (10123) BOX ONLY NO PARTS",
831 + "price": 904.4,
832 + "ebayId": "326188809173",
833 + "listedPrice": null
834 + },
835 + {
836 + "tab": "manual-only",
837 + "date": "2025-10-31",
838 + "title": "LEGO Star Wars: Cloud City (10123) Manual **Book Only**",
839 + "price": 249.99,
840 + "ebayId": "326831779274",
841 + "listedPrice": null
842 + },
843 + {
844 + "tab": "manual-only",
845 + "date": "2025-06-26",
846 + "title": "vintage lego star wars cloud city booklet 10123",
847 + "price": 257.42,
848 + "ebayId": "376352154131",
849 + "listedPrice": null
850 + },
851 + {
852 + "tab": "manual-only",
853 + "date": "2024-05-24",
854 + "title": "Vintage Original Lego Star Wars 10123 Cloud City Instruction Manual Book ONLY",
855 + "price": 100,
856 + "ebayId": "226135367862",
857 + "listedPrice": null
858 + },
859 + {
860 + "tab": "manual-only",
861 + "date": "2024-04-24",
862 + "title": "LEGO® Star Wars 10123 Cloud City Anleitung, Bauanleitung, Instructions",
863 + "price": 113.18,
864 + "ebayId": "315277890259",
865 + "listedPrice": null
866 + },
867 + {
868 + "tab": "manual-only",
869 + "date": "2024-03-15",
870 + "title": "Vintage Original Lego Star Wars 10123 Cloud City Instruction Manual Book ONLY",
871 + "price": 109.99,
872 + "ebayId": "296278130704",
873 + "listedPrice": null
874 + },
875 + {
876 + "tab": "manual-only",
877 + "date": "2024-01-31",
878 + "title": "Original Lego Star Wars 10123 Cloud City Instruction Manual ONLY 9/10 Condition",
879 + "price": 145,
880 + "ebayId": "126264875697",
881 + "listedPrice": null
882 + },
883 + {
884 + "tab": "manual-only",
885 + "date": "2023-12-25",
886 + "title": "LEGO Star Wars Cloud City 10123 Set and Instruction Manual ONLY",
887 + "price": 203.5,
888 + "ebayId": "395073158071",
889 + "listedPrice": null
890 + },
891 + {
892 + "tab": "loose-and-manual",
893 + "date": "2026-04-06",
894 + "title": "LEGO Star Wars: Cloud City (10123) Complete, All Minifigures, Manual, No Box",
895 + "price": 2700,
896 + "ebayId": "165812498539",
897 + "listedPrice": 5000
898 + },
899 + {
900 + "tab": "loose-and-manual",
901 + "date": "2025-11-11",
902 + "title": "LEGO Star Wars: Cloud City (10123) Complete With Instructions & box!",
903 + "price": 4200,
904 + "ebayId": "286915664973",
905 + "listedPrice": null
906 + },
907 + {
908 + "tab": "loose-and-manual",
909 + "date": "2025-11-01",
910 + "title": "LEGO Star Wars: Cloud City (10123) Complete With Instructions No Box Or Leia Fig",
911 + "price": 2030,
912 + "ebayId": "136676527305",
913 + "listedPrice": null
914 + },
915 + {
916 + "tab": "loose-and-manual",
917 + "date": "2025-10-28",
918 + "title": "LEGO Star Wars: Cloud City (10123) Complete With Instructions No Box",
919 + "price": 2800,
920 + "ebayId": "406298537405",
921 + "listedPrice": 3000
922 + },
923 + {
924 + "tab": "loose-and-manual",
925 + "date": "2025-09-10",
926 + "title": "LEGO Star Wars: Cloud City (10123)",
927 + "price": 950,
928 + "ebayId": "167770626569",
929 + "listedPrice": null
930 + },
931 + {
932 + "tab": "loose-and-manual",
933 + "date": "2025-07-12",
934 + "title": "LEGO Star Wars 10123: Cloud City - 100% Complete w/Manual and Minifigures",
935 + "price": 2000,
936 + "ebayId": "187405009118",
937 + "listedPrice": null
938 + },
939 + {
940 + "tab": "loose-and-manual",
941 + "date": "2025-06-30",
942 + "title": "LEGO Star Wars 10123: Cloud City - 100% Complete! w/Manual and Minifigures",
943 + "price": 2999,
944 + "ebayId": "205571105547",
945 + "listedPrice": null
946 + },
947 + {
948 + "tab": "loose-and-manual",
949 + "date": "2025-06-25",
950 + "title": "Lego Star Wars Cloud City 10123 - COMPLETE. All pieces and minifigs. NO BOX.",
951 + "price": 3400,
952 + "ebayId": "286232515067",
953 + "listedPrice": null
954 + },
955 + {
956 + "tab": "loose-and-manual",
957 + "date": "2025-02-05",
958 + "title": "LEGO Star Wars Cloud City 10123 100% complete w/ instructions. Figures superb!",
959 + "price": 2542.41,
960 + "ebayId": "235940247077",
961 + "listedPrice": null
962 + },
963 + {
964 + "tab": "loose-and-manual",
965 + "date": "2025-01-26",
966 + "title": "LEGO Star Wars Cloud City 10123 100% complete w/ instructions + all mini figures",
967 + "price": 2355.05,
968 + "ebayId": "196688199527",
969 + "listedPrice": null
970 + },
971 + {
972 + "tab": "loose-and-manual",
973 + "date": "2024-11-16",
974 + "title": "Cloud City Star Wars Lego Set 10123 100% COMPLETE - Authentic Boba Fett - No box",
975 + "price": 1575,
976 + "ebayId": "375778196277",
977 + "listedPrice": null
978 + },
979 + {
980 + "tab": "loose-and-manual",
981 + "date": "2024-11-11",
982 + "title": "Lego Cloud City 10123 Complete w/ Instructions Very Good Condition",
983 + "price": 1600,
984 + "ebayId": "156494155989",
985 + "listedPrice": null
986 + },
987 + {
988 + "tab": "loose-and-manual",
989 + "date": "2024-10-14",
990 + "title": "Cloud City Star Wars Lego Set 10123 100% COMPLETE - No box",
991 + "price": 1950,
992 + "ebayId": "186730016761",
993 + "listedPrice": null
994 + },
995 + {
996 + "tab": "loose-and-manual",
997 + "date": "2024-09-24",
998 + "title": "LEGO 10123 Cloud City All Minifigures Boba Fett STAR WARS | RARE | No Box",
999 + "price": 3381.12,
1000 + "ebayId": "315777201735",
1001 + "listedPrice": null
1002 + },
1003 + {
1004 + "tab": "loose-and-manual",
1005 + "date": "2024-08-29",
1006 + "title": "Lego Cloud City 10123 Complete w/ Instructions Very Good Condition",
1007 + "price": 2000,
1008 + "ebayId": "355991513415",
1009 + "listedPrice": null
1010 + },
1011 + {
1012 + "tab": "loose-and-manual",
1013 + "date": "2024-05-27",
1014 + "title": "Used Lego Cloud City 10123 100% Complete All Pieces, Minifigures, Manual -No Box",
1015 + "price": 2100,
1016 + "ebayId": "266832614145",
1017 + "listedPrice": null
1018 + },
1019 + {
1020 + "tab": "loose-and-manual",
1021 + "date": "2024-04-14",
1022 + "title": "LEGO STAR WARS 10123 Cloud City Inkl. Anleitung NEUWERTIG ! RAR!",
1023 + "price": 2593.84,
1024 + "ebayId": "204731064343",
1025 + "listedPrice": null
1026 + },
1027 + {
1028 + "tab": "loose-and-manual",
1029 + "date": "2024-02-04",
1030 + "title": "Lego Star Wars 10123 Cloud City UCS 2004",
1031 + "price": 1938.15,
1032 + "ebayId": "276318351185",
1033 + "listedPrice": null
1034 + },
1035 + {
1036 + "tab": "loose-and-manual",
1037 + "date": "2023-11-17",
1038 + "title": "LEGO Star Wars Cloud City 10123 Genuine Product With Instruction Manual",
1039 + "price": 1148,
1040 + "ebayId": "394941923824",
1041 + "listedPrice": null
1042 + },
1043 + {
1044 + "tab": "loose-and-manual",
1045 + "date": "2023-09-14",
1046 + "title": "LEGO Star Wars: Cloud City (10123)",
1047 + "price": 3039.6,
1048 + "ebayId": "325803183358",
1049 + "listedPrice": null
1050 + }
1051 + ],
1052 + "details": {
1053 + "Genre": "LEGO Set",
1054 + "Release Date": "January 1, 2003",
1055 + "Model Number": "#10123",
1056 + "UPC": "5702014367579,0673419034746",
1057 + "ePID (eBay)": "17053422855",
1058 + "PriceCharting ID": "5863335"
1059 + },
1060 + "images": [
1061 + "https://storage.googleapis.com/images.pricecharting.com/e35077465088c8bb8ad5a777035e378528fd0fe8924a2fb8c92871edc1f85ec2/240.jpg",
1062 + "https://storage.googleapis.com/images.pricecharting.com/276a1737c9443844ac939d8c6dd11e0c24396889a083e31cb7a8c655ee43a651/240.jpg",
1063 + "https://storage.googleapis.com/images.pricecharting.com/e35077465088c8bb8ad5a777035e378528fd0fe8924a2fb8c92871edc1f85ec2/1600.jpg"
1064 + ]
1065 + }
1066 + },
1067 + "expect": {
1068 + "minCount": 1,
1069 + "kinds": [
1070 + "catalog_item",
1071 + "price_observation",
1072 + "sale"
1073 + ]
1074 + },
1075 + "note": "captured live from https://www.pricecharting.com/game/lego-star-wars/cloud-city-10123",
1076 + "capturedAt": "2026-09-07T04:33:30.167Z"
1077 +}
\ No newline at end of file
added data/fixtures/pricecharting/nintendo-64__conker's-bad-fur-day.json +1772 −0
@@ -0,0 +1,1772 @@
1 +{
2 + "raw": {
3 + "url": "https://www.pricecharting.com/game/nintendo-64/conker's-bad-fur-day",
4 + "externalId": "3732",
5 + "kind": "catalog_item",
6 + "engine": "api",
7 + "fetchedAt": "2026-09-07T04:33:26.089Z",
8 + "payload": {
9 + "kind": "product",
10 + "url": "https://www.pricecharting.com/game/nintendo-64/conker's-bad-fur-day",
11 + "productId": "3732",
12 + "consoleUri": "nintendo-64",
13 + "consoleName": "Nintendo 64",
14 + "title": "Conker's Bad Fur Day",
15 + "flags": {
16 + "isComic": false,
17 + "isLegoSet": false,
18 + "isFunkoPop": false,
19 + "isCard": false,
20 + "isCoin": false,
21 + "isSystem": false
22 + },
23 + "columnLabels": [
24 + "Loose Price",
25 + "Complete Price",
26 + "New Price",
27 + "Graded Price",
28 + "Box Only Price",
29 + "Manual Only Price",
30 + "Graded",
31 + "Box Only",
32 + "Manual Only"
33 + ],
34 + "prices": [
35 + {
36 + "key": "used_price",
37 + "value": 160.5,
38 + "raw": "$160.50"
39 + },
40 + {
41 + "key": "complete_price",
42 + "value": 398.98,
43 + "raw": "$398.98"
44 + },
45 + {
46 + "key": "new_price",
47 + "value": 798,
48 + "raw": "$798.00"
49 + },
50 + {
51 + "key": "graded_price",
52 + "value": 1128.04,
53 + "raw": "$1,128.04"
54 + },
55 + {
56 + "key": "box_only_price",
57 + "value": 141.34,
58 + "raw": "$141.34"
59 + },
60 + {
61 + "key": "manual_only_price",
62 + "value": 40,
63 + "raw": "$40.00"
64 + }
65 + ],
66 + "sales": [
67 + {
68 + "tab": "used",
69 + "date": "2026-09-05",
70 + "title": "Conker's Bad Fur Day (Nintendo 64 N64) Cartridge Only w/ Rental Store Stickers",
71 + "price": 135,
72 + "ebayId": "257689585095",
73 + "listedPrice": null
74 + },
75 + {
76 + "tab": "used",
77 + "date": "2026-09-04",
78 + "title": "Conker's Bad Fur Day Nintendo 64 Tested Working In Great Condition N64 2001",
79 + "price": 160.5,
80 + "ebayId": "227494527631",
81 + "listedPrice": null
82 + },
83 + {
84 + "tab": "used",
85 + "date": "2026-09-03",
86 + "title": "Conker's Bad Fur Day - Nintendo 64 Cartridge Only",
87 + "price": 162.5,
88 + "ebayId": "298619569044",
89 + "listedPrice": null
90 + },
91 + {
92 + "tab": "used",
93 + "date": "2026-09-02",
94 + "title": "Conkers Bad Fur Day (Nintendo 64, 2001) N64 Authentic Tested Working",
95 + "price": 169.99,
96 + "ebayId": "398345570615",
97 + "listedPrice": null
98 + },
99 + {
100 + "tab": "used",
101 + "date": "2026-09-02",
102 + "title": "Conker's Bad Fur Day N64 (Nintendo 64, 2001) cartridge only",
103 + "price": 75,
104 + "ebayId": "820076442117",
105 + "listedPrice": null
106 + },
107 + {
108 + "tab": "used",
109 + "date": "2026-09-01",
110 + "title": "AUTHENTIC! Conker's Bad Fur Day - GAME ONLY - NINTENDO 64 - 829a",
111 + "price": 161.99,
112 + "ebayId": "188859018536",
113 + "listedPrice": null
114 + },
115 + {
116 + "tab": "used",
117 + "date": "2026-09-01",
118 + "title": "Conker’s Bad Fur Day N64 Nintendo 64 Authentic OEM Cartridge Only - Tested",
119 + "price": 190.7,
120 + "ebayId": "336761529696",
121 + "listedPrice": null
122 + },
123 + {
124 + "tab": "used",
125 + "date": "2026-09-01",
126 + "title": "Conker’s Bad Fur Day (Nintendo 64, 2001) AUTHENTIC TESTED NICE! N64",
127 + "price": 189.95,
128 + "ebayId": "327316474916",
129 + "listedPrice": null
130 + },
131 + {
132 + "tab": "used",
133 + "date": "2026-09-01",
134 + "title": "Nintendo 64 N64 Conker's Bad Fur Day Cartridge and Manual Authentic RARE Tested",
135 + "price": 199.95,
136 + "ebayId": "278316750564",
137 + "listedPrice": null
138 + },
139 + {
140 + "tab": "used",
141 + "date": "2026-08-31",
142 + "title": "Conker's Bad Fur Day (Nintendo 64, 2001) Authentic & Tested Fast Shipping!",
143 + "price": 155,
144 + "ebayId": "137682385426",
145 + "listedPrice": null
146 + },
147 + {
148 + "tab": "used",
149 + "date": "2026-08-31",
150 + "title": "Conkers Bad Fur Day (Nintendo 64, 2001) N64 Authentic Tested Working",
151 + "price": 155,
152 + "ebayId": "820062774904",
153 + "listedPrice": null
154 + },
155 + {
156 + "tab": "used",
157 + "date": "2026-08-31",
158 + "title": "Conker's Bad Fur Day - Nintendo 64 (N64), Tested, Works, Authentic",
159 + "price": 140,
160 + "ebayId": "128052879234",
161 + "listedPrice": null
162 + },
163 + {
164 + "tab": "used",
165 + "date": "2026-08-30",
166 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Cartridge",
167 + "price": 177.5,
168 + "ebayId": "820055456930",
169 + "listedPrice": null
170 + },
171 + {
172 + "tab": "used",
173 + "date": "2026-08-30",
174 + "title": "Conker's Bad Fur Day - Nintendo 64 N64 Genuine Cartridge ONLY",
175 + "price": 182.5,
176 + "ebayId": "318769368989",
177 + "listedPrice": null
178 + },
179 + {
180 + "tab": "used",
181 + "date": "2026-08-29",
182 + "title": "Conker's Bad Fur Day - Nintendo 64 (N64)",
183 + "price": 94.5,
184 + "ebayId": "820033851386",
185 + "listedPrice": null
186 + },
187 + {
188 + "tab": "used",
189 + "date": "2026-08-28",
190 + "title": "Conker's Bad Fur Day - Nintendo 64 (Cartridge Only)",
191 + "price": 150,
192 + "ebayId": "147530395441",
193 + "listedPrice": null
194 + },
195 + {
196 + "tab": "used",
197 + "date": "2026-08-26",
198 + "title": "Conker’s Bad Fur Day Nintendo 64 N64 Authentic Original Rare Tested Excellent",
199 + "price": 180.45,
200 + "ebayId": "188797330651",
201 + "listedPrice": null
202 + },
203 + {
204 + "tab": "used",
205 + "date": "2026-08-26",
206 + "title": "Nintendo 64 N64 Conker's Bad Fur Day Cartridge and Manual Authentic Tested Rare",
207 + "price": 199,
208 + "ebayId": "278305714552",
209 + "listedPrice": null
210 + },
211 + {
212 + "tab": "used",
213 + "date": "2026-08-26",
214 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Nintendo M Mature NTSC-U/C US/CA",
215 + "price": 100,
216 + "ebayId": "128044445740",
217 + "listedPrice": null
218 + },
219 + {
220 + "tab": "used",
221 + "date": "2026-08-25",
222 + "title": "Rare Conker's Bad Fur Day for Nintendo 64 N64 - Cartridge Only, M, NTSC-U/C",
223 + "price": 152.98,
224 + "ebayId": "358823064190",
225 + "listedPrice": null
226 + },
227 + {
228 + "tab": "used",
229 + "date": "2026-08-24",
230 + "title": "Conker's Bad Fur Day (Nintendo 64, 2001) Cleaned / Tested / Authentic - N64",
231 + "price": 187.64,
232 + "ebayId": "237025795164",
233 + "listedPrice": null
234 + },
235 + {
236 + "tab": "used",
237 + "date": "2026-08-24",
238 + "title": "Conker’s Bad Fur Day Nintendo 64 N64 Authentic OEM Cartridge Tested Working",
239 + "price": 189.99,
240 + "ebayId": "206511100519",
241 + "listedPrice": null
242 + },
243 + {
244 + "tab": "used",
245 + "date": "2026-08-23",
246 + "title": "Conker's Bad Fur Day N64 Game Pak Cartridge TESTED AUTHENTIC CLEANED",
247 + "price": 200,
248 + "ebayId": "147489779490",
249 + "listedPrice": null
250 + },
251 + {
252 + "tab": "used",
253 + "date": "2026-08-23",
254 + "title": "Conker’s Bad Fur Day N64 Nintendo 64 AUTHENTIC💯 CLEANED & TESTED Near Mint💎",
255 + "price": 187.99,
256 + "ebayId": "227484546404",
257 + "listedPrice": null
258 + },
259 + {
260 + "tab": "used",
261 + "date": "2026-08-23",
262 + "title": "Conkers bad fur day n64 authentic. Cartridge only",
263 + "price": 165,
264 + "ebayId": "318768596498",
265 + "listedPrice": null
266 + },
267 + {
268 + "tab": "used",
269 + "date": "2026-08-23",
270 + "title": "Conker's Bad Fur Day (Nintendo 64, 2001) Authentic Tested And Working",
271 + "price": 189.99,
272 + "ebayId": "117370480652",
273 + "listedPrice": null
274 + },
275 + {
276 + "tab": "used",
277 + "date": "2026-08-23",
278 + "title": "Conker's Bad Fur Day (Nintendo 64, 2001) Cleaned / Tested / Authentic - N64",
279 + "price": 189.64,
280 + "ebayId": "237021350343",
281 + "listedPrice": null
282 + },
283 + {
284 + "tab": "used",
285 + "date": "2026-08-22",
286 + "title": "Conker’s Bad Fur Day Nintendo 64 N64 Authentic Tested Working Cart Only",
287 + "price": 160,
288 + "ebayId": "398312127760",
289 + "listedPrice": null
290 + },
291 + {
292 + "tab": "used",
293 + "date": "2026-08-21",
294 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Cartridge Only",
295 + "price": 155.49,
296 + "ebayId": "158189132032",
297 + "listedPrice": null
298 + },
299 + {
300 + "tab": "used",
301 + "date": "2026-08-20",
302 + "title": "Conker's Bad Fur Day - Nintendo 64 (N64) As Pictured! Authentic Tested works!",
303 + "price": 164.99,
304 + "ebayId": "336751003130",
305 + "listedPrice": null
306 + },
307 + {
308 + "tab": "cib",
309 + "date": "2026-09-03",
310 + "title": "AUTHENTIC! Conker's Bad Fur Day - COMPLETE BOX - NINTENDO 64 - 91a",
311 + "price": 359.09,
312 + "ebayId": "366641918737",
313 + "listedPrice": null
314 + },
315 + {
316 + "tab": "cib",
317 + "date": "2026-09-02",
318 + "title": "Conker's Bad Fur Day N64 Authentic W/2001 BlockBuster Stickers CIB",
319 + "price": 295.95,
320 + "ebayId": "398291426383",
321 + "listedPrice": null
322 + },
323 + {
324 + "tab": "cib",
325 + "date": "2026-08-30",
326 + "title": "N64 Conker's Bad Fur Day 2001 Complete In Box Authentic CIB",
327 + "price": 455,
328 + "ebayId": "820038306968",
329 + "listedPrice": null
330 + },
331 + {
332 + "tab": "cib",
333 + "date": "2026-08-30",
334 + "title": "Conker's Bad Fur Day (Nintendo 64) Complete CIB Authentic w/ inserts! Excellent",
335 + "price": 370,
336 + "ebayId": "206524031739",
337 + "listedPrice": null
338 + },
339 + {
340 + "tab": "cib",
341 + "date": "2026-08-30",
342 + "title": "Conker's Bad Fur Day (Nintendo 64) Complete CIB Authentic w/ inserts! Excellent",
343 + "price": 370,
344 + "ebayId": "158238055176",
345 + "listedPrice": null
346 + },
347 + {
348 + "tab": "cib",
349 + "date": "2026-08-30",
350 + "title": "Nintendo 64 (N64) Conker’s Bad Fur Day, Genuine, Mint CIB, With Original Shrink",
351 + "price": 670,
352 + "ebayId": "278304026913",
353 + "listedPrice": null
354 + },
355 + {
356 + "tab": "cib",
357 + "date": "2026-08-27",
358 + "title": "Nintendo N64 Conker's Bad Fur Day Action Adventure M NTSC-U/C 2001 Box Manual",
359 + "price": 375,
360 + "ebayId": "117376606247",
361 + "listedPrice": null
362 + },
363 + {
364 + "tab": "cib",
365 + "date": "2026-08-25",
366 + "title": "Conker's Bad Fur Day (64, 2001)",
367 + "price": 450,
368 + "ebayId": "403265304441",
369 + "listedPrice": null
370 + },
371 + {
372 + "tab": "cib",
373 + "date": "2026-08-24",
374 + "title": "Conker's Bad Fur Day (Nintendo 64 N64) Tested CIB",
375 + "price": 440.31,
376 + "ebayId": "398305054981",
377 + "listedPrice": null
378 + },
379 + {
380 + "tab": "cib",
381 + "date": "2026-08-24",
382 + "title": "CONKER'S BAD FUR DAY Complete CIB Nintendo 64 Authentic Tested And Working",
383 + "price": 360.18,
384 + "ebayId": "336744143695",
385 + "listedPrice": null
386 + },
387 + {
388 + "tab": "cib",
389 + "date": "2026-08-24",
390 + "title": "Conker's Bad Fur Day - Nintendo 64 (N64)",
391 + "price": 299,
392 + "ebayId": "336758726355",
393 + "listedPrice": null
394 + },
395 + {
396 + "tab": "cib",
397 + "date": "2026-08-24",
398 + "title": "Conker's Bad Fur Day (Nintendo 64, 2001)",
399 + "price": 221.66,
400 + "ebayId": "188806527977",
401 + "listedPrice": null
402 + },
403 + {
404 + "tab": "cib",
405 + "date": "2026-08-23",
406 + "title": "Conkers Bad Fur Day Nintendo 64 Tested Authentic",
407 + "price": 300,
408 + "ebayId": "178414433831",
409 + "listedPrice": null
410 + },
411 + {
412 + "tab": "cib",
413 + "date": "2026-08-22",
414 + "title": "Conker's Bad Fur Day Nintendo 64 w/ Box & Manual (Complete in Box)",
415 + "price": 460.55,
416 + "ebayId": "137622416380",
417 + "listedPrice": null
418 + },
419 + {
420 + "tab": "cib",
421 + "date": "2026-08-21",
422 + "title": "N64 Conker's Bad Fur Day 2001 Complete In Box Authentic Tested Working One Owner",
423 + "price": 500,
424 + "ebayId": "227456485012",
425 + "listedPrice": null
426 + },
427 + {
428 + "tab": "cib",
429 + "date": "2026-08-21",
430 + "title": "N64 Conker's Bad Fur Day 2001 Complete In Box Authentic Tested Working",
431 + "price": 369.99,
432 + "ebayId": "158210974454",
433 + "listedPrice": null
434 + },
435 + {
436 + "tab": "cib",
437 + "date": "2026-08-19",
438 + "title": "Conker's Bad Fur Day (Nintendo 64, 2001) N64 Authentic Complete CIB w/ inserts",
439 + "price": 375,
440 + "ebayId": "336679065893",
441 + "listedPrice": null
442 + },
443 + {
444 + "tab": "cib",
445 + "date": "2026-08-19",
446 + "title": "Conker's Bad Fur Day - Nintendo 64 (N64) COMPLETE - RENTAL COPY",
447 + "price": 380,
448 + "ebayId": "366609199716",
449 + "listedPrice": null
450 + },
451 + {
452 + "tab": "cib",
453 + "date": "2026-08-15",
454 + "title": "Conker’s Bad Fur Day Nintendo 64 N64 Game Complete Excellent",
455 + "price": 599.99,
456 + "ebayId": "236896887361",
457 + "listedPrice": null
458 + },
459 + {
460 + "tab": "cib",
461 + "date": "2026-08-13",
462 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Authentic CIB Complete Near-Mint",
463 + "price": 499,
464 + "ebayId": "168571174802",
465 + "listedPrice": null
466 + },
467 + {
468 + "tab": "cib",
469 + "date": "2026-08-13",
470 + "title": "Conker's Bad Fur Day (Nintendo 64 N64) Authentic - CIB W/ Insert - Very Clean!",
471 + "price": 504.5,
472 + "ebayId": "147233471667",
473 + "listedPrice": null
474 + },
475 + {
476 + "tab": "cib",
477 + "date": "2026-08-11",
478 + "title": "Conker's Bad Fur Day CIB Complete In Box Rare Nintendo 64 N64 With Manuals Works",
479 + "price": 650,
480 + "ebayId": "298549328528",
481 + "listedPrice": null
482 + },
483 + {
484 + "tab": "cib",
485 + "date": "2026-08-11",
486 + "title": "Conker's Bad Fur Day (Nintendo 64) - Complete in box - Slight box wear",
487 + "price": 500,
488 + "ebayId": "287516638147",
489 + "listedPrice": null
490 + },
491 + {
492 + "tab": "cib",
493 + "date": "2026-08-10",
494 + "title": "Conker's Bad Fur Day (Nintendo 64, 2001) Tested, CIB",
495 + "price": 626.97,
496 + "ebayId": "307104774080",
497 + "listedPrice": null
498 + },
499 + {
500 + "tab": "cib",
501 + "date": "2026-08-09",
502 + "title": "Conkers Bad Fur Day (Nintendo 64 N64)➡️CIB - AUTHENTIC - Tested🔥CLEAN COPY",
503 + "price": 648.65,
504 + "ebayId": "358859319509",
505 + "listedPrice": null
506 + },
507 + {
508 + "tab": "cib",
509 + "date": "2026-08-09",
510 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Authentic Complete With Original Packaging",
511 + "price": 500,
512 + "ebayId": "398045349669",
513 + "listedPrice": null
514 + },
515 + {
516 + "tab": "cib",
517 + "date": "2026-08-08",
518 + "title": "Conker's Bad Fur Day N64 CIB",
519 + "price": 305,
520 + "ebayId": "327290109157",
521 + "listedPrice": null
522 + },
523 + {
524 + "tab": "cib",
525 + "date": "2026-08-08",
526 + "title": "Conker's Bad Fur Day - Nintendo 64 N64 Complete In Box CIB Authentic w/ Manual",
527 + "price": 399.99,
528 + "ebayId": "188729359335",
529 + "listedPrice": null
530 + },
531 + {
532 + "tab": "cib",
533 + "date": "2026-08-07",
534 + "title": "Conker’s Bad Fur Day N64 CIB Complete Box Manual Authentic Tested Nintendo",
535 + "price": 397.97,
536 + "ebayId": "147456592538",
537 + "listedPrice": null
538 + },
539 + {
540 + "tab": "cib",
541 + "date": "2026-08-04",
542 + "title": "Conker's Bad Fur Day Nintendo 64 Authentic Tested Cartridge, Manual & Box Tested",
543 + "price": 325,
544 + "ebayId": "178364542099",
545 + "listedPrice": null
546 + },
547 + {
548 + "tab": "new",
549 + "date": "2026-08-23",
550 + "title": "Conker's Bad Fur Day N64 New Sealed Graded 8.5 A+ by Wata",
551 + "price": 798,
552 + "ebayId": "147513485109",
553 + "listedPrice": null
554 + },
555 + {
556 + "tab": "new",
557 + "date": "2026-08-19",
558 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Brand New Factory Sealed Box Wear",
559 + "price": 899.99,
560 + "ebayId": "358804980842",
561 + "listedPrice": null
562 + },
563 + {
564 + "tab": "new",
565 + "date": "2026-08-18",
566 + "title": "Nintendo 64 Conker’s Bad Fur Day SEALED (NEW)",
567 + "price": 750,
568 + "ebayId": "267715313258",
569 + "listedPrice": null
570 + },
571 + {
572 + "tab": "new",
573 + "date": "2026-07-26",
574 + "title": "(SEALED) Nintendo 64 Conker's Bad Fur Day 2001 - Mint condition",
575 + "price": 1000,
576 + "ebayId": "236964934391",
577 + "listedPrice": null
578 + },
579 + {
580 + "tab": "new",
581 + "date": "2026-07-19",
582 + "title": "Conker's Bad Fur Day Brand New Factory Sealed CIB (Nintendo N64 Game) Authentic",
583 + "price": 1426.32,
584 + "ebayId": "298213477438",
585 + "listedPrice": null
586 + },
587 + {
588 + "tab": "new",
589 + "date": "2026-07-19",
590 + "title": "SEALED Conker's Bad Fur Day Nintendo 64 N64 Brand New Factory Sealed",
591 + "price": 436.88,
592 + "ebayId": "137529713748",
593 + "listedPrice": null
594 + },
595 + {
596 + "tab": "new",
597 + "date": "2026-07-13",
598 + "title": "SEALED Conker's Bad Fur Day Nintendo 64 N64 Rareware M Rated NTSC-U/C Dolby",
599 + "price": 700,
600 + "ebayId": "800307280307",
601 + "listedPrice": null
602 + },
603 + {
604 + "tab": "new",
605 + "date": "2026-05-14",
606 + "title": "Nintendo Conker's Bad Fur Day N64 Cartridge M Mature NTSC-U/C 2001 Brand new",
607 + "price": 250,
608 + "ebayId": "358547871299",
609 + "listedPrice": null
610 + },
611 + {
612 + "tab": "new",
613 + "date": "2026-04-28",
614 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Brand New Factory Sealed",
615 + "price": 710,
616 + "ebayId": "127795346104",
617 + "listedPrice": null
618 + },
619 + {
620 + "tab": "new",
621 + "date": "2026-04-20",
622 + "title": "Conker's Bad Fur Day (Nintendo 64, 2001) N64 WATA 9.0A+ SEALED",
623 + "price": 1299.99,
624 + "ebayId": "145669500419",
625 + "listedPrice": null
626 + },
627 + {
628 + "tab": "new",
629 + "date": "2026-04-02",
630 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Brand New Factory Sealed",
631 + "price": 705.46,
632 + "ebayId": "157584341967",
633 + "listedPrice": null
634 + },
635 + {
636 + "tab": "new",
637 + "date": "2026-02-19",
638 + "title": "New! Conker's Bad Fur Day (Nintendo 64 N64) Factory Sealed!",
639 + "price": 749.95,
640 + "ebayId": "205902415011",
641 + "listedPrice": null
642 + },
643 + {
644 + "tab": "new",
645 + "date": "2026-02-05",
646 + "title": "Conker’s Bad Fur Day Nintendo 64 Authentic Tested & Working",
647 + "price": 424.99,
648 + "ebayId": "206049927014",
649 + "listedPrice": null
650 + },
651 + {
652 + "tab": "new",
653 + "date": "2026-02-04",
654 + "title": "Conker’s Bad Fur Day Nintendo 64 N64 FACTORY SEALED Box Damage",
655 + "price": 299.99,
656 + "ebayId": "187989521467",
657 + "listedPrice": null
658 + },
659 + {
660 + "tab": "new",
661 + "date": "2026-01-29",
662 + "title": "Conker's Bad Fur Day (Nintendo 64 N64) NEW in Box Factory Sealed",
663 + "price": 699.99,
664 + "ebayId": "257317986953",
665 + "listedPrice": null
666 + },
667 + {
668 + "tab": "new",
669 + "date": "2026-01-14",
670 + "title": "Nintendo 64 conkers bad fur day sealed NIB",
671 + "price": 600,
672 + "ebayId": "277625704463",
673 + "listedPrice": null
674 + },
675 + {
676 + "tab": "new",
677 + "date": "2026-01-11",
678 + "title": "Conker’s Bad Fur Day – Nintendo 64 (N64) | Brand New | Factory Sealed | CIB",
679 + "price": 355,
680 + "ebayId": "198002347056",
681 + "listedPrice": null
682 + },
683 + {
684 + "tab": "new",
685 + "date": "2025-12-08",
686 + "title": "Conquer’s Bad Fur Day CIB ** BRAND NEW ** Nintendo 64 N64 Complete In Box",
687 + "price": 382.05,
688 + "ebayId": "205885864146",
689 + "listedPrice": null
690 + },
691 + {
692 + "tab": "new",
693 + "date": "2025-12-01",
694 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Brand New Factory Sealed",
695 + "price": 655,
696 + "ebayId": "317541958312",
697 + "listedPrice": null
698 + },
699 + {
700 + "tab": "new",
701 + "date": "2025-10-16",
702 + "title": "Sealed N64 Video Game Conker's Bad Fur Day Nintendo 64 Rareware",
703 + "price": 366,
704 + "ebayId": "267431006779",
705 + "listedPrice": null
706 + },
707 + {
708 + "tab": "new",
709 + "date": "2025-06-16",
710 + "title": "Conkers Bad Fur Day Nintendo Nintendo 64 N64 NTSC-U Original Packaging CIB NIB Sealed",
711 + "price": 1154.9,
712 + "ebayId": "226805679225",
713 + "listedPrice": null
714 + },
715 + {
716 + "tab": "new",
717 + "date": "2025-04-23",
718 + "title": "Conker's Bad Fur Day (Nintendo 64) Factory Sealed",
719 + "price": 600,
720 + "ebayId": "286514765390",
721 + "listedPrice": null
722 + },
723 + {
724 + "tab": "new",
725 + "date": "2025-04-20",
726 + "title": "Conker's Bad Fur Day (Nintendo 64, 2001) Factory Sealed - Brand New W/Case",
727 + "price": 600,
728 + "ebayId": "326525769131",
729 + "listedPrice": null
730 + },
731 + {
732 + "tab": "new",
733 + "date": "2025-03-23",
734 + "title": "Conker's Bad Fur Day Nintendo 64 Game FACTORY SEALED Box Damage",
735 + "price": 376.33,
736 + "ebayId": "286334844015",
737 + "listedPrice": null
738 + },
739 + {
740 + "tab": "new",
741 + "date": "2025-02-27",
742 + "title": "Conker's Bad Fur Day (Nintendo 64, 2001) Brand New",
743 + "price": 661.1,
744 + "ebayId": "167278349004",
745 + "listedPrice": null
746 + },
747 + {
748 + "tab": "new",
749 + "date": "2025-02-25",
750 + "title": "Conker's Bad Fur Day - Nintendo 64 N64 BRAND NEW SEALED 🔥🔥",
751 + "price": 499.99,
752 + "ebayId": "235794390319",
753 + "listedPrice": null
754 + },
755 + {
756 + "tab": "new",
757 + "date": "2025-02-22",
758 + "title": "Conker's Bad Fur Day - Nintendo 64 (N64) *UN-OPENED*",
759 + "price": 640,
760 + "ebayId": "396214501514",
761 + "listedPrice": null
762 + },
763 + {
764 + "tab": "new",
765 + "date": "2025-02-07",
766 + "title": "Conker's Bad Fur Day N64 (BRAND NEW SEALED)",
767 + "price": 301.44,
768 + "ebayId": "156665382629",
769 + "listedPrice": null
770 + },
771 + {
772 + "tab": "new",
773 + "date": "2025-02-05",
774 + "title": "Conker's Bad Fur Day - Nintendo 64 (N64) SEALED *see pictures*",
775 + "price": 351.5,
776 + "ebayId": "176813144649",
777 + "listedPrice": null
778 + },
779 + {
780 + "tab": "new",
781 + "date": "2025-02-04",
782 + "title": "Conker's Bad Fur Day (Nintendo 64 N64) NEW in Box Factory Sealed",
783 + "price": 675,
784 + "ebayId": "286300333110",
785 + "listedPrice": null
786 + },
787 + {
788 + "tab": "graded",
789 + "date": "2026-08-19",
790 + "title": "Conker's Bad Fur Day Nintendo 64 N64 New Sealed GRADED WATA 8.5 A+",
791 + "price": 1000,
792 + "ebayId": "377432583394",
793 + "listedPrice": null
794 + },
795 + {
796 + "tab": "graded",
797 + "date": "2026-08-19",
798 + "title": "Conker's Bad Fur Day Nintendo 64 PSA 8.5 A++ Sealed N64 Freshly Graded",
799 + "price": 1290,
800 + "ebayId": "117334887975",
801 + "listedPrice": null
802 + },
803 + {
804 + "tab": "graded",
805 + "date": "2026-08-17",
806 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Factory Sealed WATA 8.5 A",
807 + "price": 1049.99,
808 + "ebayId": "407044150173",
809 + "listedPrice": null
810 + },
811 + {
812 + "tab": "graded",
813 + "date": "2026-08-06",
814 + "title": "💎 Conker's Bad Fur Day N64 PSA 8.0 A+ Sealed V-Overlap Rare 2001 / NOT WATA PSA",
815 + "price": 699.99,
816 + "ebayId": "158153675958",
817 + "listedPrice": null
818 + },
819 + {
820 + "tab": "graded",
821 + "date": "2026-08-04",
822 + "title": "💎 Conker's Bad Fur Day Nintendo 64 N64 New Sealed CGC Graded 9.2 A++ / NOT PSA",
823 + "price": 1299.99,
824 + "ebayId": "158153666671",
825 + "listedPrice": null
826 + },
827 + {
828 + "tab": "graded",
829 + "date": "2026-07-16",
830 + "title": "Conker’s Bad Fur Day WATA 8.0 A++ | Factory Sealed | Rare N64 |",
831 + "price": 628.88,
832 + "ebayId": "197886338716",
833 + "listedPrice": null
834 + },
835 + {
836 + "tab": "graded",
837 + "date": "2026-07-01",
838 + "title": "Conker's Bad Fur Day - Nintendo 64 (N64) Factory Sealed - GRADED WATA PSA 9.2 A+",
839 + "price": 2800,
840 + "ebayId": "198446428574",
841 + "listedPrice": null
842 + },
843 + {
844 + "tab": "graded",
845 + "date": "2026-06-25",
846 + "title": "Conker's Bad Fur Day Nintendo 64 N64 New Sealed CGC Graded 9.2 A++",
847 + "price": 1499.99,
848 + "ebayId": "158002387162",
849 + "listedPrice": null
850 + },
851 + {
852 + "tab": "graded",
853 + "date": "2026-06-21",
854 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Factory Sealed WATA 8.5 A",
855 + "price": 765,
856 + "ebayId": "307008092353",
857 + "listedPrice": null
858 + },
859 + {
860 + "tab": "graded",
861 + "date": "2026-06-18",
862 + "title": "2001 N64 Nintendo 64 Conker's Bad Fur Day (USA) Sealed Video Game - Made in Japan - WATA 7.0/A",
863 + "price": 360,
864 + "ebayId": null,
865 + "listedPrice": null
866 + },
867 + {
868 + "tab": "graded",
869 + "date": "2026-06-17",
870 + "title": "Conker's Bad Fur Day New Nintendo 64 N64 2001 Factory Sealed WATA Mint 9.4 A++",
871 + "price": 2399.99,
872 + "ebayId": "375216402820",
873 + "listedPrice": null
874 + },
875 + {
876 + "tab": "graded",
877 + "date": "2026-06-12",
878 + "title": "Conker's Bad Fur Day Nintendo 64 N64 New Sealed GRADED WATA 8.5 A+",
879 + "price": 1458.72,
880 + "ebayId": "266022041512",
881 + "listedPrice": null
882 + },
883 + {
884 + "tab": "graded",
885 + "date": "2026-05-14",
886 + "title": "Conker's Bad Fur Day - Wata 7.5 A++ Sealed, N64 Rare 2001 USA....",
887 + "price": 575,
888 + "ebayId": null,
889 + "listedPrice": null
890 + },
891 + {
892 + "tab": "graded",
893 + "date": "2026-05-10",
894 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Sealed PSA 8.0 A+ Graded NOT WATA Rareware",
895 + "price": 800,
896 + "ebayId": "157841328848",
897 + "listedPrice": null
898 + },
899 + {
900 + "tab": "graded",
901 + "date": "2026-04-28",
902 + "title": "2001 N64 Conker's Bad Fur Day Graded WATA 9.0 A Sealed - NC17 Conker BRAND NEW",
903 + "price": 995,
904 + "ebayId": "136284655646",
905 + "listedPrice": null
906 + },
907 + {
908 + "tab": "graded",
909 + "date": "2026-04-20",
910 + "title": "Conker's Bad Fur Day New N64 2001 Factory Sealed WATA Mint 9.4 A++",
911 + "price": 2200,
912 + "ebayId": "377127214232",
913 + "listedPrice": null
914 + },
915 + {
916 + "tab": "graded",
917 + "date": "2026-04-14",
918 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Graded PSA WATA 9.0 A+ NEW Factory Sealed",
919 + "price": 1125,
920 + "ebayId": "168292031295",
921 + "listedPrice": null
922 + },
923 + {
924 + "tab": "graded",
925 + "date": "2026-04-06",
926 + "title": "Conker's Bad Fur Day (Nintendo 64 N64) CGC 9.4 A++ NEW Sealed",
927 + "price": 1699.99,
928 + "ebayId": "287251253964",
929 + "listedPrice": null
930 + },
931 + {
932 + "tab": "graded",
933 + "date": "2026-03-31",
934 + "title": "Conker’s Bad Fur Day WATA 8.0 B+ | Factory Sealed | Rare N64 | Nintendo 64",
935 + "price": 1500,
936 + "ebayId": "336509677342",
937 + "listedPrice": null
938 + },
939 + {
940 + "tab": "graded",
941 + "date": "2026-03-31",
942 + "title": "Conker’s Bad Fur Day WATA 8.0 B+ | Factory Sealed | Rare N64 | Nintendo 64",
943 + "price": 1500,
944 + "ebayId": "336492665689",
945 + "listedPrice": null
946 + },
947 + {
948 + "tab": "graded",
949 + "date": "2026-03-14",
950 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Factory Sealed New VGA 95 Graded Rareware",
951 + "price": 7499.99,
952 + "ebayId": "157703854905",
953 + "listedPrice": null
954 + },
955 + {
956 + "tab": "graded",
957 + "date": "2026-02-26",
958 + "title": "2001 N64 Nintendo 64 Conker's Bad Fur Day (USA) Sealed Video Game - Made In Japan, 100% Fiber (USA Code), Oval SOQ - WATA 9.4/A++",
959 + "price": 1391,
960 + "ebayId": null,
961 + "listedPrice": null
962 + },
963 + {
964 + "tab": "graded",
965 + "date": "2026-02-10",
966 + "title": "Conker's Bad Fur Day (Nintendo 64, N64 2001) Brand New Sealed CGC Graded 9.4 A++",
967 + "price": 2508.82,
968 + "ebayId": "127647723225",
969 + "listedPrice": null
970 + },
971 + {
972 + "tab": "graded",
973 + "date": "2026-02-09",
974 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Sealed Wata Graded 7.0 Seal A+ Free Ship",
975 + "price": 700,
976 + "ebayId": "366042936976",
977 + "listedPrice": null
978 + },
979 + {
980 + "tab": "graded",
981 + "date": "2026-02-02",
982 + "title": "Conker's Bad Fur Day N64 Wata Graded Sealed Nintendo",
983 + "price": 397,
984 + "ebayId": "117002321764",
985 + "listedPrice": null
986 + },
987 + {
988 + "tab": "graded",
989 + "date": "2026-01-19",
990 + "title": "Conker's Bad Fur Day - Wata 9.0 A+ Sealed, N64 Rare 2001 USA....",
991 + "price": 781,
992 + "ebayId": null,
993 + "listedPrice": null
994 + },
995 + {
996 + "tab": "graded",
997 + "date": "2026-01-13",
998 + "title": "Conker's Bad Fur Day (Nintendo 64 N64) Wata PSA 9.4 A+ Brand New Factory Sealed",
999 + "price": 1999.99,
1000 + "ebayId": "177760285146",
1001 + "listedPrice": null
1002 + },
1003 + {
1004 + "tab": "graded",
1005 + "date": "2026-01-13",
1006 + "title": "Conker’s Bad Fur Day (Nintendo 64) – WATA 9.6 A++ Sealed – USA 2001",
1007 + "price": 2999,
1008 + "ebayId": "147085797107",
1009 + "listedPrice": null
1010 + },
1011 + {
1012 + "tab": "graded",
1013 + "date": "2025-12-30",
1014 + "title": "2001 N64 Conker's Bad Fur Day Graded WATA 9.0 A+ Sealed - NC17 Conker BRAND NEW",
1015 + "price": 1999,
1016 + "ebayId": "336351529551",
1017 + "listedPrice": null
1018 + },
1019 + {
1020 + "tab": "graded",
1021 + "date": "2025-12-28",
1022 + "title": "Conker’s Bad Fur Day WATA 9.0 A+ | Factory Sealed | Rare N64 | NOT CGC VGA",
1023 + "price": 1026,
1024 + "ebayId": "157559208410",
1025 + "listedPrice": null
1026 + },
1027 + {
1028 + "tab": "box-only",
1029 + "date": "2026-09-04",
1030 + "title": "Nintendo 64 Conkers Bad Fur Day BOX Only",
1031 + "price": 117.5,
1032 + "ebayId": "318793535929",
1033 + "listedPrice": null
1034 + },
1035 + {
1036 + "tab": "box-only",
1037 + "date": "2026-07-02",
1038 + "title": "N64 Conker's Bad Fur Day Nintendo 64 Authentic Cart & NON-OEM BOX Only TESTED",
1039 + "price": 179.99,
1040 + "ebayId": "158012511258",
1041 + "listedPrice": null
1042 + },
1043 + {
1044 + "tab": "box-only",
1045 + "date": "2026-05-03",
1046 + "title": "Conkers Bad Fur Day N64 Nintendo 64 Box Only Authentic! MINT CONDITION RARE",
1047 + "price": 250,
1048 + "ebayId": "318243090752",
1049 + "listedPrice": null
1050 + },
1051 + {
1052 + "tab": "box-only",
1053 + "date": "2026-02-18",
1054 + "title": "Conkers Bad Fur Day N64 Box Only Read",
1055 + "price": 149.99,
1056 + "ebayId": "397625967771",
1057 + "listedPrice": null
1058 + },
1059 + {
1060 + "tab": "box-only",
1061 + "date": "2025-12-10",
1062 + "title": "Conker's Bad Fur Day (Nintendo 64, 2001) Box only - Authentic",
1063 + "price": 95,
1064 + "ebayId": "236495764707",
1065 + "listedPrice": null
1066 + },
1067 + {
1068 + "tab": "box-only",
1069 + "date": "2025-12-02",
1070 + "title": "Conker's Bad Fur Day Nintendo 64 2001 Box Only - NO GAME",
1071 + "price": 125.99,
1072 + "ebayId": "127525223719",
1073 + "listedPrice": null
1074 + },
1075 + {
1076 + "tab": "box-only",
1077 + "date": "2025-11-24",
1078 + "title": "Conker's Bad Fur Day (Nintendo 64, 2001) Box only - Authentic",
1079 + "price": 89,
1080 + "ebayId": "326879658458",
1081 + "listedPrice": null
1082 + },
1083 + {
1084 + "tab": "box-only",
1085 + "date": "2025-10-11",
1086 + "title": "Conker's Bad Fur Day (Nintendo 64 2001) BOX ONLY NO GAME INCLUDED authentic Orig",
1087 + "price": 69.99,
1088 + "ebayId": "365894495349",
1089 + "listedPrice": null
1090 + },
1091 + {
1092 + "tab": "box-only",
1093 + "date": "2025-09-28",
1094 + "title": "Conker's Bad Fur Day (Nintendo 64 2001) BOX ONLY NO GAME INCLUDED",
1095 + "price": 129.99,
1096 + "ebayId": "205731648292",
1097 + "listedPrice": null
1098 + },
1099 + {
1100 + "tab": "box-only",
1101 + "date": "2025-08-31",
1102 + "title": "Conker's Bad Fur Day (Nintendo 64, 2001) N64 [Box Only]",
1103 + "price": 159.99,
1104 + "ebayId": "136346432971",
1105 + "listedPrice": null
1106 + },
1107 + {
1108 + "tab": "box-only",
1109 + "date": "2025-07-05",
1110 + "title": "(No Game) Conker's Bad Fur Day Box Only w/Manual Authentic N64 Nintendo 64",
1111 + "price": 166.5,
1112 + "ebayId": "267282213059",
1113 + "listedPrice": null
1114 + },
1115 + {
1116 + "tab": "box-only",
1117 + "date": "2025-06-03",
1118 + "title": "Conker's Bad Fur Day Box Only w/Manual & Inserts Authentic N64 Nintendo 64, 2001",
1119 + "price": 170,
1120 + "ebayId": "297374149109",
1121 + "listedPrice": null
1122 + },
1123 + {
1124 + "tab": "box-only",
1125 + "date": "2025-05-29",
1126 + "title": "Conkers Bad Fur Day Box Only Authentic Nintendo 64 N64",
1127 + "price": 160,
1128 + "ebayId": "286589843580",
1129 + "listedPrice": null
1130 + },
1131 + {
1132 + "tab": "box-only",
1133 + "date": "2025-05-20",
1134 + "title": "Conkers Bad Fur Day N64 Box Only",
1135 + "price": 164.99,
1136 + "ebayId": "396629515194",
1137 + "listedPrice": null
1138 + },
1139 + {
1140 + "tab": "box-only",
1141 + "date": "2025-05-16",
1142 + "title": "Conkers Bad Fur Day Box Only Authentic Nintendo 64 N64 Some Inserts",
1143 + "price": 155,
1144 + "ebayId": "167517379390",
1145 + "listedPrice": null
1146 + },
1147 + {
1148 + "tab": "box-only",
1149 + "date": "2025-05-10",
1150 + "title": "Conkers Bad Fur Day Box Only Authentic Nintendo 64 N64",
1151 + "price": 145,
1152 + "ebayId": "286533600749",
1153 + "listedPrice": null
1154 + },
1155 + {
1156 + "tab": "box-only",
1157 + "date": "2025-04-24",
1158 + "title": "Conker's Bad Fur Day N64 Nintendo 64 Rare - Authentic - BOX ONLY - EXCELLENT",
1159 + "price": 137.06,
1160 + "ebayId": "297236023306",
1161 + "listedPrice": null
1162 + },
1163 + {
1164 + "tab": "box-only",
1165 + "date": "2025-04-17",
1166 + "title": "conkers bad fur day n64 box only",
1167 + "price": 30,
1168 + "ebayId": "356760509268",
1169 + "listedPrice": null
1170 + },
1171 + {
1172 + "tab": "box-only",
1173 + "date": "2025-04-02",
1174 + "title": "Conker's Bad Fur Day Authentic Box Only Nintendo 64 N64 ROUGH",
1175 + "price": 38,
1176 + "ebayId": "286438967084",
1177 + "listedPrice": null
1178 + },
1179 + {
1180 + "tab": "box-only",
1181 + "date": "2025-03-07",
1182 + "title": "Conker's Bad Fur Day BOX ONLY Original Authentic - N64 Nintendo 64",
1183 + "price": 135,
1184 + "ebayId": "286388606277",
1185 + "listedPrice": null
1186 + },
1187 + {
1188 + "tab": "box-only",
1189 + "date": "2024-12-09",
1190 + "title": "Conker's Bad Fur Day (Blockbuster Rental) (Nintendo 64) Authentic Box Only - N64",
1191 + "price": 103.5,
1192 + "ebayId": "226476482167",
1193 + "listedPrice": null
1194 + },
1195 + {
1196 + "tab": "box-only",
1197 + "date": "2024-09-23",
1198 + "title": "Conker's Bad Fur Day - Nintendo 64 (N64) Box Only",
1199 + "price": 38,
1200 + "ebayId": "387393891608",
1201 + "listedPrice": null
1202 + },
1203 + {
1204 + "tab": "box-only",
1205 + "date": "2024-09-11",
1206 + "title": "Conker's Bad Fur Day - Nintendo 64 (N64) Box Only",
1207 + "price": 50,
1208 + "ebayId": "387358390961",
1209 + "listedPrice": null
1210 + },
1211 + {
1212 + "tab": "box-only",
1213 + "date": "2024-08-13",
1214 + "title": "Original - conkers bad fur day n64 box only - So Rare !! 🔥🔥",
1215 + "price": 83,
1216 + "ebayId": "226280721594",
1217 + "listedPrice": null
1218 + },
1219 + {
1220 + "tab": "box-only",
1221 + "date": "2024-06-17",
1222 + "title": "Conkers Bad Fur Day Nintendo 64 Box Only",
1223 + "price": 105,
1224 + "ebayId": "226186197631",
1225 + "listedPrice": null
1226 + },
1227 + {
1228 + "tab": "box-only",
1229 + "date": "2024-03-07",
1230 + "title": "Conker's Bad Fur Day N64 BOX ONLY - Authentic - Very Good Condition - no game",
1231 + "price": 99.75,
1232 + "ebayId": "266702153968",
1233 + "listedPrice": null
1234 + },
1235 + {
1236 + "tab": "box-only",
1237 + "date": "2024-01-13",
1238 + "title": "AUTHENTIC BOX ONLY! Conker’s Bad Fur Day (Nintendo 64 N64) No Game! Official",
1239 + "price": 119.99,
1240 + "ebayId": "186250096905",
1241 + "listedPrice": null
1242 + },
1243 + {
1244 + "tab": "box-only",
1245 + "date": "2023-11-17",
1246 + "title": "Nintendo 64 N64 Conker’s Bad Fur Day Original Box Only *Authentic* *No Game*",
1247 + "price": 214.95,
1248 + "ebayId": "325875337941",
1249 + "listedPrice": null
1250 + },
1251 + {
1252 + "tab": "box-only",
1253 + "date": "2023-11-15",
1254 + "title": "Conker's Bad Fur Day BOX ONLY W/Protector Case - Nintendo 64 (Rare, 2001) N64",
1255 + "price": 85,
1256 + "ebayId": "235291340557",
1257 + "listedPrice": null
1258 + },
1259 + {
1260 + "tab": "box-only",
1261 + "date": "2023-09-06",
1262 + "title": "Nintendo 64 Conker's Bad Fur Day- BOX ONLY (Rare, 2001) N64",
1263 + "price": 99.95,
1264 + "ebayId": "394856587806",
1265 + "listedPrice": null
1266 + },
1267 + {
1268 + "tab": "manual-only",
1269 + "date": "2026-08-05",
1270 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Manual Instruction Booklet Only Authentic",
1271 + "price": 35,
1272 + "ebayId": "158137455346",
1273 + "listedPrice": null
1274 + },
1275 + {
1276 + "tab": "manual-only",
1277 + "date": "2026-04-01",
1278 + "title": "Conker's Bad Fur Day - Nintendo 64 N64 - Manual Only - MINTY",
1279 + "price": 44.99,
1280 + "ebayId": "298069957943",
1281 + "listedPrice": null
1282 + },
1283 + {
1284 + "tab": "manual-only",
1285 + "date": "2025-12-28",
1286 + "title": "Conker's Bad Fur Day ~ Manual only ~ Nintendo 64 N64 ~ Authentic ~ Conker",
1287 + "price": 39,
1288 + "ebayId": "397436397271",
1289 + "listedPrice": null
1290 + },
1291 + {
1292 + "tab": "manual-only",
1293 + "date": "2025-12-24",
1294 + "title": "Conker's Bad Fur Day MANUAL ONLY (No game or box) Nintendo 64 N64",
1295 + "price": 39,
1296 + "ebayId": "306671460816",
1297 + "listedPrice": null
1298 + },
1299 + {
1300 + "tab": "manual-only",
1301 + "date": "2025-11-25",
1302 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Game Instruction Booklet Manual Only",
1303 + "price": 49.99,
1304 + "ebayId": "127476775769",
1305 + "listedPrice": null
1306 + },
1307 + {
1308 + "tab": "manual-only",
1309 + "date": "2025-10-15",
1310 + "title": "Conker's Bad Fur Day Nintendo 64 Manual GREAT condition",
1311 + "price": 40,
1312 + "ebayId": "136595766050",
1313 + "listedPrice": null
1314 + },
1315 + {
1316 + "tab": "manual-only",
1317 + "date": "2025-10-03",
1318 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Game Instruction Booklet Manual Only",
1319 + "price": 49.99,
1320 + "ebayId": "167607960943",
1321 + "listedPrice": null
1322 + },
1323 + {
1324 + "tab": "manual-only",
1325 + "date": "2025-10-01",
1326 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Manual Instruction Booklet Only Authentic",
1327 + "price": 40,
1328 + "ebayId": "167793762309",
1329 + "listedPrice": null
1330 + },
1331 + {
1332 + "tab": "manual-only",
1333 + "date": "2025-09-15",
1334 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Manual Instruction Booklet ONLY Clean Nice!",
1335 + "price": 40,
1336 + "ebayId": "317256502507",
1337 + "listedPrice": null
1338 + },
1339 + {
1340 + "tab": "manual-only",
1341 + "date": "2025-09-15",
1342 + "title": "Conker's Bad Fur Day - N64 Manual Instruction Booklet Only",
1343 + "price": 35,
1344 + "ebayId": "257100991488",
1345 + "listedPrice": null
1346 + },
1347 + {
1348 + "tab": "manual-only",
1349 + "date": "2025-09-13",
1350 + "title": "******Conker's Bad Fur Day Nintendo 64 Manual Instruction Booklet/Manual******",
1351 + "price": 50,
1352 + "ebayId": "127355743853",
1353 + "listedPrice": null
1354 + },
1355 + {
1356 + "tab": "manual-only",
1357 + "date": "2025-09-12",
1358 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Manual Instruction Booklet ONLY Clean Nice!",
1359 + "price": 37.95,
1360 + "ebayId": "388918060760",
1361 + "listedPrice": null
1362 + },
1363 + {
1364 + "tab": "manual-only",
1365 + "date": "2025-09-07",
1366 + "title": "Conker's Bad Fur Day - Nintendo 64 N64 - Instruction Manual Only",
1367 + "price": 42.5,
1368 + "ebayId": "236308058752",
1369 + "listedPrice": null
1370 + },
1371 + {
1372 + "tab": "manual-only",
1373 + "date": "2025-08-21",
1374 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Manual Instruction Booklet ONLY Clean Nice!",
1375 + "price": 41.99,
1376 + "ebayId": "205682725691",
1377 + "listedPrice": null
1378 + },
1379 + {
1380 + "tab": "manual-only",
1381 + "date": "2025-08-20",
1382 + "title": "Conker's Bad Fur Day / Nintendo 64 2001 /Authentic Manual Only / N64 / No Game",
1383 + "price": 35,
1384 + "ebayId": "157254541971",
1385 + "listedPrice": null
1386 + },
1387 + {
1388 + "tab": "manual-only",
1389 + "date": "2025-08-04",
1390 + "title": "Authentic Conker's Bad Fur Day Nintendo 64 Manual Only, 2001, No Game",
1391 + "price": 39.99,
1392 + "ebayId": "167685510230",
1393 + "listedPrice": null
1394 + },
1395 + {
1396 + "tab": "manual-only",
1397 + "date": "2025-07-21",
1398 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Manual Instruction Booklet Only",
1399 + "price": 37.99,
1400 + "ebayId": "136183040849",
1401 + "listedPrice": null
1402 + },
1403 + {
1404 + "tab": "manual-only",
1405 + "date": "2025-06-27",
1406 + "title": "Conker's Bad Fur Day (Nintendo 64 N64) Manual only, Great Shape",
1407 + "price": 44.99,
1408 + "ebayId": "326650767772",
1409 + "listedPrice": null
1410 + },
1411 + {
1412 + "tab": "manual-only",
1413 + "date": "2025-06-23",
1414 + "title": "Conker's Bad Fur Day N64 Nintendo 64 Authentic Manual Only - Very Good",
1415 + "price": 52.75,
1416 + "ebayId": "256969355902",
1417 + "listedPrice": null
1418 + },
1419 + {
1420 + "tab": "manual-only",
1421 + "date": "2025-06-21",
1422 + "title": "Authentic Conker's Bad Fur Day Nintendo 64 Manual Only, 2001, No Game",
1423 + "price": 47.99,
1424 + "ebayId": "187350964305",
1425 + "listedPrice": null
1426 + },
1427 + {
1428 + "tab": "manual-only",
1429 + "date": "2025-05-16",
1430 + "title": "Conker's Bad Fur Day N64 Nintendo 64 Authentic Manual Only *",
1431 + "price": 59.95,
1432 + "ebayId": "205476556229",
1433 + "listedPrice": null
1434 + },
1435 + {
1436 + "tab": "manual-only",
1437 + "date": "2025-04-14",
1438 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Authentic OEM Instruction Manual Book Only",
1439 + "price": 38,
1440 + "ebayId": "277012850749",
1441 + "listedPrice": null
1442 + },
1443 + {
1444 + "tab": "manual-only",
1445 + "date": "2025-04-09",
1446 + "title": "Conker's Bad Fur Day N64 (Nintendo 64, 2001) **MANUAL ONLY** Authentic",
1447 + "price": 34.99,
1448 + "ebayId": "146497892032",
1449 + "listedPrice": null
1450 + },
1451 + {
1452 + "tab": "manual-only",
1453 + "date": "2025-03-17",
1454 + "title": "Conker's Bad Fur Day N64 Manual Only (Nintendo 64, 2001) No Game",
1455 + "price": 40,
1456 + "ebayId": "197101669391",
1457 + "listedPrice": null
1458 + },
1459 + {
1460 + "tab": "manual-only",
1461 + "date": "2025-02-26",
1462 + "title": "Conker's Bad Fur Day - (Nintendo 64) N64 Manual instruction booklet only⭐",
1463 + "price": 39.99,
1464 + "ebayId": "306073823185",
1465 + "listedPrice": null
1466 + },
1467 + {
1468 + "tab": "manual-only",
1469 + "date": "2025-02-20",
1470 + "title": "Nintendo 64 N64 Conker's Bad Fur Day Instruction Manual + Like + More",
1471 + "price": 31,
1472 + "ebayId": "405549703153",
1473 + "listedPrice": null
1474 + },
1475 + {
1476 + "tab": "manual-only",
1477 + "date": "2025-02-20",
1478 + "title": "Conker's Bad Fur Day N64 Manual Only (Nintendo 64, 2001) No Game",
1479 + "price": 40,
1480 + "ebayId": "267140558627",
1481 + "listedPrice": null
1482 + },
1483 + {
1484 + "tab": "manual-only",
1485 + "date": "2025-02-11",
1486 + "title": "Nintendo 64 N64 Conker's Bad Fur Day Instruction Manual ORIGINAL GAME MANUAL",
1487 + "price": 38.99,
1488 + "ebayId": "156671405806",
1489 + "listedPrice": null
1490 + },
1491 + {
1492 + "tab": "manual-only",
1493 + "date": "2025-01-30",
1494 + "title": "Conker's Bad Fur Day Nintendo 64 N64 Manual Instruction Booklet Only No Game",
1495 + "price": 37.99,
1496 + "ebayId": "356519125954",
1497 + "listedPrice": null
1498 + },
1499 + {
1500 + "tab": "manual-only",
1501 + "date": "2025-01-18",
1502 + "title": "Nintendo 64 N64 Conker's Bad Fur Day Instruction Manual OEM Original Game Book",
1503 + "price": 30,
1504 + "ebayId": "186886866145",
1505 + "listedPrice": null
1506 + },
1507 + {
1508 + "tab": "grade-three",
1509 + "date": "2026-08-07",
1510 + "title": "Conker's Bad Fur Day Nintendo 64 N64 PSA Graded 8.5 CIB Complete In Box!!! ✨✨✨",
1511 + "price": 599.99,
1512 + "ebayId": "117338605361",
1513 + "listedPrice": null
1514 + },
1515 + {
1516 + "tab": "grade-three",
1517 + "date": "2026-07-28",
1518 + "title": "Conker's Bad Fur Day Nintendo 64 N64 PSA Graded 8.5 CIB Complete In Box!!! ✨✨✨",
1519 + "price": 699.99,
1520 + "ebayId": "117179732361",
1521 + "listedPrice": null
1522 + },
1523 + {
1524 + "tab": "grade-three",
1525 + "date": "2026-06-01",
1526 + "title": "Conker's Bad Fur Day Nintendo 64 N64 WATA 7.5 A+",
1527 + "price": 610,
1528 + "ebayId": "287351596995",
1529 + "listedPrice": null
1530 + },
1531 + {
1532 + "tab": "grade-three",
1533 + "date": "2026-03-01",
1534 + "title": "Conker's Bad Fur Day Nintendo 64 N64 CIB CGC Graded 8.5 w/ 8.5 Manual!",
1535 + "price": 800,
1536 + "ebayId": "376923713386",
1537 + "listedPrice": null
1538 + },
1539 + {
1540 + "tab": "grade-three",
1541 + "date": "2025-11-23",
1542 + "title": "Conker's Bad Fur Day Nintendo 64 N64 CIB CGC Graded 9.4 w/ 9.6 Manual!",
1543 + "price": 899.99,
1544 + "ebayId": "167656124403",
1545 + "listedPrice": null
1546 + },
1547 + {
1548 + "tab": "grade-three",
1549 + "date": "2025-10-23",
1550 + "title": "N64 Conkers Bad Fur Day CIB Graded Wata 8.5 w/Guide",
1551 + "price": 800,
1552 + "ebayId": "205781667269",
1553 + "listedPrice": null
1554 + },
1555 + {
1556 + "tab": "grade-three",
1557 + "date": "2025-09-29",
1558 + "title": "Conker's Bad Fur Day WATA 9.4 CIB Nintendo 64 N64 Top Pop!",
1559 + "price": 621,
1560 + "ebayId": "267410350423",
1561 + "listedPrice": null
1562 + },
1563 + {
1564 + "tab": "grade-three",
1565 + "date": "2025-04-29",
1566 + "title": "Conker's Bad Fur Day (Nintendo 64, 2001) WATA Graded 9.0 A+",
1567 + "price": 1199.95,
1568 + "ebayId": "286261877306",
1569 + "listedPrice": null
1570 + },
1571 + {
1572 + "tab": "grade-three",
1573 + "date": "2025-02-01",
1574 + "title": "Conker's Bad Fur Day (Nintendo 64, 2001) WATA Graded 9.0 A+",
1575 + "price": 995,
1576 + "ebayId": "387858513619",
1577 + "listedPrice": null
1578 + },
1579 + {
1580 + "tab": "grade-three",
1581 + "date": "2025-01-30",
1582 + "title": "Conker's Bad Fur Day Nintendo 64 N64 WATA Graded 7.0 A",
1583 + "price": 899.99,
1584 + "ebayId": "305969178191",
1585 + "listedPrice": null
1586 + },
1587 + {
1588 + "tab": "grade-three",
1589 + "date": "2025-01-03",
1590 + "title": "Conker's Bad Fur Day Nintendo 64 N64 WATA Graded 9.0 CIB MIB NOT VGA CGC Rare",
1591 + "price": 630.99,
1592 + "ebayId": "167227936130",
1593 + "listedPrice": null
1594 + },
1595 + {
1596 + "tab": "grade-three",
1597 + "date": "2024-10-06",
1598 + "title": "Conker's Bad Fur Day CIB Nintendo 64 N64 9.2 WATA Graded. Box 9.0, Cart 9.4",
1599 + "price": 699.95,
1600 + "ebayId": "205029430863",
1601 + "listedPrice": null
1602 + },
1603 + {
1604 + "tab": "grade-three",
1605 + "date": "2024-10-05",
1606 + "title": "Conker's Bad Fur Day CIB Nintendo 64 N64 9.2 WATA Graded. Box 9.0, Cart 9.4",
1607 + "price": 710,
1608 + "ebayId": "205012451411",
1609 + "listedPrice": null
1610 + },
1611 + {
1612 + "tab": "grade-three",
1613 + "date": "2024-08-04",
1614 + "title": "Grade 9 CIB Conker's Bad Fur Day Nintendo 64 CGC Graded 9",
1615 + "price": 650,
1616 + "ebayId": "256586598882",
1617 + "listedPrice": null
1618 + },
1619 + {
1620 + "tab": "grade-three",
1621 + "date": "2024-07-25",
1622 + "title": "Grade 9 CIB Conker's Bad Fur Day Nintendo 64 CGC Graded 9",
1623 + "price": 650,
1624 + "ebayId": "256544624164",
1625 + "listedPrice": null
1626 + },
1627 + {
1628 + "tab": "grade-three",
1629 + "date": "2024-04-04",
1630 + "title": "Conker's Bad Fur Day Nintendo 64 N64 WATA Graded 9.0 CIB MIB NOT VGA CGC RARE!!!",
1631 + "price": 999.97,
1632 + "ebayId": "315154132168",
1633 + "listedPrice": null
1634 + },
1635 + {
1636 + "tab": "grade-three",
1637 + "date": "2024-01-22",
1638 + "title": "Conkers Bad Fur Day N64 CIB CGC Not Wata! Rare! Complete In Box Very Good",
1639 + "price": 650,
1640 + "ebayId": "145565813492",
1641 + "listedPrice": null
1642 + },
1643 + {
1644 + "tab": "grade-three",
1645 + "date": "2023-11-16",
1646 + "title": "CONKER'S BAD FUR DAY 2001 CVG / CGC 7.5 CARTRIDGE RARE NINTENDO 64 N64 RARE",
1647 + "price": 123,
1648 + "ebayId": "276157165591",
1649 + "listedPrice": null
1650 + },
1651 + {
1652 + "tab": "grade-three",
1653 + "date": "2023-07-14",
1654 + "title": "Conker's Bad Fur Day BFD Nintendo 64 N64 CIB Complete in Box CGC Graded 9.0 Wata",
1655 + "price": 625,
1656 + "ebayId": "115854786997",
1657 + "listedPrice": null
1658 + },
1659 + {
1660 + "tab": "grade-three",
1661 + "date": "2023-07-04",
1662 + "title": "WATA 6.0 : SEAL (A+) - NINTENDO 64 - CONKER'S BAD FUR DAY N64 GAME -",
1663 + "price": 559.95,
1664 + "ebayId": "385688152736",
1665 + "listedPrice": null
1666 + },
1667 + {
1668 + "tab": "grade-three",
1669 + "date": "2023-06-24",
1670 + "title": "Conker's Bad Fur Day Nintendo 64 N64 2001 CIB Complete in Box CGC Graded 9.0",
1671 + "price": 599.99,
1672 + "ebayId": "155612658700",
1673 + "listedPrice": null
1674 + },
1675 + {
1676 + "tab": "grade-three",
1677 + "date": "2023-06-21",
1678 + "title": "Conker's Bad Fur Day Nintendo N64 CGC 6.0 cartridge",
1679 + "price": 185,
1680 + "ebayId": "354734430985",
1681 + "listedPrice": null
1682 + },
1683 + {
1684 + "tab": "grade-three",
1685 + "date": "2023-03-26",
1686 + "title": "Conkers Bad Fur Day CIB WATA Graded 6.5 N64 Nintendo Complete Authentic Rare",
1687 + "price": 300,
1688 + "ebayId": "225489866751",
1689 + "listedPrice": null
1690 + },
1691 + {
1692 + "tab": "grade-three",
1693 + "date": "2023-03-16",
1694 + "title": "Conkers Bad Fur Day CIB WATA Graded 6.5 N64 Nintendo Complete Authentic Rare",
1695 + "price": 355,
1696 + "ebayId": "225471568597",
1697 + "listedPrice": null
1698 + },
1699 + {
1700 + "tab": "grade-three",
1701 + "date": "2021-02-05",
1702 + "title": "Conkers Bad Fur Day N64 Vga 80+ Nintendo",
1703 + "price": 982.99,
1704 + "ebayId": "154311467777",
1705 + "listedPrice": null
1706 + },
1707 + {
1708 + "tab": "grade-three",
1709 + "date": "2020-09-26",
1710 + "title": "Conker's Bad Fur Day N64 Vga Graded Rare!!",
1711 + "price": 1099.43,
1712 + "ebayId": "264877978738",
1713 + "listedPrice": null
1714 + },
1715 + {
1716 + "tab": "grade-three",
1717 + "date": "2020-05-20",
1718 + "title": "*VGA 85+* Conker‘s Bad Fur Day Nintendo 64 N64",
1719 + "price": 602,
1720 + "ebayId": "184294847594",
1721 + "listedPrice": null
1722 + },
1723 + {
1724 + "tab": "grade-three",
1725 + "date": "2020-05-16",
1726 + "title": "*VGA 85+* Conker‘s Bad Fur Day Nintendo 64 N64 Qualified",
1727 + "price": 324.45,
1728 + "ebayId": "184294857706",
1729 + "listedPrice": null
1730 + },
1731 + {
1732 + "tab": "grade-three",
1733 + "date": "2020-05-14",
1734 + "title": "*VGA 85+* Conker‘s Bad Fur Day Nintendo 64 N64",
1735 + "price": 650.23,
1736 + "ebayId": "184280340427",
1737 + "listedPrice": null
1738 + }
1739 + ],
1740 + "details": {
1741 + "Genre": "Platformer",
1742 + "Release Date": "March 5, 2001",
1743 + "ESRB Rating": "Mature",
1744 + "Publisher": "Rare",
1745 + "Developer": "Rare",
1746 + "Player Count": "Single Player",
1747 + "Notes": "Conker's Bad Fur Day is a 2001 platform game developed and published by Rare for the Nintendo 64. The game follows Conker, a greedy, hard-drinking red squirrel who must return home to his girlfriend. Most of the game requires the player to complete a linear sequence of challenges that involve jumping over obstacles, solving puzzles, and fighting enemies. A multiplayer mode where up to four players can compete against each other and the AI in seven different game types is also included.",
1748 + "UPC": "045496870805",
1749 + "ASIN (Amazon)": "B00004U1R2",
1750 + "ePID (eBay)": "2790",
1751 + "PriceCharting ID": "3732",
1752 + "Description": "The guys at Rare have been very, very naughty. The day after his 21st birthday bash. Conker's sporting the worst hangover ever, and he just can't seem to find his way home. Prepare to stagger through randy, raunchy, raucous scenarios crammed full of bad manners, twisted humor, and graphic bodily functions. Unless you're a fan of violence, foul language, and racy innuendo, you'd best steer clear of this one."
1753 + },
1754 + "images": [
1755 + "https://storage.googleapis.com/images.pricecharting.com/AMIfv94utlmsg8lJGLz9NSKXBNzKNu0k36Q7D5wW36ApvFvgeQilcaM34MNMo5Bmw9n1LnO3OEAEzg0bXOjqpLJx_yereIVPtldN51IJjxsGFqioaZw-wCvD7uB1er4Ia8MZKIOfvc8E4VN35SbqHvrIAnwkNN5bXA/240.jpg",
1756 + "https://storage.googleapis.com/images.pricecharting.com/232c92ba4d14157ad4336972daa1b0cf6bc36ec1fd043c9624e9c8ed2c1be4dc/240.jpg",
1757 + "https://storage.googleapis.com/images.pricecharting.com/445ee537701769d430d6f4b6389e6e7805e98a14d16b3d4b3f34fddbf27a37b7/240.jpg",
1758 + "https://storage.googleapis.com/images.pricecharting.com/4a51b1a3dc983b4bd8e058de0928fedddbcefea8c20f9cf8611106ed2404451d/240.jpg"
1759 + ]
1760 + }
1761 + },
1762 + "expect": {
1763 + "minCount": 1,
1764 + "kinds": [
1765 + "catalog_item",
1766 + "price_observation",
1767 + "sale"
1768 + ]
1769 + },
1770 + "note": "captured live from https://www.pricecharting.com/game/nintendo-64/conker's-bad-fur-day",
1771 + "capturedAt": "2026-09-07T04:33:26.166Z"
1772 +}
\ No newline at end of file
added data/fixtures/pricecharting/nintendo-64__zelda-ocarina-of-time.json +1781 −0
@@ -0,0 +1,1781 @@
1 +{
2 + "raw": {
3 + "url": "https://www.pricecharting.com/game/nintendo-64/zelda-ocarina-of-time",
4 + "externalId": "3977",
5 + "kind": "catalog_item",
6 + "engine": "api",
7 + "fetchedAt": "2026-09-07T04:33:24.486Z",
8 + "payload": {
9 + "kind": "product",
10 + "url": "https://www.pricecharting.com/game/nintendo-64/zelda-ocarina-of-time",
11 + "productId": "3977",
12 + "consoleUri": "nintendo-64",
13 + "consoleName": "Nintendo 64",
14 + "title": "Zelda Ocarina of Time",
15 + "flags": {
16 + "isComic": false,
17 + "isLegoSet": false,
18 + "isFunkoPop": false,
19 + "isCard": false,
20 + "isCoin": false,
21 + "isSystem": false
22 + },
23 + "columnLabels": [
24 + "Loose Price",
25 + "Complete Price",
26 + "New Price",
27 + "Graded Price",
28 + "Box Only Price",
29 + "Manual Only Price",
30 + "Graded",
31 + "Box Only",
32 + "Manual Only"
33 + ],
34 + "prices": [
35 + {
36 + "key": "used_price",
37 + "value": 50,
38 + "raw": "$50.00"
39 + },
40 + {
41 + "key": "complete_price",
42 + "value": 171.24,
43 + "raw": "$171.24"
44 + },
45 + {
46 + "key": "new_price",
47 + "value": 911.19,
48 + "raw": "$911.19"
49 + },
50 + {
51 + "key": "graded_price",
52 + "value": 5250,
53 + "raw": "$5,250.00"
54 + },
55 + {
56 + "key": "box_only_price",
57 + "value": 76.39,
58 + "raw": "$76.39"
59 + },
60 + {
61 + "key": "manual_only_price",
62 + "value": 16.15,
63 + "raw": "$16.15"
64 + }
65 + ],
66 + "sales": [
67 + {
68 + "tab": "used",
69 + "date": "2026-09-06",
70 + "title": "Legend of Zelda Ocarina of Time N64 Nintendo 64 Game Cartridge tested",
71 + "price": 50,
72 + "ebayId": "287567435353",
73 + "listedPrice": null
74 + },
75 + {
76 + "tab": "used",
77 + "date": "2026-09-06",
78 + "title": "The Legend of Zelda: Ocarina of Time (Nintendo 64, 1998) N64 Authentic Cart Only",
79 + "price": 49.99,
80 + "ebayId": "366651969189",
81 + "listedPrice": null
82 + },
83 + {
84 + "tab": "used",
85 + "date": "2026-09-06",
86 + "title": "Legend of Zelda: Ocarina of Time (Nintendo 64, 1998) Tested Authentic USA",
87 + "price": 49.99,
88 + "ebayId": "287563399750",
89 + "listedPrice": null
90 + },
91 + {
92 + "tab": "used",
93 + "date": "2026-09-06",
94 + "title": "Legend of Zelda Ocarina of Time V1.1 (Nintendo 64 N64) Authentic & Tested",
95 + "price": 69.95,
96 + "ebayId": "137699166570",
97 + "listedPrice": null
98 + },
99 + {
100 + "tab": "used",
101 + "date": "2026-09-06",
102 + "title": "The Legend of Zelda: Ocarina of Time - Nintendo 64 (N64) Tested and working",
103 + "price": 21.99,
104 + "ebayId": "257719768824",
105 + "listedPrice": null
106 + },
107 + {
108 + "tab": "used",
109 + "date": "2026-09-06",
110 + "title": "The Legend of Zelda: Ocarina Of Time. N64. Cartridge Only. TESTED.",
111 + "price": 49.99,
112 + "ebayId": "336778386136",
113 + "listedPrice": null
114 + },
115 + {
116 + "tab": "used",
117 + "date": "2026-09-06",
118 + "title": "The Legend of Zelda Ocarina of Time (Nintendo 64, 64) Authentic - Tested & Works",
119 + "price": 55,
120 + "ebayId": "188890659816",
121 + "listedPrice": null
122 + },
123 + {
124 + "tab": "used",
125 + "date": "2026-09-05",
126 + "title": "The Legend of Zelda Ocarina of Time Nintendo 64 N64 Authentic Tested Cartridge",
127 + "price": 50,
128 + "ebayId": "327343738832",
129 + "listedPrice": null
130 + },
131 + {
132 + "tab": "used",
133 + "date": "2026-09-05",
134 + "title": "Legend of Zelda: Ocarina of Time (Nintendo 64, 1998)(NEW BATTERY)(TESTED)",
135 + "price": 54.94,
136 + "ebayId": "198611150471",
137 + "listedPrice": null
138 + },
139 + {
140 + "tab": "used",
141 + "date": "2026-09-05",
142 + "title": "The Legend of Zelda Ocarina of Time (Nintendo 64, 64) Authentic - Tested & Works",
143 + "price": 59.99,
144 + "ebayId": "398358835081",
145 + "listedPrice": null
146 + },
147 + {
148 + "tab": "used",
149 + "date": "2026-09-05",
150 + "title": "Zelda Ocarina of Time Nintendo 64 N64 Gray Cartridge Tested (CP1127816)",
151 + "price": 24.99,
152 + "ebayId": "377471502096",
153 + "listedPrice": null
154 + },
155 + {
156 + "tab": "used",
157 + "date": "2026-09-04",
158 + "title": "The Legend of Zelda Ocarina of Time Nintendo 64 N64 Authentic Tested",
159 + "price": 41,
160 + "ebayId": "267770875458",
161 + "listedPrice": null
162 + },
163 + {
164 + "tab": "used",
165 + "date": "2026-09-03",
166 + "title": "Legend of Zelda: Ocarina of Time (Nintendo 64, 1998) Tested - Clean",
167 + "price": 49,
168 + "ebayId": "147525241502",
169 + "listedPrice": null
170 + },
171 + {
172 + "tab": "used",
173 + "date": "2026-09-03",
174 + "title": "Legend of Zelda Ocarina of Time Nintendo 64 N64 Authentic New Battery Tested OEM",
175 + "price": 70,
176 + "ebayId": "237041355825",
177 + "listedPrice": null
178 + },
179 + {
180 + "tab": "used",
181 + "date": "2026-09-03",
182 + "title": "Nintendo The Legend of Zelda: Ocarina of Time N64 Cartridge Only Players Choice",
183 + "price": 45,
184 + "ebayId": "307154068976",
185 + "listedPrice": null
186 + },
187 + {
188 + "tab": "used",
189 + "date": "2026-09-03",
190 + "title": "Authentic Legend of Zelda: Ocarina of Time (Nintendo 64, 1998) Cart Only!",
191 + "price": 54.95,
192 + "ebayId": "307154094555",
193 + "listedPrice": null
194 + },
195 + {
196 + "tab": "used",
197 + "date": "2026-09-03",
198 + "title": "The Legend of Zelda: Ocarina of Time Nintendo 64 - N64 1997 Cart Only Tested",
199 + "price": 49.99,
200 + "ebayId": "287561591651",
201 + "listedPrice": null
202 + },
203 + {
204 + "tab": "used",
205 + "date": "2026-09-03",
206 + "title": "Legend of Zelda: Ocarina of Time (Nintendo 64, N64, 1998) Authentic - Tested",
207 + "price": 49.99,
208 + "ebayId": "820070514025",
209 + "listedPrice": null
210 + },
211 + {
212 + "tab": "used",
213 + "date": "2026-09-03",
214 + "title": "The Legend Of Zelda Ocarina Of Time Nintendo 64 Cart Only, Tested And Works",
215 + "price": 44,
216 + "ebayId": "227496089760",
217 + "listedPrice": null
218 + },
219 + {
220 + "tab": "used",
221 + "date": "2026-09-03",
222 + "title": "The Legend of Zelda Ocarina of Time Nintendo 64 N64 Authentic Cartridge Only",
223 + "price": 39,
224 + "ebayId": "407189047912",
225 + "listedPrice": null
226 + },
227 + {
228 + "tab": "used",
229 + "date": "2026-09-03",
230 + "title": "Legend of Zelda Ocarina of Time N64 Authentic Nintendo 64 Cart Only - Tested",
231 + "price": 37.99,
232 + "ebayId": "227499738369",
233 + "listedPrice": null
234 + },
235 + {
236 + "tab": "used",
237 + "date": "2026-09-02",
238 + "title": "Legend of Zelda: Ocarina of Time N64 Cartridge Only Tested Working Authentic",
239 + "price": 55,
240 + "ebayId": "257703537028",
241 + "listedPrice": null
242 + },
243 + {
244 + "tab": "used",
245 + "date": "2026-09-02",
246 + "title": "Legend of Zelda: Ocarina of Time (Nintendo 64, 1998) N64 AUTHENTIC TESTED",
247 + "price": 51,
248 + "ebayId": "327329727999",
249 + "listedPrice": null
250 + },
251 + {
252 + "tab": "used",
253 + "date": "2026-09-01",
254 + "title": "Authentic Zelda Ocarina of Time Nintendo 64 N64 Cartridge Only Tested Free Ship",
255 + "price": 48.99,
256 + "ebayId": "188872547620",
257 + "listedPrice": null
258 + },
259 + {
260 + "tab": "used",
261 + "date": "2026-09-01",
262 + "title": "Legend of Zelda: Ocarina of Time (Nintendo 64, 1998)(NEW BATTERY)(TESTED)",
263 + "price": 54.94,
264 + "ebayId": "198611149967",
265 + "listedPrice": null
266 + },
267 + {
268 + "tab": "used",
269 + "date": "2026-09-01",
270 + "title": "Legend of Zelda Ocarina of Time (1998) - Nintendo 64 N64 Game Players Choice",
271 + "price": 69,
272 + "ebayId": "256009355757",
273 + "listedPrice": null
274 + },
275 + {
276 + "tab": "used",
277 + "date": "2026-09-01",
278 + "title": "The Legend of Zelda: Ocarina of Time - Nintendo 64 (N64) Tested and working",
279 + "price": 21.99,
280 + "ebayId": "257711555540",
281 + "listedPrice": null
282 + },
283 + {
284 + "tab": "used",
285 + "date": "2026-09-01",
286 + "title": "The Legend Of Zelda : Ocarina Of Time/N64 AUTHENTIC TESTED WORKING!!!*",
287 + "price": 50,
288 + "ebayId": "206527405735",
289 + "listedPrice": null
290 + },
291 + {
292 + "tab": "used",
293 + "date": "2026-09-01",
294 + "title": "Legend of Zelda: Ocarina of Time (Nintendo 64, 1998) N64 Cartridge Only Working",
295 + "price": 49.99,
296 + "ebayId": "389779423147",
297 + "listedPrice": null
298 + },
299 + {
300 + "tab": "used",
301 + "date": "2026-09-01",
302 + "title": "Authentic Zelda Ocarina of Time Nintendo 64 N64 Cartridge Only Tested Free Ship",
303 + "price": 48.99,
304 + "ebayId": "307155764298",
305 + "listedPrice": null
306 + },
307 + {
308 + "tab": "cib",
309 + "date": "2026-09-05",
310 + "title": "The Legend Of Zelda Ocarina of Time Complete Box Manual Game Nintendo 64",
311 + "price": 105.5,
312 + "ebayId": "278323548346",
313 + "listedPrice": null
314 + },
315 + {
316 + "tab": "cib",
317 + "date": "2026-09-05",
318 + "title": "Legend of Zelda: Ocarina of Time Nintendo 64 w/ Manual and Case TESTED WORKING",
319 + "price": 63.99,
320 + "ebayId": "158236513467",
321 + "listedPrice": null
322 + },
323 + {
324 + "tab": "cib",
325 + "date": "2026-09-05",
326 + "title": "Legend of Zelda: Ocarina of Time (Nintendo 64, 1998)",
327 + "price": 101.89,
328 + "ebayId": "820078237405",
329 + "listedPrice": null
330 + },
331 + {
332 + "tab": "cib",
333 + "date": "2026-09-03",
334 + "title": "Nintendo 64 Legend of Zelda Ocarina of Time Video Game N64 Complete In Box CIB",
335 + "price": 199.99,
336 + "ebayId": "318806258985",
337 + "listedPrice": null
338 + },
339 + {
340 + "tab": "cib",
341 + "date": "2026-09-01",
342 + "title": "The Legend Of Zelda Ocarina of Time CIB Complete Box Manual Game Nintendo 64",
343 + "price": 142.49,
344 + "ebayId": "317528665542",
345 + "listedPrice": null
346 + },
347 + {
348 + "tab": "cib",
349 + "date": "2026-08-28",
350 + "title": "Nintendo Zelda: Ocarina of Time N64 NTSC-U/C (US/Canada) w/ Box & Manual",
351 + "price": 145,
352 + "ebayId": "398334174726",
353 + "listedPrice": null
354 + },
355 + {
356 + "tab": "cib",
357 + "date": "2026-08-28",
358 + "title": "Legend of Zelda Ocarina of Time Nintendo 64 Authentic V1.2 New Battery N64 OOT",
359 + "price": 99.99,
360 + "ebayId": "198545980949",
361 + "listedPrice": null
362 + },
363 + {
364 + "tab": "cib",
365 + "date": "2026-08-20",
366 + "title": "N64 Zelda Ocarina of Time Game Box & Manual Authentic Nintendo",
367 + "price": 175.5,
368 + "ebayId": "307118664306",
369 + "listedPrice": null
370 + },
371 + {
372 + "tab": "cib",
373 + "date": "2026-08-17",
374 + "title": "Legend of Zelda Ocarina of Time Nintendo 64 N64 CIB Complete W/ Manual Authentic",
375 + "price": 255,
376 + "ebayId": "158135839534",
377 + "listedPrice": null
378 + },
379 + {
380 + "tab": "cib",
381 + "date": "2026-08-16",
382 + "title": "Nintendo 64 N64 Authentic Zelda Ocarina of Time CIB",
383 + "price": 180.9,
384 + "ebayId": "168433912954",
385 + "listedPrice": null
386 + },
387 + {
388 + "tab": "cib",
389 + "date": "2026-08-16",
390 + "title": "The Legend of Zelda Ocarina of Time Nintendo N64 CIB + Guide / TESTED + Video",
391 + "price": 160,
392 + "ebayId": "406310652092",
393 + "listedPrice": null
394 + },
395 + {
396 + "tab": "cib",
397 + "date": "2026-08-15",
398 + "title": "The Legend of Zelda Ocarina of Time N64 CIB Nintendo 64 Complete - Box Wear",
399 + "price": 149.97,
400 + "ebayId": "267750884438",
401 + "listedPrice": null
402 + },
403 + {
404 + "tab": "cib",
405 + "date": "2026-08-14",
406 + "title": "Zelda Ocarina of Time N64 Complete CIB Game Box Manual Authentic Nintendo (M)",
407 + "price": 143.98,
408 + "ebayId": "267674460751",
409 + "listedPrice": null
410 + },
411 + {
412 + "tab": "cib",
413 + "date": "2026-08-12",
414 + "title": "Legend of Zelda Ocarina of Time (Nintendo 64 N64) Complete CIB",
415 + "price": 177.99,
416 + "ebayId": "358884096794",
417 + "listedPrice": null
418 + },
419 + {
420 + "tab": "cib",
421 + "date": "2026-08-12",
422 + "title": "The Legend of Zelda: Ocarina of Time Nintendo 64 CIB Plus Protector",
423 + "price": 120,
424 + "ebayId": "128015946407",
425 + "listedPrice": null
426 + },
427 + {
428 + "tab": "cib",
429 + "date": "2026-08-12",
430 + "title": "Legend of Zelda: Ocarina of Time (Nintendo 64, 1998) Tested CIB w Inserts",
431 + "price": 140,
432 + "ebayId": "366592868398",
433 + "listedPrice": null
434 + },
435 + {
436 + "tab": "cib",
437 + "date": "2026-08-12",
438 + "title": "Legend of Zelda: Ocarina of Time (Nintendo 64, 1998) CIB",
439 + "price": 180,
440 + "ebayId": "287508599330",
441 + "listedPrice": null
442 + },
443 + {
444 + "tab": "cib",
445 + "date": "2026-08-11",
446 + "title": "Nintendo 64 Legend of Zelda Ocarina of Time Video Game N64 Complete In Box CIB",
447 + "price": 170,
448 + "ebayId": "137586181105",
449 + "listedPrice": null
450 + },
451 + {
452 + "tab": "cib",
453 + "date": "2026-08-11",
454 + "title": "Nintendo 64 - The Legend of Zelda: Ocarina of Time - Complete w/ Inserts",
455 + "price": 350,
456 + "ebayId": "407137077452",
457 + "listedPrice": null
458 + },
459 + {
460 + "tab": "cib",
461 + "date": "2026-08-10",
462 + "title": "The Legend of Zelda : Ocarina of Time (Nintendo 64, 1998) Tested, CIB",
463 + "price": 960,
464 + "ebayId": "307104745750",
465 + "listedPrice": null
466 + },
467 + {
468 + "tab": "cib",
469 + "date": "2026-08-10",
470 + "title": "The Legend of Zelda Ocarina of Time Nintendo 64 N64 Complete CIB Box AUTHENTIC !",
471 + "price": 220,
472 + "ebayId": "407128179243",
473 + "listedPrice": null
474 + },
475 + {
476 + "tab": "cib",
477 + "date": "2026-08-09",
478 + "title": "Zelda Ocarina Of Time N64 CIB",
479 + "price": 263,
480 + "ebayId": "327290311979",
481 + "listedPrice": null
482 + },
483 + {
484 + "tab": "cib",
485 + "date": "2026-08-09",
486 + "title": "Nintendo 64 N64 Authentic The Legend of Zelda Ocarina of Time CIB",
487 + "price": 179.33,
488 + "ebayId": "168413339954",
489 + "listedPrice": null
490 + },
491 + {
492 + "tab": "cib",
493 + "date": "2026-08-09",
494 + "title": "Legend of Zelda Ocarina of Time (Nintendo 64 N64) Complete in Box CIB authentic",
495 + "price": 189.99,
496 + "ebayId": "317810220105",
497 + "listedPrice": null
498 + },
499 + {
500 + "tab": "cib",
501 + "date": "2026-08-09",
502 + "title": "N64 Legend of Zelda Ocarina of Time CIB Complete Vintage Authentic",
503 + "price": 160,
504 + "ebayId": "157618484611",
505 + "listedPrice": null
506 + },
507 + {
508 + "tab": "cib",
509 + "date": "2026-08-08",
510 + "title": "The Legend of Zelda Ocarina of Time Nintendo 64 N64 Complete CIB with Guides",
511 + "price": 182.92,
512 + "ebayId": "198147414415",
513 + "listedPrice": null
514 + },
515 + {
516 + "tab": "cib",
517 + "date": "2026-08-07",
518 + "title": "The Legend of Zelda Ocarina of Time Nintendo 64 N64 Complete CIB Box AUTHENTIC !",
519 + "price": 259.99,
520 + "ebayId": "306302764903",
521 + "listedPrice": null
522 + },
523 + {
524 + "tab": "cib",
525 + "date": "2026-08-06",
526 + "title": "Legend of Zelda Ocarina of Time (Nintendo 64 N64) CIB Authentic Complete Tested",
527 + "price": 179.45,
528 + "ebayId": "117344740710",
529 + "listedPrice": null
530 + },
531 + {
532 + "tab": "cib",
533 + "date": "2026-08-06",
534 + "title": "The Legend of Zelda Ocarina of Time Nintendo 64 N64 Complete CIB Box AUTHENTIC !",
535 + "price": 269.99,
536 + "ebayId": "306937089856",
537 + "listedPrice": null
538 + },
539 + {
540 + "tab": "cib",
541 + "date": "2026-08-06",
542 + "title": "Nintendo 64 Legend of Zelda Ocarina of Time Video Game N64 Complete In Box CIB",
543 + "price": 206.5,
544 + "ebayId": "128000746472",
545 + "listedPrice": null
546 + },
547 + {
548 + "tab": "new",
549 + "date": "2026-08-09",
550 + "title": "The Legend of Zelda: Ocarina of Time N64 Nintendo 64 Brand New Sealed",
551 + "price": 999.95,
552 + "ebayId": "257669885999",
553 + "listedPrice": null
554 + },
555 + {
556 + "tab": "new",
557 + "date": "2026-06-12",
558 + "title": "N64 Nintendo 64 Zelda Ocarina of Time Collector Edition NIB Brand New in Box",
559 + "price": 1199.95,
560 + "ebayId": "297319766135",
561 + "listedPrice": null
562 + },
563 + {
564 + "tab": "new",
565 + "date": "2026-06-10",
566 + "title": "The Legend Of Zelda Ocarina Of Time Sealed",
567 + "price": 400,
568 + "ebayId": "178208485646",
569 + "listedPrice": null
570 + },
571 + {
572 + "tab": "new",
573 + "date": "2026-05-07",
574 + "title": "Legend of Zelda: Ocarina of Time Factory Sealed (Nintendo 64, 1998) - NEW N64",
575 + "price": 1136,
576 + "ebayId": "227322527233",
577 + "listedPrice": null
578 + },
579 + {
580 + "tab": "new",
581 + "date": "2026-04-29",
582 + "title": "The Legend of Zelda Ocarina of Time (Nintendo 64 N64) New/Sealed H-Seam",
583 + "price": 799.99,
584 + "ebayId": "168270199971",
585 + "listedPrice": null
586 + },
587 + {
588 + "tab": "new",
589 + "date": "2026-03-27",
590 + "title": "Zelda Ocarina of Time Nintendo 64 N64 Cartridge, 1998 Sealed",
591 + "price": 550,
592 + "ebayId": "168259833710",
593 + "listedPrice": null
594 + },
595 + {
596 + "tab": "new",
597 + "date": "2026-03-21",
598 + "title": "Zelda Ocarina of Time Nintendo 64 N64 Cartridge, 1998 Sealed",
599 + "price": 550,
600 + "ebayId": "168250671948",
601 + "listedPrice": null
602 + },
603 + {
604 + "tab": "new",
605 + "date": "2026-01-23",
606 + "title": "The Legend of Zelda Ocarina of Time (Nintendo 64 N64) New/Sealed",
607 + "price": 799.99,
608 + "ebayId": "267553323024",
609 + "listedPrice": null
610 + },
611 + {
612 + "tab": "new",
613 + "date": "2026-01-04",
614 + "title": "Sealed Legend of Zelda:Ocarina of Time N64 -100% Authentic Factory Seal - H-Seam",
615 + "price": 819,
616 + "ebayId": "287039254276",
617 + "listedPrice": null
618 + },
619 + {
620 + "tab": "new",
621 + "date": "2025-12-04",
622 + "title": "Zelda: Ocarina Of Time N64 - Collectors Edition - Factory Sealed",
623 + "price": 800,
624 + "ebayId": "187784208719",
625 + "listedPrice": null
626 + },
627 + {
628 + "tab": "new",
629 + "date": "2025-11-29",
630 + "title": "Legend of Zelda: Ocarina of Time (Nintendo 64) - In Sealed Box, Never Opened",
631 + "price": 690,
632 + "ebayId": "297784630491",
633 + "listedPrice": null
634 + },
635 + {
636 + "tab": "new",
637 + "date": "2025-11-26",
638 + "title": "Zelda Ocarina Of Time N64 Collectors Edition Factory Sealed Small Tears",
639 + "price": 950.29,
640 + "ebayId": "286971937613",
641 + "listedPrice": null
642 + },
643 + {
644 + "tab": "new",
645 + "date": "2025-11-19",
646 + "title": "Zelda Ocarina Of Time N64 Collectors Edition Factory Sealed",
647 + "price": 881.51,
648 + "ebayId": "286915288269",
649 + "listedPrice": null
650 + },
651 + {
652 + "tab": "new",
653 + "date": "2025-11-13",
654 + "title": "N64 Nintendo 64 Zelda Ocarina of Time NIB Brand New in Box French/Dutch RARE",
655 + "price": 249.95,
656 + "ebayId": "297319766139",
657 + "listedPrice": null
658 + },
659 + {
660 + "tab": "new",
661 + "date": "2025-11-03",
662 + "title": "Zelda Ocarina Of Time N64 Collectors Edition Factory Sealed",
663 + "price": 1156.57,
664 + "ebayId": "286872381777",
665 + "listedPrice": null
666 + },
667 + {
668 + "tab": "new",
669 + "date": "2025-10-26",
670 + "title": "N64 The Legend of Zelda: Ocarina of Time (Nintendo 64 Players Choice) Sealed",
671 + "price": 700,
672 + "ebayId": "167886887484",
673 + "listedPrice": null
674 + },
675 + {
676 + "tab": "new",
677 + "date": "2025-09-29",
678 + "title": "1999 Legend Of Zelda Ocarina Of Time Brand New Sealed Box Nintendo 64",
679 + "price": 1500,
680 + "ebayId": "187587586956",
681 + "listedPrice": null
682 + },
683 + {
684 + "tab": "new",
685 + "date": "2025-08-13",
686 + "title": "Zelda Ocarina of Time Nintendo 64 N64 Sealed New In Box - Free Shipping",
687 + "price": 799.99,
688 + "ebayId": "257063166742",
689 + "listedPrice": null
690 + },
691 + {
692 + "tab": "new",
693 + "date": "2025-07-19",
694 + "title": "Factory SEALED Legend of Zelda Ocarina of Time OOT nintendo64 n64 clean box/seal",
695 + "price": 3499,
696 + "ebayId": "297463818896",
697 + "listedPrice": null
698 + },
699 + {
700 + "tab": "new",
701 + "date": "2025-07-19",
702 + "title": "Factory SEALED The Legend of Zelda Ocarina of Time nintendo 64 n64 authentic OOT",
703 + "price": 1599,
704 + "ebayId": "297466390825",
705 + "listedPrice": null
706 + },
707 + {
708 + "tab": "new",
709 + "date": "2025-07-11",
710 + "title": "factory sealed The Legend of Zelda Ocarina of Time OOT nintendo 64 n64 clean box",
711 + "price": 2499,
712 + "ebayId": "297462925107",
713 + "listedPrice": null
714 + },
715 + {
716 + "tab": "new",
717 + "date": "2025-04-24",
718 + "title": "zelda ocarina of time n64 new",
719 + "price": 700,
720 + "ebayId": "177017959862",
721 + "listedPrice": null
722 + },
723 + {
724 + "tab": "new",
725 + "date": "2025-03-24",
726 + "title": "Legend of Zelda: Ocarina of Time Brand new Sealed",
727 + "price": 2654,
728 + "ebayId": "276975786305",
729 + "listedPrice": null
730 + },
731 + {
732 + "tab": "new",
733 + "date": "2025-03-07",
734 + "title": "Faded Sealed Legend of Zelda: Ocarina of Time (Nintendo 64, 1998) Good Condition",
735 + "price": 600,
736 + "ebayId": "146431835097",
737 + "listedPrice": null
738 + },
739 + {
740 + "tab": "new",
741 + "date": "2025-03-06",
742 + "title": "Sealed Legend of Zelda: Ocarina of Time (Nintendo 64, 1998) Good Condition",
743 + "price": 600,
744 + "ebayId": "146431760026",
745 + "listedPrice": null
746 + },
747 + {
748 + "tab": "new",
749 + "date": "2025-02-16",
750 + "title": "1998 N64 Nintendo 64 The Legend of Zelda: Ocarina of Time (USA) - Collector's Edition Sealed Video Game - VGA NM+ 85+",
751 + "price": 159.82,
752 + "ebayId": null,
753 + "listedPrice": null
754 + },
755 + {
756 + "tab": "new",
757 + "date": "2025-01-02",
758 + "title": "Zelda: Ocarina Of Time N64 Sealed. Original Wal-Mart Price Tag !!!!!",
759 + "price": 1500,
760 + "ebayId": "395945136432",
761 + "listedPrice": null
762 + },
763 + {
764 + "tab": "new",
765 + "date": "2024-12-24",
766 + "title": "The Legend of Zelda Ocarina of Time - Nintendo 64 N64 NTSC-UC USA con scatola",
767 + "price": 360.54,
768 + "ebayId": "305984814816",
769 + "listedPrice": null
770 + },
771 + {
772 + "tab": "new",
773 + "date": "2024-10-07",
774 + "title": "Legend of Zelda: Ocarina of Time (Nintendo 64, 1998) N64 *SEALED, NEW*",
775 + "price": 352,
776 + "ebayId": "365149442325",
777 + "listedPrice": null
778 + },
779 + {
780 + "tab": "new",
781 + "date": "2024-09-15",
782 + "title": "Legend of Zelda: Ocarina of Time (Nintendo 64, 1998)◇Factory Sealed◇ Rare GEM💎",
783 + "price": 975,
784 + "ebayId": "356026312212",
785 + "listedPrice": null
786 + },
787 + {
788 + "tab": "graded",
789 + "date": "2026-09-04",
790 + "title": "The Legend of Zelda: Ocarina of Time - PSA 9.8 A++ Sealed [Standard Release], N64 Nintendo 1998 USA....",
791 + "price": 81250,
792 + "ebayId": null,
793 + "listedPrice": null
794 + },
795 + {
796 + "tab": "graded",
797 + "date": "2026-07-28",
798 + "title": "Legend of Zelda Ocarina of Time Nintendo 64 N64 Sealed New PSA 7.0 B",
799 + "price": 2100,
800 + "ebayId": "158093559092",
801 + "listedPrice": null
802 + },
803 + {
804 + "tab": "graded",
805 + "date": "2026-07-24",
806 + "title": "WATA 9.2 A+ Legend of Zelda Ocarina of Time Nintendo 64 N64 1998 Sealed VGA CGC",
807 + "price": 3999.99,
808 + "ebayId": "187586164390",
809 + "listedPrice": null
810 + },
811 + {
812 + "tab": "graded",
813 + "date": "2026-07-12",
814 + "title": "Legend Zelda Ocarina Time CE Nintendo 64 N64 Sealed New PSA 9.2 A+ Graded",
815 + "price": 6500,
816 + "ebayId": "158024094234",
817 + "listedPrice": null
818 + },
819 + {
820 + "tab": "graded",
821 + "date": "2026-06-29",
822 + "title": "The Legend of Zelda Ocarina of Time Nintendo 64 N64 Sealed New PSA 9.0 B+ Graded",
823 + "price": 1750,
824 + "ebayId": "158005222702",
825 + "listedPrice": null
826 + },
827 + {
828 + "tab": "graded",
829 + "date": "2026-06-18",
830 + "title": "1998 N64 Nintendo 64 The Legend of Zelda: Ocarina of Time (USA) - Collector's Edition Sealed Video Game - VGA NM+ 85+",
831 + "price": 15982,
832 + "ebayId": null,
833 + "listedPrice": null
834 + },
835 + {
836 + "tab": "graded",
837 + "date": "2026-06-18",
838 + "title": "1998 N64 Nintendo 64 The Legend of Zelda: Ocarina of Time (USA) Sealed Video Game - Collector's Edition, Flatback/Small Vents - VGA NM 80+",
839 + "price": 3050,
840 + "ebayId": null,
841 + "listedPrice": null
842 + },
843 + {
844 + "tab": "graded",
845 + "date": "2026-05-29",
846 + "title": "Legend Zelda Ocarina of Time CE Nintendo 64 N64 Sealed New PSA 7.0 B+",
847 + "price": 1800,
848 + "ebayId": "157950250088",
849 + "listedPrice": null
850 + },
851 + {
852 + "tab": "graded",
853 + "date": "2026-05-14",
854 + "title": "The Legend of Zelda: Ocarina of Time - Wata 5.5 B Sealed [Standard Release], N64 Nintendo 1998 USA....",
855 + "price": 550,
856 + "ebayId": null,
857 + "listedPrice": null
858 + },
859 + {
860 + "tab": "graded",
861 + "date": "2026-05-14",
862 + "title": "The Legend of Zelda: Ocarina of Time - Wata 6.0 A Sealed [Standard Release], N64 Nintendo 1998 USA....",
863 + "price": 938,
864 + "ebayId": null,
865 + "listedPrice": null
866 + },
867 + {
868 + "tab": "graded",
869 + "date": "2026-05-09",
870 + "title": "Legend of Zelda Ocarina of Time Nintendo 64 N64 Sealed New WATA 8.5 A+ Graded",
871 + "price": 2399,
872 + "ebayId": "397894783668",
873 + "listedPrice": null
874 + },
875 + {
876 + "tab": "graded",
877 + "date": "2026-04-20",
878 + "title": "PSA 7.0 Legend of Zelda: Ocarina of Time Nintendo 64 N64 New Sealed WATA VGA CGC",
879 + "price": 1999.99,
880 + "ebayId": "188247759657",
881 + "listedPrice": null
882 + },
883 + {
884 + "tab": "graded",
885 + "date": "2026-04-16",
886 + "title": "The Legend of Zelda: Ocarina of Time - Wata 9.0 A+ Sealed [Standard Release], N64 Nintendo 1998 USA....",
887 + "price": 2875,
888 + "ebayId": null,
889 + "listedPrice": null
890 + },
891 + {
892 + "tab": "graded",
893 + "date": "2026-04-15",
894 + "title": "Legend of Zelda: Ocarina of Time N64 Collector's Edition Sealed 1998 WATA 9.4 A+",
895 + "price": 6750,
896 + "ebayId": "285140938771",
897 + "listedPrice": null
898 + },
899 + {
900 + "tab": "graded",
901 + "date": "2026-04-14",
902 + "title": "Sealed Legend of Zelda: Ocarina of Time (Nintendo 64, 1998) VGA 80+ First Print",
903 + "price": 4500,
904 + "ebayId": "137185321962",
905 + "listedPrice": null
906 + },
907 + {
908 + "tab": "graded",
909 + "date": "2026-04-12",
910 + "title": "Zelda Ocarina of Time N64 PSA 7.0 Sealed A+ V-Seam 1998 Graded",
911 + "price": 1476,
912 + "ebayId": "336519292811",
913 + "listedPrice": null
914 + },
915 + {
916 + "tab": "graded",
917 + "date": "2026-03-04",
918 + "title": "The Legend of Zelda Ocarina of Time Nintendo 64 N64 New 1998 Sealed PSA 9.6 A++",
919 + "price": 15500,
920 + "ebayId": "375602885950",
921 + "listedPrice": null
922 + },
923 + {
924 + "tab": "graded",
925 + "date": "2026-03-01",
926 + "title": "Legend of Zelda: Ocarina of Time (Nintendo 64, 1998) Sealed PSA 7.5 A+",
927 + "price": 1400,
928 + "ebayId": "358270396139",
929 + "listedPrice": null
930 + },
931 + {
932 + "tab": "graded",
933 + "date": "2026-02-17",
934 + "title": "WATA 9.0 A+ Zelda Ocarina of Time N64 Sealed Players Choice 1999 Graded",
935 + "price": 2900,
936 + "ebayId": "187880837637",
937 + "listedPrice": null
938 + },
939 + {
940 + "tab": "graded",
941 + "date": "2026-02-09",
942 + "title": "Legend of Zelda Ocarina of Time Nintendo 64 N64 Sealed New CGC 9.2 A+ Graded",
943 + "price": 4499.99,
944 + "ebayId": "157655505357",
945 + "listedPrice": null
946 + },
947 + {
948 + "tab": "graded",
949 + "date": "2026-01-30",
950 + "title": "The Legend of Zelda Ocarina of Time New Nintendo 64 N64 Sealed WATA VGA Grade 75",
951 + "price": 1699.99,
952 + "ebayId": "374410077717",
953 + "listedPrice": null
954 + },
955 + {
956 + "tab": "graded",
957 + "date": "2026-01-23",
958 + "title": "Legend of Zelda Ocarina of Time CE Nintendo 64 N64 Sealed New WATA 9.4 A+",
959 + "price": 5999.99,
960 + "ebayId": "157443435571",
961 + "listedPrice": null
962 + },
963 + {
964 + "tab": "graded",
965 + "date": "2026-01-21",
966 + "title": "1998 N64 The Legend of Zelda Ocarina of Time Graded WATA 9.0 A+ Sealed 1st Print",
967 + "price": 8999,
968 + "ebayId": "336313423095",
969 + "listedPrice": null
970 + },
971 + {
972 + "tab": "graded",
973 + "date": "2026-01-15",
974 + "title": "Legend of Zelda Ocarina of Time Nintendo 64 N64 Sealed New CGC 9.0 A+ Graded",
975 + "price": 3400,
976 + "ebayId": "187662651185",
977 + "listedPrice": null
978 + },
979 + {
980 + "tab": "graded",
981 + "date": "2026-01-14",
982 + "title": "Legend of Zelda: Ocarina of Time (N64 1998) 1st Print V-Seam VGA Graded 80+ Rare",
983 + "price": 1682,
984 + "ebayId": "227160405734",
985 + "listedPrice": null
986 + },
987 + {
988 + "tab": "graded",
989 + "date": "2025-12-25",
990 + "title": "Legend of Zelda Ocarina of Time Nintendo 64 N64 Sealed New CGC 9.2 A+ Graded",
991 + "price": 4499.99,
992 + "ebayId": "157443549182",
993 + "listedPrice": null
994 + },
995 + {
996 + "tab": "graded",
997 + "date": "2025-12-15",
998 + "title": "Legend of Zelda Ocarina of Time Nintendo 64 N64 Collectors Ed Sealed Wata 9.6 A",
999 + "price": 5116.96,
1000 + "ebayId": "317465237497",
1001 + "listedPrice": null
1002 + },
1003 + {
1004 + "tab": "graded",
1005 + "date": "2025-12-07",
1006 + "title": "1998 N64 Nintendo 64 The Legend of Zelda: Ocarina of Time (USA) Sealed Video Game - Made in Japan, Collectors Edition - PSA 9.8/A++",
1007 + "price": 37826,
1008 + "ebayId": null,
1009 + "listedPrice": null
1010 + },
1011 + {
1012 + "tab": "graded",
1013 + "date": "2025-12-02",
1014 + "title": "The Legend of Zelda: Ocarina of Time - Wata 8.0 A+ Sealed [Standard Release], N64 Nintendo 1998 USA....",
1015 + "price": 1000,
1016 + "ebayId": null,
1017 + "listedPrice": null
1018 + },
1019 + {
1020 + "tab": "graded",
1021 + "date": "2025-12-02",
1022 + "title": "The Legend of Zelda: Ocarina of Time - Wata 9.2 A+ Sealed [Standard Release], N64 Nintendo 1998 USA....",
1023 + "price": 2750,
1024 + "ebayId": null,
1025 + "listedPrice": null
1026 + },
1027 + {
1028 + "tab": "box-only",
1029 + "date": "2026-08-31",
1030 + "title": "Legend Of Zelda Ocarina Of Time Nintendo 64 N64 Authentic Box Only No Game 1998",
1031 + "price": 103.5,
1032 + "ebayId": "168639701374",
1033 + "listedPrice": null
1034 + },
1035 + {
1036 + "tab": "box-only",
1037 + "date": "2026-08-23",
1038 + "title": "Nintendo Nintendo 64 Cartridge Case Box - Zelda Ocarina of Time",
1039 + "price": 71.02,
1040 + "ebayId": "206496089101",
1041 + "listedPrice": null
1042 + },
1043 + {
1044 + "tab": "box-only",
1045 + "date": "2026-07-13",
1046 + "title": "Legend of Zelda Ocarina of Time N64 Original Box ONLY Nintendo 64",
1047 + "price": 99.99,
1048 + "ebayId": "287435909125",
1049 + "listedPrice": null
1050 + },
1051 + {
1052 + "tab": "box-only",
1053 + "date": "2026-07-13",
1054 + "title": "Legend of Zelda: Ocarina of Time (Nintendo 64, 1998) BOX Only",
1055 + "price": 41,
1056 + "ebayId": "178282821900",
1057 + "listedPrice": null
1058 + },
1059 + {
1060 + "tab": "box-only",
1061 + "date": "2026-07-09",
1062 + "title": "Legend of Zelda: Ocarina of Time (Nintendo 64, 1998) ~~~BOX ONLY~~~",
1063 + "price": 39.95,
1064 + "ebayId": "178297122263",
1065 + "listedPrice": null
1066 + },
1067 + {
1068 + "tab": "box-only",
1069 + "date": "2026-07-05",
1070 + "title": "Nintendo 64 N64 The Legend Of Zelda Ocarina Of Time BOX ONLY *FREE SHIPPING*",
1071 + "price": 65,
1072 + "ebayId": "147403013297",
1073 + "listedPrice": null
1074 + },
1075 + {
1076 + "tab": "box-only",
1077 + "date": "2026-06-14",
1078 + "title": "Legend Of Zelda Ocarina Of Time Nintendo 64 N64 Authentic Box Only No Game 1998",
1079 + "price": 79.99,
1080 + "ebayId": "358672640555",
1081 + "listedPrice": null
1082 + },
1083 + {
1084 + "tab": "box-only",
1085 + "date": "2026-06-11",
1086 + "title": "The Legend of Zelda Ocarina of Time OOT Nintendo 64 N64 BOX ONLY",
1087 + "price": 29.99,
1088 + "ebayId": "227383904665",
1089 + "listedPrice": null
1090 + },
1091 + {
1092 + "tab": "box-only",
1093 + "date": "2026-06-10",
1094 + "title": "The Legend of Zelda Ocarina of Time Box EMPTY Box & Manual For Nintendo 64",
1095 + "price": 98.99,
1096 + "ebayId": "178198148928",
1097 + "listedPrice": null
1098 + },
1099 + {
1100 + "tab": "box-only",
1101 + "date": "2026-06-09",
1102 + "title": "The Legend of Zelda Ocarina of Time Box + Inserts - Nintendo 64 N64 **SEE DESC**",
1103 + "price": 114.95,
1104 + "ebayId": "336458620387",
1105 + "listedPrice": null
1106 + },
1107 + {
1108 + "tab": "box-only",
1109 + "date": "2026-06-01",
1110 + "title": "Legend Of Zelda Ocarina Of Time Nintendo 64 N64 Authentic Box Only No Game 1998",
1111 + "price": 89.99,
1112 + "ebayId": "358529841974",
1113 + "listedPrice": null
1114 + },
1115 + {
1116 + "tab": "box-only",
1117 + "date": "2026-05-27",
1118 + "title": "The Legend Of Zelda Ocarina Of Time N64 Gold Box Box Only)",
1119 + "price": 90.99,
1120 + "ebayId": "318366650445",
1121 + "listedPrice": null
1122 + },
1123 + {
1124 + "tab": "box-only",
1125 + "date": "2026-05-21",
1126 + "title": "The Legend of Zelda: Ocarina of Time N64 Nintendo 64 BOX ONLY! Authentic! Rare!",
1127 + "price": 45,
1128 + "ebayId": "336582122258",
1129 + "listedPrice": null
1130 + },
1131 + {
1132 + "tab": "box-only",
1133 + "date": "2026-05-17",
1134 + "title": "Legend of Zelda: Ocarina of Time BOX ONLY N64 Nintendo 64 players choice",
1135 + "price": 65.25,
1136 + "ebayId": "267671881460",
1137 + "listedPrice": null
1138 + },
1139 + {
1140 + "tab": "box-only",
1141 + "date": "2026-05-15",
1142 + "title": "N64 Zelda Ocarina Of Time Box Inserts And Manual Only/No Game/ Nintendo 64",
1143 + "price": 120.5,
1144 + "ebayId": "236805958008",
1145 + "listedPrice": null
1146 + },
1147 + {
1148 + "tab": "box-only",
1149 + "date": "2026-05-12",
1150 + "title": "The Legend of Zelda: Ocarina of Time (Nintendo 64, 1998) N64 BOX ONLY",
1151 + "price": 49.99,
1152 + "ebayId": "306930412237",
1153 + "listedPrice": null
1154 + },
1155 + {
1156 + "tab": "box-only",
1157 + "date": "2026-05-12",
1158 + "title": "Legend of Zelda: Ocarina of Time (Nintendo 64, 1998) BOX ONLY",
1159 + "price": 50,
1160 + "ebayId": "127861290830",
1161 + "listedPrice": null
1162 + },
1163 + {
1164 + "tab": "box-only",
1165 + "date": "2026-05-11",
1166 + "title": "The Legend of Zelda Ocarina of Time N64 Players Choice_Box & Manual ONLY_No Game",
1167 + "price": 39.9,
1168 + "ebayId": "267666846000",
1169 + "listedPrice": null
1170 + },
1171 + {
1172 + "tab": "box-only",
1173 + "date": "2026-05-07",
1174 + "title": "The Legend of Zelda: Ocarina of Time Nintendo 64 Box Only",
1175 + "price": 55,
1176 + "ebayId": "298296145518",
1177 + "listedPrice": null
1178 + },
1179 + {
1180 + "tab": "box-only",
1181 + "date": "2026-05-03",
1182 + "title": "Legend Of Zelda Ocarina Of Time Nintendo 64 N64 Authentic Box Only No Game 1998",
1183 + "price": 95.99,
1184 + "ebayId": "157291814272",
1185 + "listedPrice": null
1186 + },
1187 + {
1188 + "tab": "box-only",
1189 + "date": "2026-04-23",
1190 + "title": "Legend of Zelda: Ocarina of Time BOX ONLY N64 Nintendo 64 players choice",
1191 + "price": 40,
1192 + "ebayId": "147267560963",
1193 + "listedPrice": null
1194 + },
1195 + {
1196 + "tab": "box-only",
1197 + "date": "2026-04-19",
1198 + "title": "Legend of Zelda: Ocarina of Time BOX ONLY N64 Nintendo 64 players choice",
1199 + "price": 64,
1200 + "ebayId": "267637007014",
1201 + "listedPrice": null
1202 + },
1203 + {
1204 + "tab": "box-only",
1205 + "date": "2026-04-14",
1206 + "title": "Nintendo The Legend of Zelda: Ocarina of Time Nintendo 64 Original Game Box",
1207 + "price": 51,
1208 + "ebayId": "358420736099",
1209 + "listedPrice": null
1210 + },
1211 + {
1212 + "tab": "box-only",
1213 + "date": "2026-03-30",
1214 + "title": "Legend Of Zelda Ocarina Of Time Nintendo 64 N64 Authentic Box Only No Game 1998",
1215 + "price": 40,
1216 + "ebayId": "157788938575",
1217 + "listedPrice": null
1218 + },
1219 + {
1220 + "tab": "box-only",
1221 + "date": "2026-03-29",
1222 + "title": "Legend Of Zelda Ocarina Of Time Nintendo 64 N64 BOX ONLY NO GAME",
1223 + "price": 25,
1224 + "ebayId": "206176173131",
1225 + "listedPrice": null
1226 + },
1227 + {
1228 + "tab": "box-only",
1229 + "date": "2026-03-21",
1230 + "title": "Legend of Zelda Ocarina of Time (Nintendo 64 N64) Box Only, No Cartridge",
1231 + "price": 152.5,
1232 + "ebayId": "377024714017",
1233 + "listedPrice": null
1234 + },
1235 + {
1236 + "tab": "box-only",
1237 + "date": "2026-02-21",
1238 + "title": "Legend of Zelda: Ocarina of Time (Nintendo 64, 1998) BOX ONLY!!",
1239 + "price": 40,
1240 + "ebayId": "177809738280",
1241 + "listedPrice": null
1242 + },
1243 + {
1244 + "tab": "box-only",
1245 + "date": "2026-02-20",
1246 + "title": "Legend of Zelda Ocarina of Time (Nintendo 64 N64) Inserts & Box Only No Game",
1247 + "price": 199.99,
1248 + "ebayId": "389555316102",
1249 + "listedPrice": null
1250 + },
1251 + {
1252 + "tab": "box-only",
1253 + "date": "2026-02-09",
1254 + "title": "Legend of Zelda: Ocarina of Time - Nintendo 64 -1998 - Box Only",
1255 + "price": 40,
1256 + "ebayId": "397588936248",
1257 + "listedPrice": null
1258 + },
1259 + {
1260 + "tab": "box-only",
1261 + "date": "2026-02-01",
1262 + "title": "N64 The Legend of Zelda Ocarina of Time **BOX ONLY w Inner Tray** NO GAME",
1263 + "price": 74.95,
1264 + "ebayId": "136254005187",
1265 + "listedPrice": null
1266 + },
1267 + {
1268 + "tab": "manual-only",
1269 + "date": "2026-07-22",
1270 + "title": "N64 The Legend of Zelda Ocarina of Time Instruction Booklet Nintendo 64 Manual",
1271 + "price": 6.01,
1272 + "ebayId": "358800667726",
1273 + "listedPrice": null
1274 + },
1275 + {
1276 + "tab": "manual-only",
1277 + "date": "2026-07-22",
1278 + "title": "Nintendo 64 N64 The Legend of Zelda: Ocarina of Time Manual Booklet Only",
1279 + "price": 19.99,
1280 + "ebayId": "227441019166",
1281 + "listedPrice": null
1282 + },
1283 + {
1284 + "tab": "manual-only",
1285 + "date": "2026-07-17",
1286 + "title": "Nintendo 64 N64 The Legend of Zelda: Ocarina of Time Manual Booklet Only",
1287 + "price": 16.15,
1288 + "ebayId": "287463505258",
1289 + "listedPrice": null
1290 + },
1291 + {
1292 + "tab": "manual-only",
1293 + "date": "2026-07-11",
1294 + "title": "Legend of Zelda Ocarina of Time (Nintendo 64 N64)Instruction Manual booklet Only",
1295 + "price": 12.88,
1296 + "ebayId": "168421628543",
1297 + "listedPrice": null
1298 + },
1299 + {
1300 + "tab": "manual-only",
1301 + "date": "2026-07-09",
1302 + "title": "The Legend of Zelda: Ocarina of Time Manual- Booklet Nintendo 64 N64 - VERY GOOD",
1303 + "price": 35.6,
1304 + "ebayId": "127922631477",
1305 + "listedPrice": null
1306 + },
1307 + {
1308 + "tab": "manual-only",
1309 + "date": "2026-07-02",
1310 + "title": "The Legend of Zelda Ocarina of Time Nintendo 64 N64 Instruction Booklet Manual",
1311 + "price": 7.31,
1312 + "ebayId": "158024102815",
1313 + "listedPrice": null
1314 + },
1315 + {
1316 + "tab": "manual-only",
1317 + "date": "2026-06-22",
1318 + "title": "Nintendo 64 N64 The Legend of Zelda: Ocarina of Time Manual Booklet Only",
1319 + "price": 19.95,
1320 + "ebayId": "327047624159",
1321 + "listedPrice": null
1322 + },
1323 + {
1324 + "tab": "manual-only",
1325 + "date": "2026-06-14",
1326 + "title": "Nintendo 64 N64 The Legend of Zelda: Ocarina of Time Manual Booklet Only",
1327 + "price": 20.85,
1328 + "ebayId": "406994671288",
1329 + "listedPrice": null
1330 + },
1331 + {
1332 + "tab": "manual-only",
1333 + "date": "2026-06-12",
1334 + "title": "The Legend of Zelda: Ocarina of Time Manual- Booklet Nintendo 64 N64",
1335 + "price": 41,
1336 + "ebayId": "257543147753",
1337 + "listedPrice": null
1338 + },
1339 + {
1340 + "tab": "manual-only",
1341 + "date": "2026-06-01",
1342 + "title": "Zelda Ocarina of Time Nintendo 64 N64 Instruction Manual Booklet Only Clean Page",
1343 + "price": 24.99,
1344 + "ebayId": "198244681329",
1345 + "listedPrice": null
1346 + },
1347 + {
1348 + "tab": "manual-only",
1349 + "date": "2026-05-31",
1350 + "title": "Legend of Zelda Ocarina of Time Nintendo 64 N64 Manual Instruction Booklet ONLY",
1351 + "price": 39.99,
1352 + "ebayId": "800000830335",
1353 + "listedPrice": null
1354 + },
1355 + {
1356 + "tab": "manual-only",
1357 + "date": "2026-05-25",
1358 + "title": "Nintendo 64 N64 the Legend of Zelda: Ocarina of Time Instruction Manual Booklet",
1359 + "price": 12.99,
1360 + "ebayId": "136983049554",
1361 + "listedPrice": null
1362 + },
1363 + {
1364 + "tab": "manual-only",
1365 + "date": "2026-05-18",
1366 + "title": "Legend of Zelda Ocarina of Time (Nintendo 64 N64) Instruction Manual booklet",
1367 + "price": 19.99,
1368 + "ebayId": "327155011997",
1369 + "listedPrice": null
1370 + },
1371 + {
1372 + "tab": "manual-only",
1373 + "date": "2026-05-15",
1374 + "title": "Legend of Zelda Ocarina of Time (Nintendo 64 N64)Instruction Manual booklet Only",
1375 + "price": 9.99,
1376 + "ebayId": "168368995903",
1377 + "listedPrice": null
1378 + },
1379 + {
1380 + "tab": "manual-only",
1381 + "date": "2026-05-07",
1382 + "title": "Legend of Zelda Ocarina of Time (Nintendo 64 N64)Instruction Manual booklet Only",
1383 + "price": 17.99,
1384 + "ebayId": "306918273129",
1385 + "listedPrice": null
1386 + },
1387 + {
1388 + "tab": "manual-only",
1389 + "date": "2026-05-07",
1390 + "title": "Legend of Zelda Ocarina of Time Nintendo 64 N64 Manual Instruction Booklet ONLY",
1391 + "price": 15.99,
1392 + "ebayId": "168327860125",
1393 + "listedPrice": null
1394 + },
1395 + {
1396 + "tab": "manual-only",
1397 + "date": "2026-04-24",
1398 + "title": "Legend of Zelda Ocarina of Time Nintendo 64 N64 Instruction Booklet Manual Only",
1399 + "price": 8.5,
1400 + "ebayId": "366353151361",
1401 + "listedPrice": null
1402 + },
1403 + {
1404 + "tab": "manual-only",
1405 + "date": "2026-04-21",
1406 + "title": "Legend of Zelda Ocarina of Time Nintendo 64 N64 Manual Instruction Booklet ONLY",
1407 + "price": 15.95,
1408 + "ebayId": "188277501986",
1409 + "listedPrice": null
1410 + },
1411 + {
1412 + "tab": "manual-only",
1413 + "date": "2026-04-19",
1414 + "title": "The Legend of Zelda Ocarina of Time Nintendo 64 N64 Prima Song Sheet",
1415 + "price": 16.14,
1416 + "ebayId": "157147264256",
1417 + "listedPrice": null
1418 + },
1419 + {
1420 + "tab": "manual-only",
1421 + "date": "2026-03-21",
1422 + "title": "Nintendo 64 N64 The Legend of Zelda: Ocarina of Time Manual Booklet Only",
1423 + "price": 12.5,
1424 + "ebayId": "206138701226",
1425 + "listedPrice": null
1426 + },
1427 + {
1428 + "tab": "manual-only",
1429 + "date": "2026-03-19",
1430 + "title": "Legend of Zelda Ocarina of Time Nintendo 64 N64 Instruction Booklet Manual Only",
1431 + "price": 22.99,
1432 + "ebayId": "376994045360",
1433 + "listedPrice": null
1434 + },
1435 + {
1436 + "tab": "manual-only",
1437 + "date": "2026-03-15",
1438 + "title": "The Legend Of Zelda Ocarina Of Time Instruction Manual Only N64 Nintendo 64",
1439 + "price": 19.95,
1440 + "ebayId": "197932220794",
1441 + "listedPrice": null
1442 + },
1443 + {
1444 + "tab": "manual-only",
1445 + "date": "2026-03-08",
1446 + "title": "Nintendo Legend of Zelda Ocarina of Time Manual & Inserts Nintendo 64 Original",
1447 + "price": 16.01,
1448 + "ebayId": "358271510282",
1449 + "listedPrice": null
1450 + },
1451 + {
1452 + "tab": "manual-only",
1453 + "date": "2026-03-06",
1454 + "title": "Nintendo 64 The Legend of Zelda: Ocarina of Time Instruction Manual Booklet",
1455 + "price": 14.99,
1456 + "ebayId": "298042153422",
1457 + "listedPrice": null
1458 + },
1459 + {
1460 + "tab": "manual-only",
1461 + "date": "2026-03-05",
1462 + "title": "The Legend Of Zelda Ocarina Of Time Instruction Booklet Manual Only N64 Nintendo",
1463 + "price": 14.99,
1464 + "ebayId": "257389943433",
1465 + "listedPrice": null
1466 + },
1467 + {
1468 + "tab": "manual-only",
1469 + "date": "2026-03-04",
1470 + "title": "The Legend Of Zelda Ocarina Of Time Instruction Manual Only N64 Nintendo 64",
1471 + "price": 21.99,
1472 + "ebayId": "157721575685",
1473 + "listedPrice": null
1474 + },
1475 + {
1476 + "tab": "manual-only",
1477 + "date": "2026-03-03",
1478 + "title": "The Legend Of Zelda: Ocarina Of Time (1998) - Nintendo N64 - MANUAL ONLY",
1479 + "price": 9.99,
1480 + "ebayId": "326864528931",
1481 + "listedPrice": null
1482 + },
1483 + {
1484 + "tab": "manual-only",
1485 + "date": "2026-02-24",
1486 + "title": "The Legend Of Zelda Ocarina Of Time Instruction Booklet Manual Only N64 Nintendo",
1487 + "price": 9.95,
1488 + "ebayId": "358204928350",
1489 + "listedPrice": null
1490 + },
1491 + {
1492 + "tab": "manual-only",
1493 + "date": "2026-02-23",
1494 + "title": "The Legend of Zelda: Ocarina of Time, Nintendo 64, Manual Only!",
1495 + "price": 14.59,
1496 + "ebayId": "357795853411",
1497 + "listedPrice": null
1498 + },
1499 + {
1500 + "tab": "manual-only",
1501 + "date": "2026-02-19",
1502 + "title": "Legend of Zelda Ocarina of Time Nintendo 64 N64 Instruction Booklet Manual Only",
1503 + "price": 18.99,
1504 + "ebayId": "236636369122",
1505 + "listedPrice": null
1506 + },
1507 + {
1508 + "tab": "grade-three",
1509 + "date": "2026-08-26",
1510 + "title": "The Legend of Zelda Ocarina of Time N64 PSA 8.5 CIB",
1511 + "price": 850,
1512 + "ebayId": "820032216965",
1513 + "listedPrice": null
1514 + },
1515 + {
1516 + "tab": "grade-three",
1517 + "date": "2026-07-10",
1518 + "title": "Zelda Ocarina of Time (Rev. A 00A, CGC Graded 9.0!!!) Nintendo 64 N64 not WATA",
1519 + "price": 299,
1520 + "ebayId": "389774280630",
1521 + "listedPrice": null
1522 + },
1523 + {
1524 + "tab": "grade-three",
1525 + "date": "2026-07-09",
1526 + "title": "ZELDA OCARINA OF TIME 64 Nintendo N64 Graded WATA PSA 7.0 CIB Complete Box 1998!",
1527 + "price": 549.99,
1528 + "ebayId": "336669923761",
1529 + "listedPrice": null
1530 + },
1531 + {
1532 + "tab": "grade-three",
1533 + "date": "2026-07-07",
1534 + "title": "Legend of Zelda: Ocarina of Time (Nintendo 64, 1998) PSA 8.5. Box 9.0 CIB+",
1535 + "price": 699.99,
1536 + "ebayId": "227419707576",
1537 + "listedPrice": null
1538 + },
1539 + {
1540 + "tab": "grade-three",
1541 + "date": "2026-07-06",
1542 + "title": "Legend Of Zelda Ocarina Of Time N64 Graded Complete In Box PSA 8.0 CIB Graded",
1543 + "price": 441,
1544 + "ebayId": "800258124182",
1545 + "listedPrice": null
1546 + },
1547 + {
1548 + "tab": "grade-three",
1549 + "date": "2026-07-03",
1550 + "title": "ZELDA OCARINA OF TIME Nintendo N64 Graded WATA PSA 8.5 CIB Box 1998 9.2 CART!",
1551 + "price": 699.99,
1552 + "ebayId": "336668283769",
1553 + "listedPrice": null
1554 + },
1555 + {
1556 + "tab": "grade-three",
1557 + "date": "2026-06-29",
1558 + "title": "Zelda Ocarina of Time WATA 9.2 CIB Nintendo N64 Collector's Edition CE",
1559 + "price": 2750,
1560 + "ebayId": "327237612232",
1561 + "listedPrice": null
1562 + },
1563 + {
1564 + "tab": "grade-three",
1565 + "date": "2026-06-29",
1566 + "title": "Zelda Ocarina of Time WATA 9.2 CIB Nintendo N64 Collector's Edition CE",
1567 + "price": 2750,
1568 + "ebayId": "326369195938",
1569 + "listedPrice": null
1570 + },
1571 + {
1572 + "tab": "grade-three",
1573 + "date": "2026-06-29",
1574 + "title": "Legend of Zelda Ocarina of Time Nintendo 64 N64 Collectors CIB Complete CGC 9.2",
1575 + "price": 1275,
1576 + "ebayId": "158008000482",
1577 + "listedPrice": null
1578 + },
1579 + {
1580 + "tab": "grade-three",
1581 + "date": "2026-06-22",
1582 + "title": "Legend Zelda Ocarina Time Nintendo 64 N64 Collectors Ed CIB Complete CGC 9.0",
1583 + "price": 1225,
1584 + "ebayId": "157985709760",
1585 + "listedPrice": null
1586 + },
1587 + {
1588 + "tab": "grade-three",
1589 + "date": "2026-06-16",
1590 + "title": "Legend Of Zelda Ocarina Of Time N64 Nintendo 64 Complete In Box PSA 8.0",
1591 + "price": 499.99,
1592 + "ebayId": "377260640780",
1593 + "listedPrice": null
1594 + },
1595 + {
1596 + "tab": "grade-three",
1597 + "date": "2026-06-12",
1598 + "title": "Legend Of Zelda Ocarina Of Time Nintendo 64 N64 Game Complete In Box PSA 8.0",
1599 + "price": 549.99,
1600 + "ebayId": "306994816302",
1601 + "listedPrice": null
1602 + },
1603 + {
1604 + "tab": "grade-three",
1605 + "date": "2026-06-10",
1606 + "title": "ZELDA OCARINA OF TIME Nintendo N64 Graded WATA PSA 8.5 CIB Box 1998 9.0 Manual!",
1607 + "price": 689.99,
1608 + "ebayId": "336626383895",
1609 + "listedPrice": null
1610 + },
1611 + {
1612 + "tab": "grade-three",
1613 + "date": "2026-06-10",
1614 + "title": "Zelda Ocarina of Time (1st Print Rev. 0, CGC 7.0 CIB) Nintendo N64 not WATA PSA",
1615 + "price": 749,
1616 + "ebayId": "389989391866",
1617 + "listedPrice": null
1618 + },
1619 + {
1620 + "tab": "grade-three",
1621 + "date": "2026-06-09",
1622 + "title": "ZELDA OCARINA OF TIME Nintendo 64 N64 Graded WATA PSA 7.5 CIB Complete Box 1998",
1623 + "price": 449.99,
1624 + "ebayId": "336609380997",
1625 + "listedPrice": null
1626 + },
1627 + {
1628 + "tab": "grade-three",
1629 + "date": "2026-05-14",
1630 + "title": "The Legend of Zelda: Ocarina of Time - Wata 9.0 CIB [Standard Release], N64 Nintendo 1998 USA....",
1631 + "price": 575,
1632 + "ebayId": null,
1633 + "listedPrice": null
1634 + },
1635 + {
1636 + "tab": "grade-three",
1637 + "date": "2026-04-21",
1638 + "title": "ZELDA OCARINA OF TIME Nintendo N64 Graded WATA PSA 8.5 CIB Box 1998 9.0 Cart!",
1639 + "price": 649.99,
1640 + "ebayId": "336538827443",
1641 + "listedPrice": null
1642 + },
1643 + {
1644 + "tab": "grade-three",
1645 + "date": "2026-03-30",
1646 + "title": "Legend Zelda Ocarina Time Nintendo 64 N64 CIB Complete PSA 8.5 Graded Not WATA",
1647 + "price": 749,
1648 + "ebayId": "157760555709",
1649 + "listedPrice": null
1650 + },
1651 + {
1652 + "tab": "grade-three",
1653 + "date": "2026-03-28",
1654 + "title": "Nintendo 64 N64 Zelda Ocarina Of Time CIB Graded 8.5 CGC",
1655 + "price": 611.81,
1656 + "ebayId": "168209139826",
1657 + "listedPrice": null
1658 + },
1659 + {
1660 + "tab": "grade-three",
1661 + "date": "2026-03-16",
1662 + "title": "The Legend of Zelda: Ocarina of Time - CGC 8.0 CIB [Standard Release], N64 Nintendo 1998 USA....",
1663 + "price": 450,
1664 + "ebayId": null,
1665 + "listedPrice": null
1666 + },
1667 + {
1668 + "tab": "grade-three",
1669 + "date": "2026-03-07",
1670 + "title": "The Legend of Zelda Ocarina of Time N64 CIB PSA 9.2 w/ 9.2 Box and Manual!",
1671 + "price": 1299.99,
1672 + "ebayId": "127721490382",
1673 + "listedPrice": null
1674 + },
1675 + {
1676 + "tab": "grade-three",
1677 + "date": "2026-02-16",
1678 + "title": "Zelda Ocarina Of Time N64 CIB WATA Graded 8.0",
1679 + "price": 381,
1680 + "ebayId": "236626951080",
1681 + "listedPrice": null
1682 + },
1683 + {
1684 + "tab": "grade-three",
1685 + "date": "2026-02-02",
1686 + "title": "Legend of Zelda Ocarina of Time Nintendo 64 CGC 7.5 Graded N64 CIB Not WATA PSA",
1687 + "price": 76,
1688 + "ebayId": "277673906058",
1689 + "listedPrice": null
1690 + },
1691 + {
1692 + "tab": "grade-three",
1693 + "date": "2026-01-21",
1694 + "title": "CGC Graded 7.5 CIB Complete Legend of Zelda: Ocarina of Time Nintendo 64 N64",
1695 + "price": 279.99,
1696 + "ebayId": "187956538521",
1697 + "listedPrice": null
1698 + },
1699 + {
1700 + "tab": "grade-three",
1701 + "date": "2025-12-22",
1702 + "title": "Legend of Zelda Ocarina of Time Nintendo 64 N64 Unopened New VGA 85 NM+ Graded",
1703 + "price": 586,
1704 + "ebayId": "157531130738",
1705 + "listedPrice": null
1706 + },
1707 + {
1708 + "tab": "grade-three",
1709 + "date": "2025-12-12",
1710 + "title": "Legend of Zelda: Ocarina of Time (Nintendo 64, 1998) 100% CIB - CGC Graded 8.0",
1711 + "price": 750,
1712 + "ebayId": "397338149503",
1713 + "listedPrice": null
1714 + },
1715 + {
1716 + "tab": "grade-three",
1717 + "date": "2025-12-01",
1718 + "title": "ZELDA OCARINA OF TIME Graded WATA PSA 7.5 CIB Nintendo 64 N64 1996 Graded RARE!",
1719 + "price": 499.99,
1720 + "ebayId": "336316196607",
1721 + "listedPrice": null
1722 + },
1723 + {
1724 + "tab": "grade-three",
1725 + "date": "2025-12-01",
1726 + "title": "Legend of Zelda Ocarina of Time Nintendo 64 N64 CIB Complete WATA 8.0 Graded",
1727 + "price": 640,
1728 + "ebayId": "157474507906",
1729 + "listedPrice": null
1730 + },
1731 + {
1732 + "tab": "grade-three",
1733 + "date": "2025-11-26",
1734 + "title": "ZELDA OCARINA OF TIME Graded WATA PSA 8.5 CIB Nintendo 64 N64 1996 Graded RARE!",
1735 + "price": 599.99,
1736 + "ebayId": "336305257886",
1737 + "listedPrice": null
1738 + },
1739 + {
1740 + "tab": "grade-three",
1741 + "date": "2025-11-24",
1742 + "title": "ZELDA OCARINA OF TIME Graded WATA 8.0 Nintendo 64 N64 - 8.5 Box & 9.2 Manual!",
1743 + "price": 439.99,
1744 + "ebayId": "336274735432",
1745 + "listedPrice": null
1746 + }
1747 + ],
1748 + "details": {
1749 + "Genre": "Action & Adventure",
1750 + "Release Date": "November 23, 1998",
1751 + "ESRB Rating": "Everyone",
1752 + "Publisher": "Nintendo",
1753 + "Developer": "Nintendo",
1754 + "Model Number": "#NUS-CZLE-USA",
1755 + "Player Count": "1 player",
1756 + "UPC": "045496870041",
1757 + "ASIN (Amazon)": "B00000DMB3",
1758 + "ePID (eBay)": "214719169",
1759 + "PriceCharting ID": "3977",
1760 + "Variants": "collectors edition / players choice / not for resale /",
1761 + "Description": "As a young boy, Link is tricked by Ganondorf, the King of the Gerudo Thieves. The evil human uses Link to gain access to the Sacred Realm, where he places his tainted hands on Triforce and transforms the beautiful Hyrulean landscape into a barren wasteland. Link is determined to fix the problems he helped to create, so with the help of Rauru he travels through time gathering the powers of the Seven Sages."
1762 + },
1763 + "images": [
1764 + "https://storage.googleapis.com/images.pricecharting.com/bidbex33joqxpepk/240.jpg",
1765 + "https://storage.googleapis.com/images.pricecharting.com/09051053534684cffc99b993dbf22e911888d53f17cf796c605a79439012a651/240.jpg",
1766 + "https://storage.googleapis.com/images.pricecharting.com/0b294585f8bbc9dffedab6cc066596af53b357a3f8dfa3292088e4dd54b41fe3/240.jpg",
1767 + "https://storage.googleapis.com/images.pricecharting.com/68c0df4a8fff640289c1a9d98071bf85e10cb2d0413fe3647d4c8e40defd5dba/240.jpg"
1768 + ]
1769 + }
1770 + },
1771 + "expect": {
1772 + "minCount": 1,
1773 + "kinds": [
1774 + "catalog_item",
1775 + "price_observation",
1776 + "sale"
1777 + ]
1778 + },
1779 + "note": "captured live from https://www.pricecharting.com/game/nintendo-64/zelda-ocarina-of-time",
1780 + "capturedAt": "2026-09-07T04:33:24.584Z"
1781 +}
\ No newline at end of file
added data/fixtures/scryfall/black-lotus-alpha.json +83 −0
@@ -0,0 +1,83 @@
1 +{
2 + "raw": {
3 + "url": "https://scryfall.com/card/lea/232/black-lotus?utm_source=api",
4 + "externalId": "b0faa7f2-b547-42c4-a810-839da50dadfe",
5 + "kind": "catalog_item",
6 + "engine": "api",
7 + "fetchedAt": "2026-09-07T04:27:44.899Z",
8 + "payload": {
9 + "card": {
10 + "id": "b0faa7f2-b547-42c4-a810-839da50dadfe",
11 + "oracle_id": "5089ec1a-f881-4d55-af14-5d996171203b",
12 + "name": "Black Lotus",
13 + "lang": "en",
14 + "released_at": "1993-08-05",
15 + "set": "lea",
16 + "set_name": "Limited Edition Alpha",
17 + "set_type": "core",
18 + "collector_number": "232",
19 + "rarity": "rare",
20 + "layout": "normal",
21 + "finishes": [
22 + "nonfoil"
23 + ],
24 + "promo": false,
25 + "reserved": true,
26 + "reprint": false,
27 + "variation": false,
28 + "full_art": false,
29 + "border_color": "black",
30 + "frame": "1993",
31 + "digital": false,
32 + "artist": "Christopher Rush",
33 + "mana_cost": "{0}",
34 + "type_line": "Artifact",
35 + "cmc": 0,
36 + "colors": [],
37 + "tcgplayer_id": 1042,
38 + "cardmarket_id": 5465,
39 + "mtgo_id": 347,
40 + "multiverse_ids": [
41 + 3
42 + ],
43 + "scryfall_uri": "https://scryfall.com/card/lea/232/black-lotus?utm_source=api",
44 + "image_uris": {
45 + "small": "https://cards.scryfall.io/small/front/b/0/b0faa7f2-b547-42c4-a810-839da50dadfe.jpg?1783948669",
46 + "normal": "https://cards.scryfall.io/normal/front/b/0/b0faa7f2-b547-42c4-a810-839da50dadfe.jpg?1783948669",
47 + "large": "https://cards.scryfall.io/large/front/b/0/b0faa7f2-b547-42c4-a810-839da50dadfe.jpg?1783948669",
48 + "png": "https://cards.scryfall.io/png/front/b/0/b0faa7f2-b547-42c4-a810-839da50dadfe.png?1783948669",
49 + "art_crop": "https://cards.scryfall.io/art_crop/front/b/0/b0faa7f2-b547-42c4-a810-839da50dadfe.jpg?1783948669",
50 + "border_crop": "https://cards.scryfall.io/border_crop/front/b/0/b0faa7f2-b547-42c4-a810-839da50dadfe.jpg?1783948669",
51 + "thumb": "https://cards.scryfall.io/thumb/front/b/0/b0faa7f2-b547-42c4-a810-839da50dadfe.webp?1783948669",
52 + "grid": "https://cards.scryfall.io/grid/front/b/0/b0faa7f2-b547-42c4-a810-839da50dadfe.webp?1783948669",
53 + "display": "https://cards.scryfall.io/display/front/b/0/b0faa7f2-b547-42c4-a810-839da50dadfe.webp?1783948669",
54 + "art": "https://cards.scryfall.io/art/front/b/0/b0faa7f2-b547-42c4-a810-839da50dadfe.webp?1783948669",
55 + "crop": "https://cards.scryfall.io/crop/front/b/0/b0faa7f2-b547-42c4-a810-839da50dadfe.webp?1783948669"
56 + },
57 + "prices": {
58 + "usd": null,
59 + "usd_foil": null,
60 + "usd_etched": null,
61 + "eur": "33768.47",
62 + "eur_foil": null,
63 + "tix": "491.06"
64 + }
65 + },
66 + "bulkUpdatedAt": "2026-09-06T21:05:43.673+00:00"
67 + }
68 + },
69 + "expect": {
70 + "count": 2,
71 + "kinds": [
72 + "catalog_item",
73 + "price_observation"
74 + ],
75 + "requiredFields": [
76 + "attributes.identifiers.scryfall_id",
77 + "attributes.setCode",
78 + "attributes.number"
79 + ]
80 + },
81 + "note": "Live capture of https://api.scryfall.com/cards/lea/232; bulkUpdatedAt copied from the bulk-data listing of the same day.",
82 + "capturedAt": "2026-09-07T04:27:45.151Z"
83 +}
\ No newline at end of file
added data/fixtures/scryfall/clb-double-faced.json +89 −0
@@ -0,0 +1,89 @@
1 +{
2 + "raw": {
3 + "url": "https://scryfall.com/card/clb/682/tlincalli-hunter-retrieve-prey?utm_source=api",
4 + "externalId": "45b5d677-ff77-47ce-8612-bae70c326e4e",
5 + "kind": "catalog_item",
6 + "engine": "api",
7 + "fetchedAt": "2026-09-07T04:27:44.899Z",
8 + "payload": {
9 + "card": {
10 + "id": "45b5d677-ff77-47ce-8612-bae70c326e4e",
11 + "oracle_id": "79b69b38-c01d-499a-a865-8c1cecf9fae0",
12 + "name": "Tlincalli Hunter // Retrieve Prey",
13 + "lang": "en",
14 + "released_at": "2022-06-10",
15 + "set": "clb",
16 + "set_name": "Commander Legends: Battle for Baldur's Gate",
17 + "set_type": "draft_innovation",
18 + "collector_number": "682",
19 + "rarity": "rare",
20 + "layout": "adventure",
21 + "finishes": [
22 + "nonfoil"
23 + ],
24 + "promo": false,
25 + "reserved": false,
26 + "reprint": false,
27 + "variation": false,
28 + "full_art": false,
29 + "border_color": "black",
30 + "frame": "2015",
31 + "digital": false,
32 + "artist": "Helge C. Balzer",
33 + "mana_cost": "{5}{G}{G} // {1}{G}",
34 + "type_line": "Creature — Scorpion Scout // Sorcery — Adventure",
35 + "cmc": 7,
36 + "colors": [
37 + "G"
38 + ],
39 + "tcgplayer_id": 273671,
40 + "cardmarket_id": 661382,
41 + "mtgo_id": 101460,
42 + "multiverse_ids": [
43 + 567247
44 + ],
45 + "scryfall_uri": "https://scryfall.com/card/clb/682/tlincalli-hunter-retrieve-prey?utm_source=api",
46 + "image_uris": {
47 + "small": "https://cards.scryfall.io/small/front/4/5/45b5d677-ff77-47ce-8612-bae70c326e4e.jpg?1783922499",
48 + "normal": "https://cards.scryfall.io/normal/front/4/5/45b5d677-ff77-47ce-8612-bae70c326e4e.jpg?1783922499",
49 + "large": "https://cards.scryfall.io/large/front/4/5/45b5d677-ff77-47ce-8612-bae70c326e4e.jpg?1783922499",
50 + "png": "https://cards.scryfall.io/png/front/4/5/45b5d677-ff77-47ce-8612-bae70c326e4e.png?1783922499",
51 + "art_crop": "https://cards.scryfall.io/art_crop/front/4/5/45b5d677-ff77-47ce-8612-bae70c326e4e.jpg?1783922499",
52 + "border_crop": "https://cards.scryfall.io/border_crop/front/4/5/45b5d677-ff77-47ce-8612-bae70c326e4e.jpg?1783922499",
53 + "thumb": "https://cards.scryfall.io/thumb/front/4/5/45b5d677-ff77-47ce-8612-bae70c326e4e.webp?1783922499",
54 + "grid": "https://cards.scryfall.io/grid/front/4/5/45b5d677-ff77-47ce-8612-bae70c326e4e.webp?1783922499",
55 + "display": "https://cards.scryfall.io/display/front/4/5/45b5d677-ff77-47ce-8612-bae70c326e4e.webp?1783922499",
56 + "art": "https://cards.scryfall.io/art/front/4/5/45b5d677-ff77-47ce-8612-bae70c326e4e.webp?1783922499",
57 + "crop": "https://cards.scryfall.io/crop/front/4/5/45b5d677-ff77-47ce-8612-bae70c326e4e.webp?1783922499"
58 + },
59 + "card_faces": [
60 + {
61 + "name": "Tlincalli Hunter"
62 + },
63 + {
64 + "name": "Retrieve Prey"
65 + }
66 + ],
67 + "prices": {
68 + "usd": "0.80",
69 + "usd_foil": null,
70 + "usd_etched": null,
71 + "eur": "1.03",
72 + "eur_foil": null,
73 + "tix": "0.24"
74 + }
75 + },
76 + "bulkUpdatedAt": "2026-09-06T21:05:43.673+00:00"
77 + }
78 + },
79 + "expect": {
80 + "minCount": 2,
81 + "requiredFields": [
82 + "attributes.identifiers.scryfall_id",
83 + "attributes.setCode",
84 + "attributes.number"
85 + ]
86 + },
87 + "note": "Live capture of https://api.scryfall.com/cards/clb/682; bulkUpdatedAt copied from the bulk-data listing of the same day.",
88 + "capturedAt": "2026-09-07T04:27:45.625Z"
89 +}
\ No newline at end of file
added data/fixtures/scryfall/neo-showcase-foil-only.json +87 −0
@@ -0,0 +1,87 @@
1 +{
2 + "raw": {
3 + "url": "https://scryfall.com/card/neo/430/hidetsugu-devouring-chaos?utm_source=api",
4 + "externalId": "c046b0b3-05f0-4468-817f-355e87552faf",
5 + "kind": "catalog_item",
6 + "engine": "api",
7 + "fetchedAt": "2026-09-07T04:27:44.899Z",
8 + "payload": {
9 + "card": {
10 + "id": "c046b0b3-05f0-4468-817f-355e87552faf",
11 + "oracle_id": "d56f24a1-04dc-4769-9941-05bd99508e40",
12 + "name": "Hidetsugu, Devouring Chaos",
13 + "lang": "en",
14 + "released_at": "2022-02-18",
15 + "set": "neo",
16 + "set_name": "Kamigawa: Neon Dynasty",
17 + "set_type": "expansion",
18 + "collector_number": "430",
19 + "rarity": "rare",
20 + "layout": "normal",
21 + "finishes": [
22 + "foil"
23 + ],
24 + "frame_effects": [
25 + "showcase",
26 + "legendary",
27 + "inverted"
28 + ],
29 + "promo_types": [
30 + "neonink",
31 + "boosterfun"
32 + ],
33 + "promo": false,
34 + "reserved": false,
35 + "reprint": false,
36 + "variation": false,
37 + "full_art": false,
38 + "border_color": "black",
39 + "frame": "2015",
40 + "digital": false,
41 + "artist": "SENNSU",
42 + "mana_cost": "{3}{B}",
43 + "type_line": "Legendary Creature — Ogre Demon",
44 + "cmc": 4,
45 + "colors": [
46 + "B"
47 + ],
48 + "tcgplayer_id": 262489,
49 + "cardmarket_id": 605025,
50 + "multiverse_ids": [],
51 + "scryfall_uri": "https://scryfall.com/card/neo/430/hidetsugu-devouring-chaos?utm_source=api",
52 + "image_uris": {
53 + "small": "https://cards.scryfall.io/small/front/c/0/c046b0b3-05f0-4468-817f-355e87552faf.jpg?1783923754",
54 + "normal": "https://cards.scryfall.io/normal/front/c/0/c046b0b3-05f0-4468-817f-355e87552faf.jpg?1783923754",
55 + "large": "https://cards.scryfall.io/large/front/c/0/c046b0b3-05f0-4468-817f-355e87552faf.jpg?1783923754",
56 + "png": "https://cards.scryfall.io/png/front/c/0/c046b0b3-05f0-4468-817f-355e87552faf.png?1783923754",
57 + "art_crop": "https://cards.scryfall.io/art_crop/front/c/0/c046b0b3-05f0-4468-817f-355e87552faf.jpg?1783923754",
58 + "border_crop": "https://cards.scryfall.io/border_crop/front/c/0/c046b0b3-05f0-4468-817f-355e87552faf.jpg?1783923754",
59 + "thumb": "https://cards.scryfall.io/thumb/front/c/0/c046b0b3-05f0-4468-817f-355e87552faf.webp?1783923754",
60 + "grid": "https://cards.scryfall.io/grid/front/c/0/c046b0b3-05f0-4468-817f-355e87552faf.webp?1783923754",
61 + "display": "https://cards.scryfall.io/display/front/c/0/c046b0b3-05f0-4468-817f-355e87552faf.webp?1783923754",
62 + "art": "https://cards.scryfall.io/art/front/c/0/c046b0b3-05f0-4468-817f-355e87552faf.webp?1783923754",
63 + "crop": "https://cards.scryfall.io/crop/front/c/0/c046b0b3-05f0-4468-817f-355e87552faf.webp?1783923754"
64 + },
65 + "prices": {
66 + "usd": null,
67 + "usd_foil": "93.85",
68 + "usd_etched": null,
69 + "eur": null,
70 + "eur_foil": "63.89",
71 + "tix": null
72 + }
73 + },
74 + "bulkUpdatedAt": "2026-09-06T21:05:43.673+00:00"
75 + }
76 + },
77 + "expect": {
78 + "minCount": 2,
79 + "requiredFields": [
80 + "attributes.identifiers.scryfall_id",
81 + "attributes.setCode",
82 + "attributes.number"
83 + ]
84 + },
85 + "note": "Live capture of https://api.scryfall.com/cards/neo/430; bulkUpdatedAt copied from the bulk-data listing of the same day.",
86 + "capturedAt": "2026-09-07T04:27:45.464Z"
87 +}
\ No newline at end of file
added data/fixtures/scryfall/secret-lair-foil-nonfoil.json +82 −0
@@ -0,0 +1,82 @@
1 +{
2 + "raw": {
3 + "url": "https://scryfall.com/card/sld/1145/lathliss-dragon-queen?utm_source=api",
4 + "externalId": "0f0cdff4-c81e-4e53-8721-748eb71d9e81",
5 + "kind": "catalog_item",
6 + "engine": "api",
7 + "fetchedAt": "2026-09-07T04:27:44.899Z",
8 + "payload": {
9 + "card": {
10 + "id": "0f0cdff4-c81e-4e53-8721-748eb71d9e81",
11 + "oracle_id": "15fef45d-f1a9-49b2-abaa-fe77bb9d1afd",
12 + "name": "Lathliss, Dragon Queen",
13 + "lang": "en",
14 + "released_at": "2022-11-04",
15 + "set": "sld",
16 + "set_name": "Secret Lair Drop",
17 + "set_type": "box",
18 + "collector_number": "1145",
19 + "rarity": "rare",
20 + "layout": "normal",
21 + "finishes": [
22 + "nonfoil",
23 + "foil"
24 + ],
25 + "frame_effects": [
26 + "legendary"
27 + ],
28 + "promo": false,
29 + "reserved": false,
30 + "reprint": true,
31 + "variation": false,
32 + "full_art": false,
33 + "border_color": "black",
34 + "frame": "2015",
35 + "digital": false,
36 + "artist": "Tyler Jacobson, age 39",
37 + "mana_cost": "{4}{R}{R}",
38 + "type_line": "Legendary Creature — Dragon",
39 + "cmc": 6,
40 + "colors": [
41 + "R"
42 + ],
43 + "tcgplayer_id": 451241,
44 + "cardmarket_id": 685701,
45 + "multiverse_ids": [],
46 + "scryfall_uri": "https://scryfall.com/card/sld/1145/lathliss-dragon-queen?utm_source=api",
47 + "image_uris": {
48 + "small": "https://cards.scryfall.io/small/front/0/f/0f0cdff4-c81e-4e53-8721-748eb71d9e81.jpg?1783920209",
49 + "normal": "https://cards.scryfall.io/normal/front/0/f/0f0cdff4-c81e-4e53-8721-748eb71d9e81.jpg?1783920209",
50 + "large": "https://cards.scryfall.io/large/front/0/f/0f0cdff4-c81e-4e53-8721-748eb71d9e81.jpg?1783920209",
51 + "png": "https://cards.scryfall.io/png/front/0/f/0f0cdff4-c81e-4e53-8721-748eb71d9e81.png?1783920209",
52 + "art_crop": "https://cards.scryfall.io/art_crop/front/0/f/0f0cdff4-c81e-4e53-8721-748eb71d9e81.jpg?1783920209",
53 + "border_crop": "https://cards.scryfall.io/border_crop/front/0/f/0f0cdff4-c81e-4e53-8721-748eb71d9e81.jpg?1783920209",
54 + "thumb": "https://cards.scryfall.io/thumb/front/0/f/0f0cdff4-c81e-4e53-8721-748eb71d9e81.webp?1783920209",
55 + "grid": "https://cards.scryfall.io/grid/front/0/f/0f0cdff4-c81e-4e53-8721-748eb71d9e81.webp?1783920209",
56 + "display": "https://cards.scryfall.io/display/front/0/f/0f0cdff4-c81e-4e53-8721-748eb71d9e81.webp?1783920209",
57 + "art": "https://cards.scryfall.io/art/front/0/f/0f0cdff4-c81e-4e53-8721-748eb71d9e81.webp?1783920209",
58 + "crop": "https://cards.scryfall.io/crop/front/0/f/0f0cdff4-c81e-4e53-8721-748eb71d9e81.webp?1783920209"
59 + },
60 + "prices": {
61 + "usd": "6.74",
62 + "usd_foil": "7.79",
63 + "usd_etched": null,
64 + "eur": "5.96",
65 + "eur_foil": "6.24",
66 + "tix": null
67 + }
68 + },
69 + "bulkUpdatedAt": "2026-09-06T21:05:43.673+00:00"
70 + }
71 + },
72 + "expect": {
73 + "minCount": 4,
74 + "requiredFields": [
75 + "attributes.identifiers.scryfall_id",
76 + "attributes.setCode",
77 + "attributes.number"
78 + ]
79 + },
80 + "note": "Live capture of https://api.scryfall.com/cards/sld/1145; bulkUpdatedAt copied from the bulk-data listing of the same day.",
81 + "capturedAt": "2026-09-07T04:27:45.306Z"
82 +}
\ No newline at end of file
added data/fixtures/ygoprodeck/46986421.json +549 −0
@@ -0,0 +1,549 @@
1 +{
2 + "raw": {
3 + "url": "https://ygoprodeck.com/card/dark-magician-4003",
4 + "externalId": "46986421",
5 + "kind": "catalog_item",
6 + "engine": "api",
7 + "fetchedAt": "2026-09-07T04:27:44.899Z",
8 + "payload": {
9 + "card": {
10 + "id": 46986421,
11 + "name": "Dark Magician",
12 + "type": "Normal Monster",
13 + "humanReadableCardType": "Normal Monster",
14 + "frameType": "normal",
15 + "race": "Spellcaster",
16 + "attribute": "DARK",
17 + "archetype": "Dark Magician",
18 + "atk": 2500,
19 + "def": 2100,
20 + "level": 7,
21 + "ygoprodeck_url": "https://ygoprodeck.com/card/dark-magician-4003",
22 + "card_sets": [
23 + {
24 + "set_name": "2-Player Starter Set",
25 + "set_code": "STAX-EN005",
26 + "set_rarity": "Common",
27 + "set_rarity_code": "(C)",
28 + "set_price": "0"
29 + },
30 + {
31 + "set_name": "2016 Mega-Tins",
32 + "set_code": "CT13-EN003",
33 + "set_rarity": "Ultra Rare",
34 + "set_rarity_code": "(UR)",
35 + "set_price": "6.97"
36 + },
37 + {
38 + "set_name": "2017 Mega-Tins",
39 + "set_code": "CT14-EN001",
40 + "set_rarity": "Secret Rare",
41 + "set_rarity_code": "(ScR)",
42 + "set_price": "9.66"
43 + },
44 + {
45 + "set_name": "25th Anniversary Tin: Dueling Heroes",
46 + "set_code": "TN23-EN001",
47 + "set_rarity": "Quarter Century Secret Rare",
48 + "set_rarity_code": "",
49 + "set_price": "0"
50 + },
51 + {
52 + "set_name": "Adidas collaboration card",
53 + "set_code": "ADC1-EN001",
54 + "set_rarity": "Secret Rare",
55 + "set_rarity_code": "(ScR)",
56 + "set_price": "0"
57 + },
58 + {
59 + "set_name": "Battle of Chaos",
60 + "set_code": "25TH-EN001",
61 + "set_rarity": "Ultra Rare",
62 + "set_rarity_code": "(UR)",
63 + "set_price": "0"
64 + },
65 + {
66 + "set_name": "Booster Pack Collectors Tins 2002",
67 + "set_code": "BPT-001",
68 + "set_rarity": "Secret Rare",
69 + "set_rarity_code": "(ScR)",
70 + "set_price": "63.01"
71 + },
72 + {
73 + "set_name": "Collectible Tins 2003",
74 + "set_code": "BPT-007",
75 + "set_rarity": "Secret Rare",
76 + "set_rarity_code": "(ScR)",
77 + "set_price": "19.08"
78 + },
79 + {
80 + "set_name": "Dark Beginning 1",
81 + "set_code": "DB1-EN102",
82 + "set_rarity": "Ultra Rare",
83 + "set_rarity_code": "(UR)",
84 + "set_price": "0"
85 + },
86 + {
87 + "set_name": "Dark Legends",
88 + "set_code": "DLG1-EN004",
89 + "set_rarity": "Rare",
90 + "set_rarity_code": "(R)",
91 + "set_price": "11.64"
92 + },
93 + {
94 + "set_name": "Duel Power",
95 + "set_code": "DUPO-EN101",
96 + "set_rarity": "Ultra Rare",
97 + "set_rarity_code": "(UR)",
98 + "set_price": "3.52"
99 + },
100 + {
101 + "set_name": "Duel Terminal - Preview Wave 1",
102 + "set_code": "DTP1-EN002",
103 + "set_rarity": "Duel Terminal Normal Parallel Rare",
104 + "set_rarity_code": "(DNPR)",
105 + "set_price": "0.00"
106 + },
107 + {
108 + "set_name": "Duel Terminal - Preview Wave 2",
109 + "set_code": "DTP1-EN002",
110 + "set_rarity": "Duel Terminal Rare Parallel Rare",
111 + "set_rarity_code": "(DRPR)",
112 + "set_price": "0"
113 + },
114 + {
115 + "set_name": "Duel Terminal 1",
116 + "set_code": "DT01-EN002",
117 + "set_rarity": "Duel Terminal Rare Parallel Rare",
118 + "set_rarity_code": "(DRPR)",
119 + "set_price": "0"
120 + },
121 + {
122 + "set_name": "Duelist League 2 participation cards",
123 + "set_code": "DL11-EN001",
124 + "set_rarity": "Rare",
125 + "set_rarity_code": "(R)",
126 + "set_price": "70.6"
127 + },
128 + {
129 + "set_name": "Duelist Pack: Battle City",
130 + "set_code": "DPBC-EN008",
131 + "set_rarity": "Super Rare",
132 + "set_rarity_code": "(SR)",
133 + "set_price": "0"
134 + },
135 + {
136 + "set_name": "Duelist Pack: Yugi",
137 + "set_code": "DPYG-EN001",
138 + "set_rarity": "Rare",
139 + "set_rarity_code": "(R)",
140 + "set_price": "2.24"
141 + },
142 + {
143 + "set_name": "Duelist Saga",
144 + "set_code": "DUSA-EN100",
145 + "set_rarity": "Ultra Rare",
146 + "set_rarity_code": "(UR)",
147 + "set_price": "11.34"
148 + },
149 + {
150 + "set_name": "Forbidden Legacy",
151 + "set_code": "FL1-EN002",
152 + "set_rarity": "Secret Rare",
153 + "set_rarity_code": "(ScR)",
154 + "set_price": "16.26"
155 + },
156 + {
157 + "set_name": "Ghosts From the Past",
158 + "set_code": "GFTP-EN128",
159 + "set_rarity": "Ghost Rare",
160 + "set_rarity_code": "(GR)",
161 + "set_price": "0"
162 + },
163 + {
164 + "set_name": "Hidden Arsenal: Chapter 1",
165 + "set_code": "HAC1-EN002",
166 + "set_rarity": "Duel Terminal Ultra Parallel Rare",
167 + "set_rarity_code": "(DUPR)",
168 + "set_price": "0"
169 + },
170 + {
171 + "set_name": "KC Grand Tournament 2021 prize card",
172 + "set_code": "2021-EN001",
173 + "set_rarity": "Extra Secret Rare",
174 + "set_rarity_code": "",
175 + "set_price": "0.00"
176 + },
177 + {
178 + "set_name": "Legend of Blue Eyes White Dragon",
179 + "set_code": "LOB-005",
180 + "set_rarity": "Ultra Rare",
181 + "set_rarity_code": "(UR)",
182 + "set_price": "46.71"
183 + },
184 + {
185 + "set_name": "Legend of Blue Eyes White Dragon",
186 + "set_code": "LOB-E003",
187 + "set_rarity": "Ultra Rare",
188 + "set_rarity_code": "(UR)",
189 + "set_price": "53.66"
190 + },
191 + {
192 + "set_name": "Legend of Blue Eyes White Dragon",
193 + "set_code": "LOB-EN005",
194 + "set_rarity": "Ultra Rare",
195 + "set_rarity_code": "(UR)",
196 + "set_price": "49.41"
197 + },
198 + {
199 + "set_name": "Legendary Collection",
200 + "set_code": "LC01-EN005",
201 + "set_rarity": "Ultra Rare",
202 + "set_rarity_code": "(UR)",
203 + "set_price": "0"
204 + },
205 + {
206 + "set_name": "Legendary Collection 3: Yugi's World Mega Pack",
207 + "set_code": "LCYW-EN001",
208 + "set_rarity": "Secret Rare",
209 + "set_rarity_code": "(ScR)",
210 + "set_price": "0"
211 + },
212 + {
213 + "set_name": "Legendary Collection: 25th Anniversary Edition",
214 + "set_code": "LC01-EN005",
215 + "set_rarity": "Quarter Century Secret Rare",
216 + "set_rarity_code": "",
217 + "set_price": "0"
218 + },
219 + {
220 + "set_name": "Legendary Decks II",
221 + "set_code": "LDK2-ENY10",
222 + "set_rarity": "Common",
223 + "set_rarity_code": "(C)",
224 + "set_price": "2.35"
225 + },
226 + {
227 + "set_name": "Legendary Dragon Decks",
228 + "set_code": "LEDD-ENA01",
229 + "set_rarity": "Common",
230 + "set_rarity_code": "(C)",
231 + "set_price": "1.72"
232 + },
233 + {
234 + "set_name": "Maximum Gold",
235 + "set_code": "MAGO-EN002",
236 + "set_rarity": "Premium Gold Rare",
237 + "set_rarity_code": "(PG)",
238 + "set_price": "0"
239 + },
240 + {
241 + "set_name": "Maximum Gold: El Dorado",
242 + "set_code": "MGED-EN002",
243 + "set_rarity": "Premium Gold Rare",
244 + "set_rarity_code": "(PG)",
245 + "set_price": "0"
246 + },
247 + {
248 + "set_name": "Retro Pack",
249 + "set_code": "RP01-EN003",
250 + "set_rarity": "Ultra Rare",
251 + "set_rarity_code": "(UR)",
252 + "set_price": "503.21"
253 + },
254 + {
255 + "set_name": "Shonen Jump Vol. 9, Issue 4 promotional card",
256 + "set_code": "JUMP-EN049",
257 + "set_rarity": "Ultra Rare",
258 + "set_rarity_code": "(UR)",
259 + "set_price": "129.27"
260 + },
261 + {
262 + "set_name": "Speed Duel Starter Decks: Destiny Masters",
263 + "set_code": "SS01-ENA01",
264 + "set_rarity": "Common",
265 + "set_rarity_code": "(C)",
266 + "set_price": "1.61"
267 + },
268 + {
269 + "set_name": "Speed Duel Starter Decks: Match of the Millennium",
270 + "set_code": "SS04-ENA01",
271 + "set_rarity": "Common",
272 + "set_rarity_code": "(C)",
273 + "set_price": "0"
274 + },
275 + {
276 + "set_name": "Speed Duel Tournament Pack 1",
277 + "set_code": "STP1-EN001",
278 + "set_rarity": "Ultra Rare",
279 + "set_rarity_code": "(UR)",
280 + "set_price": "0"
281 + },
282 + {
283 + "set_name": "Speed Duel: Battle City Box",
284 + "set_code": "SBCB-EN001",
285 + "set_rarity": "Common",
286 + "set_rarity_code": "(C)",
287 + "set_price": "1.55"
288 + },
289 + {
290 + "set_name": "Speed Duel: Battle City Box",
291 + "set_code": "SBCB-EN001",
292 + "set_rarity": "Secret Rare",
293 + "set_rarity_code": "(ScR)",
294 + "set_price": "6.53"
295 + },
296 + {
297 + "set_name": "Speed Duel: Streets of Battle City",
298 + "set_code": "SBC1-ENA01",
299 + "set_rarity": "Common",
300 + "set_rarity_code": "(C)",
301 + "set_price": "0"
302 + },
303 + {
304 + "set_name": "Speed Duel: Streets of Battle City",
305 + "set_code": "SBC1-ENA01",
306 + "set_rarity": "Secret Rare",
307 + "set_rarity_code": "(ScR)",
308 + "set_price": "0"
309 + },
310 + {
311 + "set_name": "Starter Deck: Yugi",
312 + "set_code": "SDY-006",
313 + "set_rarity": "Ultra Rare",
314 + "set_rarity_code": "(UR)",
315 + "set_price": "9.96"
316 + },
317 + {
318 + "set_name": "Starter Deck: Yugi",
319 + "set_code": "SDY-E005",
320 + "set_rarity": "Ultra Rare",
321 + "set_rarity_code": "(UR)",
322 + "set_price": "24.46"
323 + },
324 + {
325 + "set_name": "Starter Deck: Yugi Evolution",
326 + "set_code": "SYE-001",
327 + "set_rarity": "Super Rare",
328 + "set_rarity_code": "(SR)",
329 + "set_price": "0"
330 + },
331 + {
332 + "set_name": "Starter Deck: Yugi Reloaded",
333 + "set_code": "YSYR-EN001",
334 + "set_rarity": "Common",
335 + "set_rarity_code": "(C)",
336 + "set_price": "2.34"
337 + },
338 + {
339 + "set_name": "Starter Deck: Yugi Reloaded",
340 + "set_code": "YSYR-EN001",
341 + "set_rarity": "Ultimate Rare",
342 + "set_rarity_code": "(UtR)",
343 + "set_price": "0"
344 + },
345 + {
346 + "set_name": "Structure Deck: Spellcaster's Judgment",
347 + "set_code": "SD6-EN003",
348 + "set_rarity": "Common",
349 + "set_rarity_code": "(C)",
350 + "set_price": "2.26"
351 + },
352 + {
353 + "set_name": "Structure Deck: Yugi Muto",
354 + "set_code": "SDMY-EN010",
355 + "set_rarity": "Common",
356 + "set_rarity_code": "(C)",
357 + "set_price": "0"
358 + },
359 + {
360 + "set_name": "WSJ Jump Pack Fall 2016 promotional card",
361 + "set_code": "JMPS-EN003",
362 + "set_rarity": "Ultra Rare",
363 + "set_rarity_code": "(UR)",
364 + "set_price": "171.83"
365 + },
366 + {
367 + "set_name": "Yu-Gi-Oh! Dark Duel Stories promotional cards",
368 + "set_code": "DDS-002",
369 + "set_rarity": "Prismatic Secret Rare",
370 + "set_rarity_code": "(PScR)",
371 + "set_price": "797.61"
372 + },
373 + {
374 + "set_name": "Yu-Gi-Oh! Power of Chaos: Yugi the Destiny promotional cards",
375 + "set_code": "PCY-004",
376 + "set_rarity": "Prismatic Secret Rare",
377 + "set_rarity_code": "(PScR)",
378 + "set_price": "82.23"
379 + },
380 + {
381 + "set_name": "Yu-Gi-Oh! Power of Chaos: Yugi the Destiny promotional cards",
382 + "set_code": "PCY-E004",
383 + "set_rarity": "Prismatic Secret Rare",
384 + "set_rarity_code": "(PScR)",
385 + "set_price": "74.4"
386 + },
387 + {
388 + "set_name": "Yu-Gi-Oh! The Dark Side of Dimensions Movie Pack",
389 + "set_code": "MVP1-EN054",
390 + "set_rarity": "Ultra Rare",
391 + "set_rarity_code": "(UR)",
392 + "set_price": "3.3"
393 + },
394 + {
395 + "set_name": "Yu-Gi-Oh! The Dark Side of Dimensions Movie Pack Secret Edition",
396 + "set_code": "MVP1-ENS54",
397 + "set_rarity": "Secret Rare",
398 + "set_rarity_code": "(ScR)",
399 + "set_price": "19.53"
400 + },
401 + {
402 + "set_name": "Yu-Gi-Oh! The Dark Side of Dimensions Movie Pack Secret Edition",
403 + "set_code": "MVP1-ENSV3",
404 + "set_rarity": "Ultra Rare",
405 + "set_rarity_code": "(UR)",
406 + "set_price": "4.19"
407 + },
408 + {
409 + "set_name": "Yu-Gi-Oh! The Dark Side of Dimensions Movie Pack Special Edition",
410 + "set_code": "MVP1-ENSE3",
411 + "set_rarity": "Ultra Rare",
412 + "set_rarity_code": "(UR)",
413 + "set_price": "4.11"
414 + },
415 + {
416 + "set_name": "Yu-Gi-Oh! The Dark Side of Dimensions Movie Pack: Gold Edition",
417 + "set_code": "MVP1-ENG54",
418 + "set_rarity": "Gold Rare",
419 + "set_rarity_code": "(GUR)",
420 + "set_price": "5.83"
421 + },
422 + {
423 + "set_name": "Yu-Gi-Oh! The Dark Side of Dimensions Movie Pack: Gold Edition",
424 + "set_code": "MVP1-ENGV3",
425 + "set_rarity": "Gold Secret Rare",
426 + "set_rarity_code": "(GScR)",
427 + "set_price": "8.39"
428 + },
429 + {
430 + "set_name": "Yugi's Collector Box",
431 + "set_code": "YUCB-EN001",
432 + "set_rarity": "Ultra Rare",
433 + "set_rarity_code": "(UR)",
434 + "set_price": "0"
435 + },
436 + {
437 + "set_name": "Yugi's Legendary Decks",
438 + "set_code": "YGLD-ENA03",
439 + "set_rarity": "Common",
440 + "set_rarity_code": "(C)",
441 + "set_price": "1.7"
442 + },
443 + {
444 + "set_name": "Yugi's Legendary Decks",
445 + "set_code": "YGLD-ENB02",
446 + "set_rarity": "Ultra Rare",
447 + "set_rarity_code": "(UR)",
448 + "set_price": "0"
449 + },
450 + {
451 + "set_name": "Yugi's Legendary Decks",
452 + "set_code": "YGLD-ENC09",
453 + "set_rarity": "Ultra Rare",
454 + "set_rarity_code": "(UR)",
455 + "set_price": "0"
456 + }
457 + ],
458 + "card_images": [
459 + {
460 + "id": 46986421,
461 + "image_url": "https://images.ygoprodeck.com/images/cards/46986421.jpg",
462 + "image_url_small": "https://images.ygoprodeck.com/images/cards_small/46986421.jpg",
463 + "image_url_cropped": "https://images.ygoprodeck.com/images/cards_cropped/46986421.jpg"
464 + },
465 + {
466 + "id": 46986414,
467 + "image_url": "https://images.ygoprodeck.com/images/cards/46986414.jpg",
468 + "image_url_small": "https://images.ygoprodeck.com/images/cards_small/46986414.jpg",
469 + "image_url_cropped": "https://images.ygoprodeck.com/images/cards_cropped/46986414.jpg"
470 + },
471 + {
472 + "id": 46986420,
473 + "image_url": "https://images.ygoprodeck.com/images/cards/46986420.jpg",
474 + "image_url_small": "https://images.ygoprodeck.com/images/cards_small/46986420.jpg",
475 + "image_url_cropped": "https://images.ygoprodeck.com/images/cards_cropped/46986420.jpg"
476 + },
477 + {
478 + "id": 36996508,
479 + "image_url": "https://images.ygoprodeck.com/images/cards/36996508.jpg",
480 + "image_url_small": "https://images.ygoprodeck.com/images/cards_small/36996508.jpg",
481 + "image_url_cropped": "https://images.ygoprodeck.com/images/cards_cropped/36996508.jpg"
482 + },
483 + {
484 + "id": 46986419,
485 + "image_url": "https://images.ygoprodeck.com/images/cards/46986419.jpg",
486 + "image_url_small": "https://images.ygoprodeck.com/images/cards_small/46986419.jpg",
487 + "image_url_cropped": "https://images.ygoprodeck.com/images/cards_cropped/46986419.jpg"
488 + },
489 + {
490 + "id": 46986418,
491 + "image_url": "https://images.ygoprodeck.com/images/cards/46986418.jpg",
492 + "image_url_small": "https://images.ygoprodeck.com/images/cards_small/46986418.jpg",
493 + "image_url_cropped": "https://images.ygoprodeck.com/images/cards_cropped/46986418.jpg"
494 + },
495 + {
496 + "id": 46986417,
497 + "image_url": "https://images.ygoprodeck.com/images/cards/46986417.jpg",
498 + "image_url_small": "https://images.ygoprodeck.com/images/cards_small/46986417.jpg",
499 + "image_url_cropped": "https://images.ygoprodeck.com/images/cards_cropped/46986417.jpg"
500 + },
501 + {
502 + "id": 46986416,
503 + "image_url": "https://images.ygoprodeck.com/images/cards/46986416.jpg",
504 + "image_url_small": "https://images.ygoprodeck.com/images/cards_small/46986416.jpg",
505 + "image_url_cropped": "https://images.ygoprodeck.com/images/cards_cropped/46986416.jpg"
506 + },
507 + {
508 + "id": 46986415,
509 + "image_url": "https://images.ygoprodeck.com/images/cards/46986415.jpg",
510 + "image_url_small": "https://images.ygoprodeck.com/images/cards_small/46986415.jpg",
511 + "image_url_cropped": "https://images.ygoprodeck.com/images/cards_cropped/46986415.jpg"
512 + }
513 + ],
514 + "card_prices": [
515 + {
516 + "cardmarket_price": "0.02",
517 + "tcgplayer_price": "0.33",
518 + "ebay_price": "0.99",
519 + "amazon_price": "14.45",
520 + "coolstuffinc_price": "0.39"
521 + }
522 + ],
523 + "misc_info": [
524 + {
525 + "konami_id": 4041,
526 + "tcg_date": "2002-03-08",
527 + "ocg_date": "1999-02-04",
528 + "md_rarity": "Ultra Rare",
529 + "treated_as": "Dark Magician"
530 + }
531 + ]
532 + }
533 + }
534 + },
535 + "expect": {
536 + "minCount": 62,
537 + "kinds": [
538 + "catalog_item",
539 + "price_observation"
540 + ],
541 + "requiredFields": [
542 + "attributes.identifiers.ygo_id",
543 + "attributes.set",
544 + "attributes.number"
545 + ]
546 + },
547 + "note": "Live capture of cardinfo.php?name=…&misc=yes (trimmed).",
548 + "capturedAt": "2026-09-07T04:27:53.794Z"
549 +}
\ No newline at end of file
added data/fixtures/ygoprodeck/55144522.json +209 −0
@@ -0,0 +1,209 @@
1 +{
2 + "raw": {
3 + "url": "https://ygoprodeck.com/card/pot-of-greed-4698",
4 + "externalId": "55144522",
5 + "kind": "catalog_item",
6 + "engine": "api",
7 + "fetchedAt": "2026-09-07T04:27:44.899Z",
8 + "payload": {
9 + "card": {
10 + "id": 55144522,
11 + "name": "Pot of Greed",
12 + "type": "Spell Card",
13 + "humanReadableCardType": "Normal Spell",
14 + "frameType": "spell",
15 + "race": "Normal",
16 + "archetype": "Greed",
17 + "ygoprodeck_url": "https://ygoprodeck.com/card/pot-of-greed-4698",
18 + "card_sets": [
19 + {
20 + "set_name": "2025 Mega-Pack Tin",
21 + "set_code": "MP25-EN050",
22 + "set_rarity": "Starlight Rare",
23 + "set_rarity_code": "(StR)",
24 + "set_price": "0"
25 + },
26 + {
27 + "set_name": "Battle Pack 2: War of the Giants",
28 + "set_code": "BP02-EN129",
29 + "set_rarity": "Mosaic Rare",
30 + "set_rarity_code": "(MSR)",
31 + "set_price": "0"
32 + },
33 + {
34 + "set_name": "Battle Pack 2: War of the Giants",
35 + "set_code": "BP02-EN129",
36 + "set_rarity": "Rare",
37 + "set_rarity_code": "(R)",
38 + "set_price": "0"
39 + },
40 + {
41 + "set_name": "Battle Pack: Epic Dawn",
42 + "set_code": "BP01-EN034",
43 + "set_rarity": "Rare",
44 + "set_rarity_code": "(R)",
45 + "set_price": "0"
46 + },
47 + {
48 + "set_name": "Battle Pack: Epic Dawn",
49 + "set_code": "BP01-EN034",
50 + "set_rarity": "Starfoil Rare",
51 + "set_rarity_code": "(SFR)",
52 + "set_price": "0"
53 + },
54 + {
55 + "set_name": "Dark Beginning 1",
56 + "set_code": "DB1-EN134",
57 + "set_rarity": "Super Rare",
58 + "set_rarity_code": "(SR)",
59 + "set_price": "0"
60 + },
61 + {
62 + "set_name": "Duelist Pack: Kaiba",
63 + "set_code": "DPKB-EN029",
64 + "set_rarity": "Ultimate Rare",
65 + "set_rarity_code": "(UtR)",
66 + "set_price": "0"
67 + },
68 + {
69 + "set_name": "Legend of Blue Eyes White Dragon",
70 + "set_code": "LOB-119",
71 + "set_rarity": "Rare",
72 + "set_rarity_code": "(R)",
73 + "set_price": "4.2"
74 + },
75 + {
76 + "set_name": "Legend of Blue Eyes White Dragon",
77 + "set_code": "LOB-EN119",
78 + "set_rarity": "Rare",
79 + "set_rarity_code": "(R)",
80 + "set_price": "0"
81 + },
82 + {
83 + "set_name": "Legendary Collection 3: Yugi's World Mega Pack",
84 + "set_code": "LCYW-EN059",
85 + "set_rarity": "Secret Rare",
86 + "set_rarity_code": "(ScR)",
87 + "set_price": "0"
88 + },
89 + {
90 + "set_name": "Legendary Collection 4: Joey's World Mega Pack",
91 + "set_code": "LCJW-EN061",
92 + "set_rarity": "Secret Rare",
93 + "set_rarity_code": "(ScR)",
94 + "set_price": "0"
95 + },
96 + {
97 + "set_name": "Magic Ruler",
98 + "set_code": "MRL-E129",
99 + "set_rarity": "Rare",
100 + "set_rarity_code": "(R)",
101 + "set_price": "25.34"
102 + },
103 + {
104 + "set_name": "Starter Deck: Yugi Evolution",
105 + "set_code": "SYE-040",
106 + "set_rarity": "Common",
107 + "set_rarity_code": "(C)",
108 + "set_price": "4.61"
109 + },
110 + {
111 + "set_name": "Structure Deck: Blaze of Destruction",
112 + "set_code": "SD3-EN019",
113 + "set_rarity": "Common",
114 + "set_rarity_code": "(C)",
115 + "set_price": "0"
116 + },
117 + {
118 + "set_name": "Structure Deck: Dragon's Roar",
119 + "set_code": "SD1-EN015",
120 + "set_rarity": "Common",
121 + "set_rarity_code": "(C)",
122 + "set_price": "4.66"
123 + },
124 + {
125 + "set_name": "Structure Deck: Fury from the Deep",
126 + "set_code": "SD4-EN018",
127 + "set_rarity": "Common",
128 + "set_rarity_code": "(C)",
129 + "set_price": "4.62"
130 + },
131 + {
132 + "set_name": "Structure Deck: Zombie Madness",
133 + "set_code": "SD2-EN017",
134 + "set_rarity": "Common",
135 + "set_rarity_code": "(C)",
136 + "set_price": "4.57"
137 + },
138 + {
139 + "set_name": "The Pot Collection",
140 + "set_code": "TBC1-EN001",
141 + "set_rarity": "Ultra Parallel Rare",
142 + "set_rarity_code": "(UPR)",
143 + "set_price": "0"
144 + },
145 + {
146 + "set_name": "The Pot Collection",
147 + "set_code": "TBC1-ENS01",
148 + "set_rarity": "Quarter Century Secret Rare",
149 + "set_rarity_code": "",
150 + "set_price": "0"
151 + },
152 + {
153 + "set_name": "Tournament Pack: 3rd Season",
154 + "set_code": "TP3-014",
155 + "set_rarity": "Common",
156 + "set_rarity_code": "(C)",
157 + "set_price": "7.61"
158 + },
159 + {
160 + "set_name": "Yugi's Legendary Decks",
161 + "set_code": "YGLD-ENB26",
162 + "set_rarity": "Common",
163 + "set_rarity_code": "(C)",
164 + "set_price": "4.58"
165 + }
166 + ],
167 + "card_images": [
168 + {
169 + "id": 55144522,
170 + "image_url": "https://images.ygoprodeck.com/images/cards/55144522.jpg",
171 + "image_url_small": "https://images.ygoprodeck.com/images/cards_small/55144522.jpg",
172 + "image_url_cropped": "https://images.ygoprodeck.com/images/cards_cropped/55144522.jpg"
173 + }
174 + ],
175 + "card_prices": [
176 + {
177 + "cardmarket_price": "0.15",
178 + "tcgplayer_price": "4.49",
179 + "ebay_price": "4.95",
180 + "amazon_price": "6.18",
181 + "coolstuffinc_price": "3.99"
182 + }
183 + ],
184 + "misc_info": [
185 + {
186 + "konami_id": 4844,
187 + "tcg_date": "2002-03-08",
188 + "ocg_date": "1999-05-27",
189 + "md_rarity": "Ultra Rare"
190 + }
191 + ]
192 + }
193 + }
194 + },
195 + "expect": {
196 + "minCount": 21,
197 + "kinds": [
198 + "catalog_item",
199 + "price_observation"
200 + ],
201 + "requiredFields": [
202 + "attributes.identifiers.ygo_id",
203 + "attributes.set",
204 + "attributes.number"
205 + ]
206 + },
207 + "note": "Live capture of cardinfo.php?name=…&misc=yes (trimmed).",
208 + "capturedAt": "2026-09-07T04:27:53.794Z"
209 +}
\ No newline at end of file
added data/fixtures/ygoprodeck/89631146.json +487 −0
@@ -0,0 +1,487 @@
1 +{
2 + "raw": {
3 + "url": "https://ygoprodeck.com/card/blue-eyes-white-dragon-7485",
4 + "externalId": "89631146",
5 + "kind": "catalog_item",
6 + "engine": "api",
7 + "fetchedAt": "2026-09-07T04:27:44.899Z",
8 + "payload": {
9 + "card": {
10 + "id": 89631146,
11 + "name": "Blue-Eyes White Dragon",
12 + "type": "Normal Monster",
13 + "humanReadableCardType": "Normal Monster",
14 + "frameType": "normal",
15 + "race": "Dragon",
16 + "attribute": "LIGHT",
17 + "archetype": "Blue-Eyes",
18 + "atk": 3000,
19 + "def": 2500,
20 + "level": 8,
21 + "ygoprodeck_url": "https://ygoprodeck.com/card/blue-eyes-white-dragon-7485",
22 + "card_sets": [
23 + {
24 + "set_name": "2016 Mega-Tins",
25 + "set_code": "CT13-EN008",
26 + "set_rarity": "Ultra Rare",
27 + "set_rarity_code": "(UR)",
28 + "set_price": "74.49"
29 + },
30 + {
31 + "set_name": "2017 Mega-Tins",
32 + "set_code": "CT14-EN002",
33 + "set_rarity": "Secret Rare",
34 + "set_rarity_code": "(ScR)",
35 + "set_price": "27.92"
36 + },
37 + {
38 + "set_name": "Anniversary Pack",
39 + "set_code": "YAP1-EN001",
40 + "set_rarity": "Ultra Rare",
41 + "set_rarity_code": "(UR)",
42 + "set_price": "282.08"
43 + },
44 + {
45 + "set_name": "Booster Pack Collectors Tins 2002",
46 + "set_code": "BPT-003",
47 + "set_rarity": "Secret Rare",
48 + "set_rarity_code": "(ScR)",
49 + "set_price": "57.39"
50 + },
51 + {
52 + "set_name": "Collectible Tins 2003",
53 + "set_code": "BPT-009",
54 + "set_rarity": "Secret Rare",
55 + "set_rarity_code": "(ScR)",
56 + "set_price": "28.27"
57 + },
58 + {
59 + "set_name": "Dark Beginning 1",
60 + "set_code": "DB1-EN098",
61 + "set_rarity": "Ultra Rare",
62 + "set_rarity_code": "(UR)",
63 + "set_price": "24.4"
64 + },
65 + {
66 + "set_name": "Dark Legends",
67 + "set_code": "DLG1-EN002",
68 + "set_rarity": "Super Rare",
69 + "set_rarity_code": "(SR)",
70 + "set_price": "173.93"
71 + },
72 + {
73 + "set_name": "Dragons Collide Structure Deck",
74 + "set_code": "SDDC-EN004",
75 + "set_rarity": "Common",
76 + "set_rarity_code": "(C)",
77 + "set_price": "1.97"
78 + },
79 + {
80 + "set_name": "Duel Terminal - Preview Wave 1",
81 + "set_code": "DTP1-EN001",
82 + "set_rarity": "Duel Terminal Normal Parallel Rare",
83 + "set_rarity_code": "(DNPR)",
84 + "set_price": "0.00"
85 + },
86 + {
87 + "set_name": "Duel Terminal - Preview Wave 2",
88 + "set_code": "DTP1-EN001",
89 + "set_rarity": "Duel Terminal Super Parallel Rare",
90 + "set_rarity_code": "(DSPR)",
91 + "set_price": "4167.22"
92 + },
93 + {
94 + "set_name": "Duel Terminal 1",
95 + "set_code": "DT01-EN001",
96 + "set_rarity": "Duel Terminal Super Parallel Rare",
97 + "set_rarity_code": "(DSPR)",
98 + "set_price": "439.99"
99 + },
100 + {
101 + "set_name": "Duelist League 2010 participation cards",
102 + "set_code": "DL09-EN001",
103 + "set_rarity": "Rare",
104 + "set_rarity_code": "(R)",
105 + "set_price": "103.53"
106 + },
107 + {
108 + "set_name": "Duelist Pack: Battle City",
109 + "set_code": "DPBC-EN016",
110 + "set_rarity": "Ultra Rare",
111 + "set_rarity_code": "(UR)",
112 + "set_price": "6.64"
113 + },
114 + {
115 + "set_name": "Duelist Pack: Kaiba",
116 + "set_code": "DPKB-EN001",
117 + "set_rarity": "Super Rare",
118 + "set_rarity_code": "(SR)",
119 + "set_price": "13.79"
120 + },
121 + {
122 + "set_name": "Duelist Saga",
123 + "set_code": "DUSA-EN043",
124 + "set_rarity": "Ultra Rare",
125 + "set_rarity_code": "(UR)",
126 + "set_price": "19.02"
127 + },
128 + {
129 + "set_name": "Forbidden Legacy",
130 + "set_code": "FL1-EN001",
131 + "set_rarity": "Secret Rare",
132 + "set_rarity_code": "(ScR)",
133 + "set_price": "21.66"
134 + },
135 + {
136 + "set_name": "Gold Series: Haunted Mine",
137 + "set_code": "GLD5-EN001",
138 + "set_rarity": "Ghost/Gold Rare",
139 + "set_rarity_code": "(GGR)",
140 + "set_price": "244.44"
141 + },
142 + {
143 + "set_name": "Kaiba's Collector Box",
144 + "set_code": "KACB-EN001",
145 + "set_rarity": "Ultra Rare",
146 + "set_rarity_code": "(UR)",
147 + "set_price": "18.52"
148 + },
149 + {
150 + "set_name": "KC Grand Tournament prize card",
151 + "set_code": "2020-EN001",
152 + "set_rarity": "Extra Secret Rare",
153 + "set_rarity_code": "",
154 + "set_price": "0.00"
155 + },
156 + {
157 + "set_name": "Legend of Blue Eyes White Dragon",
158 + "set_code": "LOB-001",
159 + "set_rarity": "Ultra Rare",
160 + "set_rarity_code": "(UR)",
161 + "set_price": "62.15"
162 + },
163 + {
164 + "set_name": "Legend of Blue Eyes White Dragon",
165 + "set_code": "LOB-E001",
166 + "set_rarity": "Ultra Rare",
167 + "set_rarity_code": "(UR)",
168 + "set_price": "681.49"
169 + },
170 + {
171 + "set_name": "Legend of Blue Eyes White Dragon",
172 + "set_code": "LOB-EN001",
173 + "set_rarity": "Ultra Rare",
174 + "set_rarity_code": "(UR)",
175 + "set_price": "253.34"
176 + },
177 + {
178 + "set_name": "Legendary Collection",
179 + "set_code": "LC01-EN004",
180 + "set_rarity": "Ultra Rare",
181 + "set_rarity_code": "(UR)",
182 + "set_price": "19.57"
183 + },
184 + {
185 + "set_name": "Legendary Collection Kaiba Mega Pack",
186 + "set_code": "LCKC-EN001",
187 + "set_rarity": "Ultra Rare",
188 + "set_rarity_code": "(UR)",
189 + "set_price": "15.87"
190 + },
191 + {
192 + "set_name": "Legendary Decks II",
193 + "set_code": "LDK2-ENK01",
194 + "set_rarity": "Common",
195 + "set_rarity_code": "(C)",
196 + "set_price": "11.9"
197 + },
198 + {
199 + "set_name": "Legendary Duelists: Season 2",
200 + "set_code": "LDS2-EN001",
201 + "set_rarity": "Ultra Rare",
202 + "set_rarity_code": "(UR)",
203 + "set_price": "14.85"
204 + },
205 + {
206 + "set_name": "Legendary Duelists: White Dragon Abyss",
207 + "set_code": "LED3-EN006",
208 + "set_rarity": "Common",
209 + "set_rarity_code": "(C)",
210 + "set_price": "2.14"
211 + },
212 + {
213 + "set_name": "Maximum Gold",
214 + "set_code": "MAGO-EN001",
215 + "set_rarity": "Premium Gold Rare",
216 + "set_rarity_code": "(PG)",
217 + "set_price": "21.96"
218 + },
219 + {
220 + "set_name": "Premium Gold: Return of the Bling",
221 + "set_code": "PGL2-EN080",
222 + "set_rarity": "Gold Rare",
223 + "set_rarity_code": "(GUR)",
224 + "set_price": "4.27"
225 + },
226 + {
227 + "set_name": "Retro Pack",
228 + "set_code": "RP01-EN001",
229 + "set_rarity": "Ultra Rare",
230 + "set_rarity_code": "(UR)",
231 + "set_price": "2999.98"
232 + },
233 + {
234 + "set_name": "Saga of Blue-Eyes White Dragon Structure Deck",
235 + "set_code": "SDBE-EN001",
236 + "set_rarity": "Ultra Rare",
237 + "set_rarity_code": "(UR)",
238 + "set_price": "5.15"
239 + },
240 + {
241 + "set_name": "Shonen Jump Vol. 1, Issue 1 promotional card",
242 + "set_code": "JMP-001",
243 + "set_rarity": "Ultra Rare",
244 + "set_rarity_code": "(UR)",
245 + "set_price": "22.47"
246 + },
247 + {
248 + "set_name": "Speed Duel Starter Decks: Duelists of Tomorrow",
249 + "set_code": "SS02-ENA01",
250 + "set_rarity": "Common",
251 + "set_rarity_code": "(C)",
252 + "set_price": "2.36"
253 + },
254 + {
255 + "set_name": "Speed Duel Tournament Pack 1",
256 + "set_code": "STP1-EN004",
257 + "set_rarity": "Ultra Rare",
258 + "set_rarity_code": "(UR)",
259 + "set_price": "39.61"
260 + },
261 + {
262 + "set_name": "Speed Duel: Battle City Box",
263 + "set_code": "SBCB-EN087",
264 + "set_rarity": "Common",
265 + "set_rarity_code": "(C)",
266 + "set_price": "2"
267 + },
268 + {
269 + "set_name": "Speed Duel: Battle City Box",
270 + "set_code": "SBCB-EN087",
271 + "set_rarity": "Secret Rare",
272 + "set_rarity_code": "(ScR)",
273 + "set_price": "2"
274 + },
275 + {
276 + "set_name": "Starter Deck: Kaiba",
277 + "set_code": "SDK-001",
278 + "set_rarity": "Ultra Rare",
279 + "set_rarity_code": "(UR)",
280 + "set_price": "25.6"
281 + },
282 + {
283 + "set_name": "Starter Deck: Kaiba",
284 + "set_code": "SDK-E001",
285 + "set_rarity": "Ultra Rare",
286 + "set_rarity_code": "(UR)",
287 + "set_price": "35.03"
288 + },
289 + {
290 + "set_name": "Starter Deck: Kaiba Evolution",
291 + "set_code": "SKE-001",
292 + "set_rarity": "Super Rare",
293 + "set_rarity_code": "(SR)",
294 + "set_price": "6.87"
295 + },
296 + {
297 + "set_name": "Starter Deck: Kaiba Reloaded",
298 + "set_code": "YSKR-EN001",
299 + "set_rarity": "Common",
300 + "set_rarity_code": "(C)",
301 + "set_price": "6.79"
302 + },
303 + {
304 + "set_name": "Starter Deck: Kaiba Reloaded",
305 + "set_code": "YSKR-EN001",
306 + "set_rarity": "Ultimate Rare",
307 + "set_rarity_code": "(UtR)",
308 + "set_price": "17.64"
309 + },
310 + {
311 + "set_name": "Structure Deck: Seto Kaiba",
312 + "set_code": "SDKS-EN009",
313 + "set_rarity": "Common",
314 + "set_rarity_code": "(C)",
315 + "set_price": "2.7"
316 + },
317 + {
318 + "set_name": "Swedish Shonen Jump 2004, Issue 2 promotional card",
319 + "set_code": "JMP-EN001",
320 + "set_rarity": "Ultra Rare",
321 + "set_rarity_code": "(UR)",
322 + "set_price": "674.33"
323 + },
324 + {
325 + "set_name": "Weekly Shonen Jump March 2014 membership promotional card",
326 + "set_code": "JUMP-EN068",
327 + "set_rarity": "Ultra Rare",
328 + "set_rarity_code": "(UR)",
329 + "set_price": "189.88"
330 + },
331 + {
332 + "set_name": "WSJ Jump Pack Spring 2016 promotional card",
333 + "set_code": "JMPS-EN002",
334 + "set_rarity": "Ultra Rare",
335 + "set_rarity_code": "(UR)",
336 + "set_price": "999.99"
337 + },
338 + {
339 + "set_name": "Yu-Gi-Oh! Dark Duel Stories promotional cards",
340 + "set_code": "DDS-001",
341 + "set_rarity": "Prismatic Secret Rare",
342 + "set_rarity_code": "(PScR)",
343 + "set_price": "1647.85"
344 + },
345 + {
346 + "set_name": "Yu-Gi-Oh! Power of Chaos: Kaiba the Revenge promotional cards",
347 + "set_code": "PCK-001",
348 + "set_rarity": "Prismatic Secret Rare",
349 + "set_rarity_code": "(PScR)",
350 + "set_price": "92.91"
351 + },
352 + {
353 + "set_name": "Yu-Gi-Oh! Power of Chaos: Kaiba the Revenge promotional cards",
354 + "set_code": "PCK-E001",
355 + "set_rarity": "Prismatic Secret Rare",
356 + "set_rarity_code": "(PScR)",
357 + "set_price": "0.00"
358 + },
359 + {
360 + "set_name": "Yu-Gi-Oh! The Dark Side of Dimensions Movie Pack",
361 + "set_code": "MVP1-EN055",
362 + "set_rarity": "Ultra Rare",
363 + "set_rarity_code": "(UR)",
364 + "set_price": "2.99"
365 + },
366 + {
367 + "set_name": "Yu-Gi-Oh! The Dark Side of Dimensions Movie Pack Secret Edition",
368 + "set_code": "MVP1-ENS55",
369 + "set_rarity": "Secret Rare",
370 + "set_rarity_code": "(ScR)",
371 + "set_price": "139.13"
372 + },
373 + {
374 + "set_name": "Yu-Gi-Oh! The Dark Side of Dimensions Movie Pack Secret Edition",
375 + "set_code": "MVP1-ENSV4",
376 + "set_rarity": "Ultra Rare",
377 + "set_rarity_code": "(UR)",
378 + "set_price": "41"
379 + },
380 + {
381 + "set_name": "Yu-Gi-Oh! The Dark Side of Dimensions Movie Pack Special Edition",
382 + "set_code": "MVP1-ENSE4",
383 + "set_rarity": "Ultra Rare",
384 + "set_rarity_code": "(UR)",
385 + "set_price": "83.11"
386 + },
387 + {
388 + "set_name": "Yu-Gi-Oh! The Dark Side of Dimensions Movie Pack: Gold Edition",
389 + "set_code": "MVP1-ENG55",
390 + "set_rarity": "Gold Rare",
391 + "set_rarity_code": "(GUR)",
392 + "set_price": "3.67"
393 + },
394 + {
395 + "set_name": "Yu-Gi-Oh! The Dark Side of Dimensions Movie Pack: Gold Edition",
396 + "set_code": "MVP1-ENGV4",
397 + "set_rarity": "Gold Secret Rare",
398 + "set_rarity_code": "(GScR)",
399 + "set_price": "44.61"
400 + }
401 + ],
402 + "card_images": [
403 + {
404 + "id": 89631146,
405 + "image_url": "https://images.ygoprodeck.com/images/cards/89631146.jpg",
406 + "image_url_small": "https://images.ygoprodeck.com/images/cards_small/89631146.jpg",
407 + "image_url_cropped": "https://images.ygoprodeck.com/images/cards_cropped/89631146.jpg"
408 + },
409 + {
410 + "id": 89631145,
411 + "image_url": "https://images.ygoprodeck.com/images/cards/89631145.jpg",
412 + "image_url_small": "https://images.ygoprodeck.com/images/cards_small/89631145.jpg",
413 + "image_url_cropped": "https://images.ygoprodeck.com/images/cards_cropped/89631145.jpg"
414 + },
415 + {
416 + "id": 89631144,
417 + "image_url": "https://images.ygoprodeck.com/images/cards/89631144.jpg",
418 + "image_url_small": "https://images.ygoprodeck.com/images/cards_small/89631144.jpg",
419 + "image_url_cropped": "https://images.ygoprodeck.com/images/cards_cropped/89631144.jpg"
420 + },
421 + {
422 + "id": 89631143,
423 + "image_url": "https://images.ygoprodeck.com/images/cards/89631143.jpg",
424 + "image_url_small": "https://images.ygoprodeck.com/images/cards_small/89631143.jpg",
425 + "image_url_cropped": "https://images.ygoprodeck.com/images/cards_cropped/89631143.jpg"
426 + },
427 + {
428 + "id": 89631142,
429 + "image_url": "https://images.ygoprodeck.com/images/cards/89631142.jpg",
430 + "image_url_small": "https://images.ygoprodeck.com/images/cards_small/89631142.jpg",
431 + "image_url_cropped": "https://images.ygoprodeck.com/images/cards_cropped/89631142.jpg"
432 + },
433 + {
434 + "id": 89631139,
435 + "image_url": "https://images.ygoprodeck.com/images/cards/89631139.jpg",
436 + "image_url_small": "https://images.ygoprodeck.com/images/cards_small/89631139.jpg",
437 + "image_url_cropped": "https://images.ygoprodeck.com/images/cards_cropped/89631139.jpg"
438 + },
439 + {
440 + "id": 89631140,
441 + "image_url": "https://images.ygoprodeck.com/images/cards/89631140.jpg",
442 + "image_url_small": "https://images.ygoprodeck.com/images/cards_small/89631140.jpg",
443 + "image_url_cropped": "https://images.ygoprodeck.com/images/cards_cropped/89631140.jpg"
444 + },
445 + {
446 + "id": 89631141,
447 + "image_url": "https://images.ygoprodeck.com/images/cards/89631141.jpg",
448 + "image_url_small": "https://images.ygoprodeck.com/images/cards_small/89631141.jpg",
449 + "image_url_cropped": "https://images.ygoprodeck.com/images/cards_cropped/89631141.jpg"
450 + }
451 + ],
452 + "card_prices": [
453 + {
454 + "cardmarket_price": "0.06",
455 + "tcgplayer_price": "0.13",
456 + "ebay_price": "5.95",
457 + "amazon_price": "3.90",
458 + "coolstuffinc_price": "0.99"
459 + }
460 + ],
461 + "misc_info": [
462 + {
463 + "konami_id": 4007,
464 + "tcg_date": "2002-03-08",
465 + "ocg_date": "1999-03-06",
466 + "md_rarity": "Ultra Rare",
467 + "treated_as": "Blue-Eyes White Dragon"
468 + }
469 + ]
470 + }
471 + }
472 + },
473 + "expect": {
474 + "minCount": 54,
475 + "kinds": [
476 + "catalog_item",
477 + "price_observation"
478 + ],
479 + "requiredFields": [
480 + "attributes.identifiers.ygo_id",
481 + "attributes.set",
482 + "attributes.number"
483 + ]
484 + },
485 + "note": "Live capture of cardinfo.php?name=…&misc=yes (trimmed).",
486 + "capturedAt": "2026-09-07T04:27:53.793Z"
487 +}
\ No newline at end of file
added docs/METHODOLOGY.md +127 −0
@@ -0,0 +1,127 @@
1 +# RareIndex methodology
2 +
3 +RareIndex turns fragmented public collectibles data into structured market data. This page explains
4 +how every number on the platform is produced, what evidence it rests on, and where its limits are.
5 +Nothing on RareIndex is invented: every sale, listing, guide price, population count and index value
6 +traces back to a source record with its URL, capture time, parser version and connector version.
7 +
8 +## 1. Data sources and pipeline
9 +
10 +Data enters through connectors (marketplaces, auction houses, price guides, grading companies,
11 +catalogs). Each capture is stored immutably as a raw record, then normalised into a canonical shape,
12 +matched to a canonical asset (entity resolution), de-duplicated, validated and only then written to
13 +the sales, listings and observations tables that feed valuations and indices.
14 +
15 +Three kinds of price evidence are kept strictly apart:
16 +
17 +| Evidence | Meaning | Used for |
18 +| --- | --- | --- |
19 +| **Sale** | An observed transaction with a source date and price | RIV, indices, records, liquidity |
20 +| **Listing** | An asking price; not a transaction | Value opportunity, spread, supply signals |
21 +| **Price observation** | A published guide value (e.g. a marketplace's market price) | Fallback estimate only, flagged as guide-based |
22 +
23 +Currency: every price is stored in its native currency together with the USD conversion at the
24 +**historical** ECB reference rate of the transaction date. Display currencies are converted at view
25 +time; historical sales are never converted at today's rate.
26 +
27 +## 2. Entity resolution
28 +
29 +Descriptions of the same object differ across sources ("1999 Pokemon Base Charizard 1st PSA 10" vs
30 +"Pokémon Base Set Charizard Holo 1st Edition #4/102 PSA GEM MT 10"). Records are resolved in order:
31 +deterministic identifiers (catalog ids, style codes, set numbers, references, UPC/ISBN) → a
32 +deterministic canonical key built from structured attributes per category → trigram similarity of
33 +titles constrained by hard discriminators (card number, set, year) → creation of a new asset. The
34 +match method and confidence are stored on every record, and grade/condition slices are kept as
35 +variants of the asset (PSA 10, CIB, deadstock size 10 …) so that different grades are never mixed.
36 +
37 +## 3. RIV — RareIndex Valuation
38 +
39 +RIV is an ensemble estimate of the current market value of a variant, computed from verified
40 +transactions in the last 365 days (extended to three years when fewer than five recent sales exist,
41 +in which case confidence is capped).
42 +
43 +The estimators are: latest sale, medians of the last 5/10/20 sales, a trimmed mean (10 % each tail),
44 +an exponentially weighted mean (90-day half-life) and a weighted mean using source trust,
45 +identification confidence and recency. RIV is the median of the core estimators. The low/high band
46 +comes from the inter-quartile range of the sales used (widened to at least ±5 %).
47 +
48 +When a variant has fewer than three sales, RIV may fall back to **grade-adjusted comparables**
49 +(sales of other grades of the same asset, adjusted by empirical grade premiums) and, as a last
50 +resort, to **guide observations**. Fallback estimates are labelled and their confidence is capped at
51 +0.5 (comps) or 0.45 (guide-based). With no evidence at all, RareIndex shows *Data unavailable*.
52 +
53 +### Confidence
54 +
55 +Confidence (0–1, shown as High ≥ 0.75, Medium ≥ 0.5, Low > 0.2, Insufficient otherwise) combines
56 +sample size (log-scaled, 40 sales ≈ maximum), dispersion of log prices (robust MAD), recency of the
57 +latest sale and the trust/identification quality of the sales used. Every RIV is displayed with its
58 +sample size, confidence and computation time.
59 +
60 +### Outliers
61 +
62 +Within a variant, sales whose modified z-score on log price exceeds 3.5 are **flagged**, not deleted;
63 +bundles and multi-quantity lots are excluded from pricing. Every flag is written to the audit log with
64 +its reason.
65 +
66 +### Grade premiums
67 +
68 +For each category, grader and grade, RareIndex measures the median ratio between graded and raw
69 +sales of the same assets (at least eight paired assets). PSA 10, BGS 10 and CGC 10 are never assumed
70 +equivalent; premiums are only ever derived from paired evidence.
71 +
72 +## 4. Scores
73 +
74 +- **Liquidity (0–100)**: sales per month, active listings, number of sources, median days between
75 + sales and the spread between asks and RIV.
76 +- **Rarity (0–100)**: graded population, production quantity when documented, and observed
77 + sale/listing frequency. Rarity is *null* when no supply signal exists — it is never guessed.
78 +- **Momentum (−100…100)** over 7d/30d/90d/1y: price change against the RIV history blended with
79 + transaction-volume acceleration.
80 +- **Value opportunity**: discount of an active ask against RIV, shown only when RIV confidence ≥ 0.5.
81 + Analytical information, not investment advice.
82 +- **Data quality (0–100)**: attribute completeness, source trust, identification confidence, images
83 + and transaction evidence.
84 +- **Trending**: geometric blend of price, volume and listing momenta.
85 +
86 +## 5. Indices
87 +
88 +Each subindex (RARE-TCG, RARE-WATCH, …) is a **chain-linked** index of daily RIV changes across its
89 +constituents: assets with a valuation confidence of at least 0.4 and at least three sales in the last
90 +twelve months (one variant per asset, the most traded). Each day the index moves by the trimmed,
91 +equal-weight average of constituents' log returns; composition can change daily without breaking
92 +the level. Base = 1000 on 2024-01-01. An index publishes nothing until it has its minimum number of
93 +constituents (10 for subindices, 25 for RARE), and every point stores its constituent count and
94 +coverage.
95 +
96 +**RARE**, the flagship index, is the transaction-weighted average of subindex daily returns.
97 +
98 +A **repeat-sales** estimator (pairs of sales of the same variant, monthly periods, least squares)
99 +is provided for research views; it is less exposed to composition bias but requires many pairs.
100 +
101 +Historical index and asset series are reconstructed from transactions only: for each week since the
102 +first sale, the valuation is recomputed with the sales known at that date.
103 +
104 +## 6. Market capitalisation
105 +
106 +Category market capitalisation is estimated as Σ (graded population × RIV) **only** for assets with
107 +a published population report; the estimate carries a coverage-based confidence label and is never
108 +shown as a precise figure.
109 +
110 +## 7. Benchmarks and correlations
111 +
112 +Benchmark series (S&P 500, NASDAQ, Bitcoin, CPI, Case-Shiller) come from public datasets (FRED,
113 +stooq). Correlations between subindices are Pearson coefficients of daily log returns over 30/90/365
114 +days; collectibles trade far less frequently than securities, so daily comparisons should be read
115 +with that in mind.
116 +
117 +## 8. Rare Radar and records
118 +
119 +Record sales are the highest verified transactions per category. Radar findings (price
120 +discrepancies, first listings in years, ultra-low populations) are derived mechanically from stored
121 +transactions, listings and population reports with the underlying evidence attached.
122 +
123 +## 9. Freshness and limits
124 +
125 +Connectors run on schedules tuned to each source; every statistic shows its last update. Coverage
126 +is uneven by design: categories with few public transactions show fewer valuations and no index
127 +rather than a fabricated one.
added docs/PENDING-SCHEMA.md +11 −0
@@ -0,0 +1,11 @@
1 +# Pending schema changes (to be folded into the next generated migration)
2 +
3 +Applied locally with `drizzle-kit push`; regenerate one migration at integration with `pnpm db:generate`.
4 +
5 +## packages/database/src/schema/ingestion.ts — `normalized_records`
6 +- **added** `seq integer not null default 0` — position of the record within `normalize(raw)` output (one raw row commonly yields a catalog item + several price observations).
7 +- **changed** unique index `normalized_records_raw_uq`: `(raw_record_id)` → `(raw_record_id, kind, seq)`.
8 +
9 +## Notes
10 +- No other table/column changes were needed by the pipeline; the `assets_title_trgm` GIN index declared in the schema was missing from the local DB and got created by the push (it is already in migration 0000).
11 +- pg-boss creates and manages its own schema `pgboss` at worker start (not part of Drizzle migrations).
added docs/SPEC-original.md +2495 −0
@@ -0,0 +1,4204 @@
1 +> Verbatim product mandate as provided on 2026-09-07. The repository CLAUDE.md is the condensed working version; this file is the authoritative full text.
2 +
3 +# CLAUDE.md
4 +
5 +## RareIndex.io
6 +
7 +Global Collectibles Market Intelligence, Search, Pricing & Index Platform
8 +
9 +RareIndex.io must become the global reference platform for discovering, tracking, pricing, comparing, analyzing, and researching collectible assets.
10 +
11 +The ambition is significantly larger than a marketplace aggregator.
12 +
13 +RareIndex should become:
14 +
15 +The Bloomberg Terminal, Google, CoinMarketCap, Zillow, and StockX of the global collectibles economy.
16 +
17 +The platform must continuously collect public market data from marketplaces, auction houses, dealers, specialized websites, historical databases, grading companies, collector communities, manufacturer catalogs, archives, and other relevant sources.
18 +
19 +RareIndex should cover as many collectible categories as technically possible.
20 +
21 +The architecture must be built around:
22 +
23 +- Firecrawl
24 +- Scrapfly
25 +- direct APIs when available
26 +- structured feeds
27 +- official datasets
28 +- auction databases
29 +- marketplace connectors
30 +- AI extraction
31 +- multimodal image analysis
32 +- entity resolution
33 +- historical sale normalization
34 +- deduplication
35 +- valuation models
36 +- global collectible indices
37 +- category indices
38 +- individual asset price histories
39 +- collection tracking
40 +- alerts
41 +- comparable-sales analysis
42 +- rarity analysis
43 +- grading normalization
44 +- liquidity analysis
45 +- AI-assisted identification
46 +
47 +The platform language must be English-first.
48 +
49 +The application must be:
50 +
51 +- extremely fast
52 +- visually exceptional
53 +- mobile-first
54 +- responsive
55 +- data dense without feeling cluttered
56 +- professional
57 +- credible
58 +- research-grade
59 +- scalable to hundreds of millions of records
60 +
61 +## 1. CORE PRODUCT VISION
62 +
63 +RareIndex should answer questions such as:
64 +
65 +- What is this collectible worth?
66 +- How rare is it?
67 +- Has its value increased?
68 +- What are the latest comparable sales?
69 +- Where is it currently for sale?
70 +- Which marketplace has the cheapest listing?
71 +- What is the global market price?
72 +- What is the price trend?
73 +- What is the liquidity?
74 +- How often does it sell?
75 +- Is the market accelerating or declining?
76 +- What grade commands the highest premium?
77 +- Is this listing unusually cheap?
78 +- Is this listing unusually expensive?
79 +- Is the collectible likely misidentified?
80 +- How many examples exist?
81 +- What are similar collectibles?
82 +- What are the most valuable objects in this category?
83 +- What collectibles are trending globally?
84 +- Which categories are outperforming?
85 +- Where are collectors moving capital?
86 +- How has Pokémon performed versus watches?
87 +- How has LEGO performed versus the S&P 500?
88 +- What are the best performing collectibles over 1Y / 5Y / 10Y?
89 +- What is the most liquid collectible market?
90 +- What items are becoming scarce?
91 +- What discontinued products are appreciating rapidly?
92 +
93 +RareIndex must transform fragmented collectible markets into structured financial-style data.
94 +
95 +## 2. PRIMARY PLATFORM MODULES
96 +
97 +Main navigation:
98 +
99 +1. Home
100 +2. Explore
101 +3. Markets
102 +4. Categories
103 +5. RareIndex
104 +6. Trending
105 +7. Sales
106 +8. Listings
107 +9. Auctions
108 +10. Price History
109 +11. Collections
110 +12. Watchlist
111 +13. Compare
112 +14. Scanner
113 +15. AI Research
114 +16. Market Map
115 +17. Grading
116 +18. Auction Calendar
117 +19. News
118 +20. Data
119 +21. API
120 +22. About
121 +
122 +## 3. RAREINDEX GLOBAL INDEX
123 +
124 +Create a flagship index:
125 +
126 +RareIndex Global Collectibles Index
127 +
128 +Ticker:
129 +
130 +RARE
131 +
132 +Possible subindices:
133 +
134 +- RARE-TCG
135 +- RARE-SPORT
136 +- RARE-WATCH
137 +- RARE-SNEAKER
138 +- RARE-LEGO
139 +- RARE-COMIC
140 +- RARE-GAME
141 +- RARE-ART
142 +- RARE-LUXURY
143 +- RARE-WINE
144 +- RARE-COIN
145 +- RARE-TOY
146 +- RARE-MUSIC
147 +- RARE-AUTO
148 +- RARE-TECH
149 +- RARE-BOOK
150 +- RARE-MILITARIA
151 +- RARE-SPACE
152 +- RARE-FOSSIL
153 +- RARE-DESIGN
154 +
155 +Each index should support:
156 +
157 +- current value
158 +- daily change
159 +- weekly change
160 +- monthly change
161 +- YTD
162 +- 1 year
163 +- 3 years
164 +- 5 years
165 +- 10 years
166 +- all time
167 +- volatility
168 +- drawdown
169 +- liquidity score
170 +- transaction count
171 +- median sale price
172 +- average sale price
173 +- market capitalization estimate
174 +- number of tracked assets
175 +- category breadth
176 +- momentum
177 +
178 +## 4. COLLECTIBLE CATEGORY UNIVERSE
179 +
180 +The architecture MUST NOT hardcode a small number of collectible categories.
181 +
182 +Use an extensible taxonomy.
183 +
184 +Every category should support:
185 +
186 +- category
187 +- subcategory
188 +- franchise
189 +- brand
190 +- series
191 +- model
192 +- release
193 +- variant
194 +- year
195 +- edition
196 +- condition
197 +- grade
198 +- grading company
199 +- certification number
200 +- provenance
201 +- country
202 +- material
203 +- size
204 +- color
205 +- serial number
206 +- production quantity
207 +- rarity
208 +- population
209 +- original MSRP
210 +- estimated value
211 +- latest sale
212 +- listing price
213 +- currency
214 +- marketplace
215 +- images
216 +- description
217 +- source URLs
218 +
219 +## 5. CATEGORY MASTER LIST
220 +
221 +RareIndex should attempt to cover all of the following.
222 +
223 +### 5.1 Trading Cards
224 +
225 +Pokémon
226 +
227 +Track:
228 +
229 +- Base Set
230 +- Base Set 2
231 +- Jungle
232 +- Fossil
233 +- Team Rocket
234 +- Gym Heroes
235 +- Gym Challenge
236 +- Neo Genesis
237 +- Neo Discovery
238 +- Neo Revelation
239 +- Neo Destiny
240 +- Legendary Collection
241 +- Expedition
242 +- Aquapolis
243 +- Skyridge
244 +- EX era
245 +- Diamond & Pearl
246 +- Platinum
247 +- HeartGold SoulSilver
248 +- Black & White
249 +- XY
250 +- Sun & Moon
251 +- Sword & Shield
252 +- Scarlet & Violet
253 +- Japanese expansions
254 +- Korean editions
255 +- Chinese editions
256 +- promotional cards
257 +- tournament cards
258 +- trophy cards
259 +- staff cards
260 +- prerelease cards
261 +- stamped cards
262 +- error cards
263 +- shadowless
264 +- first edition
265 +- unlimited
266 +- reverse holo
267 +- holo
268 +- secret rare
269 +- illustration rare
270 +- special illustration rare
271 +- gold cards
272 +- rainbow rares
273 +- alternate arts
274 +
275 +Grades:
276 +
277 +- PSA
278 +- BGS
279 +- CGC
280 +- SGC
281 +- TAG
282 +- raw
283 +
284 +### 5.2 Magic: The Gathering
285 +
286 +Track:
287 +
288 +- Alpha
289 +- Beta
290 +- Unlimited
291 +- Revised
292 +- Arabian Nights
293 +- Antiquities
294 +- Legends
295 +- The Dark
296 +- Fallen Empires
297 +- Ice Age
298 +- Alliances
299 +- Mirage
300 +- Visions
301 +- Weatherlight
302 +- Tempest
303 +- Urza block
304 +- Mercadian Masques
305 +- Invasion
306 +- Odyssey
307 +- Onslaught
308 +- Mirrodin
309 +- Kamigawa
310 +- Ravnica
311 +- Lorwyn
312 +- Zendikar
313 +- Innistrad
314 +- Return to Ravnica
315 +- Theros
316 +- Khans
317 +- Battle for Zendikar
318 +- Kaladesh
319 +- Dominaria
320 +- War of the Spark
321 +- Modern Horizons
322 +- Commander
323 +- Secret Lair
324 +- serialized cards
325 +- artist proofs
326 +- reserved list
327 +- Judge promos
328 +- foils
329 +- etched foils
330 +- masterpieces
331 +- special treatments
332 +
333 +### 5.3 Yu-Gi-Oh!
334 +
335 +Track:
336 +
337 +- Legend of Blue Eyes
338 +- Metal Raiders
339 +- Spell Ruler
340 +- Pharaoh's Servant
341 +- Labyrinth of Nightmare
342 +- Legacy of Darkness
343 +- tournament packs
344 +- championship cards
345 +- prize cards
346 +- Ghost Rare
347 +- Ultimate Rare
348 +- Collector Rare
349 +- Starlight Rare
350 +- Quarter Century
351 +- first edition
352 +- unlimited
353 +- Japanese cards
354 +- Korean cards
355 +- promotional cards
356 +
357 +### 5.4 One Piece Card Game
358 +
359 +Track:
360 +
361 +- booster sets
362 +- starter decks
363 +- promotional cards
364 +- manga rares
365 +- alternate arts
366 +- tournament cards
367 +- championship cards
368 +- serialized cards
369 +- Japanese variants
370 +- English variants
371 +
372 +### 5.5 Disney Lorcana
373 +
374 +Track:
375 +
376 +- First Chapter
377 +- Rise of the Floodborn
378 +- Into the Inklands
379 +- Ursula's Return
380 +- Shimmering Skies
381 +- future sets
382 +- Enchanted cards
383 +- promos
384 +- tournament cards
385 +- graded cards
386 +
387 +### 5.6 Other TCGs
388 +
389 +Include:
390 +
391 +- Dragon Ball Super
392 +- Dragon Ball Masters
393 +- Digimon
394 +- Flesh and Blood
395 +- Weiss Schwarz
396 +- Final Fantasy TCG
397 +- Star Wars Unlimited
398 +- Star Wars CCG
399 +- Star Wars Destiny
400 +- Naruto
401 +- My Hero Academia
402 +- UniVersus
403 +- MetaZoo
404 +- Cardfight Vanguard
405 +- Battle Spirits
406 +- Force of Will
407 +- KeyForge
408 +- Chaotic
409 +- Duel Masters
410 +- Altered
411 +- Sorcery Contested Realm
412 +- Riftbound
413 +- Grand Archive
414 +- Gundam Card Game
415 +- Marvel trading cards
416 +- DC trading cards
417 +- Garbage Pail Kids
418 +- Topps entertainment cards
419 +- non-sport cards
420 +
421 +## 6. SPORTS CARDS
422 +
423 +Sports:
424 +
425 +- baseball
426 +- basketball
427 +- hockey
428 +- American football
429 +- soccer
430 +- Formula 1
431 +- UFC
432 +- boxing
433 +- golf
434 +- tennis
435 +- cricket
436 +- wrestling
437 +- NASCAR
438 +- Olympics
439 +- lacrosse
440 +- rugby
441 +
442 +Brands:
443 +
444 +- Topps
445 +- Panini
446 +- Upper Deck
447 +- Bowman
448 +- Fleer
449 +- Donruss
450 +- Score
451 +- Leaf
452 +- Futera
453 +
454 +Track:
455 +
456 +- rookie cards
457 +- numbered cards
458 +- parallels
459 +- refractors
460 +- autographs
461 +- patches
462 +- memorabilia cards
463 +- game-used cards
464 +- one-of-one cards
465 +- printing plates
466 +- redemptions
467 +- inserts
468 +- short prints
469 +- super short prints
470 +
471 +## 7. COMICS
472 +
473 +Publishers:
474 +
475 +- Marvel
476 +- DC
477 +- Image
478 +- Dark Horse
479 +- IDW
480 +- Boom Studios
481 +- Archie
482 +- Valiant
483 +- Dynamite
484 +- EC Comics
485 +
486 +Track:
487 +
488 +- first appearances
489 +- first issues
490 +- key issues
491 +- variants
492 +- retailer exclusives
493 +- convention exclusives
494 +- signed copies
495 +- sketch covers
496 +- newsstand variants
497 +- direct editions
498 +- pedigree copies
499 +
500 +Grades:
501 +
502 +- CGC
503 +- CBCS
504 +- raw
505 +
506 +## 8. MANGA
507 +
508 +Track:
509 +
510 +- first editions
511 +- first printings
512 +- limited printings
513 +- signed copies
514 +- Japanese original editions
515 +- English editions
516 +- French editions
517 +- box sets
518 +- special editions
519 +- promotional volumes
520 +
521 +Series examples:
522 +
523 +- Dragon Ball
524 +- One Piece
525 +- Naruto
526 +- Bleach
527 +- Berserk
528 +- Vagabond
529 +- Slam Dunk
530 +- Akira
531 +- Attack on Titan
532 +- Demon Slayer
533 +- Jujutsu Kaisen
534 +- Chainsaw Man
535 +- Hunter x Hunter
536 +- JoJo
537 +- Death Note
538 +- Sailor Moon
539 +
540 +## 9. VIDEO GAMES
541 +
542 +Platforms:
543 +
544 +- Atari
545 +- Intellivision
546 +- ColecoVision
547 +- NES
548 +- Famicom
549 +- SNES
550 +- Super Famicom
551 +- Nintendo 64
552 +- GameCube
553 +- Wii
554 +- Wii U
555 +- Switch
556 +- Game Boy
557 +- Game Boy Color
558 +- Game Boy Advance
559 +- Nintendo DS
560 +- 3DS
561 +- Sega Master System
562 +- Genesis
563 +- Mega Drive
564 +- Saturn
565 +- Dreamcast
566 +- Game Gear
567 +- PlayStation
568 +- PS2
569 +- PS3
570 +- PS4
571 +- PS5
572 +- PSP
573 +- Vita
574 +- Xbox
575 +- Xbox 360
576 +- Xbox One
577 +- Xbox Series
578 +- Neo Geo
579 +- PC Engine
580 +- TurboGrafx
581 +- MSX
582 +- Commodore
583 +- Amiga
584 +- PC games
585 +
586 +Track:
587 +
588 +- sealed games
589 +- graded games
590 +- CIB
591 +- loose
592 +- prototypes
593 +- review copies
594 +- developer builds
595 +- kiosk demos
596 +- press kits
597 +- collector editions
598 +- limited editions
599 +- regional variants
600 +- misprints
601 +
602 +## 10. GAMING HARDWARE
603 +
604 +Track:
605 +
606 +- consoles
607 +- handhelds
608 +- controllers
609 +- accessories
610 +- development kits
611 +- prototypes
612 +- retail demo units
613 +- special editions
614 +- limited editions
615 +- anniversary editions
616 +- transparent consoles
617 +- promotional consoles
618 +
619 +## 11. ARCADE & PINBALL
620 +
621 +Track:
622 +
623 +- arcade cabinets
624 +- PCBs
625 +- conversion kits
626 +- marquees
627 +- control panels
628 +- pinball machines
629 +- prototypes
630 +- tournament machines
631 +- promotional units
632 +- replacement art
633 +- original parts
634 +
635 +## 12. SNEAKERS
636 +
637 +Brands:
638 +
639 +- Nike
640 +- Jordan
641 +- Adidas
642 +- Yeezy
643 +- New Balance
644 +- ASICS
645 +- Reebok
646 +- Puma
647 +- Converse
648 +- Vans
649 +- Salomon
650 +- Hoka
651 +- BAPE
652 +- Supreme collaborations
653 +
654 +Track:
655 +
656 +- SKU
657 +- size
658 +- colorway
659 +- release date
660 +- original retail
661 +- resale
662 +- deadstock
663 +- used
664 +- samples
665 +- friends & family
666 +- player editions
667 +- prototypes
668 +- collaborations
669 +- region exclusives
670 +
671 +## 13. WATCHES
672 +
673 +Brands:
674 +
675 +- Rolex
676 +- Patek Philippe
677 +- Audemars Piguet
678 +- Richard Mille
679 +- Vacheron Constantin
680 +- Omega
681 +- Cartier
682 +- Tudor
683 +- Breitling
684 +- IWC
685 +- Jaeger-LeCoultre
686 +- A. Lange & Söhne
687 +- Breguet
688 +- Blancpain
689 +- Zenith
690 +- Grand Seiko
691 +- Seiko
692 +- TAG Heuer
693 +- Panerai
694 +- Hublot
695 +- F.P. Journe
696 +- MB&F
697 +- De Bethune
698 +- Greubel Forsey
699 +- Urwerk
700 +
701 +Track:
702 +
703 +- reference
704 +- dial
705 +- bracelet
706 +- movement
707 +- year
708 +- production period
709 +- serial
710 +- papers
711 +- box
712 +- service history
713 +- auction history
714 +- provenance
715 +
716 +## 14. LUXURY HANDBAGS
717 +
718 +Brands:
719 +
720 +- Hermès
721 +- Chanel
722 +- Louis Vuitton
723 +- Dior
724 +- Gucci
725 +- Goyard
726 +- Fendi
727 +- Bottega Veneta
728 +- Prada
729 +- Celine
730 +- Loewe
731 +- Saint Laurent
732 +
733 +Models:
734 +
735 +- Birkin
736 +- Kelly
737 +- Constance
738 +- Chanel Classic Flap
739 +- Chanel 2.55
740 +- Louis Vuitton trunks
741 +- Speedy
742 +- Neverfull
743 +- rare runway pieces
744 +
745 +Track:
746 +
747 +- leather
748 +- hardware
749 +- size
750 +- year
751 +- stamp
752 +- condition
753 +- color
754 +- rarity
755 +
756 +## 15. FASHION & STREETWEAR
757 +
758 +Brands:
759 +
760 +- Supreme
761 +- BAPE
762 +- Palace
763 +- Stüssy
764 +- Kith
765 +- Off-White
766 +- Chrome Hearts
767 +- Fear of God
768 +- Stone Island
769 +- Arc'teryx
770 +- Kapital
771 +- Visvim
772 +- Neighborhood
773 +- Undercover
774 +
775 +Track:
776 +
777 +- release
778 +- season
779 +- collaboration
780 +- size
781 +- condition
782 +- retail price
783 +- resale price
784 +
785 +## 16. LEGO
786 +
787 +Track:
788 +
789 +- sealed sets
790 +- opened complete sets
791 +- minifigures
792 +- promotional sets
793 +- employee exclusives
794 +- convention exclusives
795 +- LEGO House exclusives
796 +- retired sets
797 +- prototypes
798 +
799 +Themes:
800 +
801 +- Star Wars
802 +- Technic
803 +- Icons
804 +- Ideas
805 +- Architecture
806 +- Modular Buildings
807 +- Castle
808 +- Pirates
809 +- Space
810 +- Harry Potter
811 +- Marvel
812 +- DC
813 +- Lord of the Rings
814 +- Indiana Jones
815 +- Ninjago
816 +- Bionicle
817 +- Monkie Kid
818 +
819 +## 17. FUNKO
820 +
821 +Track:
822 +
823 +- Funko Pop
824 +- Soda
825 +- Wacky Wobblers
826 +- prototypes
827 +- convention exclusives
828 +- chase editions
829 +- vaulted products
830 +- signed products
831 +- error variants
832 +
833 +## 18. DESIGNER TOYS
834 +
835 +Brands/artists:
836 +
837 +- Bearbrick
838 +- Medicom
839 +- KAWS
840 +- Kidrobot
841 +- Superplastic
842 +- Mighty Jaxx
843 +- Pop Mart
844 +- Labubu
845 +- Molly
846 +- Skullpanda
847 +- Dimoo
848 +- Banksy-related editions
849 +- Murakami collectibles
850 +
851 +## 19. ACTION FIGURES
852 +
853 +Track:
854 +
855 +- Hot Toys
856 +- Sideshow
857 +- NECA
858 +- Hasbro
859 +- Mattel
860 +- McFarlane
861 +- Bandai
862 +- Tamashii Nations
863 +- S.H. Figuarts
864 +- Mafex
865 +- Mezco
866 +- Nendoroid
867 +- Figma
868 +
869 +Franchises:
870 +
871 +- Star Wars
872 +- Marvel
873 +- DC
874 +- Transformers
875 +- G.I. Joe
876 +- TMNT
877 +- Masters of the Universe
878 +- Power Rangers
879 +- Dragon Ball
880 +- One Piece
881 +- Gundam
882 +- Pokémon
883 +
884 +## 20. VINTAGE TOYS
885 +
886 +Track:
887 +
888 +- Kenner
889 +- Matchbox
890 +- Hot Wheels
891 +- Dinky Toys
892 +- Corgi
893 +- Barbie
894 +- Fisher-Price
895 +- LEGO vintage
896 +- Playmobil
897 +- Transformers
898 +- G.I. Joe
899 +- Star Wars
900 +- He-Man
901 +- TMNT
902 +- My Little Pony
903 +- Care Bears
904 +- Polly Pocket
905 +- Micro Machines
906 +- Tamagotchi
907 +- Furby
908 +- Beanie Babies
909 +
910 +## 21. DOLLS
911 +
912 +Track:
913 +
914 +- Barbie
915 +- Blythe
916 +- American Girl
917 +- Bratz
918 +- Monster High
919 +- antique dolls
920 +- bisque dolls
921 +- porcelain dolls
922 +- artist dolls
923 +- limited editions
924 +
925 +## 22. PLUSH
926 +
927 +Track:
928 +
929 +- Steiff
930 +- Jellycat
931 +- Pokémon
932 +- Disney
933 +- Sanrio
934 +- Squishmallows
935 +- Beanie Babies
936 +- Build-A-Bear exclusives
937 +- vintage plush
938 +
939 +## 23. MODEL CARS
940 +
941 +Brands:
942 +
943 +- Hot Wheels
944 +- Matchbox
945 +- Tomica
946 +- Mini GT
947 +- AUTOart
948 +- Kyosho
949 +- Minichamps
950 +- BBR
951 +- CMC
952 +- Spark
953 +- Tarmac Works
954 +- GreenLight
955 +- Maisto
956 +
957 +Scales:
958 +
959 +- 1:64
960 +- 1:43
961 +- 1:24
962 +- 1:18
963 +- 1:12
964 +- 1:8
965 +
966 +## 24. MODEL TRAINS
967 +
968 +Track:
969 +
970 +- Märklin
971 +- Lionel
972 +- Hornby
973 +- Bachmann
974 +- Kato
975 +- Atlas
976 +- Fleischmann
977 +- vintage railway models
978 +- locomotives
979 +- cars
980 +- accessories
981 +- limited sets
982 +
983 +## 25. AUTOMOBILES
984 +
985 +Collectible vehicle categories:
986 +
987 +- classic cars
988 +- supercars
989 +- hypercars
990 +- JDM
991 +- muscle cars
992 +- homologation specials
993 +- rally cars
994 +- race cars
995 +- concept cars
996 +- celebrity cars
997 +- low-production models
998 +
999 +Brands:
1000 +
1001 +- Ferrari
1002 +- Porsche
1003 +- Lamborghini
1004 +- McLaren
1005 +- Bugatti
1006 +- Pagani
1007 +- Koenigsegg
1008 +- Mercedes-Benz
1009 +- BMW
1010 +- Audi
1011 +- Ford
1012 +- Chevrolet
1013 +- Dodge
1014 +- Nissan
1015 +- Toyota
1016 +- Honda
1017 +- Mazda
1018 +- Subaru
1019 +- Mitsubishi
1020 +
1021 +## 26. MOTORCYCLES
1022 +
1023 +Brands:
1024 +
1025 +- Ducati
1026 +- Harley-Davidson
1027 +- Honda
1028 +- Yamaha
1029 +- Kawasaki
1030 +- Suzuki
1031 +- BMW Motorrad
1032 +- Triumph
1033 +- Indian
1034 +- MV Agusta
1035 +
1036 +Track:
1037 +
1038 +- rare models
1039 +- production numbers
1040 +- race provenance
1041 +- celebrity ownership
1042 +- original condition
1043 +
1044 +## 27. AUTOMOTIVE MEMORABILIA
1045 +
1046 +Track:
1047 +
1048 +- steering wheels
1049 +- race-used parts
1050 +- engines
1051 +- badges
1052 +- hood ornaments
1053 +- dealership signs
1054 +- manuals
1055 +- brochures
1056 +- license plates
1057 +- racing suits
1058 +- helmets
1059 +- signed parts
1060 +
1061 +## 28. FORMULA 1
1062 +
1063 +Track:
1064 +
1065 +- race-used helmets
1066 +- gloves
1067 +- suits
1068 +- bodywork
1069 +- steering wheels
1070 +- signed memorabilia
1071 +- cards
1072 +- programs
1073 +- tickets
1074 +- model cars
1075 +- team-issued clothing
1076 +
1077 +Drivers:
1078 +
1079 +- Ayrton Senna
1080 +- Michael Schumacher
1081 +- Lewis Hamilton
1082 +- Max Verstappen
1083 +- Sebastian Vettel
1084 +- Fernando Alonso
1085 +- Alain Prost
1086 +- Niki Lauda
1087 +- future drivers dynamically
1088 +
1089 +## 29. SPORTS MEMORABILIA
1090 +
1091 +Sports:
1092 +
1093 +- hockey
1094 +- baseball
1095 +- basketball
1096 +- football
1097 +- soccer
1098 +- tennis
1099 +- golf
1100 +- boxing
1101 +- UFC
1102 +- Olympics
1103 +
1104 +Assets:
1105 +
1106 +- jerseys
1107 +- game-worn jerseys
1108 +- match-issued jerseys
1109 +- helmets
1110 +- gloves
1111 +- shoes
1112 +- balls
1113 +- pucks
1114 +- bats
1115 +- sticks
1116 +- trophies
1117 +- medals
1118 +- tickets
1119 +- autographs
1120 +- photographs
1121 +
1122 +## 30. COINS
1123 +
1124 +Track:
1125 +
1126 +- ancient coins
1127 +- Roman coins
1128 +- Greek coins
1129 +- medieval coins
1130 +- US coins
1131 +- Canadian coins
1132 +- European coins
1133 +- Asian coins
1134 +- bullion coins
1135 +- commemoratives
1136 +- proof coins
1137 +- mint errors
1138 +- pattern coins
1139 +
1140 +Grading:
1141 +
1142 +- PCGS
1143 +- NGC
1144 +- ANACS
1145 +- ICCS
1146 +
1147 +## 31. BANKNOTES
1148 +
1149 +Track:
1150 +
1151 +- world currency
1152 +- historical notes
1153 +- rare serial numbers
1154 +- replacement notes
1155 +- error notes
1156 +- specimen notes
1157 +- proof notes
1158 +- obsolete currency
1159 +
1160 +## 32. STAMPS
1161 +
1162 +Track:
1163 +
1164 +- world stamps
1165 +- classic issues
1166 +- rare errors
1167 +- inverted centers
1168 +- first-day covers
1169 +- postal history
1170 +- blocks
1171 +- sheets
1172 +- proofs
1173 +
1174 +## 33. BOOKS
1175 +
1176 +Track:
1177 +
1178 +- first editions
1179 +- first printings
1180 +- signed editions
1181 +- presentation copies
1182 +- association copies
1183 +- manuscripts
1184 +- illuminated manuscripts
1185 +- incunabula
1186 +- banned editions
1187 +- limited editions
1188 +
1189 +Authors across:
1190 +
1191 +- literature
1192 +- fantasy
1193 +- science fiction
1194 +- philosophy
1195 +- economics
1196 +- science
1197 +- children's literature
1198 +- comic literature
1199 +
1200 +## 34. HISTORICAL DOCUMENTS
1201 +
1202 +Track:
1203 +
1204 +- letters
1205 +- manuscripts
1206 +- government documents
1207 +- presidential documents
1208 +- royal documents
1209 +- treaties
1210 +- maps
1211 +- deeds
1212 +- certificates
1213 +- newspapers
1214 +- telegrams
1215 +- handwritten notes
1216 +
1217 +## 35. AUTOGRAPHS
1218 +
1219 +Categories:
1220 +
1221 +- politicians
1222 +- scientists
1223 +- astronauts
1224 +- musicians
1225 +- actors
1226 +- athletes
1227 +- authors
1228 +- royalty
1229 +- entrepreneurs
1230 +- historical personalities
1231 +
1232 +## 36. MUSIC
1233 +
1234 +Track:
1235 +
1236 +- vinyl
1237 +- shellac
1238 +- CDs
1239 +- cassettes
1240 +- master tapes
1241 +- acetates
1242 +- test pressings
1243 +- promo copies
1244 +- signed albums
1245 +- rare pressings
1246 +- colored vinyl
1247 +- box sets
1248 +
1249 +Artists dynamically discovered.
1250 +
1251 +## 37. MUSIC MEMORABILIA
1252 +
1253 +Track:
1254 +
1255 +- guitars
1256 +- stage-used instruments
1257 +- handwritten lyrics
1258 +- posters
1259 +- concert tickets
1260 +- backstage passes
1261 +- costumes
1262 +- tour merchandise
1263 +- signed items
1264 +- awards
1265 +- gold records
1266 +
1267 +## 38. MUSICAL INSTRUMENTS
1268 +
1269 +Track:
1270 +
1271 +- Fender
1272 +- Gibson
1273 +- Martin
1274 +- Gretsch
1275 +- Rickenbacker
1276 +- PRS
1277 +- vintage synthesizers
1278 +- Moog
1279 +- Roland
1280 +- Yamaha
1281 +- Sequential
1282 +- drum machines
1283 +- microphones
1284 +- effects pedals
1285 +- amplifiers
1286 +
1287 +## 39. MOVIE MEMORABILIA
1288 +
1289 +Track:
1290 +
1291 +- screen-used props
1292 +- costumes
1293 +- scripts
1294 +- storyboards
1295 +- production artwork
1296 +- posters
1297 +- lobby cards
1298 +- miniatures
1299 +- masks
1300 +- weapons props
1301 +- signed items
1302 +
1303 +## 40. MOVIE POSTERS
1304 +
1305 +Track:
1306 +
1307 +- one sheets
1308 +- half sheets
1309 +- inserts
1310 +- lobby cards
1311 +- international posters
1312 +- original theatrical posters
1313 +- rare variants
1314 +- recalled posters
1315 +
1316 +## 41. ANIMATION ART
1317 +
1318 +Track:
1319 +
1320 +- production cels
1321 +- backgrounds
1322 +- concept art
1323 +- key animation
1324 +- storyboards
1325 +- model sheets
1326 +- signed cels
1327 +
1328 +Studios:
1329 +
1330 +- Disney
1331 +- Warner Bros.
1332 +- Studio Ghibli
1333 +- Toei
1334 +- Gainax
1335 +- Madhouse
1336 +- Production I.G
1337 +- Pixar
1338 +- DreamWorks
1339 +
1340 +## 42. ART
1341 +
1342 +Track:
1343 +
1344 +- paintings
1345 +- drawings
1346 +- sculptures
1347 +- prints
1348 +- lithographs
1349 +- screenprints
1350 +- etchings
1351 +- photographs
1352 +- editions
1353 +- multiples
1354 +- artist proofs
1355 +
1356 +## 43. CONTEMPORARY ART
1357 +
1358 +Track artists such as:
1359 +
1360 +- Banksy
1361 +- KAWS
1362 +- Takashi Murakami
1363 +- Damien Hirst
1364 +- Jeff Koons
1365 +- Yayoi Kusama
1366 +- Jean-Michel Basquiat
1367 +- Keith Haring
1368 +
1369 +Do not hardcode value assumptions.
1370 +
1371 +## 44. PHOTOGRAPHY
1372 +
1373 +Track:
1374 +
1375 +- signed prints
1376 +- vintage prints
1377 +- limited editions
1378 +- artist proofs
1379 +- contact sheets
1380 +- negatives
1381 +- historic photographs
1382 +
1383 +## 45. CAMERAS
1384 +
1385 +Track:
1386 +
1387 +- Leica
1388 +- Hasselblad
1389 +- Rolleiflex
1390 +- Contax
1391 +- Nikon
1392 +- Canon
1393 +- Olympus
1394 +- Polaroid
1395 +- Fujifilm
1396 +
1397 +Include:
1398 +
1399 +- rare bodies
1400 +- lenses
1401 +- prototypes
1402 +- military cameras
1403 +- limited editions
1404 +
1405 +## 46. APPLE COLLECTIBLES
1406 +
1407 +Track:
1408 +
1409 +- Apple I
1410 +- Apple II
1411 +- Macintosh
1412 +- Lisa
1413 +- Newton
1414 +- iMac
1415 +- iBook
1416 +- PowerBook
1417 +- Power Macintosh
1418 +- iPod
1419 +- iPhone
1420 +- iPad
1421 +- Apple Watch
1422 +- prototypes
1423 +- engineering samples
1424 +- sealed devices
1425 +- packaging
1426 +- manuals
1427 +- posters
1428 +- Think Different campaign items
1429 +- employee memorabilia
1430 +
1431 +## 47. VINTAGE COMPUTERS
1432 +
1433 +Track:
1434 +
1435 +- Commodore
1436 +- Amiga
1437 +- Atari
1438 +- IBM
1439 +- NeXT
1440 +- SGI
1441 +- DEC
1442 +- Sun Microsystems
1443 +- Sinclair
1444 +- Tandy
1445 +- TRS-80
1446 +- Altair
1447 +- early PCs
1448 +- early laptops
1449 +
1450 +## 48. COMPUTER HARDWARE
1451 +
1452 +Track collectible:
1453 +
1454 +- CPUs
1455 +- GPUs
1456 +- motherboards
1457 +- sound cards
1458 +- development hardware
1459 +- engineering samples
1460 +- vintage memory
1461 +- rare graphics accelerators
1462 +- boxed hardware
1463 +- first-generation hardware
1464 +
1465 +## 49. MOBILE PHONES
1466 +
1467 +Track:
1468 +
1469 +- early mobile phones
1470 +- Nokia
1471 +- Motorola
1472 +- BlackBerry
1473 +- Palm
1474 +- first-generation iPhones
1475 +- prototypes
1476 +- limited editions
1477 +- sealed products
1478 +
1479 +## 50. KEYBOARDS
1480 +
1481 +Track:
1482 +
1483 +- vintage IBM keyboards
1484 +- mechanical keyboards
1485 +- custom keyboards
1486 +- group buys
1487 +- artisan keycaps
1488 +- rare switches
1489 +- prototype boards
1490 +
1491 +## 51. AUDIO EQUIPMENT
1492 +
1493 +Track:
1494 +
1495 +- turntables
1496 +- amplifiers
1497 +- receivers
1498 +- tape machines
1499 +- speakers
1500 +- headphones
1501 +- vacuum tube equipment
1502 +- studio equipment
1503 +
1504 +Brands:
1505 +
1506 +- Marantz
1507 +- McIntosh
1508 +- Technics
1509 +- Nakamichi
1510 +- Pioneer
1511 +- Sony
1512 +- JBL
1513 +- Klipsch
1514 +- Sennheiser
1515 +
1516 +## 52. WINE
1517 +
1518 +Regions:
1519 +
1520 +- Bordeaux
1521 +- Burgundy
1522 +- Champagne
1523 +- Rhône
1524 +- Loire
1525 +- Tuscany
1526 +- Piedmont
1527 +- Napa
1528 +- Rioja
1529 +- Mosel
1530 +- Port
1531 +
1532 +Track:
1533 +
1534 +- producer
1535 +- vintage
1536 +- bottle size
1537 +- provenance
1538 +- fill level
1539 +- storage
1540 +- auction prices
1541 +- critic score
1542 +- lot composition
1543 +
1544 +## 53. WHISKY
1545 +
1546 +Track:
1547 +
1548 +- Scotch
1549 +- Japanese whisky
1550 +- bourbon
1551 +- Irish whiskey
1552 +- Canadian whisky
1553 +- closed distilleries
1554 +- limited editions
1555 +- single casks
1556 +- numbered releases
1557 +
1558 +## 54. RUM
1559 +
1560 +Track:
1561 +
1562 +- vintage rum
1563 +- closed distilleries
1564 +- limited editions
1565 +- single casks
1566 +- historic bottlings
1567 +
1568 +## 55. COGNAC
1569 +
1570 +Track:
1571 +
1572 +- vintage Cognac
1573 +- rare houses
1574 +- limited editions
1575 +- historic bottles
1576 +
1577 +## 56. PERFUME
1578 +
1579 +Track:
1580 +
1581 +- vintage bottles
1582 +- discontinued fragrances
1583 +- limited editions
1584 +- rare formulations
1585 +- sealed bottles
1586 +- Lalique bottles
1587 +- Guerlain
1588 +- Chanel
1589 +- Dior
1590 +- Hermès
1591 +
1592 +## 57. JEWELRY
1593 +
1594 +Track:
1595 +
1596 +- Cartier
1597 +- Van Cleef & Arpels
1598 +- Tiffany
1599 +- Bulgari
1600 +- Graff
1601 +- Harry Winston
1602 +- vintage jewelry
1603 +- signed jewelry
1604 +- Art Deco jewelry
1605 +
1606 +## 58. GEMSTONES
1607 +
1608 +Track:
1609 +
1610 +- diamonds
1611 +- colored diamonds
1612 +- rubies
1613 +- sapphires
1614 +- emeralds
1615 +- alexandrite
1616 +- spinel
1617 +- opal
1618 +- jadeite
1619 +
1620 +Capture certification and provenance.
1621 +
1622 +## 59. MINERALS
1623 +
1624 +Track:
1625 +
1626 +- museum-quality specimens
1627 +- crystals
1628 +- rare minerals
1629 +- type specimens
1630 +- fluorescent minerals
1631 +- historical specimens
1632 +
1633 +## 60. METEORITES
1634 +
1635 +Track:
1636 +
1637 +- lunar meteorites
1638 +- Martian meteorites
1639 +- iron meteorites
1640 +- pallasites
1641 +- chondrites
1642 +- witnessed falls
1643 +- historic meteorites
1644 +
1645 +Capture weight and classification.
1646 +
1647 +## 61. FOSSILS
1648 +
1649 +Track legally traded:
1650 +
1651 +- ammonites
1652 +- trilobites
1653 +- dinosaur fossils
1654 +- dinosaur teeth
1655 +- mammoth remains
1656 +- shark teeth
1657 +- fish fossils
1658 +- plant fossils
1659 +
1660 +Include provenance and jurisdiction flags.
1661 +
1662 +## 62. ANTIQUES
1663 +
1664 +Categories:
1665 +
1666 +- furniture
1667 +- clocks
1668 +- mirrors
1669 +- ceramics
1670 +- porcelain
1671 +- silverware
1672 +- glass
1673 +- lighting
1674 +- decorative arts
1675 +- scientific instruments
1676 +
1677 +## 63. PORCELAIN
1678 +
1679 +Brands:
1680 +
1681 +- Meissen
1682 +- Sèvres
1683 +- Wedgwood
1684 +- Royal Copenhagen
1685 +- Royal Worcester
1686 +- Limoges
1687 +- Herend
1688 +
1689 +## 64. GLASS & CRYSTAL
1690 +
1691 +Track:
1692 +
1693 +- Baccarat
1694 +- Lalique
1695 +- Murano
1696 +- Daum
1697 +- Steuben
1698 +- Waterford
1699 +- antique glass
1700 +
1701 +## 65. SILVER
1702 +
1703 +Track:
1704 +
1705 +- Tiffany
1706 +- Christofle
1707 +- Georg Jensen
1708 +- sterling objects
1709 +- antique silver
1710 +- tea services
1711 +- flatware
1712 +
1713 +## 66. CLOCKS
1714 +
1715 +Track:
1716 +
1717 +- mantel clocks
1718 +- carriage clocks
1719 +- marine chronometers
1720 +- astronomical clocks
1721 +- grandfather clocks
1722 +- industrial clocks
1723 +- railway clocks
1724 +
1725 +## 67. PENS
1726 +
1727 +Track:
1728 +
1729 +- Montblanc
1730 +- Namiki
1731 +- Pelikan
1732 +- Parker
1733 +- Waterman
1734 +- Sailor
1735 +- Aurora
1736 +- limited editions
1737 +- vintage fountain pens
1738 +
1739 +## 68. LIGHTERS
1740 +
1741 +Track:
1742 +
1743 +- Zippo
1744 +- S.T. Dupont
1745 +- Dunhill
1746 +- Cartier
1747 +- vintage advertising lighters
1748 +
1749 +## 69. ADVERTISING COLLECTIBLES
1750 +
1751 +Track:
1752 +
1753 +- Coca-Cola
1754 +- Pepsi
1755 +- Michelin
1756 +- Texaco
1757 +- Shell
1758 +- Esso
1759 +- automotive brands
1760 +- tobacco historical advertising
1761 +- neon signs
1762 +- enamel signs
1763 +- posters
1764 +- clocks
1765 +- vending machines
1766 +
1767 +## 70. DISNEY COLLECTIBLES
1768 +
1769 +Track:
1770 +
1771 +- pins
1772 +- park exclusives
1773 +- animation art
1774 +- figurines
1775 +- costumes
1776 +- props
1777 +- attraction memorabilia
1778 +- vintage toys
1779 +- limited editions
1780 +
1781 +## 71. SANRIO
1782 +
1783 +Track:
1784 +
1785 +- Hello Kitty
1786 +- My Melody
1787 +- Kuromi
1788 +- Cinnamoroll
1789 +- rare collaborations
1790 +- vintage items
1791 +- Japanese exclusives
1792 +
1793 +## 72. STAR WARS
1794 +
1795 +Track virtually everything collectible:
1796 +
1797 +- toys
1798 +- cards
1799 +- comics
1800 +- props
1801 +- costumes
1802 +- posters
1803 +- LEGO
1804 +- games
1805 +- books
1806 +- autographs
1807 +- production memorabilia
1808 +
1809 +## 73. MARVEL
1810 +
1811 +Track:
1812 +
1813 +- comics
1814 +- cards
1815 +- toys
1816 +- statues
1817 +- posters
1818 +- movie props
1819 +- LEGO
1820 +- autographs
1821 +
1822 +## 74. DC
1823 +
1824 +Same broad collectible structure.
1825 +
1826 +## 75. HARRY POTTER
1827 +
1828 +Track:
1829 +
1830 +- books
1831 +- first editions
1832 +- props
1833 +- costumes
1834 +- LEGO
1835 +- cards
1836 +- wands
1837 +- signed memorabilia
1838 +
1839 +## 76. LORD OF THE RINGS
1840 +
1841 +Track:
1842 +
1843 +- books
1844 +- first editions
1845 +- props
1846 +- miniatures
1847 +- collectibles
1848 +- autographs
1849 +- LEGO
1850 +
1851 +## 77. WARHAMMER
1852 +
1853 +Track:
1854 +
1855 +- miniatures
1856 +- discontinued models
1857 +- boxed armies
1858 +- limited editions
1859 +- Forge World
1860 +- painted armies
1861 +- tournament-winning armies
1862 +- books
1863 +- rulebooks
1864 +- vintage miniatures
1865 +
1866 +## 78. GUNDAM
1867 +
1868 +Track:
1869 +
1870 +- Gunpla
1871 +- Perfect Grade
1872 +- Master Grade
1873 +- Real Grade
1874 +- limited editions
1875 +- event exclusives
1876 +- Premium Bandai
1877 +- vintage kits
1878 +
1879 +## 79. TRAVEL COLLECTIBLES
1880 +
1881 +Track:
1882 +
1883 +- postcards
1884 +- magnets
1885 +- hotel memorabilia
1886 +- airline memorabilia
1887 +- cruise memorabilia
1888 +- travel posters
1889 +- luggage labels
1890 +- tickets
1891 +
1892 +## 80. AIRLINE COLLECTIBLES
1893 +
1894 +Track:
1895 +
1896 +- safety cards
1897 +- menus
1898 +- uniforms
1899 +- aircraft models
1900 +- amenity kits
1901 +- china
1902 +- silverware
1903 +- seats
1904 +- signs
1905 +- retired airline memorabilia
1906 +
1907 +## 81. AVIATION
1908 +
1909 +Track:
1910 +
1911 +- aircraft parts
1912 +- cockpit instruments
1913 +- propellers
1914 +- aircraft models
1915 +- pilot equipment
1916 +- military aviation memorabilia
1917 +- historic documentation
1918 +
1919 +## 82. SPACE
1920 +
1921 +Track:
1922 +
1923 +- NASA memorabilia
1924 +- mission patches
1925 +- astronaut autographs
1926 +- flown items
1927 +- spacecraft components
1928 +- mission documentation
1929 +- Apollo memorabilia
1930 +- Shuttle memorabilia
1931 +- Soviet space memorabilia
1932 +
1933 +## 83. MILITARIA
1934 +
1935 +Track legal historical collectibles:
1936 +
1937 +- medals
1938 +- uniforms
1939 +- helmets
1940 +- insignia
1941 +- documents
1942 +- patches
1943 +- flags
1944 +- equipment
1945 +- trench art
1946 +
1947 +Compliance restrictions must be implemented.
1948 +
1949 +## 84. MEDALS
1950 +
1951 +Track:
1952 +
1953 +- military decorations
1954 +- Olympic medals
1955 +- sporting medals
1956 +- civic medals
1957 +- commemorative medals
1958 +
1959 +## 85. OLYMPIC COLLECTIBLES
1960 +
1961 +Track:
1962 +
1963 +- medals
1964 +- torches
1965 +- pins
1966 +- tickets
1967 +- posters
1968 +- uniforms
1969 +- mascots
1970 +- signed memorabilia
1971 +
1972 +## 86. MAPS
1973 +
1974 +Track:
1975 +
1976 +- antique maps
1977 +- atlases
1978 +- globes
1979 +- exploration maps
1980 +- nautical charts
1981 +- city plans
1982 +- railway maps
1983 +
1984 +## 87. POSTCARDS
1985 +
1986 +Track:
1987 +
1988 +- real photo postcards
1989 +- historic cities
1990 +- disasters
1991 +- transportation
1992 +- military
1993 +- exhibitions
1994 +- world's fairs
1995 +
1996 +## 88. LICENSE PLATES
1997 +
1998 +Track:
1999 +
2000 +- antique plates
2001 +- low numbers
2002 +- vanity plates
2003 +- diplomatic plates
2004 +- historic jurisdictions
2005 +- rare designs
2006 +
2007 +## 89. PIN COLLECTIONS
2008 +
2009 +Track:
2010 +
2011 +- Disney
2012 +- Olympics
2013 +- Hard Rock
2014 +- political
2015 +- corporate
2016 +- travel
2017 +- military
2018 +- sports
2019 +- conventions
2020 +
2021 +## 90. BOARD GAMES
2022 +
2023 +Track:
2024 +
2025 +- first editions
2026 +- discontinued games
2027 +- Kickstarter editions
2028 +- prototypes
2029 +- deluxe editions
2030 +- signed editions
2031 +
2032 +## 91. CHESS
2033 +
2034 +Track:
2035 +
2036 +- antique chess sets
2037 +- tournament sets
2038 +- artist sets
2039 +- luxury sets
2040 +- signed boards
2041 +- historic pieces
2042 +
2043 +## 92. PLAYING CARDS
2044 +
2045 +Track:
2046 +
2047 +- casino decks
2048 +- designer decks
2049 +- historical decks
2050 +- rare printing variants
2051 +- sealed decks
2052 +
2053 +## 93. CASINO MEMORABILIA
2054 +
2055 +Only where legally appropriate:
2056 +
2057 +- casino chips
2058 +- tokens
2059 +- playing cards
2060 +- signs
2061 +- historic casino items
2062 +
2063 +## 94. POLITICAL MEMORABILIA
2064 +
2065 +Track historically significant:
2066 +
2067 +- campaign buttons
2068 +- posters
2069 +- signs
2070 +- signed documents
2071 +- inauguration memorabilia
2072 +- ballots
2073 +- campaign literature
2074 +
2075 +Neutral presentation only.
2076 +
2077 +## 95. ROYAL MEMORABILIA
2078 +
2079 +Track:
2080 +
2081 +- coronation items
2082 +- signed photographs
2083 +- correspondence
2084 +- porcelain
2085 +- medals
2086 +- royal warrants
2087 +- ceremonial objects
2088 +
2089 +## 96. SCIENTIFIC INSTRUMENTS
2090 +
2091 +Track:
2092 +
2093 +- microscopes
2094 +- telescopes
2095 +- laboratory instruments
2096 +- calculators
2097 +- slide rules
2098 +- surveying instruments
2099 +- navigational instruments
2100 +
2101 +## 97. TYPEWRITERS
2102 +
2103 +Track:
2104 +
2105 +- Underwood
2106 +- Olivetti
2107 +- IBM
2108 +- Royal
2109 +- Hermes
2110 +- rare models
2111 +- author-owned machines
2112 +
2113 +## 98. VENDING MACHINES
2114 +
2115 +Track:
2116 +
2117 +- Coca-Cola
2118 +- Pepsi
2119 +- candy machines
2120 +- cigarette machines
2121 +- arcade vending
2122 +- antique dispensers
2123 +
2124 +## 99. HISTORIC CORPORATE MEMORABILIA
2125 +
2126 +Track:
2127 +
2128 +- early company stock certificates
2129 +- employee badges
2130 +- promotional objects
2131 +- prototypes
2132 +- corporate gifts
2133 +- early packaging
2134 +
2135 +## 100. DIGITAL COLLECTIBLES
2136 +
2137 +Potentially support separately:
2138 +
2139 +- NFTs
2140 +- blockchain collectibles
2141 +- tokenized physical assets
2142 +- game skins
2143 +- CS skins
2144 +- digital trading cards
2145 +- virtual items
2146 +
2147 +These markets require a separate valuation model due to extreme volatility.
2148 +
2149 +## 101. FUTURE CATEGORY DISCOVERY
2150 +
2151 +RareIndex must automatically discover new collectible categories.
2152 +
2153 +Create an AI workflow that:
2154 +
2155 +1. crawls marketplaces
2156 +2. identifies recurring product clusters
2157 +3. detects categories not represented in the taxonomy
2158 +4. measures transaction volume
2159 +5. proposes new taxonomy nodes
2160 +6. sends proposed categories to an admin queue
2161 +7. allows approval
2162 +8. automatically generates source connectors and schemas
2163 +
2164 +The taxonomy must evolve continuously.
2165 +
2166 +## 102. CONNECTOR ARCHITECTURE
2167 +
2168 +RareIndex requires a professional connector framework.
2169 +
2170 +Every source must use a standardized connector interface.
2171 +
2172 +Example conceptual interface:
2173 +
2174 +```ts
2175 +interface RareIndexConnector {
2176 + id: string
2177 + name: string
2178 + category: string[]
2179 + countries: string[]
2180 + languages: string[]
2181 + crawl(): Promise<RawRecord[]>
2182 + normalize(records: RawRecord[]): Promise<NormalizedRecord[]>
2183 + healthCheck(): Promise<ConnectorHealth>
2184 +}
2185 +```
2186 +
2187 +## 103. FIRECRAWL
2188 +
2189 +Firecrawl should be the preferred connector engine for websites that can be reliably parsed using:
2190 +
2191 +- HTML
2192 +- markdown extraction
2193 +- structured data extraction
2194 +- sitemap discovery
2195 +- page crawling
2196 +- search
2197 +- dynamic rendering where supported
2198 +
2199 +Use Firecrawl for:
2200 +
2201 +- category pages
2202 +- search results
2203 +- public catalog pages
2204 +- auction archives
2205 +- sold-item databases
2206 +- dealer inventory
2207 +- pricing guides
2208 +- manufacturer archives
2209 +- grading information
2210 +- collectible encyclopedias
2211 +- editorial market data
2212 +
2213 +Firecrawl output should be converted into canonical JSON.
2214 +
2215 +## 104. SCRAPFLY
2216 +
2217 +Scrapfly should act as:
2218 +
2219 +1. secondary extraction engine
2220 +2. difficult-site connector
2221 +3. dynamic rendering layer
2222 +4. proxy/geo routing layer
2223 +5. anti-bot-compatible access layer where legally permitted
2224 +6. fallback when ordinary extraction fails
2225 +
2226 +Routing logic:
2227 +
2228 +```
2229 +Direct API
2230 + ↓
2231 +Structured Feed
2232 + ↓
2233 +Firecrawl
2234 + ↓
2235 +Scrapfly
2236 + ↓
2237 +Browser Extraction
2238 + ↓
2239 +Manual Review
2240 +```
2241 +
2242 +Do NOT attempt to circumvent authentication, paywalls, CAPTCHAs, access controls, or other security protections unlawfully.
2243 +
2244 +Respect:
2245 +
2246 +- applicable laws
2247 +- source terms
2248 +- robots policies where applicable
2249 +- copyright
2250 +- privacy
2251 +- rate limits
2252 +- authentication boundaries
2253 +
2254 +## 105. CONNECTOR FALLBACK ENGINE
2255 +
2256 +Every connector should produce health metrics:
2257 +
2258 +```json
2259 +{
2260 + "connector": "example",
2261 + "status": "healthy",
2262 + "success_rate_24h": 0.982,
2263 + "pages_attempted": 18752,
2264 + "pages_success": 18414,
2265 + "firecrawl_success_rate": 0.91,
2266 + "scrapfly_fallback_rate": 0.07,
2267 + "parse_failure_rate": 0.02,
2268 + "last_success": "timestamp",
2269 + "schema_version": "3.2"
2270 +}
2271 +```
2272 +
2273 +Automatically detect:
2274 +
2275 +- page redesigns
2276 +- selector failures
2277 +- missing fields
2278 +- duplicate explosion
2279 +- abnormal price distributions
2280 +- blocked requests
2281 +- empty pages
2282 +- unexpected redirects
2283 +- currency parsing problems
2284 +
2285 +## 106. CONNECTOR REGISTRY
2286 +
2287 +Create:
2288 +
2289 +/connectors/registry.json
2290 +
2291 +Each connector:
2292 +
2293 +```json
2294 +{
2295 + "id": "source-id",
2296 + "displayName": "Source",
2297 + "sourceType": "marketplace",
2298 + "enginePriority": [
2299 + "api",
2300 + "firecrawl",
2301 + "scrapfly"
2302 + ],
2303 + "categories": [],
2304 + "regions": [],
2305 + "languages": [],
2306 + "currency": [],
2307 + "supportsListings": true,
2308 + "supportsSold": true,
2309 + "supportsAuctions": false,
2310 + "supportsImages": true,
2311 + "refreshFrequencyMinutes": 30
2312 +}
2313 +```
2314 +
2315 +## 107. SOURCE TYPES
2316 +
2317 +Support:
2318 +
2319 +- marketplace
2320 +- auction_house
2321 +- dealer
2322 +- pricing_guide
2323 +- grading_company
2324 +- manufacturer
2325 +- museum
2326 +- archive
2327 +- catalog
2328 +- collector_database
2329 +- community
2330 +- forum
2331 +- news
2332 +- analytics_provider
2333 +- registry
2334 +- official_source
2335 +
2336 +## 108. RAW INGESTION LAYER
2337 +
2338 +Never directly write scraped records into final product tables.
2339 +
2340 +Pipeline:
2341 +
2342 +```
2343 +Source
2344 + ↓
2345 +Raw HTML/API payload
2346 + ↓
2347 +Extraction
2348 + ↓
2349 +Raw JSON
2350 + ↓
2351 +Normalization
2352 + ↓
2353 +Entity Resolution
2354 + ↓
2355 +Deduplication
2356 + ↓
2357 +Price Validation
2358 + ↓
2359 +Canonical Asset Match
2360 + ↓
2361 +Sale/Listing Database
2362 + ↓
2363 +Indices & Analytics
2364 +```
2365 +
2366 +Raw records should be immutable.
2367 +
2368 +## 109. CANONICAL ASSET MODEL
2369 +
2370 +Example:
2371 +
2372 +```json
2373 +{
2374 + "asset_id": "rare_xxxxx",
2375 + "category": "trading_cards",
2376 + "subcategory": "pokemon",
2377 + "brand": "Pokemon",
2378 + "franchise": "Pokemon",
2379 + "set": "Base Set",
2380 + "name": "Charizard",
2381 + "year": 1999,
2382 + "number": "4/102",
2383 + "variant": "1st Edition Holo",
2384 + "language": "English",
2385 + "grade": 10,
2386 + "grader": "PSA",
2387 + "certification_number": null,
2388 + "population": null,
2389 + "rarity": null,
2390 + "images": [],
2391 + "identifiers": {},
2392 + "metadata": {}
2393 +}
2394 +```
2395 +
2396 +## 110. SALE MODEL
2397 +
2398 +```json
2399 +{
2400 + "sale_id": "sale_xxxxx",
2401 + "asset_id": "rare_xxxxx",
2402 + "source": "source",
2403 + "source_url": "",
2404 + "sale_type": "auction",
2405 + "sale_date": "",
2406 + "sale_price": 0,
2407 + "currency": "USD",
2408 + "sale_price_usd": 0,
2409 + "buyer_premium_included": false,
2410 + "condition": "",
2411 + "grade": "",
2412 + "location": "",
2413 + "image_urls": [],
2414 + "raw_title": "",
2415 + "confidence": 0.98
2416 +}
2417 +```
2418 +
2419 +## 111. LISTING MODEL
2420 +
2421 +Track:
2422 +
2423 +- asking price
2424 +- seller
2425 +- source
2426 +- location
2427 +- shipping
2428 +- condition
2429 +- grade
2430 +- listing date
2431 +- update date
2432 +- availability
2433 +- quantity
2434 +- seller reputation where public
2435 +- images
2436 +- description
2437 +
2438 +Listing price MUST NOT automatically equal market value.
2439 +
2440 +## 112. ENTITY RESOLUTION
2441 +
2442 +This is one of the most important parts of RareIndex.
2443 +
2444 +Different sources may describe the same collectible differently.
2445 +
2446 +Example:
2447 +
2448 +```
2449 +1999 Pokemon Base Charizard 1st PSA 10
2450 +
2451 +Pokémon 1999 First Edition Charizard Holo PSA GEM MT 10
2452 +
2453 +1999 Pokemon Game Charizard-Holo #4 PSA 10
2454 +```
2455 +
2456 +These must resolve to the same canonical asset variant.
2457 +
2458 +Use:
2459 +
2460 +- deterministic identifiers
2461 +- manufacturer model numbers
2462 +- card numbers
2463 +- sets
2464 +- release year
2465 +- UPC
2466 +- ISBN
2467 +- SKU
2468 +- certification
2469 +- serial
2470 +- visual similarity
2471 +- text embeddings
2472 +- multimodal embeddings
2473 +- LLM verification
2474 +
2475 +## 113. IMAGE INTELLIGENCE
2476 +
2477 +Images are fundamental.
2478 +
2479 +Build image pipelines for:
2480 +
2481 +- duplicate detection
2482 +- visual identification
2483 +- edition recognition
2484 +- card recognition
2485 +- shoe identification
2486 +- watch reference recognition
2487 +- LEGO identification
2488 +- comic issue recognition
2489 +- coin recognition
2490 +- autograph comparison
2491 +- condition estimation
2492 +- box/seal recognition
2493 +
2494 +Generate multimodal embeddings.
2495 +

Diff truncated — file too large.