Gumroad hub

Gumroad Search API

Search Gumroad products with sorts, filters and facet counts, and get a typed page back.

GET /v1/gumroad/search

1 credit Failed requests are free

About this endpoint

GET /v1/gumroad/search takes query, sort, category, tags, fileTypes, minPrice, maxPrice, minRating and attributeFilters, plus page or a cursor. Prices are in whole units of a product's own currency, so minPrice=5 means $5, not cents; Gumroad compares the buyer-facing price in that currency, so a EUR product is compared in EUR. The filter can compare a tier or suggested price, so a row's listed price can differ. category is a path from the categories endpoint such as 3d/3d-modeling. Attribute filters look like product_type:script and require category; without one the marketplace ignores them, so the route refuses them with a 400 instead. A minPrice above maxPrice is refused with a 400.

The response is { data, meta } with data.lookupStatus always found, plus data.query, data.sort, data.category, data.total, data.truncated, data.facets, data.products and data.page. Each product row has id, permalink, name, type, url, thumbnailUrl, coverUrl, summary, creator, ratings, price, saleLabel, stock and subscription. A row's summary is Gumroad's cut snippet, not the seller's summary field on the product route. data.facets gives top tags and file types with counts, and the category attribute facets.

The route returns 1 to 100 rows per page and stops at 10,000 results, so a deep walk needs narrower filters. An empty query browses the catalog. hot_and_new is the one sort that narrows the set to recent products with traction; the others only reorder it.

Gumroad Search API FAQ

What can I filter by?

Free text, sort, category path, tags, file types, a minimum and maximum price in whole currency units (5 means $5, not 500), a minimum rating, and category attribute filters such as product_type:script. The price filter can compare a tier or suggested price, so a row's listed price can differ, and the minimum must not exceed the maximum. Attribute filters need a category. Tags, file types and attribute filters are OR-ed and capped at 10 each.

What sorts are accepted?

featured, newest, highest_rated, most_reviewed, price_asc, price_desc, curated and hot_and_new. hot_and_new narrows the set to recent products with traction; the rest reorder the matches.

How deep can I page?

Gumroad stops at 10,000 results. Search returns 1 to 100 rows per page, and a request whose first row would pass the cap is refused before it is sent. At the cap, page.truncated is true and page.hasMore is false. Narrow the query or add filters to go deeper.

What are facets for?

data.facets.tags and data.facets.fileTypes list the most common values with counts, and data.facets.attributes lists category attributes such as product type with their counts. They let you build filters without guessing valid values.

Does an empty result mean an error?

No. A search with no matches answers found with total 0 and an empty products array. A malformed filter such as an unknown sort, an attribute filter without a category, or a category path of the wrong shape is a 400 before any lookup. A correctly shaped category path that the marketplace does not know yet is passed through and answered with unfiltered results.

How many credits does a search page cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth. Each paginated page is a separate billed request.