Gumroad Product & Creator Scraper
Pricing
from $2.50 / 1,000 results
Gumroad Product & Creator Scraper
Extract structured Gumroad product and creator data via Discover search, storefront URL, or direct product link. Get pricing, ratings, seller details, categories, and tags in clean typed rows for reseller research, pricing intel, and affiliate offer-hunting.
Pricing
from $2.50 / 1,000 results
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
🎯 What this scrapes
Gumroad renders every page — Discover search results, creator storefronts, and individual product pages — through an Inertia.js single-page app: the entire dataset for that page is embedded as one HTML-entity-encoded JSON blob inside a data-page attribute, and each of the three page types exposes a different subset of fields under a different shape. This Actor normalizes all three into one consistent row schema.
Point it at a Discover query with filters (category, tags, filetype, price, rating, sort), a creator's storefront URL, a list of direct product URLs, or any combination of the three — it de-duplicates overlapping products found across modes and stops the instant your result cap is hit.
🔥 Features
- 🛡️ Browser fingerprint rotation —
curl-cffiimpersonates real Chrome / Firefox / Safari TLS handshakes on every run. - 🔁 Retries with exponential backoff on
429/5xxresponses — up to 5 attempts,Retry-Afterhonoured. - 🧩 Three input modes, one schema — Discover search, creator storefront, and direct product URL all normalize to the same
ResultRowshape, with cross-mode de-duplication on product ID. - 🧊 Clean, typed dataset rows — Pydantic-validated fields, ISO-8601 timestamps, stable IDs. Export as JSON, CSV, or Excel directly from Apify Console.
- 💰 Pay-Per-Event pricing — you pay only for results that land. No data, no charge beyond the small start fee.
💡 Use cases
- Reseller / dropship research — scan Discover by category, tag, or price band to find products worth reselling or bundling.
- Indie-hacker market research — pull a competitor category's full price and rating spread before shipping a similar product.
- Affiliate offer-hunting — filter Discover by rating and sales signal to shortlist products worth promoting.
- Pricing intelligence — snapshot a creator's or category's price points on a recurring schedule to track how they move.
- Creator monitoring — point Creator URLs at a storefront to track new listings and price changes over time.
⚙️ How to use it
- Click Try for free at the top of the Store listing.
- Fill in at least one input mode — a Search query, Category, Tags, Filetypes, Creator URLs, or Product URLs — or combine several.
- Optionally narrow Discover results with Min/max price, Min rating, and Sort order.
- Click Start. Results stream into the run's dataset as they're found.
- Export from Storage → Dataset as JSON, CSV, or Excel — or pull via the Apify API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
searchQuery | string | no | — | Discover free-text query. |
category | string | no | — | Discover taxonomy slug. |
tags | array | no | [] | Discover tag slugs. |
filetypes | array | no | [] | Discover file extensions, e.g. pdf. |
minPrice / maxPrice | number | no | — | Whole-currency-unit price bounds (Discover only). |
minRating | number | no | — | Minimum average rating, 1-5 (Discover only). |
sortBy | string | no | — | One of hot_and_new, newest, price_asc, price_desc, highest_rated, best_selling, page_layout_search. |
creatorUrls | array | no | [] | Creator storefront usernames or URLs. |
productUrls | array | no | [] | Direct product URLs. |
maxResults | integer | no | 100 | Cap on total de-duplicated rows emitted. |
proxyConfiguration | object | no | {"useApifyProxy": false} | Apify Proxy configuration. |
At least one of searchQuery / category / tags / filetypes / creatorUrls / productUrls must be set.
Example input
{"searchQuery": "notion template","maxResults": 3,"proxyConfiguration": {"useApifyProxy": false}}
📤 Output
One dataset item per unique Gumroad product.
| Field | Type | Notes |
|---|---|---|
product_id | string | Gumroad product identifier. |
permalink | string | Product permalink slug. |
name | string | Product title. |
url | string | Canonical product URL. |
seller_name | string | Seller display name. |
seller_profile_url | string | Seller storefront URL. |
seller_username | string | null | Seller subdomain username. |
seller_is_verified | boolean | Whether Gumroad marks the seller verified. |
thumbnail_url | string | null | Product thumbnail image URL. |
native_type | string | Gumroad's internal product type slug. |
price_cents | integer | Price in minor currency units (cents). |
currency_code | string | ISO currency code, e.g. usd. |
is_pay_what_you_want | boolean | Whether pay-what-you-want pricing is allowed. |
is_subscription | boolean | True when the product has a non-null recurrence. |
recurrence | string | null | Billing recurrence slug if a subscription. |
duration_in_months | integer | null | Subscription duration in months, if set. |
rating_average | number | null | Average product rating. |
rating_count | integer | null | Number of ratings. |
sales_count | integer | null | Seller-controlled sales count; product-URL mode only, often null. |
category | string | null | Echo of the run's category input for Discover rows; null otherwise. |
tags | array | Echo of the run's tags input for Discover rows; empty otherwise. |
description | string | null | Stripped product description; product-URL mode only. |
source_mode | string | discover, creator, or product_url. |
scraped_at | string | UTC ISO-8601 fetch timestamp. |
Example output
{"product_id": "ir1eqsEjUjZiCnrtMQiL7g==","permalink": "txjewq","name": "Italy Arrival Blueprint: Your First 90 Days in Italy","url": "https://michelwilfried.gumroad.com/l/txjewq","seller_name": "MICHEL WILFRIED","seller_profile_url": "https://michelwilfried.gumroad.com/","seller_username": "michelwilfried","seller_is_verified": false,"thumbnail_url": "https://public-files.gumroad.com/627orhogh8f08xjlw36t5yrfym47","native_type": "digital","price_cents": 2700,"currency_code": "usd","is_pay_what_you_want": false,"is_subscription": false,"recurrence": null,"duration_in_months": null,"rating_average": 4.8,"rating_count": 52,"sales_count": null,"category": null,"tags": [],"description": "Most Expats Waste Months Figuring Out Italian Bureaucracy...","source_mode": "product_url","scraped_at": "2026-07-20T21:45:00Z"}
💰 Pricing
Pay-Per-Event — you are charged only when these events fire:
| Event | USD | What it covers |
|---|---|---|
actor-start | $0.02 | One-off warm-up charge per run |
product-result | $0.0025 | Per unique, de-duplicated product row written to the dataset |
Example: 1 000 results at the rates above ≈ $2.52. No subscription, no minimum commitment, no card required to start — Apify gives every new account $5 of free credit.
🚧 Limitations
- No purchase/download/license flows — we never touch
/purchases/or any authenticated Gumroad endpoint. - Creator mode is a storefront snapshot — Gumroad's profile page shows a curated product list, not a verified-exhaustive catalog. Combine with Product URLs for guaranteed coverage of specific listings.
- No seller contact or review-text scraping — existing single-purpose Actors already cover that ground.
- Point-in-time snapshot — this Actor does not track historical price or sales changes across runs.
❓ FAQ
Is this legal?
Yes — we only fetch public, unauthenticated Discover, storefront, and product pages. Gumroad's own robots.txt disallows only /purchases/, and we never touch purchase, download, or license flows.
Does Creator mode return a seller's entire catalog?
It returns the storefront snapshot Gumroad renders on the profile page — a curated, not guaranteed-exhaustive, product list. For an exact catalog, combine it with known Product URLs.
Why are category and tags null on some rows?
Those two fields echo your run's own Discover filters, not something scraped per product — Gumroad's product payload doesn't carry them. Creator- and product-URL-mode rows always get category: null, tags: [].
Can I get sales counts?
Only in product-URL mode, and even then the seller controls whether it's shown — expect null fairly often.
Do I need a Gumroad account or API key?
No — every field comes from Gumroad's own public pages.
💬 Your feedback
Spotted a bug, hit a rate-limit edge case, or need an extra field? Open an issue on the Actor's Issues tab in Apify Console — we ship fixes weekly and we read every report.