Gumroad Scraper · BOOTH & jinxxy Digital Product Research
Pricing
from $2.80 / 1,000 product records
Gumroad Scraper · BOOTH & jinxxy Digital Product Research
Gumroad scraper for product research and market research: name a niche and get the digital Products already selling it on Gumroad, BOOTH and jinxxy, plus a summary per source with median price, demand sum and a review-based revenue floor. Empty searches are free.
Pricing
from $2.80 / 1,000 product records
Rating
0.0
(0)
Developer
TheQuietStack
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Gumroad scraper for digital product research, plus BOOTH and jinxxy: what already sells in a niche, at which price, with reviews and wish lists.
Digital product niche research in one run. Type a niche ("notion template", "lightroom presets", "vrchat avatar") and this Gumroad, BOOTH and jinxxy scraper returns the products already selling it on three creator marketplaces, each with its price and the demand number that marketplace actually publishes. On top, a niche summary per marketplace: how many products, median price per currency, demand sum, and, on Gumroad, a lower bound for lifetime revenue.
Built for creators and product builders who want to know before they build: is anybody buying this, and at what price?
Use cases
- Validate a product idea: how many products exist for "notion budget template", what they cost, how many have buyers.
- Price your product: median and range per currency for your niche, from the live listings.
- Find gaps across markets: the same keyword on Gumroad (global), BOOTH (Japan) and jinxxy (VRChat).
- Competitor tracking: schedule a keyword list and watch new products and review counts arrive.
- Affiliate and curation lists: the top products by demand signal per niche, with links.
What you get
| Marketplace | What it is | Demand signal | Notes |
|---|---|---|---|
| Gumroad | Global digital products | reviewCount (every review is a buyer) + ratingAverage | Also returns Gumroad's own tag vocabulary for the niche (sourceTags) |
| BOOTH (booth.pm) | Japan's creator market (pixiv) | wishlistCount | Prices in JPY. Also returns BOOTH's per-category counts for the keyword |
| jinxxy | VRChat avatars and assets | likeCount (a bookmark list, not sales) | Shows where the product is really sold (salesChannel: jinxxy, Payhip, Gumroad, ...) |
nullmeans "not published", never 0. BOOTH has no reviews, Gumroad has no wish lists: those fields are empty, so a sum or average never mixes a real 0 with a missing value.- Empty and failed are kept apart. A search that loaded and found nothing is empty; a search that could not be loaded is failed (with the HTTP status). Neither is charged. Both are listed in the run summary.
- Fair sample by default.
sort: newestreads the newest products first, so the summary describes the niche, not only its bestsellers.mostDemandreads the leaders instead.
Input example
{"keywords": ["notion template", "lightroom presets"],"sources": ["gumroad", "booth", "jinxxy"],"sort": "newest","maxResultsPerSource": 20,"maxResults": 200,"boothWishlists": true,"maxCostUsd": "1.00"}
Output example (one row)
{"keyword": "notion template","source": "gumroad","position": 1,"productId": "7XQWXb5l_Wr8EfUMriO_Mg==","title": "the AI Portfolio System for Designers","url": "https://6969634366200.gumroad.com/l/ai-portfolio-system","sellerName": "Ioana Adriana Teleanu","sellerUrl": "https://6969634366200.gumroad.com/","price": 30,"currency": "EUR","priceMinorUnits": 3000,"isFree": false,"isPayWhatYouWant": false,"recurrence": null,"reviewCount": 4,"ratingAverage": 5,"ratingScale": "1-5 stars","wishlistCount": null,"likeCount": null,"demandSignal": 4,"demandSignalType": "reviews","lifetimeRevenueFloor": 120,"category": "digital","tags": null,"salesChannel": null,"publishedAt": null,"sortUsed": "hot_and_new","scrapedAt": "2026-10-01T09:22:20.752Z"}
Niche summary (key-value store record SUMMARY)
One block per niche and marketplace, for example (live run 01.10.2026, "notion template", 10 per marketplace):
{"keyword": "notion template","source": "gumroad","status": "ok","totalAtSource": 229,"productsInSample": 10,"priceByCurrency": {"EUR": { "products": 2, "medianPrice": 16.995, "minPrice": 3.99, "maxPrice": 30, "freeProducts": 0 },"USD": { "products": 8, "medianPrice": 21.35, "minPrice": 3.99, "maxPrice": 79, "freeProducts": 0 }},"demandSignalType": "reviews","demandSignalSum": 21,"lifetimeRevenueFloorByCurrency": { "EUR": 123.99, "USD": 123.08 },"lifetimeRevenueFloorNote": "LOWER BOUND, not an estimate: reviews x current list price. ..."}
About lifetimeRevenueFloor: reviews × current list price. Every Gumroad review comes from a buyer, so the
real revenue is at least this much; buyers who did not review, discounts, refunds, price changes and taxes are
not in it. It is a floor, not an estimate, and it is summed per currency, never converted. It is not computed
for BOOTH (wish lists) and jinxxy (likes), because neither proves a purchase.
Other summary fields: sourceTags (Gumroad), sourceCategories (BOOTH), salesChannels and pagesAtSource
(jinxxy), topByDemandSignal, failed, empty, duplicatesSkipped, looseMatchesDropped,
boothWishlistFailures, http, billing.
How much does it cost?
Pay per event. Platform usage is included.
| Event | Charged when | Price |
|---|---|---|
product-record | one product row is written | $0.004 |
niche-report | once per keyword that returned at least one product (the niche summary) | $0.02 |
| Actor start | once per run | $0.00005 |
Examples:
- 1,000 product rows = $4.
- One niche on all three marketplaces, 20 products each (60 rows) + 1 niche report = $0.24 + $0.02 = $0.26.
- 10 niches on Gumroad only, 20 products each = 200 rows + 10 reports = $0.80 + $0.20 = $1.00.
- A keyword with no products anywhere = $0.
Empty searches, failed searches, duplicates and loose matches cost nothing. Your platform "Max cost per run" is
respected, and maxCostUsd stops the run before the first row it could not pay for, using the live prices.
Limits and honesty
- Gumroad returns 9 products per request; with
newestthe list moves while new products arrive, so a product can repeat on the next page (removed as a duplicate, not charged) or be skipped.totalAtSourceis Gumroad's own count. Gumroad does not publish a sales count or a publish date in search; those fields arenull. - BOOTH shows prices in JPY. The wish list count needs one extra request per product (paced at 1 per second);
if that request fails,
wishlistCountisnulland the product is listed inboothWishlistFailures. BOOTH's item data also contains a field calledpast_purchase_count: it is the visitor's own purchase count (always 0 without login), not a sales count, and is deliberately not used. With 0 results BOOTH shows suggestions for parts of the keyword; those are not results and are not returned. - jinxxy matches loosely (a made-up keyword returned 4 products in testing). Only products whose name contains
every word of your keyword are kept; the others are counted in
looseMatchesDropped. jinxxy ignores sort options and has no exact result count (totalAtSource: null,pagesAtSourceinstead). Reviews exist only for products sold on jinxxy itself; for products that link out,reviewCountisnull. - Not included, on purpose: Patreon (its search answers 403 to non-browser clients), DISBOARD, itch.io, Payhip marketplace, cults3d (behind bot protection), anything behind a login, prediction markets.
- Polite by design: at most one request per second per marketplace, honest User-Agent, no browser disguise, no bot-protection workarounds.
Use it via API, integrations and AI agents
curl -X POST "https://api.apify.com/v2/acts/thequietstack~marketplace-demand-data/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"keywords":["notion template"],"sources":["gumroad"],"maxResultsPerSource":20}'
Python (pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("thequietstack/marketplace-demand-data").call(run_input={"keywords": ["lightroom presets", "notion template"],"sources": ["gumroad", "booth", "jinxxy"], "maxResultsPerSource": 20,})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["source"], row["title"], row["price"], row["currency"], row["demandSignal"])summary = client.key_value_store(run["defaultKeyValueStoreId"]).get_record("SUMMARY")["value"]
- Export: JSON, CSV or Excel from the dataset; the niche summary is the
SUMMARYrecord. - Integrations: Google Sheets, Make, Zapier, n8n and webhooks via the integrations tab.
- AI agents (MCP):
https://mcp.apify.com?tools=thequietstack/marketplace-demand-data.
FAQ
Does it show Gumroad sales numbers? No. Gumroad does not publish sales counts in search. The Actor returns the review
count (every review is a buyer) and computes lifetimeRevenueFloor = reviews x current price, a lower bound, not an estimate.
Why are BOOTH prices in yen? BOOTH lists in JPY. Prices are never converted; summaries are per currency.
Is a jinxxy like a sale? No. It is a bookmark. That is why demandSignalType names the signal per row.
Why do some rows have null instead of 0? null means the marketplace does not publish that number. A real 0 is 0.
Does it need a login or proxies? No. Only public pages that every visitor sees, about one request per second per marketplace, no bot-protection workarounds.
Which sort should I use? newest (default) gives a fair sample of the niche; mostDemand shows the leaders.
Is Patreon included? No. Patreon's search answers 403 to non-browser clients, and that is not worked around.
Data sources, terms and legal
- Data comes from the public pages and endpoints that each marketplace serves to any visitor without login:
gumroad.com/products/search(the JSON behind Gumroad Discover),booth.pm/en/search/...andbooth.pm/en/items/<id>.json,jinxxy.com/market/browse. robots.txt was checked on 01.10.2026; none of these paths is disallowed (Gumroad disallows/purchases/, BOOTH/termsand carts, jinxxy/api/,/my/, carts — none of which is used). - Product data stays the property of the marketplaces and their sellers: Gumroad (Gumroad, Inc.), BOOTH (pixiv Inc.), jinxxy. Attribute them when you publish results, and respect each marketplace's terms of service for any further use. This Actor does not grant any license to product images, descriptions or files.
- Personal data: the only personal data returned is what the marketplace itself shows publicly next to a product: the seller's display name and shop/profile URL. No emails, no buyer data, no contact details. If you process this data in the EU/EEA, you are the controller under the GDPR: have a lawful basis (typically legitimate interest for market research), keep it to what you need, and do not use it for unsolicited marketing.
- This Actor is not affiliated with, endorsed by or sponsored by Gumroad, pixiv/BOOTH or jinxxy.