TypeScript 61.9%
HTML 37.2%
SQL 0.7%
1{2 "id": "rotofugi",3 "displayName": "Rotofugi (US collector-toy store, USD)",4 "sourceId": "rotofugi",5 "sourceName": "Rotofugi",6 "sourceType": "dealer",7 "sourceUrl": "https://www.rotofugi.com",8 "module": "api/rotofugi",9 "enginePriority": [10 "api"11 ],12 "categories": [13 "designer_toys",14 "action_figures",15 "plush"16 ],17 "regions": [18 "US"19 ],20 "languages": [21 "en"22 ],23 "currency": [24 "USD"25 ],26 "supportsListings": true,27 "supportsSold": false,28 "supportsAuctions": false,29 "supportsImages": true,30 "supportsCatalog": false,31 "supportsPopulation": false,32 "supportsLookup": true,33 "refreshFrequencyMinutes": 1440,34 "priority": "low",35 "trustScore": 0.75,36 "attributionRequired": true,37 "termsUrl": "https://www.rotofugi.com/policies/terms-of-service",38 "accessNotes": "Rotofugi (rotofugi.com) runs on Shopify. The connector reads ONLY the public, unauthenticated storefront JSON that every Shopify shop serves to any visitor: /collections/<handle>/products.json?limit=250&page=N for the 17 configured collections (vinyl-plastic-toys, blind-box-random-toys, kaiju-for-grown-ups, diy-toys, kidrobot, pop-mart, medicom, mighty-jaxx … (+9 more, see config.collections)) and /products/<handle>.json for URL lookups (~700 live designer toys (Kidrobot, Pop Mart, Medicom, tokidoki, kaiju/sofubi), 100 Super7 ReAction). robots.txt (verified 2026-09-08, User-agent *): standard Shopify rules — Disallow /admin, /cart, /checkout(s), /orders, /account, /services, /sf_*, /cart.js, /recommendations/products, /cdn/wpm/*.js and the filter/sort crawl traps (/collections/*sort_by*, /collections/*+*, /collections/*filter*&*filter*); no Crawl-delay for *. The /collections/<handle>/products.json and /products/<handle>.json paths we read carry none of those patterns and are allowed. Sitemap declared at /sitemap.xml (not needed). Access behaviour: plain HTTP 200 JSON with the honest RareIndexBot UA, no anti-bot challenge, no login, no key. Market pinning: Shopify Markets localises products.json prices by the requester IP as soon as an Accept-Language header is present (observed on Markets-enabled shops: a Canadian crawler receives CAD-converted prices with content-language en-CA while the JSON carries no currency field). Every request therefore sends the public localization=US cookie — the shop's own home market, exactly what a US visitor gets — so prices are always the declared USD (verified 2026-09-08: 30.00 vs 43.00 on a Markets shop). Politeness: 1 request per 1.5 s, concurrency 1 per host (connectors/domains.d/g3-shops-na.json), crawlDepth pages per collection per incremental run, backfill bounded by backfillMaxPages. Data: asking prices in USD (the shop's declared currency) — these are LISTINGS, never sales (§111); one listing per variant (condition/size/edition), variant SKU kept as identifier, out-of-stock variants kept as 'ended' listings, 0.00-priced placeholders dropped. Dates: published_at only; no fetch time is ever used as a sale date. Deliberately NOT fetched: cart/checkout/account/customer endpoints, per-product .js barcode enrichment (fetchBarcodes=false: one extra request per product is not worth it for listings), the whole-shop /products.json, and unmapped collections — wearables, prints/posters/art objects, pins, bags, the \"archived\"/\"private\"/\"all\" umbrella collections. No personal data is collected; seller = the store itself.",39 "enabled": true,40 "schemaVersion": "1.0",41 "acquisitionMethod": "Shopify storefront products.json",42 "historicalDepth": "none",43 "requires": [],44 "config": {45 "currency": "USD",46 "market": "US",47 "seller": "Rotofugi",48 "location": "Chicago, IL, USA",49 "collections": [50 {51 "handle": "vinyl-plastic-toys",52 "categorySlug": "designer_toys"53 },54 {55 "handle": "blind-box-random-toys",56 "categorySlug": "designer_toys"57 },58 {59 "handle": "kaiju-for-grown-ups",60 "categorySlug": "designer_toys"61 },62 {63 "handle": "diy-toys",64 "categorySlug": "designer_toys"65 },66 {67 "handle": "kidrobot",68 "categorySlug": "designer_toys",69 "brand": "Kidrobot"70 },71 {72 "handle": "pop-mart",73 "categorySlug": "designer_toys",74 "brand": "Pop Mart"75 },76 {77 "handle": "medicom",78 "categorySlug": "designer_toys",79 "brand": "Medicom Toy"80 },81 {82 "handle": "mighty-jaxx",83 "categorySlug": "designer_toys",84 "brand": "Mighty Jaxx"85 },86 {87 "handle": "coarse",88 "categorySlug": "designer_toys",89 "brand": "coarse"90 },91 {92 "handle": "tokidoki",93 "categorySlug": "designer_toys",94 "brand": "tokidoki"95 },96 {97 "handle": "konatsuya",98 "categorySlug": "designer_toys",99 "brand": "Konatsuya"100 },101 {102 "handle": "how2work",103 "categorySlug": "designer_toys",104 "brand": "How2Work"105 },106 {107 "handle": "gargamel",108 "categorySlug": "designer_toys",109 "brand": "Gargamel"110 },111 {112 "handle": "uvd-toys",113 "categorySlug": "designer_toys",114 "brand": "UVD Toys"115 },116 {117 "handle": "squadt",118 "categorySlug": "designer_toys",119 "brand": "Ferg",120 "series": "Squadt"121 },122 {123 "handle": "super-7",124 "categorySlug": "action_figures",125 "brand": "Super7",126 "series": "ReAction"127 },128 {129 "handle": "gund",130 "categorySlug": "plush",131 "brand": "GUND"132 }133 ],134 "rules": [135 {136 "match": "\\| Plush[^|]* \\||\\bplush\\b",137 "categorySlug": "plush"138 }139 ],140 "defaultCategory": null,141 "exclude": "gift card|mystery|\\| (Apparel|T-Shirts?|Hats?|Accessories|Pins?|Enamel Pins?|Patches?|Socks|Hoodies?|Bags?|Stationery|Stickers?|Prints?|Posters?|Merch|Keychains?|Lanyards?|Pins? Lanyard Set|Books?|Toy Displays?|Home Goods|Drinkware) \\||t-shirt|\\btee\\b|hoodie|sweatshirt|\\bhat\\b|\\bcap\\b|beanie|\\bsocks?\\b|enamel pin|\\bpins? set\\b|\\bpatch\\b|sticker|\\bkeychain\\b|lanyard|\\bmug\\b|\\btote\\b|tumbler|display case|acrylic case|pop protector only|art print|\\bposter\\b|\\bzine\\b|\\bbook\\b|\\bgame\\b|puzzle|blanket|towel|\\bwallet\\b|backpack|\\bshirt\\b",142 "keepOutOfStock": true,143 "fetchBarcodes": false,144 "wholeShop": false,145 "pageSize": 250146 }147}148