DEV Community

Hay Equipos
Hay Equipos

Posted on

How to export Gumroad products, prices and ratings to a spreadsheet

Before you launch a Notion template, a preset pack or an ebook on Gumroad, you want to know what already sells in that niche and at what price. The Discover page shows you products one card at a time, which is fine for browsing and slow for research. What you actually want is a spreadsheet: product, price, rating, number of ratings, creator.

This guide shows how to build that spreadsheet with a small Apify Actor published by Hay Equipos called Gumroad Scraper: Products, Prices, Ratings by Keyword or Tag. It reads the same public search results the Discover page loads. No login and no browser.

What the tool returns

You search by keyword, tag or category. For each product you get one row with:

  • product name, ID, permalink and link
  • price and currency (in the product's own currency), a free flag and a pay what you want flag
  • recurrence for memberships and subscriptions (monthly, quarterly, yearly)
  • product type
  • average rating and number of ratings
  • the creator's storefront name, link and verified flag
  • a thumbnail link and a short description snippet
  • the search that found it, its position, and how many matches Gumroad reports in total

A row looks like this (values are illustrative):

{
  "productId": "AbC123xYz==",
  "permalink": "plannerkit",
  "name": "Example Notion Planner Kit",
  "url": "https://examplecreator.gumroad.com/l/plannerkit",
  "price": 12,
  "currency": "USD",
  "isFree": false,
  "isPayWhatYouWant": false,
  "recurrence": null,
  "productType": "digital",
  "rating": 4.8,
  "ratingCount": 312,
  "sellerName": "Example Creator",
  "sellerProfileUrl": "https://examplecreator.gumroad.com/",
  "searchQuery": "notion template",
  "sort": "most_reviewed",
  "position": 7,
  "totalMatches": 18200
}
Enter fullscreen mode Exit fullscreen mode

For pay what you want products, price is the minimum price. A RUN_SUMMARY record in the run's key value store lists each search with its match count and any problem.

What people use it for

  • Product research before a launch: see what already exists for Notion templates, Lightroom presets, Procreate brushes, icon packs, courses or ebooks, and how many ratings the top products have.
  • Pricing benchmarks: compare price points, free products and pay what you want use across a niche before you set your own price.
  • Trend spotting: the newest and hot and new sorts show what creators are shipping this week.
  • Partner discovery: find the storefronts behind the most reviewed products in a category.

Step by step in the Apify Console

  1. Open the Actor from its Apify Store page and sign in to Apify Console.
  2. In the Input tab, add Search keywords such as notion template or icon pack, and/or Tags such as procreate brushes.
  3. Optionally add Categories such as design, education or software-development. If you combine categories with keywords or tags, each keyword or tag is searched inside each category.
  4. Choose Sort by: featured, newest, hot and new, highest rated, most reviewed, or price in either direction.
  5. Optionally set Minimum price, Maximum price and Minimum rating (1 to 4 stars and up).
  6. Set Maximum results per search and Maximum products for the whole run. A product found by two searches is saved once.
  7. Click Start, then export from the Output tab as CSV, JSON or Excel.

To track new products in a niche, sort by newest and schedule the Actor to run daily.

How to call it from code

With curl:

curl -X POST "https://api.apify.com/v2/acts/pistachio_implementation~gumroad-products-search/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchQueries": ["notion template"], "sort": "most_reviewed", "maxResultsPerSearch": 100}'
Enter fullscreen mode Exit fullscreen mode

In Python, with the apify-client package:

import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("pistachio_implementation/gumroad-products-search").call(
    run_input={
        "tags": ["procreate brushes"],
        "sort": "highest_rated",
        "minPrice": 5,
        "maxResultsPerSearch": 200,
    }
)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row["name"], row["price"], row["currency"], row["rating"], row["ratingCount"])
Enter fullscreen mode Exit fullscreen mode

Pricing

Pay per event: $0.0015 per product saved, which is $1.50 per 1,000 products. There is no start fee and no platform usage charge on top. Duplicates across searches and products skipped by your price filter are free. For example, 10 keywords with 100 products each cost $1.50. You can cap the spend of any run with the maximum charge setting in Apify.

Limits and what it does not do

  • About 10,000 results per search. Gumroad stops serving results around there, so split very broad searches into narrower keywords, tags or categories.
  • No sales counts, full descriptions or file lists. They are not part of the search results, so the Actor does not return them.
  • Prices are compared as listed. Gumroad's own price filter works on internal price tiers, so the Actor checks each listed price again. Prices in other currencies are compared without conversion.
  • Discover only. Products a creator keeps off Discover do not appear.
  • No buyer or customer data. Only public product listings and the creator's public storefront name and link.
  • It checks Gumroad's robots.txt before reading, and spaces requests one second apart.

The Actor is an independent tool and is not affiliated with Gumroad. Please use the data in line with Gumroad's terms.

Try it on the Apify Store: https://apify.com/pistachio_implementation/gumroad-products-search

Top comments (0)