The whole index, as two files
Every number this site prints about prices comes from one place: 307 rows read from the catalogue at build time. This page hands that file over, so the claims can be checked instead of trusted — and so anyone building their own sheet starts from the same rows we do.
Two downloads, both stamped 2026-10-26: a JSON file with a typed header and a CSV for spreadsheets. 307 rows, 12 columns, 133 KB and 68 KB respectively. Licence CC BY 4.0. No sign-up, no email capture, no rate limit worth worrying about.
Download
Same rows, two shapes. The JSON carries the column dictionary and the method inside the file; the CSV is the bare table, UTF-8, comma separated, quoting only where it has to.
What is in the file
Twelve columns, all taken verbatim from the catalogue except for two derived fields: price_usd is rounded from the raw float, and image_url is assembled from the platform, the item id and the image index. Nothing is normalised, translated or cleaned.
| Column | What it actually is |
|---|---|
spu_no · string | Catalogue row id. Stable within a snapshot, can change between them. |
name · string | Listing title as the agent shows it, unedited. |
category · string | Shelf from the source catalogue. Two known mis-files, listed on this page. |
brand · string | Brand field, often empty. Empty is not "unbranded". |
platform · string | Source marketplace. Every row in this snapshot is WEIDIAN. |
item_id · string | Marketplace item id — the part of the Weidian URL that matters. |
price_usd · number | Agent price in USD, unrounded, as served on the snapshot date. |
price_cny · number | Same row in CNY. The ratio implies the FX rate of the day, not a fee. |
created_at · string | Listing date. No timezone, no update timestamp. |
popular · boolean | Popularity flag exactly as the catalogue serves it — a boolean, not a count. Do not sum it. |
image_url · string | Absolute URL to the agent-hosted WebP. Hotlinking is not encouraged. |
original_url · string | Source listing URL. 404s when a seller delists. |
How it was built
- The public catalogue endpoint is read once per build; no scraping loop, no paginated crawl.
- Rows are keyed by
spuNo. Duplicates collapse onto the newest read; nothing is merged by title. - Prices are written as served, in both currencies. The USD/CNY ratio in the file is therefore the day's rate, not a fee schedule.
- Image URLs are assembled deterministically from platform, item id and image index — which is why they can be rebuilt, and why hotlinking them will break without warning.
- No manual edits. The two known category mis-files stay in, and are named on this page.
What is not in the file
Five things people assume a shopping-agent dataset contains, and this one does not: weights, sizes, stock, QC photos and agent fees. That absence is the honest state of the source, not an oversight.
Weights
No weight field exists in the catalogue feed, so freight per row is an estimate no matter who prints it. The freight floor on the budget page uses a stated average, not a per-row weight.
Sizes
Also absent. A size chart built from this file would be invented arithmetic; the QC workflow explains how to measure a garment against a real chart instead.
Stock and live price
In stock when read, maybe not when you click. Sellers delist and reprice constantly; original_url 404s are normal, not a data error.
QC photos
Those exist only after a parcel reaches the warehouse, for that parcel. The image_url field is the seller's listing photo and never a QC set.
Three rows the catalogue files wrong
A $0.18 football tattoo sticker is filed under Shoes, a $0.48 bracelet under Hoodies & sweaters, and a $1.02 placeholder under Jackets. They stay in the file, unchanged, because a dataset that quietly re-sorts itself is not evidence of anything.
Practical consequence: any per-shelf median you compute here needs a row count next to it. The price index prints those counts for exactly this reason, and flags the shelves where a single row moves the median.
Licence and how to cite it
CC BY 4.0. Copy it, chart it, put it behind a paywall — just keep the attribution. The individual prices remain the sellers' and the agent's; the compilation is ours.
Kakobuy Spreadsheet 2027 — Independent Index (2026-10-26). Kakobuy row dataset, snapshot 2026-10-26, 307 rows. https://kakobuyspreadsheet2027.lat/kakobuy-dataset/
Why publish at all
Because every competing sheet asks you to trust a number it will not show you. Publishing the file turns “median row $35.27” from a claim into arithmetic anyone can redo in ten seconds — and it makes the two mis-filed rows findable by the people who would otherwise discover them and conclude the whole index was padded.
It cuts both ways: if the rows turn out to be worse than advertised, the file says so before a reader does.
Questions about the files
Can I use these rows in my own spreadsheet or site?
Yes, under CC BY 4.0 — keep the attribution line printed on this page somewhere visible. The prices belong to the sellers and the agent, not to this site; the compilation does.
Why is there no weight or size column?
Because the source does not publish them. Weights are what determine freight, and the catalogue has never carried them, so any site quoting a per-row shipping cost is estimating. This file would rather have twelve honest columns than thirteen with one invented.
How often is the snapshot replaced?
Whenever the index is rebuilt. Each file is stamped with its snapshot date (currently 2026-10-26) in the JSON header, so two downloads can be told apart without diffing every row.
The price in the file is not what I see on the agent today. Why?
Sellers move prices without notice and the agent mirrors them. Everything here is the price on the snapshot date. Use the file for structure and distribution, not as a live quote.
Are the two wrong categories going to be fixed?
No — they are kept as served. Editing them would make the file disagree with the index it is supposed to verify, and the disagreement is the interesting part.
Next
See what the rows cost before you download them.
The price index reads this same file and turns it into shelves, medians and a landed cost for six destinations.