[
  {
    "id": "psa",
    "name": "PSA (Professional Sports Authenticator)",
    "domain": "psacard.com",
    "country": "US",
    "supportedCountries": ["US", "CA", "JP", "GB"],
    "languages": ["en"],
    "sourceType": "grading_company",
    "categories": ["pokemon", "magic_the_gathering", "yugioh", "trading_cards", "sports_cards", "non_sport_cards", "autographs", "video_games", "comics", "coins"],
    "api": { "available": false, "docsUrl": null, "auth": "none", "notes": "No public API. The page is a Next.js app-router page (RSC payload inline, no __NEXT_DATA__)." },
    "urls": { "search": "https://www.psacard.com/cert", "product": "https://www.psacard.com/cert/{cert}", "sold": null, "sitemap": null, "robots": "https://www.psacard.com/robots.txt" },
    "data": { "liveListings": false, "soldResults": false, "auctionResults": false, "historical": "none", "images": true, "seller": false, "saleDate": false, "realizedPrice": false, "fees": false, "grading": true, "certNumber": true, "itemId": true, "gtin": false, "population": true, "catalog": true },
    "access": { "pagination": "none", "jsRendering": true, "antiBot": "high", "cloudflare": true, "robots": "robots.txt itself answers 403 (Cloudflare managed challenge) to plain HTTP; no crawl directives could be read. Only the public /cert/<n> page is fetched, one request per known cert, 1 req / 6 s.", "rateLimit": "self-imposed 1 req / 6 s; PSA shows 'private set registry' or not-found notices, no explicit limits seen", "preferredEngine": "firecrawl" },
    "currency": ["USD"],
    "freshness": "static",
    "priority": "wave1",
    "difficulty": "medium",
    "reliability": 0.95,
    "legal": "PSA's cert page states the database is provided 'for the sole purpose of confirming data regarding authenticated items with a particular certification number' — exactly the use (per-cert verification, no enumeration). APR and the population report are member-only and are never fetched (see connector psa-cert accessNotes). The PSA Estimate is stored as metadata only, never as a sale.",
    "status": "implemented",
    "connectors": ["psa-cert"],
    "statusReason": "Public cert verification implemented (psa-cert). APR & population report remain blocked (Collectors login) — recorded by group g0.",
    "verified": true,
    "verifiedAt": "2026-09-08",
    "notes": "Firecrawl renders the Cloudflare-challenged page in one credit (~4 s wait). Cert page shows grade, item description, label type, images, PSA Estimate and the per-grade population ('PSA Population' / 'Pop Higher') → partial population_report. WATA (video games) certs now also verify through this page (watagames.com redirects to psavideogames.com, whose /verify is a 404)."
  },
  {
    "id": "cgc",
    "name": "CGC Comics (Certified Guaranty Company)",
    "domain": "cgccomics.com",
    "country": "US",
    "supportedCountries": ["US"],
    "languages": ["en"],
    "sourceType": "grading_company",
    "categories": ["comics", "marvel_comics", "dc_comics", "independent_comics", "manga"],
    "api": { "available": false, "docsUrl": null, "auth": "none", "notes": "AngularJS page; cert data server-rendered into <dl> pairs, population counts rendered client-side but present in the Firecrawl DOM." },
    "urls": { "search": "https://www.cgccomics.com/certlookup/", "product": "https://www.cgccomics.com/certlookup/{cert}/", "sold": null, "sitemap": "https://www.cgccomics.com/sitemap.xml", "robots": "https://www.cgccomics.com/robots.txt" },
    "data": { "liveListings": false, "soldResults": false, "auctionResults": false, "historical": "none", "images": true, "seller": false, "saleDate": false, "realizedPrice": false, "fees": false, "grading": true, "certNumber": true, "itemId": true, "gtin": false, "population": true, "catalog": true },
    "access": { "pagination": "none", "jsRendering": true, "antiBot": "high", "cloudflare": true, "robots": "robots.txt 200: disallows only a list of named scrapers (AhrefsBot, WebCopier, …); everything allowed for *. /certlookup returns a Cloudflare managed-challenge 403 to plain HTTP.", "rateLimit": "page shows 'Your search activity has exceeded our limits' when hammered — 1 req / 5 s self-imposed", "preferredEngine": "firecrawl" },
    "currency": ["USD"],
    "freshness": "static",
    "priority": "wave1",
    "difficulty": "medium",
    "reliability": 0.95,
    "legal": "CGC advertises the certification lookup as free and account-less; only per-cert pages are read. The CGC Census (population report) requires a login and is never fetched (blocked in earlier sessions).",
    "status": "implemented",
    "connectors": ["cgc-cert"],
    "statusReason": null,
    "verified": true,
    "verifiedAt": "2026-09-08",
    "notes": "Fields: title, issue, issue date/year, publisher, grade, page quality, grade date, label category, art/key comments, grader notes, 'Total Graded by CGC: In <grade>: n / In Higher Grades: m'. Short URL https://www.cgccomics.com/<cert>/ also indexed by search engines."
  },
  {
    "id": "cgc-cards",
    "name": "CGC Cards",
    "domain": "cgccards.com",
    "country": "US",
    "supportedCountries": ["US"],
    "languages": ["en"],
    "sourceType": "grading_company",
    "categories": ["pokemon", "magic_the_gathering", "yugioh", "one_piece_card_game", "trading_cards", "sports_cards", "non_sport_cards"],
    "api": { "available": false, "docsUrl": null, "auth": "none", "notes": "Same CCG AngularJS template as cgccomics.com." },
    "urls": { "search": "https://www.cgccards.com/certlookup/", "product": "https://www.cgccards.com/certlookup/{cert}/", "sold": null, "sitemap": "https://www.cgccards.com/sitemap.xml", "robots": "https://www.cgccards.com/robots.txt" },
    "data": { "liveListings": false, "soldResults": false, "auctionResults": false, "historical": "none", "images": true, "seller": false, "saleDate": false, "realizedPrice": false, "fees": false, "grading": true, "certNumber": true, "itemId": true, "gtin": false, "population": true, "catalog": true },
    "access": { "pagination": "none", "jsRendering": true, "antiBot": "high", "cloudflare": true, "robots": "robots.txt: 'User-agent: * Allow: /' (AhrefsBot disallowed). /certlookup returns a Cloudflare managed-challenge 403 to plain HTTP.", "rateLimit": "1 req / 5 s self-imposed", "preferredEngine": "firecrawl" },
    "currency": ["USD"],
    "freshness": "static",
    "priority": "wave2",
    "difficulty": "medium",
    "reliability": 0.95,
    "legal": "Free public lookup, no account. Population report pages not crawled. Legacy 9.5 grades are displayed as Gem Mint 10 by CGC; the connector stores what the page shows.",
    "status": "implemented",
    "connectors": ["cgc-cards-cert"],
    "statusReason": "Population counts currently read 'Coming Soon!' on many cards → population_report emitted only when a number is shown.",
    "verified": true,
    "verifiedAt": "2026-09-08",
    "notes": "Fields: cert, card name, game/sport, year, language, card set, card number, grade, grade date, holder images."
  },
  {
    "id": "pcgs",
    "name": "PCGS (Professional Coin Grading Service)",
    "domain": "pcgs.com",
    "country": "US",
    "supportedCountries": ["US"],
    "languages": ["en"],
    "sourceType": "grading_company",
    "categories": ["coins", "banknotes"],
    "api": { "available": true, "docsUrl": "https://www.pcgs.com/publicapi", "auth": "api_key", "notes": "PCGS Public API (GetCoinFactsByCertNo etc.) needs a free account token with a daily quota — not held; the connector reads the public HTML page instead." },
    "urls": { "search": "https://www.pcgs.com/cert", "product": "https://www.pcgs.com/cert/{cert}", "sold": null, "sitemap": null, "robots": "https://www.pcgs.com/robots.txt" },
    "data": { "liveListings": false, "soldResults": false, "auctionResults": false, "historical": "none", "images": true, "seller": false, "saleDate": false, "realizedPrice": false, "fees": false, "grading": true, "certNumber": true, "itemId": true, "gtin": false, "population": true, "catalog": true },
    "access": { "pagination": "none", "jsRendering": true, "antiBot": "high", "cloudflare": true, "robots": "robots.txt answers 403 (Cloudflare managed challenge) to plain HTTP; no directives readable. Only /cert/<n> fetched per known cert.", "rateLimit": "1 req / 5 s self-imposed", "preferredEngine": "firecrawl" },
    "currency": ["USD"],
    "freshness": "static",
    "priority": "wave1",
    "difficulty": "medium",
    "reliability": 0.95,
    "legal": "Public verification page; PCGS's own text: 'According to the PCGS Certification Database, the requested certification number is defined as the following'. Price-guide value kept as metadata only. Auction Prices Realized and Set Registry not fetched.",
    "status": "implemented",
    "connectors": ["pcgs-cert", "pcgs-priceguide"],
    "statusReason": null,
    "verified": true,
    "verifiedAt": "2026-09-08",
    "notes": "Cert page table: Grade, PCGS # (→ identifiers.pcgs_number, links CoinFacts), Price Guide Value, Date/Mintmark, Denomination, Population (link to public /pop/pcgsnolookup?s=<pcgs#>&g=<grade>), Pop Higher, Region, Mintage, Holder Type. The /pop page itself is public (Svelte table per PCGS# × grade) — candidate for a later pcgs-pop connector."
  },
  {
    "id": "ngc",
    "name": "NGC (Numismatic Guaranty Company)",
    "domain": "ngccoin.com",
    "country": "US",
    "supportedCountries": ["US", "GB", "DE", "HK", "IN"],
    "languages": ["en"],
    "sourceType": "grading_company",
    "categories": ["coins", "medals"],
    "api": { "available": false, "docsUrl": null, "auth": "none", "notes": "AngularJS CCG template; the cert page requires the grade as a URL segment (/certlookup/<cert>/<grade>/)." },
    "urls": { "search": "https://www.ngccoin.com/certlookup/", "product": "https://www.ngccoin.com/certlookup/{cert}/{grade}/", "sold": null, "sitemap": null, "robots": "https://www.ngccoin.com/robots.txt" },
    "data": { "liveListings": false, "soldResults": false, "auctionResults": false, "historical": "none", "images": true, "seller": false, "saleDate": false, "realizedPrice": false, "fees": false, "grading": true, "certNumber": true, "itemId": true, "gtin": false, "population": true, "catalog": true },
    "access": { "pagination": "none", "jsRendering": true, "antiBot": "high", "cloudflare": true, "robots": "robots.txt: 'User-agent: * Allow: /' (AhrefsBot disallowed). /certlookup returns a Cloudflare managed-challenge 403 to plain HTTP.", "rateLimit": "1 req / 5 s self-imposed; page shows 'search activity has exceeded our limits' when hammered", "preferredEngine": "firecrawl" },
    "currency": ["USD"],
    "freshness": "static",
    "priority": "wave1",
    "difficulty": "medium",
    "reliability": 0.95,
    "legal": "Free public verification, no account. NGC price-guide value kept as metadata only. The NGC Census pages are public (verified 2026-09-08) but not crawled by this connector; Registry not fetched.",
    "status": "implemented",
    "connectors": ["ngc-cert"],
    "statusReason": "Limitation: a cert number without its holder grade renders the empty form (zero records) — marketplaces usually show the grade, so the worker passes 'cert/grade'.",
    "verified": true,
    "verifiedAt": "2026-09-08",
    "notes": "Fields: cert, description, grade, grade date, label, images, price guide, 'Total Graded by NGC: In <grade>: n / In Higher Grades: m' with link to the public census page."
  },
  {
    "id": "pmg",
    "name": "PMG (Paper Money Guaranty)",
    "domain": "pmgnotes.com",
    "country": "US",
    "supportedCountries": ["US", "GB", "DE", "HK", "IN"],
    "languages": ["en"],
    "sourceType": "grading_company",
    "categories": ["banknotes"],
    "api": { "available": false, "docsUrl": null, "auth": "none", "notes": "AngularJS CCG template; grade required in the URL (/certlookup/<cert>/<grade>/)." },
    "urls": { "search": "https://www.pmgnotes.com/certlookup/", "product": "https://www.pmgnotes.com/certlookup/{cert}/{grade}/", "sold": null, "sitemap": null, "robots": "https://www.pmgnotes.com/robots.txt" },
    "data": { "liveListings": false, "soldResults": false, "auctionResults": false, "historical": "none", "images": true, "seller": false, "saleDate": false, "realizedPrice": false, "fees": false, "grading": true, "certNumber": true, "itemId": true, "gtin": false, "population": true, "catalog": true },
    "access": { "pagination": "none", "jsRendering": true, "antiBot": "high", "cloudflare": true, "robots": "robots.txt: 'User-agent: * Allow: /' (AhrefsBot disallowed). Cloudflare managed-challenge 403 to plain HTTP.", "rateLimit": "1 req / 5 s self-imposed", "preferredEngine": "firecrawl" },
    "currency": ["USD"],
    "freshness": "static",
    "priority": "wave2",
    "difficulty": "medium",
    "reliability": 0.95,
    "legal": "Free public verification, no account. Serial numbers are item-specific and kept in metadata only. Registry / full population report not fetched.",
    "status": "implemented",
    "connectors": ["pmg-cert"],
    "statusReason": "Same grade-in-URL limitation as NGC.",
    "verified": true,
    "verifiedAt": "2026-09-08",
    "notes": "Fields: cert, note description, Pick/Note # (identifiers.pick_number), serial #, region, grade (+EPQ), grade date, signatures/vignettes, comments, images, 'Total Graded by PMG: In 67EPQ: n / In Higher Grades: m'."
  },
  {
    "id": "tag",
    "name": "TAG Grading",
    "domain": "my.taggrading.com",
    "country": "US",
    "supportedCountries": ["US"],
    "languages": ["en"],
    "sourceType": "grading_company",
    "categories": ["pokemon", "magic_the_gathering", "yugioh", "trading_cards", "sports_cards", "non_sport_cards"],
    "api": { "available": false, "docsUrl": null, "auth": "none", "notes": "Client-rendered React portal (hashed MUI classes); public sitemaps pop*.xml (set pop pages) and dig*.xml (~3M /card/<cert> DIG reports)." },
    "urls": { "search": "https://my.taggrading.com/pop-report", "product": "https://my.taggrading.com/card/{cert}", "sold": null, "sitemap": "https://my.taggrading.com/sitemap.xml", "robots": "https://my.taggrading.com/robots.txt" },
    "data": { "liveListings": false, "soldResults": false, "auctionResults": false, "historical": "none", "images": true, "seller": false, "saleDate": false, "realizedPrice": false, "fees": false, "grading": true, "certNumber": true, "itemId": true, "gtin": false, "population": true, "catalog": true },
    "access": { "pagination": "sitemap", "jsRendering": true, "antiBot": "none", "cloudflare": false, "robots": "robots.txt explicitly allows /pop-report/ and /card/ for *; sitemaps listed.", "rateLimit": "1 req / 4 s self-imposed", "preferredEngine": "firecrawl" },
    "currency": ["USD"],
    "freshness": "daily",
    "priority": "wave2",
    "difficulty": "medium",
    "reliability": 0.95,
    "legal": "Public pop report and DIG reports; nothing behind the customer login is touched. Per-card sub-scores not stored.",
    "status": "implemented",
    "connectors": ["tag-pop", "tag-cert"],
    "statusReason": null,
    "verified": true,
    "verifiedAt": "2026-09-08",
    "notes": "tag-cert reads /card/<cert> (name, set line, TAG Score, grade + label, population 'n <grade> graded / total graded' as of date, rank, chronology, front/back images); tag-pop reads set-level pop tables."
  },
  {
    "id": "beckett-grading",
    "name": "Beckett Grading Services (BGS) — card lookup & pop report",
    "domain": "beckett.com",
    "country": "US",
    "supportedCountries": ["US"],
    "languages": ["en"],
    "sourceType": "grading_company",
    "categories": ["sports_cards", "pokemon", "magic_the_gathering", "yugioh", "non_sport_cards"],
    "api": { "available": false, "docsUrl": null, "auth": "none", "notes": "Next.js site; card lookup calls /api/grading/<slug> with a 'recaptcha-token' header; pop report is a legacy PHP POST form (sport_id/set_name/player_name) whose results are also reCAPTCHA-protected." },
    "urls": { "search": "https://www.beckett.com/grading/card-lookup", "product": "https://www.beckett.com/grading/card-lookup?snCategory=Cards&snSerialNumber={cert}", "sold": null, "sitemap": null, "robots": "https://www.beckett.com/robots.txt" },
    "data": { "liveListings": false, "soldResults": false, "auctionResults": false, "historical": "none", "images": false, "seller": false, "saleDate": false, "realizedPrice": false, "fees": false, "grading": true, "certNumber": true, "itemId": true, "gtin": false, "population": true, "catalog": false },
    "access": { "pagination": "none", "jsRendering": true, "antiBot": "high", "cloudflare": true, "robots": "robots.txt: 'User-agent: *' with no disallow lines. Pages load without challenge, but both the lookup and the pop report require a Google reCAPTCHA verification before showing data (rendered page says 'Recaptcha requires verification').", "rateLimit": null, "preferredEngine": "none" },
    "currency": ["USD"],
    "freshness": "static",
    "priority": "wave2",
    "difficulty": "very_hard",
    "reliability": 0.9,
    "legal": "reCAPTCHA gate on both tools = access control; SPEC §36 forbids CAPTCHA solving. Not implemented.",
    "status": "blocked",
    "connectors": [],
    "statusReason": "BGS card lookup (/grading/card-lookup → /api/grading/*) and pop report (/grading/pop-report) both require a reCAPTCHA token; verified live 2026-09-08 (plain POST of the pop form and a Firecrawl render of the lookup URL both return the reCAPTCHA gate). Grader slug bgs stays taxonomy-only.",
    "verified": true,
    "verifiedAt": "2026-09-08",
    "notes": "BGS serials are 10 digits (leading zeros, e.g. 0004031607). Taxonomy verifyUrl https://www.beckett.com/grading/card-lookup is form-only. Revisit if Beckett publishes an API or drops the captcha."
  },
  {
    "id": "sgc",
    "name": "SGC (Sportscard Guaranty) — cert lookup & pop report",
    "domain": "gosgc.com",
    "country": "US",
    "supportedCountries": ["US"],
    "languages": ["en"],
    "sourceType": "grading_company",
    "categories": ["sports_cards", "baseball_cards", "basketball_cards", "football_cards", "hockey_cards", "pokemon", "non_sport_cards"],
    "api": { "available": true, "docsUrl": null, "auth": "partner", "notes": "Undocumented Angular XHR API https://prod-customer-sgc-api.azurewebsites.net/v1 (pop-report/getPopReportByCardSet, orders/<cert>/<userId>/authcode-collections). A direct call answers 200 'service is only available through website https://gosgc.com…' — origin-restricted; not called." },
    "urls": { "search": "https://gosgc.com/cert-code-lookup/", "product": null, "sold": null, "sitemap": null, "robots": "https://gosgc.com/robots.txt" },
    "data": { "liveListings": false, "soldResults": false, "auctionResults": false, "historical": "none", "images": false, "seller": false, "saleDate": false, "realizedPrice": false, "fees": false, "grading": true, "certNumber": true, "itemId": true, "gtin": false, "population": true, "catalog": false },
    "access": { "pagination": "none", "jsRendering": true, "antiBot": "medium", "cloudflare": false, "robots": "gosgc.com/robots.txt returns the SPA index.html (no robots file). Angular SPA shell; cert lookup component embeds reCAPTCHA Enterprise (site key in bundle); pop-report data only via the origin-restricted API.", "rateLimit": null, "preferredEngine": "none" },
    "currency": ["USD"],
    "freshness": "static",
    "priority": "wave2",
    "difficulty": "very_hard",
    "reliability": 0.9,
    "legal": "Cert lookup is reCAPTCHA-protected (no solving). The API explicitly restricts service to the website origin — spoofing Origin/Referer would be circumvention. The former server-rendered pop report (sgclegacy.com/PopulationReport.aspx) is gone (404).",
    "status": "blocked",
    "connectors": [],
    "statusReason": "Cert lookup behind reCAPTCHA; pop report only through an origin-restricted XHR API; legacy ASP.NET report offline. Verified live 2026-09-08. Grader slug sgc stays taxonomy-only.",
    "verified": true,
    "verifiedAt": "2026-09-08",
    "notes": "SGC certs: 7 digits (black label) or 7+3 (XXXXXXX-XXX) for green/white labels. The SGC mobile app exposes the same data — no public API terms."
  },
  {
    "id": "cbcs",
    "name": "CBCS (Comic Book Certification Service) — grading notes lookup & population report",
    "domain": "cbcscomics.com",
    "country": "US",
    "supportedCountries": ["US"],
    "languages": ["en"],
    "sourceType": "grading_company",
    "categories": ["comics", "marvel_comics", "dc_comics", "independent_comics"],
    "api": { "available": true, "docsUrl": null, "auth": "login", "notes": "AngularJS SPA over https://api.cbcscomics.com (/api/comics/<id>, /api/comics/search with X-CBCS-KEY, /token password grant). Anonymous calls return 401 'Authorization has been denied'." },
    "urls": { "search": "https://www.cbcscomics.com/grading-notes", "product": "https://www.cbcscomics.com/grading-notes/{cert}", "sold": null, "sitemap": "https://www.cbcscomics.com/sitemap.xml", "robots": "https://www.cbcscomics.com/robots.txt" },
    "data": { "liveListings": false, "soldResults": false, "auctionResults": false, "historical": "none", "images": true, "seller": false, "saleDate": false, "realizedPrice": false, "fees": false, "grading": true, "certNumber": true, "itemId": true, "gtin": false, "population": true, "catalog": false },
    "access": { "pagination": "none", "jsRendering": true, "antiBot": "medium", "cloudflare": true, "robots": "robots.txt disallows /services, /forum and submission-form PDFs only. The grading-notes page renders a search box guarded by Google reCAPTCHA ('Recaptcha requires verification'); /population-report/:id needs an id we cannot discover publicly.", "rateLimit": null, "preferredEngine": "none" },
    "currency": ["USD"],
    "freshness": "static",
    "priority": "wave3",
    "difficulty": "very_hard",
    "reliability": 0.85,
    "legal": "reCAPTCHA + authenticated API = access controls; not circumvented.",
    "status": "blocked",
    "connectors": [],
    "statusReason": "Cert (grading notes) search requires reCAPTCHA and the backing API requires a bearer token; verified live 2026-09-08 (Firecrawl render shows the reCAPTCHA gate; api.cbcscomics.com → 401).",
    "verified": true,
    "verifiedAt": "2026-09-08",
    "notes": "CBCS is a Beckett company; population report exists (/population-report/:id) but is reachable only from authenticated search results."
  },
  {
    "id": "ace-grading",
    "name": "Ace Grading — population report & cert lookup",
    "domain": "acegrading.com",
    "country": "GB",
    "supportedCountries": ["GB", "EU", "US"],
    "languages": ["en"],
    "sourceType": "grading_company",
    "categories": ["pokemon", "magic_the_gathering", "yugioh", "one_piece_card_game", "trading_cards", "sports_cards"],
    "api": { "available": false, "docsUrl": null, "auth": "none", "notes": "Laravel + Livewire: /pop and /cert render only filters/forms; result rows arrive through Livewire XHR after user interaction (no URL-addressable set or cert page)." },
    "urls": { "search": "https://acegrading.com/pop", "product": "https://acegrading.com/cert", "sold": null, "sitemap": null, "robots": "https://acegrading.com/robots.txt" },
    "data": { "liveListings": false, "soldResults": false, "auctionResults": false, "historical": "none", "images": false, "seller": false, "saleDate": false, "realizedPrice": false, "fees": false, "grading": true, "certNumber": true, "itemId": true, "gtin": false, "population": true, "catalog": false },
    "access": { "pagination": "infinite_scroll", "jsRendering": true, "antiBot": "high", "cloudflare": true, "robots": "robots.txt: 'User-agent: * Disallow:' (everything allowed). Root page loads; /pop and /cert answer a Cloudflare managed-challenge 403 to plain HTTP and, when rendered by Firecrawl, contain only the filter lists (brands, set names) — no population rows without Livewire interaction.", "rateLimit": null, "preferredEngine": "none" },
    "currency": ["GBP"],
    "freshness": "daily",
    "priority": "wave3",
    "difficulty": "very_hard",
    "reliability": 0.85,
    "legal": "Public data, but only reachable through stateful Livewire requests (CSRF token + session) — replaying those would mean emulating the app rather than reading a page.",
    "status": "rejected",
    "connectors": [],
    "statusReason": "No URL-addressable population or cert pages (Livewire-only, Cloudflare challenge). Verified live 2026-09-08 with Firecrawl (5 s wait): filters rendered, zero rows/cert results. Revisit if Ace publishes an API or static pop pages.",
    "verified": true,
    "verifiedAt": "2026-09-08",
    "notes": "Ace's pop filters list 100+ TCG/sport brands and thousands of set names — the data exists server-side."
  },
  {
    "id": "wata",
    "name": "WATA Games (now PSA Video Games) — cert verification",
    "domain": "psavideogames.com",
    "country": "US",
    "supportedCountries": ["US"],
    "languages": ["en"],
    "sourceType": "grading_company",
    "categories": ["video_games", "nintendo_games", "sega_games", "playstation_games", "atari_retro_games"],
    "api": { "available": false, "docsUrl": null, "auth": "none", "notes": null },
    "urls": { "search": "https://www.psacard.com/cert", "product": null, "sold": null, "sitemap": null, "robots": "https://www.psavideogames.com/robots.txt" },
    "data": { "liveListings": false, "soldResults": false, "auctionResults": false, "historical": "none", "images": false, "seller": false, "saleDate": false, "realizedPrice": false, "fees": false, "grading": true, "certNumber": true, "itemId": true, "gtin": false, "population": false, "catalog": false },
    "access": { "pagination": "none", "jsRendering": true, "antiBot": "high", "cloudflare": true, "robots": "watagames.com 302 → psavideogames.com. psavideogames.com/robots.txt (200): Cloudflare 'Content-Signal: search=yes, ai-train=no, use=reference', Allow: / for *. /verify is a 404 ('The requested page was not found') when rendered.", "rateLimit": null, "preferredEngine": "none" },
    "currency": ["USD"],
    "freshness": "static",
    "priority": "wave3",
    "difficulty": "hard",
    "reliability": 0.9,
    "legal": "No dedicated public verification page any more; WATA's 2023 'Cert Verification' blog post lives behind a Cloudflare challenge. PSA's cert page covers PSA-graded video games.",
    "status": "rejected",
    "connectors": [],
    "statusReason": "watagames.com redirects to psavideogames.com whose verify page is a 404; no public WATA population report found (taxonomy populationUrl https://www.watagames.com/population is dead). Video-game certs verify through psa-cert where PSA-graded. Verified live 2026-09-08.",
    "verified": true,
    "verifiedAt": "2026-09-08",
    "notes": "WATA cert numbers are 9 digits (front label on new holders)."
  },
  {
    "id": "vga-anacs-iccs-hga",
    "name": "VGA, ANACS, ICCS, HGA (minor graders) — desk research only",
    "domain": "vggrader.com",
    "country": "US",
    "supportedCountries": ["US", "CA"],
    "languages": ["en"],
    "sourceType": "grading_company",
    "categories": ["video_games", "coins", "trading_cards"],
    "api": { "available": false, "docsUrl": null, "auth": "none", "notes": null },
    "urls": { "search": null, "product": null, "sold": null, "sitemap": null, "robots": null },
    "data": { "liveListings": false, "soldResults": false, "auctionResults": false, "historical": "none", "images": false, "seller": false, "saleDate": false, "realizedPrice": false, "fees": false, "grading": true, "certNumber": true, "itemId": false, "gtin": false, "population": false, "catalog": false },
    "access": { "pagination": "none", "jsRendering": true, "antiBot": "medium", "cloudflare": false, "robots": null, "rateLimit": null, "preferredEngine": "none" },
    "currency": ["USD"],
    "freshness": "unknown",
    "priority": "later",
    "difficulty": "hard",
    "reliability": 0.7,
    "legal": null,
    "status": "researching",
    "connectors": [],
    "statusReason": "Not probed live this session (brief: research only unless trivially public). VGA (vggrader.com) publishes no per-cert verification page; ANACS (anacs.com) has a serial lookup form; ICCS (iccscoin.ca) has no online verification; HGA (hybridgrading.com) has a cert page behind a JS app. To be verified in a later wave.",
    "verified": false,
    "verifiedAt": null,
    "notes": "Kept in the catalogue so the graders exist in the taxonomy with a documented (absent) public data path."
  }
]
