Gumroad hub

Gumroad Product API

One Gumroad product record with its price, ratings, tiers, options and first reviews.

GET /v1/gumroad/product

1 credit Failed requests are free

About this endpoint

GET /v1/gumroad/product takes a product url, or creator plus permalink, or a bare permalink. The response is { data, meta }; data.lookupStatus is found or not_found, and data.product is the record or null.

On found, data.product carries id (which the reviews endpoint needs), permalink, name, type, url, createdAt, updatedAt, creator, price, subscription, description, descriptionHtml, summary, media, attributes, ratings, reviews, salesCount, options, stock, isPhysical and refundPolicy. price.amount is in the product's own currency in Gumroad's smallest unit for it (cents for most currencies, whole yen for JPY), with price.formatted as Gumroad prints it. ratings.distribution is the share of 1 to 5 star ratings, and reviews is only the first page; use the reviews endpoint for the rest.

The same product can show a short id on a list route and the seller's custom permalink on another. Both forms resolve here; keep the creator username with the permalink.

Gumroad Product API FAQ

How do I name a product?

Give url, or creator and permalink, or a bare permalink. A bare permalink such as latonc and the seller's custom permalink both resolve to the same product. A permalink copied from a list route can be a short id or the custom one; pass the creator username with either form.

Where are prices and tiers?

Read data.product.price for amount, currency, formatted and the pay-what-you-want fields. originalAmount is null on this route because the product record does not carry a pre-sale price; it appears on search, related and wishlist rows. Variants and membership tiers are in data.product.options, including each tier's recurrencePriceValues, and membership periods are in data.product.subscription.recurrences.

Does the response include reviews?

data.product.reviews holds the first written reviews. For paging, reviewer details and the creator's reply, call the product reviews route with data.product.id.

What does not_found mean here?

An unknown permalink or creator answers HTTP 200 with data.lookupStatus not_found and data.product null. HTTP 200 only means the request finished, so branch on lookupStatus.

How many credits does a product lookup 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.