Product Hunt Reviews Scraper - Ratings & Pros Cons avatar

Product Hunt Reviews Scraper - Ratings & Pros Cons

Pricing

from $1.50 / 1,000 review scrapes

Go to Apify Store
Product Hunt Reviews Scraper - Ratings & Pros Cons

Product Hunt Reviews Scraper - Ratings & Pros Cons

Product Hunt reviews scraper that returns full review text, five separate rating dimensions, and the AI pro/con tags Product Hunt generates itself. Includes why each reviewer chose the product over alternatives. No login, no API token, no browser.

Pricing

from $1.50 / 1,000 review scrapes

Rating

0.0

(0)

Developer

Eimantas V

Eimantas V

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Product Hunt Reviews Scraper — Ratings & Pros/Cons

Product Hunt reviews scraper that returns the full review text, five separate rating dimensions, and the AI pro/con tags Product Hunt generates itself. No login, no API token, no browser.

Software review data is what competitive-intelligence buyers actually pay for, and Product Hunt's review corpus is the one nobody is extracting: every existing Product Hunt Actor scrapes launches, leaderboards and maker emails. This one scrapes the reviews.

What you get

One row per review. Fill rates below are measured over 260 real reviews from 5 products — not estimated, and not rounded up.

FieldTypeFillNotes
overallRatingnumber | null100%1–5
createdAtstring | null100%A real UTC instant, normalised from PH's offset
reviewerName / reviewerUsernamestring | null100%
reviewerUrl / reviewerHeadlinestring | null
overallExperiencestring | null62%The quick-review paragraph, median 359 chars
selectedPros / selectedConsarray53%Per-review AI tags with a polarity
alternativesFeedbackstring | null32%Why they chose this over competitors
easeOfUseRatingnumber | null23%
reliabilityRatingnumber | null23%
valueForMoneyRatingnumber | null23%
customizationRatingnumber | null23%
positiveFeedbackstring | null22%What the reviewer liked
negativeFeedbackstring | null16%What they didn't
productReviewsCountinteger | null100%PH's own total, so you can see what you missed
productReviewsRatingnumber | null100%Aggregate, 2dp
commentsCount / votesCountinteger | null100%
reviewType / statusstring | null100%personal or founder

Two review formats, and you can pick

Product Hunt collects reviews in two shapes, and the difference matters enough that it is an input option rather than a footnote:

  • A quick review carries an overall rating and one written paragraph (overallExperience). Measured at 62% of reviews.
  • A structured review adds four more ratings — ease of use, reliability, value for money, customization — and splits the prose into what the reviewer liked, what they didn't, and why they chose this over alternatives. Measured at 22%.

Every review carries an overall rating, and over 260 rows 100% carried some written text. Set reviewDetail to structured when you need the rating breakdown; rows that do not match are never written and never charged, and the coverage row tells you how many were examined and how many were dropped.

Founder reviews are worth knowing about too: on the products measured they were 101 of 260 rows, and they carry the structured form far less often (6% against 33% for user reviews). Use reviewTypes: ["personal"] to exclude them.

Five rating dimensions where most sites give one star

When a review is structured, you get ease of use, reliability, value for money and customization as separate scores alongside the overall. That is the difference between "users rate it 4.2" and "users rate it 4.8 on reliability and 3.1 on value".

alternativesFeedback has no equivalent elsewhere

Product Hunt asks reviewers why they picked this product over the ones they considered instead. It is the field a competitive-intelligence buyer would otherwise have to infer, and it comes back as prose.

Pro/con tags, already extracted

Product Hunt runs its own model over its reviews and attaches pro/con tags with a polarity — per review, and aggregated per product. A scraper pointed at other review sites has to synthesise that downstream with an LLM, at a per-row cost. Here it ships in the payload.

A per-product coverage row

Each product also gets one summary row, and it is never charged: how many reviews were collected against the total Product Hunt reports, the aggregate rating, the product-level pro/con tags, pages read, and why the run stopped. That row is what lets you tell "this product has 12 reviews" from "we only read the first page" — a distinction an empty dataset cannot make.

Input

{
"products": [
"slack",
"https://www.producthunt.com/products/notion",
"https://www.producthunt.com/products/linear"
],
"maxReviewsPerProduct": 200,
"maxTotalReviews": 5000
}

Product URLs or bare slugs. You can also chain from another Actor's dataset with sourceDatasetId.

A launch URL (/posts/<slug>) is rejected with a message, not guessed at. Launches and products are separate namespaces on Product Hunt and their slugs do not line up, so coercing one into the other would scrape the wrong thing — or nothing, which is worse because you could not tell.

Pricing

EventPriceWhen
review-scraped (primary)$1.50–$3.00 per 1,000Per review row written
product-processed$0.002Per product coverage row
apify-actor-start$0.00005Once per run

You are never billed twice for the same review. Product Hunt repeats a fixed block of top reviews on every page — measured, page two returned 18 review objects of which only 8 were new — and this Actor deduplicates by review id, so only genuinely new reviews are charged.

Also never charged: coverage rows, error rows of any kind, and requests that came back challenged and were retried.

What this does NOT do

  • No product discovery. You supply the products. Pair this with a discovery Actor if you need to find them first.
  • No launches, makers, upvotes or hunter data. Those are a different corpus and several Actors already cover them well.
  • No comment threads under reviews. The counts are returned; the thread text is not.
  • No G2 or Capterra. Different sites, different shapes.
  • Reviewer profile pages are not crawled — Product Hunt's robots.txt disallows /@*/*, so this Actor takes the reviewer fields that come embedded in the review itself and goes no further.

How it works, and the honest part

One plain HTTP GET per page of reviews. Product Hunt server-renders its review data into Apollo SSR transport scripts, so there is no browser and no API token. The public GraphQL API at api.producthunt.com is deliberately not used: it requires an OAuth developer token, which is exactly the kind of credential that expires and takes an Actor down with it. The HTML path needs no credential at all.

This Actor requires the Apify Unblocker proxy

That is measured, not cautious. From an Apify run:

proxyresult
Datacenter0 of 15 usable — HTTP 403, cf-mitigated: challenge
Residential0 of 3 usable — same challenge
UnblockerHTTP 200, full payload

Cloudflare here checks both the TLS fingerprint and the IP reputation, and only Unblocker satisfies both. Leave the proxy setting at its default. Unblocker is billed per request rather than per gigabyte, which is why this is affordable.

Reliability

  • Deleted or non-existent products are distinguishable from blocks. A missing product returns HTTP 404 with a Next.js error document and no reviewsCount key; a block returns a Cloudflare challenge; a product with genuinely zero reviews returns HTTP 200 with "reviewsCount":0. That key is the positive control — no block page and no 404 carries it — so "no reviews yet" is never confused with "we were stopped".
  • The response gate never keys on size. The 404 page measured 113 KB against a real page's 1.05 MB, but a small real page is still valid, so only shape is used.
  • Pagination terminates on zero new review ids, not on a page returning no rows — because pages keep returning rows long after the new ones run out.
  • Challenged requests are retried on a fresh IP, twice, with a hard backoff. A product-not-found is never retried: the answer is the same everywhere.

robots.txt

https://www.producthunt.com/robots.txt permits the paths this Actor uses. The reviews path is not disallowed. Relevant lines it does disallow, none of which this Actor touches: /auth/*, /search*, /my/*, /yours*, /notifications, /r/*, /@*/* (reviewer profile pages, which is why this Actor does not crawl them) and the ?review= single-review deep-link parameter, which is a query parameter rather than the /reviews path segment.

This Actor reads publicly visible reviews, sends no credentials, and bypasses no authentication or access control. Whether that suits your purpose is a decision for you and your legal advisers.