{
  "domains": {
    "numisbids.com": {
      "minIntervalMs": 2500,
      "concurrency": 1,
      "engines": [
        "firecrawl"
      ],
      "country": "US",
      "backfillMaxPages": 60,
      "firecrawl": {
        "maxCreditsPerRun": 60
      },
      "notes": "Cloudflare 403 on plain HTTPS → Firecrawl render. robots (*): only wantlist_add/bidlist/bidsubmit/watchlist disallowed (never fetched); ClaudeBot/Bytespider blocked site-wide. Terms https://www.numisbids.com/terms. Prices realized are hammer prices. Scrapfly is deliberately excluded here: its ASP render costs ~80 credits per page while Firecrawl passes the challenge for 1 credit."
    },
    "noonans.co.uk": {
      "minIntervalMs": 2500,
      "concurrency": 1,
      "engines": [
        "firecrawl"
      ],
      "country": "GB",
      "currency": "GBP",
      "timeoutMs": 120000,
      "backfillMaxPages": 40,
      "firecrawl": {
        "maxCreditsPerRun": 40
      },
      "notes": "Cloudflare 'Just a moment' on plain HTTPS → Firecrawl. robots: Allow / with Crawl-delay 2. Archive 1991→ hammer prices. Images © Noonans (URLs only). Scrapfly is deliberately excluded here: its ASP render costs ~80 credits per page while Firecrawl passes the challenge for 1 credit."
    },
    "noble.com.au": {
      "minIntervalMs": 2000,
      "concurrency": 1,
      "engines": [
        "api",
        "firecrawl"
      ],
      "country": "AU",
      "currency": "AUD",
      "timeoutMs": 90000,
      "backfillMaxPages": 20,
      "notes": "Static HTML, robots Allow /. One 1.5–2 MB prices-realised page per sale (1994→). Terms: catalogue text not to be reproduced without permission."
    },
    "spink.com": {
      "minIntervalMs": 1500,
      "concurrency": 1,
      "engines": [
        "api",
        "firecrawl"
      ],
      "country": "GB",
      "currency": "GBP",
      "backfillMaxPages": 120,
      "notes": "robots: Disallow: (all allowed). Cloudflare front, no challenge for the bot UA. One lot page per lot; sale dates only in the /auctions/prices dropdown."
    },
    "kuenker.de": {
      "minIntervalMs": 1500,
      "concurrency": 1,
      "engines": [
        "api",
        "firecrawl"
      ],
      "country": "DE",
      "currency": "EUR",
      "backfillMaxPages": 200,
      "notes": "Shopware. robots disallows /checkout/ /wishlist/ /account/ /store-api/ /widgets/ Merkliste (never fetched); Meta-ExternalAgent blocked. Sitemaps: 29 product sitemaps × 25k lot pages."
    },
    "ngccoin.com": {
      "minIntervalMs": 4000,
      "concurrency": 1,
      "engines": [
        "api",
        "firecrawl"
      ],
      "country": "US",
      "currency": "USD",
      "backfillMaxPages": 20,
      "refreshClass": "archive",
      "notes": "robots Allow / (AhrefsBot blocked). LEGAL: terms-of-use has an automated-access clause → lowest cadence, public retail guide pages only. World price guide behind Cloudflare challenge (not fetched)."
    },
    "api.numista.com": {
      "minIntervalMs": 1500,
      "concurrency": 1,
      "engines": [
        "api"
      ],
      "country": "FR",
      "currency": "EUR",
      "backfillMaxPages": 10,
      "notes": "Official API v3, header Numista-API-Key (NUMISTA_API_KEY). Free plan 2 000 requests/month; 429 = quota. Licence: attribution 'Source: Numista' + N#, no bulk download / no feed re-serving."
    },
    "numista.com": {
      "minIntervalMs": 3000,
      "concurrency": 1,
      "engines": [
        "api"
      ],
      "country": "FR",
      "notes": "Public catalogue HTML not scraped (robots disallow index.php?/?q= searches; values only via the API)."
    },
    "api.collectiblesshowcase.com": {
      "minIntervalMs": 1500,
      "concurrency": 1,
      "engines": [
        "api"
      ],
      "country": "US",
      "currency": "USD",
      "backfillMaxPages": 100,
      "notes": "JSON API of the davidlawrence.com SPA; public tenant header x-client-id (3) resolved from /consumer/client?url=. No robots.txt (404). No buyer's fee at DLRC."
    },
    "davidlawrence.com": {
      "minIntervalMs": 2000,
      "concurrency": 1,
      "engines": [
        "api"
      ],
      "country": "US",
      "currency": "USD",
      "notes": "React SPA; robots.txt serves the SPA shell. Only used for lot URLs (/inventory/<id>) and the client-id lookup."
    },
    "sgbaldwins.com": {
      "minIntervalMs": 1500,
      "concurrency": 1,
      "engines": [
        "api"
      ],
      "country": "GB",
      "currency": "GBP",
      "backfillMaxPages": 60,
      "notes": "Next.js; /_next/data/<buildId>/…json. robots disallows /account/ /auth/ /search /collection_* (not fetched). Hammer + premium explicit per lot."
    },
    "shop.stanleygibbons.com": {
      "minIntervalMs": 1500,
      "concurrency": 1,
      "engines": [
        "api"
      ],
      "country": "GB",
      "currency": "GBP",
      "crawlDepth": 2,
      "backfillMaxPages": 30,
      "notes": "Shopify storefront; robots: public product/collection JSON crawlable. Fixed-price stamp stock."
    },
    "corinphila.ch": {
      "minIntervalMs": 10000,
      "concurrency": 1,
      "engines": [
        "api",
        "firecrawl"
      ],
      "country": "CH",
      "currency": "CHF",
      "timeoutMs": 60000,
      "backfillMaxPages": 20,
      "refreshClass": "archive",
      "notes": "robots: Disallow /geheim, *ajax=1, *admin=1; Crawl-Delay 10 (respected). Static c4ms archive with CHF hammer prices (auctions 12–28, 2016–2024)."
    },
    "auction.corinphila.ch": {
      "minIntervalMs": 10000,
      "concurrency": 1,
      "engines": [
        "api"
      ],
      "country": "CH",
      "notes": "Live WordPress catalogue; lots load via admin-ajax (JS) — not used."
    },
    "sixbid.com": {
      "minIntervalMs": 5000,
      "concurrency": 1,
      "engines": [
        "api"
      ],
      "country": "DE",
      "notes": "Vue SPA; microservice APIs (auctions/lots.sixbid.com) answer HTTP 204 to non-browser UAs; archive is the paid Sixbid Coin Collector's Archive → not crawled."
    },
    "jmbullion.com": {
      "minIntervalMs": 5000,
      "concurrency": 1,
      "engines": [
        "api"
      ],
      "country": "US",
      "currency": "USD",
      "notes": "REJECTED: terms forbid automated retrieval; sitemap geo-403; product pages 401 reCAPTCHA (Webscale). Not crawled."
    },
    "providentmetals.com": {
      "minIntervalMs": 5000,
      "concurrency": 1,
      "engines": [
        "api"
      ],
      "country": "US",
      "currency": "USD",
      "notes": "REJECTED: same platform/terms as JM Bullion; product pages 401 reCAPTCHA. Not crawled."
    },
    "sdbullion.com": {
      "minIntervalMs": 3000,
      "concurrency": 1,
      "engines": [
        "api"
      ],
      "country": "US",
      "currency": "USD",
      "notes": "Magento 2; robots disallow /*? and /catalog/ (no paginated listings); plain category and product URLs allowed (planned listings connector)."
    },
    "banknoteworld.com": {
      "minIntervalMs": 5000,
      "concurrency": 1,
      "engines": [
        "firecrawl"
      ],
      "country": "US",
      "currency": "USD",
      "notes": "X-Cart shop behind a Cloudflare challenge on every page incl. sitemap (403 to plain HTTPS); robots Crawl-delay 10. Planned, not crawled yet."
    },
    "colnect.com": {
      "minIntervalMs": 10000,
      "concurrency": 1,
      "engines": [
        "api"
      ],
      "notes": "REJECTED: robots.txt states automated use is prohibited without a CAPI licence; Anubis proof-of-work interstitial. Not crawled."
    },
    "coinarchives.com": {
      "minIntervalMs": 10000,
      "concurrency": 1,
      "engines": [
        "api"
      ],
      "country": "US",
      "notes": "BLOCKED: archive is a paid subscription (CoinArchives Pro); robots blocks most crawlers. Not crawled."
    },
    "davidfeldman.com": {
      "minIntervalMs": 10000,
      "concurrency": 1,
      "engines": [
        "api"
      ],
      "country": "CH",
      "notes": "BLOCKED: Cloudflare 'Attention Required' 403 for bots. Not crawled."
    },
    "lynknight.com": {
      "minIntervalMs": 3000,
      "concurrency": 1,
      "engines": [
        "api"
      ],
      "country": "US",
      "currency": "USD",
      "notes": "Rails site; no public prices-realized archive (login), catalogue lots via JS endpoint with 'Current Price' only. Rejected."
    },
    "stampauctionnetwork.com": {
      "minIntervalMs": 10000,
      "concurrency": 1,
      "engines": [
        "api",
        "firecrawl"
      ],
      "country": "US",
      "currency": "USD",
      "notes": "robots Crawl-delay 10; Disallow bidform.cfm, exportaAll.cfm, exportaTop.cfm, /admin/. Kelleher connector covers firm V; generic cCatalog3 connector for other firms is planned (POST pagination)."
    }
  }
}
