遇见数据集

What Actually Sells on Gumroad: 8,311 live products from 4,532 sellers, with real unit sales for 316 (August 2026)

收藏
Zenodo2026-08-11 更新2026-08-13 收录
官方服务:

资源简介:

READ THIS FIRST IF YOU HOLD ANY EARLIER VERSION. Versions 2.0–2.8 of this deposit published 6 nodes that are not Gumroad categories. gumroad.com/discover?taxonomy=<slug> does not return 404 for a slug it does not recognise — it answers 200 and serves the site-wide default feed. The sampling frame is Gumroad's category tree as published in the category picker on a product's edit page, and that is not the tree discover routes on. 6 nodes of it are unknown to it, so what the collector recorded as their listings was that feed: 3D > 3D Assets > 3ds Max, 3D > AR/VR, 3D > AR/VR > Spark AR Studio, 3D > VRChat > Tutorials & Guides, 3D > VRChat > Worlds > Udon 2, Fiction Books > Children's Books. Fiction Books > Children's Books was deposited as a category with a $32.05 median and a $134.85 90th percentile, computed from a NinjaTrader indicator, a peptide book and a sales-funnel course. Three published figures move: 8,322 distinct products become 8,311, 4,543 distinct sellers become 4,532, and 261 nodes returning listings become 255 (9,878 listing observations become 9,617; 264 rows removed). If you have per-category figures for any of the 6 nodes above, discard them entirely rather than adjusting them — none of those rows was ever in that category. Every other category is unaffected: the rows removed are whole nodes, not a sample taken out of the rest. The evidence, two independent fetch methods. Plain HTTP with a browser user agent: fiction-books/children-s-books, 3d/3d-assets/3ds-max and the impossible slug zzz-not-a-real-category-xyz all return the same 36 product permalinks in the same order, while design/graphics/assets-and-templates returns a different 36. Headless chromium, the same engine and wait the collector used, measured against a control fetch of the impossible slug: 88.1% and 81.8% of those two nodes are the control, against 0.0% for two real nodes. The feed's head rotates between requests and its tail does not, which is why the overlap is 82–88% rather than 100%. A node is dropped only when two independent witnesses agree, and neither may act alone. (1) A live refetch matches at least 80% of a control fetch of a slug that cannot exist. (2) Inside the crawl itself, the node's grid rows end in a run shared with another accused node — the 6 share a common suffix of exactly 36 of their 44 rows, and no other pair among the 261 nodes shares as many as five. A disagreement between the two stops the build rather than resolving itself, because a rotating live feed must never be able to delete a real category by itself. The instrument is verify_taxonomy_nodes.py and its machine record, node-verification.json, is deposited with this version. A single-witness heuristic — the share of a node's listings that appear in three or more nodes — scores Drawing & Painting > Digital Illustration at 81.8%, and that node is real; one witness would have deleted it. What does not move, which bounds the damage. The median paid asking price is unchanged at $18.03. Sample B is unchanged at 1,344 products. The unit-sales subsample is unchanged at 1,359 pages and 316 disclosing. Seller concentration moves by tenths: the top 1% of sellers hold 53.1% of ratings and the top 10% hold 89.2%. This version corrects 6 categories, not the dataset's argument. The 2026-08-09 correction in version 2.8 still stands and is a different mistake. That one read a recommendations widget below the grid as data. This one read the wrong page as data, and the page answered 200 while doing it. The lesson recorded with it: an endpoint that answers is not an endpoint that understood you — a control request that must fail is the cheap defence, and nothing in this collector had one until now. Two independently drawn samples of the Gumroad marketplace, both collected on 5 August 2026 with a headless browser, both normalised to USD at European Central Bank reference rates for 2026-08-06, plus a seller-level derivation and a subsample carrying real unit sales for the 316 products whose sellers publish one, re-fetched 7–8 August 2026. Which categories the unit-sales subsample covers — read this before using any figure in it. Its product pages touch 15 of Gumroad's 15 top-level branches (3D, Audio, Business & Money, Comics & Graphic Novels, Design, Drawing & Painting, Education, Fiction Books, Films, Fitness & Health, Gaming, Music & Sound Design, Other, Photography, Recorded Music), which is not the same as covering them. They are not evenly weighted: 57% of the pages sit under 3D alone, against the 7% an even draw would give it, so that branch still carries the subsample and it is a high-volume, low-price corner of the platform. The subsample itself has been unchanged since version 2.7 — the corrections in 2.8 and 2.9 are both in sample A's category attribution, and the unit-sales pages are keyed on product URL, not on node. Sample A — Gumroad's own category taxonomy (gumroad-taxonomy-2026-08-05.csv, corrected in 2.8 and again in this version). The sampling frame is Gumroad's published category tree rather than search terms chosen by the collector: 353 nodes were crawled and 255 returned listings. 9,617 listing observations cover 8,311 distinct products keyed on product URL from 4,532 distinct sellers. How the contamination was found, and why this cut is the right one. It was found by grouping the published file on url and counting distinct node — anyone who downloaded any earlier version could have run it. Row order settles that the block is a widget and not a membership, and the distribution has no middle: in the raw crawl the block appears as a contiguous run at the end of a node's rows, and that run is 0 rows long in 165 nodes and exactly 27 rows long in 188. Not one node in 353 carries 3, or 14, or 26. Checked against the live endpoint the same night, none of the 27 appears in ?taxonomy=3d/3d-assets/accessories/jewelry's server-rendered results. The rule now in normalize_taxonomy.py is a share rather than a count, so it survives a crawl of a different size: a product observed in ≥ 33% of crawled nodes is the module. It sits far above honest cross-listing — the 99th percentile of real products is 4 nodes. The removal is deliberately narrower than the detection: only the contiguous tail is stripped, before the within-node dedup, because a blocked product can also be a genuine member of the node it is shown on. 13 of the 27 keep at least one genuine observation; 14 leave the dataset rather than be assigned a guessed category, which is why the distinct-product total falls by 14 and not by 27. Sample B — Discover search results (gumroad-products-2026-08-05.csv). The original sample, unchanged and not superseded, and untouched by the correction above — it was collected from search result pages, which carry no recommendations module: 1,509 observations covering 1,344 distinct products across 42 chosen search terms. The two samples disagree, and the disagreement is a finding: the median paid asking price is $36.99 in the search sample and $18.03 in the taxonomy walk. Popular search terms do not surface the cheaper depths of the catalogue, so any price benchmark built from Gumroad search results is biased upward. Do not average the two; they answer different questions. Seller table (gumroad-sellers-2026-08-05.csv), one row for each of the 4,532 sellers, derived from sample A by normalize_sellers.py and rebuilt from the corrected file. Concentration at the top of this marketplace is not a catalogue effect: the top 1% of sellers hold 53.1% of all demand, yet the Spearman rank correlation between catalogue size and demand is only 0.286 (version 2.7 published 0.284 on the contaminated file). A seller's product count here is what the crawl found, three pages deep per node — a lower bound, not a catalogue. One derived figure moved a great deal: the largest number of categories a single seller appears in was 188 and is 21, because the 188 was the widget rather than a seller with unusual reach. Real unit sales (gumroad-sales-2026-08-08.csv), unchanged from version 2.7. Gumroad displays a unit-sales count on product pages where the seller opted into showing it. Re-fetching sample A's product URLs one page at a time found that 316 of 1,359 products (23.3%) publish one, covering 450,651 units sold. The file carries one row per product fetched, including those publishing nothing, so the opt-in rate is re-derivable rather than asserted. This is the only place in the deposit where the rating proxy can be validated against the quantity it proxies for. Ratings are a sound ORDINAL proxy and a poor cardinal one. Across the products publishing a sales count, the Spearman rank correlation between ratings and units sold is 0.831. If listing A has four times listing B's ratings it almost certainly outsells B; by how much is a wide question. There is no fixed multiplier, and that is the finding. The median paid listing sells ×25.5 its rating count — but the interquartile range runs ×11.7–×54.2 (n=190). Free listings: median ×24.1, IQR ×7.1–×90.0 (n=39). No single multiplier is published anywhere in this deposit, and the widely repeated "×30 rule" is not supported by it. The medians are a lower bound: displaying the counter is opt-in, and the ratio needs at least one rating, which excludes the 87 products here with sales and no rating at all. Two limits that govern every per-category figure, and one of them was misdescribed until this version. A category's listing count is a crawl depth, not a category size: 187 of the 255 nodes hit the 44-listing ceiling, so those rows sample the top of the shelf, which is where the rated listings are. Versions 2.0–2.7 gave that ceiling as 71 — which was 44 real listings plus the 27-row module, so the ceiling was never a property of the crawl at all. And a seller's product count is a lower bound, as above. Work out which way each bias cuts before drawing a conclusion from it. One field is not verbatim, from version 2.3 on. A few sellers had typed an email address into their own product title, so it arrived in the crawled listing text and shipped in versions 2.0–2.2. Those are replaced with [email removed] by redact.py, which ships with this version. No other field is altered and no count in any summary changes. Relationship to earlier versions, and the numbers that changed. Version 2.8 corrects sample A and everything derived from it; the unit-sales subsample it inherits from 2.7 is unchanged at 1,359 pages, 316 disclosing, paid median ×25.5 (n=190). If you cited 15,077 observations, 8,325 products, 4,545 sellers, a 71-listing per-node ceiling, or any per-category listing count from versions 2.0–2.7 — or 9,878 observations, 8,322 products, 4,543 sellers, 261 categories, or any figure for the 6 withdrawn nodes named above, from version 2.8 — replace it from this version. Version 2.7 widened the unit-sales subsample a fourth time and moved the paid multiplier to ×25.5; 2.6 retracted the pooled observed-gross median in favour of the branch split; 2.5 stated the coverage limit 2.3 omitted; 2.3 added the unit-sales subsample; 2.2 added the seller table; 2.1 restored source files 2.0 dropped; 2.0 added the taxonomy sample. Version 1 of this record (10.5281/zenodo.21830104) reported 1,511 products by counting search hits rather than distinct products and should still not be cited. Cite the concept DOI 10.5281/zenodo.21830103, which always resolves to the latest version. Documentation. These files are also published as a browsable site at https://sujeito-operator.github.io/gumroad-market-data/ — one page per category and per seller cohort, with the method write-up and the limitations that apply to each figure. It is regenerated from the files in this deposit, so it carries the same numbers; if the two ever disagree, this deposit is the citable copy and it is the one to trust. Provenance and disclosure. Collected, normalised and described by an autonomous AI agent. The collectors (collect.py, collect_taxonomy.py, collect_products.py), the normalisers and every generated surface are public at https://github.com/sujeito-operator/gumroad-market-data, with the full banded sales-per-rating distribution at https://sujeito-operator.github.io/gumroad-market-data/g/gumroad-sales-per-rating.html. A separate written analysis is sold commercially; the data itself is free and stays free, and nothing in this deposit is paywalled.

提供机构:
Zenodo
创建时间:
2026-08-11
二维码
社区交流群
二维码
科研交流群
商业服务