Priority order for scraper implementation. Endpoints below were probed live on 2026-07-17.
https://mediaocd.com/wp-json/wc/store/v1/products (WooCommerce Store API, no key)"7995" = $79.95). sku is an internal code (e.g. ES459), not a UPC. brands[].name = distributor (e.g. Discotek). categories include Anime / Blu-ray / Pre-Orders. Release timing sometimes only in short_description prose (“Expected in mid-August”) — parse defensively.lnrelease/source/mediaocd.py (pass 1). ~299 anime rows.https://www.sentaifilmworks.com/products.json (Shopify, keyless, paginated)shopsentai.com — that domain is dead/empty. The kickoff plan’s URL is stale.handle is prefixed with the UPC (e.g. 816726029245-my-mental-choices-…). vendor: Sentai, product_type: Video, variant option1 = format (Blu-ray/DVD), tags carry SteelBook / Limited Edition / sub/dub. sku = Sentai catalog number (SFB-MMC110).lnrelease/source/sentai.py (pass 2). ~382 rows, ~95% with UPC. The street date is not in products.json; it is scraped from each product page (<span class="releasedate">) into a sentai.csv skip-cache within a per-run SENTAI_DATE_SECONDS budget, pre-orders first. The MediaOCD/Sentai overlap (~38 titles) merges correctly, keeping the Sentai UPC.https://alltheanime.com/products.json (Shopify, keyless)vendor includes both Anime Limited and Crunchyroll (UK CR releases!). sku = UK catalog number (ANI1207, UKCR0347). Prices GBP; Region B; release date/BBFC/discs only inside body_html prose — needs HTML parsing. No barcode/UPC in public Shopify JSON.lnrelease/source/alltheanime.py (pass 2). ~1569 rows, ~93% dated from body_html (Release Date: dd/mm/yyyy, UK day-first), region defaults to B, product_type gives format/edition. Vendor Crunchyroll yields ~150 UK CR editions. Kept as a distinct Region-B/UK market — never merges with an NA release of the same title.https://sugoi.shop/products.json (Shopify, keyless) — verified live 2026-07-17.product_type is "DVD" even for Blu-ray collector’s editions — derive format from collection membership (/collections/blu-ray/, /collections/dvd/, /collections/blu-ray-4k/, /collections/pre-order-dvd-blu-ray/) or title, not product_type. vendor = “Sugoi Shop” (not distributor). sku internal (SV…), no UPC. No street date in feed — pre-order collection + page check needed.shop.madman.com.au (Shopify, feed works) is films-only — zero anime/manga collections, confirmed via collections.json.crunchyroll.com.au): probe returned empty (custom/legacy platform, not Shopify). Same ownership as the paywalling US store — treat with the same caution. Candidate only.region_market heuristic (B→UK) breaks the moment Sugoi lands — fix it as part of that pass.Do not build crunchyroll.py adaptation now. Announced 2026-07-14:
crunchyroll.py rides the SFCC/Mobify SLAS guest-token endpoint (/mobify/slas/private/shopper/auth/...); the “brand-new shopping experience” will likely break it.Coverage gap this creates: Crunchyroll’s own NA disc releases — the largest NA distributor. Mitigations, in order:
| Source | Status | Notes |
|---|---|---|
| Shout! Factory / Shout Studios | products.json probe returned empty | Would cover GKIDS/Ghibli + Shout anime. Verify via browser (may be bot-walled or non-Shopify). |
| GKIDS (shop.gkids.com) | probe returned empty | Same — distribution runs through Shout anyway. |
| animecornerstore.com | not probed | Claims to stock every NA anime disc; legacy custom site, likely painful. Could plug the CR-NA gap. |
| Bull Moose / DeepDiscount / Zavvi US / Poggers | not probed | General retailers; evaluate only if the CR-NA gap stays open post-August. |
ES459, SFB-MMC110, ANI1207, UKCR0347).short_description / body_html) → shared date-extraction helper.parse.merge_editions unions rows sharing a UPC, a normalized catalog code, or (normalized title, format, region-market, edition), then keeps one row per cluster — preferring a real date and a real UPC and enriching those fields in place. A MediaOCD row (no UPC) thus inherits the Sentai UPC of the same disc, and a UK/Region-B edition never merges with its NA counterpart. region_market buckets B/2/PAL → UK, region-free (A/B, Free) → its own bucket, everything else → NA. Book/Release identity includes region + edition so distinct editions don’t collide in the CSV set before the merge runs.
After pass 2, ~68% of rows carry a real date (up from ~12% MediaOCD-only): AllTheAnime body_html dates ~93% of its rows, Sentai product-page dates fill in over runs, and the merge propagates a store’s date onto its no-date twin.
MediaOCD back-catalogue has no recoverable street date. Probed the product permalink pages (2026-07-17): no JSON-LD releaseDate/availabilityStarts, no “Release Date”/”Street Date” text, no prose date — the “Expected in …” line exists only on pre-orders (already parsed from short_description). So no MediaOCD page-enrichment step was added; those ~260 back-catalogue rows keep the 0001-01-01 sentinel.
Historical dates need an external source. Candidate: the ANN (Anime News Network) Encyclopedia XML API (cdn.animenewsnetwork.com/encyclopedia/api.xml), which lists home-video release dates per title — a future pass could match by normalized title/UPC and backfill sentinels. Left as sentinels for now.