[
  { "id": "psa", "name": "PSA (APR & population report)", "domain": "psacard.com", "country": "US", "languages": ["en"], "sourceType": "grading_company", "categories": ["pokemon", "sports_cards", "magic_the_gathering"], "data": { "soldResults": true, "historical": "decades", "population": true, "certNumber": true, "grading": true }, "access": { "antiBot": "high", "cloudflare": true, "jsRendering": true, "preferredEngine": "none" }, "currency": ["USD"], "priority": "wave1", "difficulty": "very_hard", "reliability": 0.95, "status": "blocked", "statusReason": "Auction Prices Realized and the Population Report require a Collectors Universe login (terms forbid automated access to member areas). Only the public /cert/<n> verification page is used (connector psa-cert, group g2).", "legal": "Member-only data; no circumvention. Partnership/data licence is the only route to APR and pop data.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "stockx", "name": "StockX", "domain": "stockx.com", "country": "US", "supportedCountries": ["US", "CA", "GB", "EU", "JP", "AU"], "languages": ["en"], "sourceType": "marketplace", "categories": ["sneakers", "nike_jordan", "adidas_yeezy", "pokemon", "fashion_streetwear"], "data": { "liveListings": true, "soldResults": true, "historical": "years" }, "access": { "antiBot": "blocking", "cloudflare": false, "jsRendering": true, "preferredEngine": "none" }, "currency": ["USD"], "priority": "wave1", "difficulty": "very_hard", "reliability": 0.9, "status": "blocked", "statusReason": "PerimeterX returns 404/403 to every non-browser and to rendered fetches; public API is partner-only. No circumvention attempted (SPEC §36). Partner data feed is the lawful route.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "goat", "name": "GOAT", "domain": "goat.com", "country": "US", "languages": ["en"], "sourceType": "marketplace", "categories": ["sneakers", "nike_jordan", "adidas_yeezy"], "data": { "liveListings": true }, "access": { "antiBot": "blocking", "jsRendering": true, "preferredEngine": "none" }, "currency": ["USD"], "priority": "wave1", "difficulty": "very_hard", "status": "blocked", "statusReason": "Anti-bot (DataDome/PerimeterX) blocks all automated access; no public API.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "kickscrew", "name": "KicksCrew", "domain": "kickscrew.com", "country": "HK", "languages": ["en"], "sourceType": "marketplace", "categories": ["sneakers"], "access": { "antiBot": "blocking", "preferredEngine": "none" }, "currency": ["USD"], "status": "blocked", "statusReason": "Bot protection blocks fetches.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "stadium-goods", "name": "Stadium Goods", "domain": "stadiumgoods.com", "country": "US", "languages": ["en"], "sourceType": "marketplace", "categories": ["sneakers"], "access": { "antiBot": "blocking", "preferredEngine": "none" }, "currency": ["USD"], "status": "blocked", "statusReason": "Bot protection (Akamai) blocks fetches.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "klekt", "name": "KLEKT", "domain": "klekt.com", "country": "GB", "languages": ["en"], "sourceType": "marketplace", "categories": ["sneakers"], "access": { "antiBot": "blocking", "preferredEngine": "none" }, "currency": ["EUR", "GBP"], "status": "blocked", "statusReason": "Bot protection blocks fetches.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "bricklink", "name": "BrickLink", "domain": "bricklink.com", "country": "US", "languages": ["en"], "sourceType": "marketplace", "categories": ["lego", "lego_sets", "lego_minifigures"], "data": { "liveListings": true, "soldResults": true, "historical": "months", "catalog": true }, "access": { "antiBot": "medium", "preferredEngine": "none", "robots": "Disallow: / for non-listed agents; price guide and catalog pages disallowed" }, "api": { "available": true, "docsUrl": "https://www.bricklink.com/v3/api.page", "auth": "oauth", "notes": "Store API requires a seller account and OAuth 1.0 app approval." }, "currency": ["USD"], "priority": "wave1", "difficulty": "hard", "reliability": 0.9, "status": "blocked", "statusReason": "robots.txt disallows the catalog and price-guide paths; the API is seller-only. Respecting robots (SPEC §36).", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "hobbydb", "name": "hobbyDB / Pop Price Guide", "domain": "hobbydb.com", "country": "US", "languages": ["en"], "sourceType": "pricing_guide", "categories": ["funko", "designer_toys", "action_figures"], "data": { "catalog": true }, "access": { "antiBot": "high", "preferredEngine": "none" }, "currency": ["USD"], "status": "blocked", "statusReason": "Values behind login; catalog API undocumented and protected.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "gocollect", "name": "GoCollect", "domain": "gocollect.com", "country": "US", "languages": ["en"], "sourceType": "analytics_provider", "categories": ["marvel_comics", "dc_comics", "independent_comics", "video_games"], "data": { "soldResults": true, "historical": "years" }, "access": { "antiBot": "high", "preferredEngine": "none" }, "currency": ["USD"], "status": "blocked", "statusReason": "Sales data is a paid membership product; terms forbid scraping.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "heritage", "name": "Heritage Auctions", "domain": "ha.com", "country": "US", "languages": ["en"], "sourceType": "auction_house", "categories": ["sports_cards", "marvel_comics", "coins", "video_games", "art", "sports_memorabilia"], "data": { "soldResults": true, "auctionResults": true, "historical": "decades", "realizedPrice": true, "saleDate": true, "fees": true, "grading": true, "certNumber": true }, "access": { "antiBot": "high", "preferredEngine": "none" }, "currency": ["USD"], "priority": "wave1", "difficulty": "very_hard", "reliability": 0.95, "status": "blocked", "statusReason": "Prices-realised archive requires a free but mandatory account (login wall) and terms prohibit automated access; upcoming-lot pages are protected. Data licence/partnership is the lawful route.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "liveauctioneers", "name": "LiveAuctioneers", "domain": "liveauctioneers.com", "country": "US", "languages": ["en"], "sourceType": "auction_house", "categories": ["antiques", "art", "coins", "vintage_toys"], "data": { "auctionResults": true, "historical": "decades" }, "access": { "antiBot": "blocking", "preferredEngine": "none" }, "currency": ["USD"], "status": "blocked", "statusReason": "Bot protection; price results require login; terms forbid scraping.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "invaluable", "name": "Invaluable", "domain": "invaluable.com", "country": "US", "languages": ["en"], "sourceType": "auction_house", "categories": ["antiques", "art", "coins"], "data": { "auctionResults": true, "historical": "decades" }, "access": { "antiBot": "blocking", "preferredEngine": "none" }, "currency": ["USD"], "status": "blocked", "statusReason": "Bot protection and login-gated price results.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "greatcollections", "name": "GreatCollections", "domain": "greatcollections.com", "country": "US", "languages": ["en"], "sourceType": "auction_house", "categories": ["coins", "banknotes"], "data": { "auctionResults": true, "historical": "years" }, "access": { "antiBot": "high", "preferredEngine": "none" }, "currency": ["USD"], "status": "blocked", "statusReason": "Archive search requires login; anti-bot on public pages.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "stacks-bowers", "name": "Stack's Bowers Galleries", "domain": "stacksbowers.com", "country": "US", "languages": ["en"], "sourceType": "auction_house", "categories": ["coins", "banknotes"], "data": { "auctionResults": true, "historical": "decades" }, "access": { "antiBot": "high", "preferredEngine": "none" }, "currency": ["USD"], "status": "blocked", "statusReason": "Archive behind login/anti-bot.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "whisky-auctioneer", "name": "Whisky Auctioneer", "domain": "whiskyauctioneer.com", "country": "GB", "languages": ["en"], "sourceType": "auction_house", "categories": ["whisky"], "access": { "antiBot": "blocking", "preferredEngine": "none" }, "currency": ["GBP"], "status": "blocked", "statusReason": "Cloudflare challenge on all pages.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "barrett-jackson", "name": "Barrett-Jackson", "domain": "barrett-jackson.com", "country": "US", "languages": ["en"], "sourceType": "auction_house", "categories": ["automobiles"], "access": { "antiBot": "blocking", "preferredEngine": "none" }, "currency": ["USD"], "status": "blocked", "statusReason": "Anti-bot blocks results pages.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "hagerty", "name": "Hagerty Valuation Tools", "domain": "hagerty.com", "country": "US", "languages": ["en"], "sourceType": "pricing_guide", "categories": ["automobiles"], "access": { "antiBot": "high", "preferredEngine": "none" }, "currency": ["USD"], "status": "blocked", "statusReason": "Valuation tool is a member product; terms forbid extraction.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "siegel", "name": "Robert A. Siegel Auction Galleries", "domain": "siegelauctions.com", "country": "US", "languages": ["en"], "sourceType": "auction_house", "categories": ["stamps"], "access": { "antiBot": "high", "preferredEngine": "none" }, "currency": ["USD"], "status": "blocked", "statusReason": "Power Search results require login.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "mandarake", "name": "Mandarake", "domain": "mandarake.co.jp", "country": "JP", "languages": ["ja", "en"], "sourceType": "dealer", "categories": ["action_figures", "manga", "vintage_toys"], "access": { "antiBot": "blocking", "preferredEngine": "none" }, "currency": ["JPY"], "status": "blocked", "statusReason": "Bot protection returns challenge pages to all engines.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "myfigurecollection", "name": "MyFigureCollection", "domain": "myfigurecollection.net", "country": "FR", "languages": ["en"], "sourceType": "collector_database", "categories": ["action_figures"], "data": { "catalog": true }, "access": { "antiBot": "high", "preferredEngine": "none" }, "currency": ["JPY"], "status": "blocked", "statusReason": "Anti-bot challenge; API requires account approval.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "boardgamegeek", "name": "BoardGameGeek", "domain": "boardgamegeek.com", "country": "US", "languages": ["en"], "sourceType": "collector_database", "categories": ["board_games"], "data": { "catalog": true, "liveListings": true }, "api": { "available": true, "docsUrl": "https://boardgamegeek.com/wiki/page/BGG_XML_API2", "auth": "api_key", "notes": "XML API2 now requires a registered application token." }, "currency": ["USD"], "status": "gated", "statusReason": "XML API2 needs an approved application token (BGG_API_TOKEN); marketplace listings are also behind it.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "grailed", "name": "Grailed", "domain": "grailed.com", "country": "US", "languages": ["en"], "sourceType": "marketplace", "categories": ["fashion_streetwear", "sneakers"], "access": { "antiBot": "blocking", "preferredEngine": "none" }, "currency": ["USD"], "status": "blocked", "statusReason": "DataDome blocks automated access.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "vestiaire-collective", "name": "Vestiaire Collective", "domain": "vestiairecollective.com", "country": "FR", "languages": ["en", "fr"], "sourceType": "marketplace", "categories": ["luxury_handbags", "fashion_streetwear", "watches"], "access": { "antiBot": "blocking", "preferredEngine": "none" }, "currency": ["EUR"], "status": "blocked", "statusReason": "Anti-bot challenge on every page.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "keh", "name": "KEH Camera", "domain": "keh.com", "country": "US", "languages": ["en"], "sourceType": "dealer", "categories": ["cameras"], "access": { "antiBot": "blocking", "preferredEngine": "none" }, "currency": ["USD"], "status": "blocked", "statusReason": "Bot protection blocks fetches.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "whiskybase", "name": "Whiskybase", "domain": "whiskybase.com", "country": "NL", "languages": ["en"], "sourceType": "collector_database", "categories": ["whisky"], "data": { "catalog": true }, "access": { "antiBot": "blocking", "preferredEngine": "none" }, "currency": ["EUR"], "status": "blocked", "statusReason": "Cloudflare challenge; terms forbid scraping.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "abebooks", "name": "AbeBooks", "domain": "abebooks.com", "country": "CA", "languages": ["en"], "sourceType": "marketplace", "categories": ["books"], "data": { "liveListings": true }, "access": { "antiBot": "blocking", "preferredEngine": "none" }, "currency": ["USD"], "status": "blocked", "statusReason": "Amazon-owned; bot protection; no public API.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "drouot", "name": "Drouot", "domain": "drouot.com", "country": "FR", "languages": ["fr"], "sourceType": "auction_house", "categories": ["art", "antiques"], "data": { "auctionResults": true, "historical": "decades" }, "access": { "antiBot": "blocking", "preferredEngine": "none" }, "currency": ["EUR"], "status": "blocked", "statusReason": "Results require a paid subscription (Drouot Digital); bot protection.", "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "tcgplayer", "name": "TCGplayer", "domain": "tcgplayer.com", "country": "US", "languages": ["en"], "sourceType": "marketplace", "categories": ["pokemon", "magic_the_gathering", "yugioh", "one_piece_card_game", "disney_lorcana"], "data": { "liveListings": true, "soldResults": true, "historical": "years" }, "api": { "available": true, "docsUrl": "https://docs.tcgplayer.com/", "auth": "partner", "notes": "Developer API closed to new applicants since 2023." }, "access": { "antiBot": "blocking", "preferredEngine": "none" }, "currency": ["USD"], "priority": "wave1", "difficulty": "hard", "reliability": 0.9, "status": "partial", "statusReason": "Storefront is bot-protected and the API is closed; market prices are ingested through the public tcgcsv.com mirror (connector tcgcsv) and MTGGoldfish/Card Kingdom for MTG. Sold listings are not available.", "connectors": ["tcgcsv"], "verified": true, "verifiedAt": "2026-09-07" },
  { "id": "ebay", "name": "eBay", "domain": "ebay.com", "country": "US", "supportedCountries": ["US", "CA", "GB", "DE", "FR", "IT", "ES", "AU"], "languages": ["en", "de", "fr", "it", "es"], "sourceType": "marketplace", "categories": ["pokemon", "sports_cards", "watches", "sneakers", "lego", "video_games", "marvel_comics", "coins", "funko"], "data": { "liveListings": true, "soldResults": true, "historical": "months", "seller": true, "itemId": true }, "api": { "available": true, "docsUrl": "https://developer.ebay.com/api-docs/buy/browse/overview.html", "auth": "oauth", "notes": "Browse API (client credentials) for live listings; sold/completed data only via the restricted Marketplace Insights API or partner feeds." }, "access": { "antiBot": "blocking", "preferredEngine": "api" }, "currency": ["USD", "CAD", "GBP", "EUR", "AUD"], "priority": "wave1", "difficulty": "medium", "reliability": 0.9, "status": "gated", "statusReason": "Storefront scraping is prohibited by terms and bot-protected; the official Browse API connector (ebay-browse, group g10) needs EBAY_CLIENT_ID/EBAY_CLIENT_SECRET. Sold prices already flow in indirectly through PriceCharting/SportsCardsPro eBay-derived sales.", "legal": "Use only the official API under the eBay API License Agreement; attribution required.", "verified": true, "verifiedAt": "2026-09-08" },
  { "id": "facebook-marketplace", "name": "Facebook Marketplace", "domain": "facebook.com", "country": "US", "languages": ["en"], "sourceType": "marketplace", "categories": ["vintage_toys", "lego", "video_games"], "access": { "antiBot": "blocking", "preferredEngine": "none" }, "currency": ["USD"], "status": "rejected", "statusReason": "Requires a Facebook login; Meta terms prohibit automated collection. Not lawfully accessible.", "verified": true, "verifiedAt": "2026-09-08" },
  { "id": "craigslist", "name": "Craigslist", "domain": "craigslist.org", "country": "US", "languages": ["en"], "sourceType": "marketplace", "categories": ["vintage_toys", "video_games"], "access": { "antiBot": "high", "preferredEngine": "none" }, "currency": ["USD"], "status": "rejected", "statusReason": "Terms forbid scraping; RSS feeds removed; low value for pricing (no sold data, unstructured titles).", "verified": true, "verifiedAt": "2026-09-08" },
  { "id": "kijiji", "name": "Kijiji", "domain": "kijiji.ca", "country": "CA", "languages": ["en", "fr"], "sourceType": "marketplace", "categories": ["vintage_toys", "video_games", "lego"], "access": { "antiBot": "high", "preferredEngine": "none" }, "currency": ["CAD"], "status": "rejected", "statusReason": "Anti-bot; terms forbid automated access; asking prices only, no sold data.", "verified": true, "verifiedAt": "2026-09-08" },
  { "id": "gumtree", "name": "Gumtree", "domain": "gumtree.com", "country": "GB", "languages": ["en"], "sourceType": "marketplace", "categories": ["vintage_toys", "video_games"], "access": { "antiBot": "high", "preferredEngine": "none" }, "currency": ["GBP"], "status": "rejected", "statusReason": "Anti-bot; classifieds without sold data; low pricing value.", "verified": false },
  { "id": "vinted", "name": "Vinted", "domain": "vinted.com", "country": "LT", "languages": ["en", "fr", "de"], "sourceType": "marketplace", "categories": ["fashion_streetwear", "sneakers", "pokemon"], "access": { "antiBot": "blocking", "preferredEngine": "none" }, "currency": ["EUR"], "status": "blocked", "statusReason": "DataDome on all pages; API is app-only.", "verified": false },
  { "id": "leboncoin", "name": "Leboncoin", "domain": "leboncoin.fr", "country": "FR", "languages": ["fr"], "sourceType": "marketplace", "categories": ["vintage_toys", "video_games", "lego"], "access": { "antiBot": "blocking", "preferredEngine": "none" }, "currency": ["EUR"], "status": "blocked", "statusReason": "DataDome; terms forbid scraping.", "verified": false },
  { "id": "wallapop", "name": "Wallapop", "domain": "wallapop.com", "country": "ES", "languages": ["es"], "sourceType": "marketplace", "categories": ["vintage_toys", "video_games"], "access": { "antiBot": "high", "preferredEngine": "none" }, "currency": ["EUR"], "status": "researching", "statusReason": "Public search API observed (api.wallapop.com) — terms review pending.", "verified": false },
  { "id": "popsike", "name": "Popsike", "domain": "popsike.com", "country": "US", "languages": ["en"], "sourceType": "pricing_guide", "categories": ["music"], "data": { "soldResults": true, "historical": "decades" }, "currency": ["USD"], "status": "rejected", "statusReason": "Paid subscription; terms prohibit extraction. Discogs marketplace covers vinyl.", "verified": false },
  { "id": "wine-searcher", "name": "Wine-Searcher", "domain": "wine-searcher.com", "country": "NZ", "languages": ["en"], "sourceType": "pricing_guide", "categories": ["wine", "whisky"], "api": { "available": true, "auth": "partner", "notes": "Paid API." }, "access": { "antiBot": "blocking", "preferredEngine": "none" }, "currency": ["USD"], "status": "rejected", "statusReason": "Paid API; scraping prohibited and bot-protected.", "verified": false },
  { "id": "liv-ex", "name": "Liv-ex", "domain": "liv-ex.com", "country": "GB", "languages": ["en"], "sourceType": "analytics_provider", "categories": ["wine"], "currency": ["GBP"], "status": "rejected", "statusReason": "Trade-only paid data.", "verified": false },
  { "id": "artnet", "name": "Artnet Price Database", "domain": "artnet.com", "country": "US", "languages": ["en"], "sourceType": "analytics_provider", "categories": ["art"], "currency": ["USD"], "status": "rejected", "statusReason": "Paid subscription database.", "verified": false },
  { "id": "overstreet", "name": "Overstreet Price Guide", "domain": "gemstonepub.com", "country": "US", "languages": ["en"], "sourceType": "pricing_guide", "categories": ["marvel_comics", "dc_comics"], "currency": ["USD"], "status": "rejected", "statusReason": "Copyrighted paid guide; not a data source.", "verified": false },
  { "id": "covrprice", "name": "CovrPrice", "domain": "covrprice.com", "country": "US", "languages": ["en"], "sourceType": "analytics_provider", "categories": ["marvel_comics", "dc_comics"], "currency": ["USD"], "status": "blocked", "statusReason": "Values behind paid login.", "verified": false },
  { "id": "card-ladder", "name": "Card Ladder", "domain": "cardladder.com", "country": "US", "languages": ["en"], "sourceType": "analytics_provider", "categories": ["sports_cards", "pokemon"], "currency": ["USD"], "status": "blocked", "statusReason": "Subscription product; login required.", "verified": false },
  { "id": "130point", "name": "130point", "domain": "130point.com", "country": "US", "languages": ["en"], "sourceType": "analytics_provider", "categories": ["sports_cards", "pokemon"], "data": { "soldResults": true }, "access": { "antiBot": "blocking", "preferredEngine": "none" }, "currency": ["USD"], "status": "rejected", "statusReason": "Re-publishes eBay sold data under eBay's terms; bot-protected; use eBay official API instead.", "verified": false }
]
