SPB Git forge

spb/rareindex

Public
54commits 1branches 0releases
7.1 MBsize
maindefault branch
10 days agolast push
TypeScript 61.9% HTML 37.2% SQL 0.7%
6.4 KB · 148 lines json
Raw Blame History
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