{
  "id": "numisbids",
  "displayName": "NumisBids (prices realized across ~370 numismatic auction houses)",
  "sourceId": "numisbids",
  "sourceName": "NumisBids",
  "sourceType": "marketplace",
  "sourceUrl": "https://www.numisbids.com",
  "module": "firecrawl/numisbids",
  "enginePriority": ["firecrawl", "scrapfly"],
  "categories": ["coins", "banknotes", "medals"],
  "regions": ["global", "US", "EU", "GB"],
  "languages": ["en"],
  "currency": ["USD", "EUR", "GBP", "CHF", "AUD", "CAD", "SEK", "NOK", "DKK", "PLN", "CZK", "HKD", "JPY"],
  "supportsListings": false,
  "supportsSold": true,
  "supportsAuctions": false,
  "supportsImages": true,
  "supportsCatalog": false,
  "supportsPopulation": false,
  "supportsLookup": false,
  "refreshFrequencyMinutes": 1440,
  "priority": "high",
  "trustScore": 0.9,
  "attributionRequired": true,
  "termsUrl": "https://www.numisbids.com/terms",
  "accessNotes": "Firecrawl rendering (1 credit per page) because Cloudflare answers plain HTTPS with a 403 challenge; no login, no CAPTCHA solving — the same public pages any visitor sees. robots.txt (User-agent *) only disallows wantlist_add / bidlist / bidsubmit / watchlist paths, none of which are fetched (ClaudeBot and Bytespider are disallowed site-wide; RareIndexBot is not). Pages read: /results (closed sales that publish prices realized → sale id), /sale/<sid> (firm, auction title, closing date, category list) and /sale/<sid>/category/<cid>?pg=N (100 lots per page: lot number, truncated description, estimate, image, 'Price realized: 160 USD'). NumisBids states on every prices-realized page that 'Buyer's premium is not included' → sales are stored as hammer prices (buyer_premium_included=false) in the currency the page prints; lots without a price (unsold, withdrawn) are skipped and 'Large Lots' sections are flagged isBundle. Sale date = the closing date printed in the sale header (first day of multi-day sales). Backfill walks sale ids downwards (≈ 11 000 sales since 2013; ids without published prices cost one page each and are skipped). Not fetched: individual lot pages (only reached via the category listing; the lot URL is kept as sourceUrl), bidding, accounts, want-list searches. Attribution: NumisBids + the consigning auction house (auctionHouse field). 2.5 s politeness, concurrency 1.",
  "enabled": true,
  "schemaVersion": "1.0",
  "historicalDepth": "decades",
  "acquisitionMethod": "Firecrawl rendered HTML (sale category listings)",
  "config": {
    "salesPerRun": 2,
    "pagesPerRun": 30,
    "skipSections": ["Numismatic Literature", "Literature", "Books", "Antiquities"]
  }
}
