{
  "domains": {
    "psacard.com": {
      "minIntervalMs": 6000,
      "concurrency": 1,
      "timeoutMs": 90000,
      "engines": ["firecrawl", "scrapfly"],
      "firecrawl": { "waitForMs": 4000 },
      "country": "us",
      "currency": "USD",
      "notes": "g2-grading (psa-cert): only public /cert/<n> verification pages, one per known cert number. Plain HTTP incl. robots.txt returns a Cloudflare managed-challenge 403; Firecrawl renders the public page (Scrapfly fallback). APR and /pop are behind a Collectors login and are never fetched."
    },
    "cgccomics.com": {
      "minIntervalMs": 5000,
      "concurrency": 1,
      "timeoutMs": 90000,
      "engines": ["firecrawl", "scrapfly"],
      "country": "us",
      "currency": "USD",
      "notes": "g2-grading (cgc-cert): only public /certlookup/<n>/ pages. robots.txt (200) disallows a list of named scrapers only. Cloudflare managed challenge on plain HTTP → Firecrawl. The CGC census / population report is login-gated and never fetched. The cert page itself warns 'search activity has exceeded our limits' when hammered — keep 1 req / 5 s."
    },
    "cgccards.com": {
      "minIntervalMs": 5000,
      "concurrency": 1,
      "timeoutMs": 90000,
      "engines": ["firecrawl", "scrapfly"],
      "country": "us",
      "currency": "USD",
      "notes": "g2-grading (cgc-cards-cert): only public /certlookup/<n>/ pages. robots.txt: User-agent * Allow: /. Cloudflare managed challenge on plain HTTP → Firecrawl."
    },
    "pcgs.com": {
      "minIntervalMs": 5000,
      "concurrency": 1,
      "timeoutMs": 90000,
      "engines": ["firecrawl", "scrapfly"],
      "country": "us",
      "currency": "USD",
      "notes": "g2-grading (pcgs-cert): only public /cert/<n> pages (plus the price guide read by pcgs-priceguide). Plain HTTP incl. robots.txt returns a Cloudflare managed-challenge 403 → Firecrawl. /pop/pcgsnolookup pages are public but not crawled."
    },
    "ngccoin.com": {
      "minIntervalMs": 5000,
      "concurrency": 1,
      "timeoutMs": 90000,
      "engines": ["firecrawl", "scrapfly"],
      "country": "us",
      "currency": "USD",
      "notes": "g2-grading (ngc-cert): only public /certlookup/<cert>/<grade>/ pages. robots.txt: User-agent * Allow: /. Cloudflare managed challenge on plain HTTP → Firecrawl. Census pages are public but not crawled by this connector."
    },
    "pmgnotes.com": {
      "minIntervalMs": 5000,
      "concurrency": 1,
      "timeoutMs": 90000,
      "engines": ["firecrawl", "scrapfly"],
      "country": "us",
      "currency": "USD",
      "notes": "g2-grading (pmg-cert): only public /certlookup/<cert>/<grade>/ pages. robots.txt: User-agent * Allow: /. Cloudflare managed challenge on plain HTTP → Firecrawl."
    },
    "my.taggrading.com": {
      "minIntervalMs": 4000,
      "concurrency": 1,
      "timeoutMs": 90000,
      "engines": ["firecrawl"],
      "firecrawl": { "waitForMs": 8000 },
      "country": "us",
      "currency": "USD",
      "notes": "g2-grading (tag-cert) + tag-pop: robots.txt explicitly allows /pop-report/ and /card/; sitemaps pop*.xml / dig*.xml public. Client-rendered React app → Firecrawl markdown, 8 s wait."
    },
    "beckett.com": {
      "minIntervalMs": 6000,
      "concurrency": 1,
      "engines": ["firecrawl", "scrapfly"],
      "notes": "g2-grading research 2026-09-08: BGS card lookup (/grading/card-lookup, Next.js → /api/grading/*) and the pop report (/grading/pop-report POST) both require a Google reCAPTCHA token → blocked, no connector. robots.txt: User-agent * (no disallow)."
    },
    "gosgc.com": {
      "minIntervalMs": 5000,
      "concurrency": 1,
      "engines": ["api", "firecrawl", "scrapfly"],
      "notes": "g2-grading research 2026-09-08: Angular SPA; cert lookup uses reCAPTCHA (blocked); the pop-report XHR (prod-customer-sgc-api.azurewebsites.net/v1/pop-report/getPopReportByCardSet) answers 'service is only available through website gosgc.com' to non-browser origins — not called. sgclegacy.com PopulationReport.aspx is gone (404)."
    },
    "cbcscomics.com": {
      "minIntervalMs": 5000,
      "concurrency": 1,
      "engines": ["firecrawl", "scrapfly"],
      "notes": "g2-grading research 2026-09-08: grading-notes (cert) search is behind Google reCAPTCHA and api.cbcscomics.com requires a bearer token → blocked. robots.txt disallows /services, /forum and submission PDFs only."
    },
    "acegrading.com": {
      "minIntervalMs": 6000,
      "concurrency": 1,
      "engines": ["firecrawl", "scrapfly"],
      "notes": "g2-grading research 2026-09-08: /pop and /cert are Livewire pages (results loaded by Livewire XHR after interaction, no URL-addressable cert or set page) behind a Cloudflare managed challenge → not implementable with a stateless fetch; robots.txt allows everything."
    },
    "psavideogames.com": {
      "minIntervalMs": 6000,
      "concurrency": 1,
      "engines": ["firecrawl", "scrapfly"],
      "notes": "g2-grading research 2026-09-08: watagames.com now redirects here (WATA is part of PSA). /verify is a 404; WATA/PSA video-game certs verify through psacard.com/cert (psa-cert). robots.txt: Content-Signal search=yes, ai-train=no, use=reference; Allow: /."
    }
  }
}
