Blog

How to Access Product Hunt Data Without Scraping

Learn how to access Product Hunt launch data, upvotes, comments, and maker profiles through shadow APIs discovered from browsing traffic — no scraping or official API approval required.

Lewis Tham
April 3, 2026

How to Access Product Hunt Data Without Scraping

Product Hunt is the launchpad for new tech products. Every day, hundreds of makers submit products that get voted on by a community of early adopters, investors, and builders. The data on Product Hunt — launch rankings, upvote velocity, comment sentiment, maker profiles, and category trends — is essential for competitive intelligence, market research, and launch strategy.

Product Hunt had a public API (v2, GraphQL) but restricted it heavily. Access requires an application review process, tokens have strict rate limits, and several useful endpoints have been deprecated or restricted over time. Many fields visible on the website are not available through the API. Scraping the HTML is fragile because Product Hunt is a React single-page application with client-side rendering.

The Product Hunt web client communicates with a GraphQL API that returns everything visible on the page — full launch data, real-time vote counts, comment threads, maker bios, collections, and topic graphs. These shadow APIs are what Unbrowse discovers from normal browsing.

What Are Shadow APIs?

Shadow APIs are the internal HTTP endpoints that a web application uses to fetch data for its interface. They return structured data (typically JSON) and are authenticated through the user's browser session.

When you browse the Product Hunt front page, your browser makes GraphQL requests to:

  • A posts endpoint that returns today's launches with titles, taglines, vote counts, comment counts, and thumbnail URLs
  • A post detail endpoint that returns the full product page with description, media gallery, maker team, and related products
  • A comments endpoint that returns threaded comments with author info and timestamps
  • A user endpoint that returns maker profiles, their launches, and follower counts
  • A topics endpoint that returns category data and trending products per topic
  • A collections endpoint that returns curated product lists

These GraphQL operations return richer data than the official API and do not require an approved developer token.

What Unbrowse Discovers on Product Hunt

Unbrowse captures all HTTP traffic during a browsing session and indexes every API route. When you browse Product Hunt through Unbrowse, it discovers:

  • Daily launches endpoints — today's products ranked by votes, with metadata including tagline, thumbnail, vote count, comment count, and maker info
  • Product detail endpoints — full product pages with description, screenshots, video demos, pricing, and links
  • Vote and engagement endpoints — real-time vote counts and voting velocity
  • Comment thread endpoints — full comment trees with author profiles and timestamps
  • Maker profile endpoints — maker bios, their product launches, follower counts, and activity history
  • Topic and collection endpoints — product categories, trending topics, and curated collections
  • Search endpoints — product search by name, topic, or description
  • Upcoming launches endpoints — products scheduled for future launch with teaser data

Each endpoint is stored with its GraphQL operation, variable schema, and authentication details.

Getting Started

Install Unbrowse:

npm install -g unbrowse

Browse Product Hunt to discover its internal APIs:

unbrowse browse "https://www.producthunt.com"

Navigate through the front page, product pages, topic pages, and search. Unbrowse captures every GraphQL call.

Resolve a discovered endpoint:

unbrowse resolve "product hunt daily launches"

Execute the route:

unbrowse execute "product hunt daily launches" --params '{"date": "2026-04-04", "limit": 20}'

Code Example: Product Hunt Launch Tracker

Here is a Node.js script that tracks daily launches and identifies trending products:

import Unbrowse from 'unbrowse';

const unbrowse = new Unbrowse();

// Resolve Product Hunt endpoints
const launchesSkill = await unbrowse.resolve('product hunt daily posts');
const detailSkill = await unbrowse.resolve('product hunt post detail');

// Get today's launches
const launches = await unbrowse.execute(launchesSkill, {
  date: new Date().toISOString().split('T')[0],
  order: 'votes',
  limit: 30
});

console.log(`Top Product Hunt launches today:\n`);

for (const product of launches.posts.slice(0, 10)) {
  // Get detailed info
  const detail = await unbrowse.execute(detailSkill, {
    slug: product.slug
  });

  console.log(`#${product.rank} ${product.name} (${product.votesCount} votes)`);
  console.log(`  ${product.tagline}`);
  console.log(`  Makers: ${detail.makers.map(m => m.name).join(', ')}`);
  console.log(`  Topics: ${detail.topics.map(t => t.name).join(', ')}`);
  console.log(`  Comments: ${detail.commentsCount}`);
  console.log(`  URL: ${product.url}`);
  console.log();
}

This returns richer data than the official API, including fields that are only available in the web client.

Performance Comparison

Method Setup Time Avg Response Time Real-time Votes Full Product Data Cost
PH Official API v2 30-60 min (approval) 300-600ms Limited Partial Free (limited)
HTML Scraping (Playwright) 1-2 hours 3-8 seconds No (stale) Requires parsing Free
Unbrowse (Shadow API) 2 minutes 100-300ms Yes Yes (native JSON) Free

Product Hunt's React frontend relies entirely on GraphQL for data. Scraping the rendered HTML is unreliable because the content loads asynchronously. The GraphQL API returns everything in structured form, ready for processing.

Use Cases for Product Hunt Data

Accessing Product Hunt data programmatically enables several valuable workflows:

  • Competitive monitoring — track when competitors launch new products and how they perform
  • Market research — analyze which product categories are trending and what taglines resonate
  • Launch optimization — study voting patterns, comment engagement, and what time of day works best for launches
  • Investor deal flow — identify promising early-stage products before they raise funding
  • Content curation — automatically surface relevant new products for newsletters or social media
  • Community analysis — understand who the most influential makers and voters are

FAQ

Is this legal? Unbrowse accesses the same GraphQL endpoints your browser calls when you browse Product Hunt. It does not bypass authentication, access private data, or violate access controls. Review Product Hunt's Terms of Service for your use case.

Do I need a Product Hunt account? The front page and product pages are publicly accessible without an account. For upvoting, commenting, and viewing personalized recommendations, you need to be logged in during the Unbrowse browse session.

How accurate are the vote counts? The internal API returns real-time vote counts — the same numbers displayed on the website. They update with every page load or API call.

Can I track historical launches? Yes. Product Hunt's internal API supports querying launches by date. You can retrieve historical daily rankings by specifying past dates.

How does this compare to the official API? The internal GraphQL API returns more fields, supports more query types, and does not require an approved developer token. The official API is more stable and has documented rate limits, but it is restricted and incomplete compared to what the web client uses.