> **For coding agents and LLMs:** This is one Social Fetch marketing page (markdown export). For API orientation start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for auth and crawl rules use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for every operation use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt).

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/platforms/product-hunt/products-slug-reviews>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/product-hunt/products-slug-reviews.mdx>

---

# Product Hunt Reviews API

Detailed product reviews with ratings, pros, cons, question answers and the reviewer.

`GET /v1/product-hunt/products/{slug}/reviews` returns `data.reviews`, `data.productSlug`, `data.order`, `data.totalCount` and `data.page`. Each review has `id`, `overallRating`, `overallExperience`, `easeOfUseRating`, `customizationRating`, `reliabilityRating`, `valueForMoneyRating`, `positiveFeedback`, `negativeFeedback`, `alternativesFeedback`, `reviewType`, `origin`, `createdAt`, `selectedPros`, `selectedCons`, `questionAnswers`, `alternativeProducts`, `fromPost` and `user`.

The `order` parameter accepts `customers`, `highest_rated`, `informative`, `latest_launch`, `lowest_rated`, `newest` and `oldest`; `newest` is the default. Pages hold up to 20 reviews. A product with no reviews is `lookupStatus: found` with an empty `reviews` list, while a product that does not exist is `not_found`.

## Request

- **Endpoint:** `GET /v1/product-hunt/products/{slug}/reviews`
- **Credits:** 1 credit
Failed requests are free
- **Input:** by product slug
- **Full reference:** [docs](https://www.socialfetch.dev/docs/api/v1/product-hunt/products/slug/reviews/get)
- **Platform page:** [/platforms/product-hunt](https://www.socialfetch.dev/platforms/product-hunt)

## FAQ

### Which review orders can I ask for?

`customers`, `highest_rated`, `informative`, `latest_launch`, `lowest_rated`, `newest` and `oldest`. `newest` is the default. The response echoes the order it used in `data.order`.

### What do pros and cons look like?

`selectedPros` and `selectedCons` are arrays of `{ name, count }`. The name is the selected phrase and the count is how often it was picked. `positiveFeedback`, `negativeFeedback` and `alternativesFeedback` carry the reviewer's own text and can be null. `alternativeProducts` lists products the reviewer used before this one, and `fromPost` names the launch the review was left on; both can be null.

### How do I get the next page of reviews?

When `data.page.hasMore` is true, send `data.page.nextCursor` as the `cursor` query parameter with the same product slug and order. A cursor only works with the filters that issued it.

### Does an empty list mean the product is missing?

No. Check `data.lookupStatus`. A found product with no reviews returns `found` and an empty list. A slug with no public product returns `not_found`.

### How much does it 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.
