Marketplace Static Cache

Cloudflare Pages + D1 (free SQLite) — no R2, no payment method required

Status

Crawl Status
loading…
Total Items
cached in R2
Total Pages
Last Full Crawl
Last Incremental

Actions

Endpoints

GET/api/marketplace/page-1.jsonFirst page (24 items)
GET/api/marketplace/page-N.jsonNth page
GET/api/marketplace/item/<uuid>.jsonFull item detail
GET/api/marketplace/meta.jsonCatalog summary
GET/api/items?page=NLegacy compat (drop-in for script.js)
GET/api/items?id=<uuid>Legacy compat (item detail)
GET/marketplace/crawl?key=xxxCrawl trigger (password-protected)

Usage in script.js

// Change ONE line in your existing script.js — everything else works unchanged: const MARKETPLACE_API = '/api/items'; // Or use the static URLs directly for max performance (edge-cached): const page1 = await fetch('/api/marketplace/page-1.json'); const item = await fetch('/api/marketplace/item/UUID-HERE.json');

Crawl via curl

# One-shot incremental crawl (checks for new items, refreshes metadata): curl '/marketplace/crawl?key=YOUR_CRAWL_KEY' # Force a full re-crawl of all ~40k items (takes ~5-10 min, self-chains): curl '/marketplace/crawl?key=YOUR_CRAWL_KEY&mode=full' # Just check status (no crawl): curl '/marketplace/crawl?key=YOUR_CRAWL_KEY&status=1'