Get a Product Hunt product
Retrieve a Product Hunt product. view=overview (default) returns the product page: tagline, description, website and social links, rating, review, follower, launch, maker and alternative counts, categories, first and latest launch, media, pros-and-cons tags, Golden Kitty badges and its forum. view=launches lists every launch; view=reviews lists written reviews with aspect ratings, filterable by reviewer type and star rating; view=alternatives lists the alternatives shown for it; view=makers lists its makers. List views page with cursor.
/v1/producthunt/productx-api-keyHeaders
Get your API keyYour ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.
Required product slug, as in producthunt.com/products/<slug> (for example notion).
linearoverview (default), launches, reviews, alternatives or makers. List views accept cursor and limit.
one of: overview, launches, reviews, alternatives, makers
Per view. launches: date (default, newest first) or votes. reviews: informative (default), newest, oldest, highest_rated or lowest_rated. alternatives: most_relevant (default), highest_rated or recent_launches.
one of: date, votes, informative, newest, oldest, highest_rated, lowest_rated, most_relevant, recent_launches
reviews view only: all (default), founder (reviews from makers of other products) or personal.
one of: all, founder, personal
reviews view only: only reviews with this overall star rating, 1–5.
Opaque nextCursor from the previous page. Omit for the first page.
Records per page, 1–20; defaults to 20 (the source's page ceiling).
Request correlation identifier.
HTTP attempts, decoded bytes and duration for the operation, including the single shared retry.
Always included.
≥ 0
Always included.
≥ 0
Always included.
≥ 0
True when usable data is returned; inspect status and coverage for omissions.
success, partial, failed, or challenged. HTTP 200 can be partial.
one of: success, partial
Public Product Hunt page for the request.
absolute HTTPS URL
UTC retrieval time.
source is public_api (Product Hunt's public web GraphQL) or public_feed (the Atom launch feed). Complete means this bounded page was returned without known omissions; votes_hidden marks launches whose vote count Product Hunt hides during their first hours (returned as null).
Always included.
one of: public_api, public_feed
Always included.
Always included.
The product page (overview), or the parent product (id, slug, name; reviews adds detailedReviewsCount and detailedReviewsRating) for list views.
Product ID as a string.
Product slug, as in producthunt.com/products/<slug>.
Product name.
Product tagline.
Long description, or null.
Product page URL.
The product's own website, or null.
Website domain, or null.
Website without scheme, or null.
Logo image identifier, or null.
Logo image URL derived from logoUuid, or null.
Whether the maker team has claimed the page.
Whether Product Hunt marks it a top product.
Whether the product is marked as no longer online.
Average review rating out of 5, or null.
Review count.
Written review count.
Follower count.
Number of launches.
Add-on count, or null.
Number of listed alternatives.
Number of team members listed as makers.
Number of categories, or null.
Company size band, or null.
Funding band, or null.
Whether the company was in Y Combinator, or null.
free, paid, payment_required and similar source values, or null.
Product Hunt's generated summary of reviews, or null.
X (Twitter) URL; empty string or null when absent, as the source returns it.
Facebook URL, as the source returns it.
Instagram URL, as the source returns it.
LinkedIn URL, as the source returns it.
Wellfound (AngelList) URL, as the source returns it.
Threads URL, as the source returns it.
Medium URL, as the source returns it.
GitHub URL, as the source returns it.
App Store redirect URL, or null.
Google Play redirect URL, or null.
Categories: id, slug, name, path and url.
up to 50 items
Always included.
Always included.
Always included.
Always included.
Always included.
First launch: id, slug and createdAt, or null.
Always included.
Always included.
Always included.
Most recent launch with votes (null while hidden), comments and dates, or null.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Gallery media: image or video metadata with imageUrl.
up to 50 items
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Review-derived pros and cons: name, Positive/Negative type and mention count.
up to 50 items
Always included.
Always included.
Always included.
Always included.
Golden Kitty awards: category, position and year.
up to 50 items
Always included.
Always included.
Optional.
Optional.
Optional.
Optional.
Optional.
The product's forum (id, slug, path, url); read it with the forum endpoint. Null when none.
Always included.
Always included.
Always included.
Always included.
No fields match.
HTTP 200 returns the success variant. Check status: partial means usable data with warnings, and failed or challenged requests carry a failure object described in Errors & responses.
| HTTP | failure.code | Meaning |
|---|---|---|
| 200 | partial | Usable data with votes_hidden warnings. |
| 400 | invalid_request | Missing, duplicate, malformed or unsupported parameters, including incomplete or impossible leaderboard dates. |
| 401 | unauthorized | Missing or invalid worker API key. |
| 404 | not_found | The product, launch, comment, topic, category, forum, discussion or user does not exist. |
| 429 | upstream_rate_limited | Source throttling; no automatic retry. |
| 502 | upstream_challenged | Source rejected or challenged the unauthenticated request. |
| 502 | unsupported_page | Malformed, mismatched or non-JSON source data, or a GraphQL error. |
| 502 | response_too_large payload_too_complex | Response exceeded byte or parsing limits. |
| 502 | unsafe_redirect request_limit upstream_error | Bounded source retrieval could not complete. |
| 503 | busy | All worker slots are occupied. |
| 504 | timeout | Total request deadline expired. |