Gumroad Product & Creator Scraper avatar

Gumroad Product & Creator Scraper

Pricing

from $2.50 / 1,000 results

Go to Apify Store
Gumroad Product & Creator Scraper

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

DevilScrapes

Maintained by Community

Actor 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 rotationcurl-cffi impersonates real Chrome / Firefox / Safari TLS handshakes on every run.
  • 🔁 Retries with exponential backoff on 429 / 5xx responses — up to 5 attempts, Retry-After honoured.
  • 🧩 Three input modes, one schema — Discover search, creator storefront, and direct product URL all normalize to the same ResultRow shape, 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

  1. Click Try for free at the top of the Store listing.
  2. Fill in at least one input mode — a Search query, Category, Tags, Filetypes, Creator URLs, or Product URLs — or combine several.
  3. Optionally narrow Discover results with Min/max price, Min rating, and Sort order.
  4. Click Start. Results stream into the run's dataset as they're found.
  5. Export from Storage → Dataset as JSON, CSV, or Excel — or pull via the Apify API.

📥 Input

FieldTypeRequiredDefaultNotes
searchQuerystringnoDiscover free-text query.
categorystringnoDiscover taxonomy slug.
tagsarrayno[]Discover tag slugs.
filetypesarrayno[]Discover file extensions, e.g. pdf.
minPrice / maxPricenumbernoWhole-currency-unit price bounds (Discover only).
minRatingnumbernoMinimum average rating, 1-5 (Discover only).
sortBystringnoOne of hot_and_new, newest, price_asc, price_desc, highest_rated, best_selling, page_layout_search.
creatorUrlsarrayno[]Creator storefront usernames or URLs.
productUrlsarrayno[]Direct product URLs.
maxResultsintegerno100Cap on total de-duplicated rows emitted.
proxyConfigurationobjectno{"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.

FieldTypeNotes
product_idstringGumroad product identifier.
permalinkstringProduct permalink slug.
namestringProduct title.
urlstringCanonical product URL.
seller_namestringSeller display name.
seller_profile_urlstringSeller storefront URL.
seller_usernamestring | nullSeller subdomain username.
seller_is_verifiedbooleanWhether Gumroad marks the seller verified.
thumbnail_urlstring | nullProduct thumbnail image URL.
native_typestringGumroad's internal product type slug.
price_centsintegerPrice in minor currency units (cents).
currency_codestringISO currency code, e.g. usd.
is_pay_what_you_wantbooleanWhether pay-what-you-want pricing is allowed.
is_subscriptionbooleanTrue when the product has a non-null recurrence.
recurrencestring | nullBilling recurrence slug if a subscription.
duration_in_monthsinteger | nullSubscription duration in months, if set.
rating_averagenumber | nullAverage product rating.
rating_countinteger | nullNumber of ratings.
sales_countinteger | nullSeller-controlled sales count; product-URL mode only, often null.
categorystring | nullEcho of the run's category input for Discover rows; null otherwise.
tagsarrayEcho of the run's tags input for Discover rows; empty otherwise.
descriptionstring | nullStripped product description; product-URL mode only.
source_modestringdiscover, creator, or product_url.
scraped_atstringUTC 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:

EventUSDWhat it covers
actor-start$0.02One-off warm-up charge per run
product-result$0.0025Per 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.