# Product Hunt Scraper – Launches, Upvotes & Makers (`phantom-x64/producthunt-scraper`) Actor

Extract Product Hunt launches as JSON or CSV: name, tagline, topics, makers, website, upvotes, ranks and top comments. Daily, weekly and monthly leaderboards, topic feeds with no token, and a monitor mode that returns only new launches. From $0.50 per 1,000 results.

- **URL**: https://apify.com/phantom-x64/producthunt-scraper.md
- **Developed by:** [Phantom Data](https://apify.com/phantom-x64) (community)
- **Categories:** Lead generation, Marketing, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 1,000 product launches

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Product Hunt Scraper & API: Launches, Leaderboards, Topics

**Get Product Hunt launches as clean JSON, CSV or Excel. Pull the latest launches by topic with no token, and get daily, weekly and monthly leaderboards with upvotes, ranks, makers, media and comments.** It costs **$0.50 per 1,000 results**, which is lower than the free-plan per-result price of every other Product Hunt Actor we compared in the Apify Store on 2 Nov 2026.

This Product Hunt scraper reads only **official Product Hunt channels**: the public Atom feed and the official Product Hunt API v2. It runs no headless browser, does not fight Cloudflare and does not depend on fragile HTML selectors. Runs take seconds and use 256 MB of memory. Scrapers that parse Product Hunt's web pages commonly break when a bot challenge appears, and this design avoids that whole class of failure.

### What does Product Hunt Scraper do?

| Mode | What you get | Token needed? |
|---|---|---|
| **Latest launches** | The newest featured launches on Product Hunt, about 50 per feed | No |
| **Launches by topic** | The latest launches for any topic, such as `artificial-intelligence`, `developer-tools`, `saas` or `marketing`. Launches found in several topics are merged into one record. | No (latest only). With a token you get full topic history and date ranges. |
| **Leaderboard** | Daily, weekly or monthly leaderboards for any date range, with **rank, upvotes, comments, topics, makers, hunter, media and website** | Your free Product Hunt API token |
| **Product URLs** | Full details for specific launches, from `producthunt.com/posts/...` or `/products/...` URLs | Your free Product Hunt API token |

**Monitoring mode (`onlyNew`).** Schedule the Actor (hourly, daily) and it returns **only launches you have not seen before**. You pay only for new results. You can wire it to Slack, email, Google Sheets or Zapier/Make through Apify integrations to get instant alerts for new AI tools or new competitors.

### Who is it for?

- **VCs and angel investors**: track every new startup launch in your thesis area, and spot traction early through upvotes and rank.
- **Growth and marketing teams**: monitor competitors and category trends, and build launch-day benchmarks.
- **SaaS founders**: research the market before you launch and find who launched in your niche.
- **Lead generation and sales**: build lists of fresh startups, their makers and their websites.
- **Newsletter and media publishers**: produce "top launches of the day/week" content automatically.
- **Researchers and analysts**: build datasets of product launches over time.

### How to use it

1. Click **Try for free**.
2. Choose a mode. *Latest launches* works with no setup.
3. Optionally add topics, keywords, a date range or a max results limit.
4. Click **Start**, then download the results as JSON, CSV, Excel or HTML, or fetch them through the Apify API.

#### Optional: your Product Hunt API token (for leaderboards, votes and ranks)

Product Hunt gives developers a free token. Go to [producthunt.com/v2/oauth/applications](https://www.producthunt.com/v2/oauth/applications), create an application, copy the **Developer Token** and paste it into the *Product Hunt API developer token* field. It is stored as a secret input.

> Product Hunt's API terms state that, by default, the API must not be used for commercial purposes without their permission (contact hello@producthunt.com). Make sure your use complies. The token-free modes use Product Hunt's public feed.

### Input examples

Latest AI and developer tool launches, only the new ones since the last run:

```json
{
  "mode": "topic",
  "topics": ["artificial-intelligence", "developer-tools"],
  "onlyNew": true,
  "maxItems": 200
}
```

Yesterday's daily leaderboard, top 20 with makers and the top 5 comments each:

```json
{
  "mode": "leaderboard",
  "period": "daily",
  "maxItemsPerPeriod": 20,
  "includeMakers": true,
  "includeComments": true,
  "maxCommentsPerProduct": 5,
  "productHuntApiToken": "YOUR_TOKEN"
}
```

October 2026 weekly leaderboards, launches with at least 200 upvotes mentioning "agent":

```json
{
  "mode": "leaderboard",
  "period": "weekly",
  "dateFrom": "2026-10-01",
  "dateTo": "2026-10-31",
  "minVotes": 200,
  "keywords": ["agent"],
  "productHuntApiToken": "YOUR_TOKEN"
}
```

Specific launches:

```json
{
  "mode": "products",
  "productUrls": ["https://www.producthunt.com/posts/notion-ai", "raycast"],
  "productHuntApiToken": "YOUR_TOKEN"
}
```

### Output

Every record has the same columns, so CSV and Excel exports stay tidy. Fields a source cannot provide are `null` or `[]`.

Real example from the token-free topic mode (2 Nov 2026):

```json
{
  "source": "feed",
  "postId": "1299009",
  "name": "Hyperresearch",
  "tagline": "Durable, verified agentic search",
  "url": "https://www.producthunt.com/products/hyperresearch",
  "slug": "hyperresearch",
  "productHuntShortUrl": "https://www.producthunt.com/r/p/1299009",
  "feedPosition": 3,
  "topics": ["artificial-intelligence", "developer-tools"],
  "hunter": { "name": "Jordan Gibbs" },
  "createdAt": "2026-10-30T22:54:03Z",
  "updatedAt": "2026-11-02T12:48:21Z",
  "scrapedAt": "2026-11-02T13:01:48Z"
}
```

Leaderboard record (API mode, structure):

```json
{
  "source": "api",
  "postId": "1300992",
  "name": "Example App",
  "tagline": "One-line pitch",
  "description": "Longer description…",
  "url": "https://www.producthunt.com/posts/example-app",
  "website": "https://…",
  "votesCount": 512,
  "commentsCount": 64,
  "reviewsRating": 4.8,
  "rank": 1,
  "rankPeriod": "daily",
  "rankDate": "2026-11-01",
  "topics": ["artificial-intelligence", "productivity"],
  "topicNames": ["Artificial Intelligence", "Productivity"],
  "hunter": { "name": "…", "username": "…", "headline": "…", "twitterUsername": "…", "profileUrl": "…" },
  "makers": [{ "name": "…", "username": "…", "headline": "Founder", "twitterUsername": "…", "websiteUrl": "…" }],
  "thumbnailUrl": "https://ph-files.imgix.net/…",
  "media": [{ "type": "image", "url": "https://ph-files.imgix.net/…", "videoUrl": null }],
  "comments": [{ "body": "Congrats on the launch!", "votesCount": 12, "author": "…", "createdAt": "…" }],
  "createdAt": "2026-11-01T07:01:00Z",
  "featuredAt": "2026-11-01T07:01:00Z"
}
```

| Field | Description |
|---|---|
| `name`, `tagline`, `description` | Product name, one-line pitch and longer description (description is API only) |
| `url`, `slug`, `productHuntShortUrl` | Product Hunt page, slug and short link (the short link redirects to the product website) |
| `website` | Product website as returned by the API |
| `votesCount`, `commentsCount`, `reviewsRating` | Engagement (API) |
| `rank`, `rankPeriod`, `rankDate` | Position in the daily, weekly or monthly leaderboard (API) |
| `feedPosition` | Position in the public feed (token-free modes) |
| `topics`, `topicNames` | Topic slugs and names |
| `hunter`, `makers` | People behind the launch, when Product Hunt exposes them |
| `thumbnailUrl`, `media` | Logo, gallery images and videos (API) |
| `comments` | Top comments, optional add-on (API) |
| `createdAt`, `featuredAt`, `updatedAt`, `scrapedAt` | Timestamps in UTC |

### Pricing

Pay per event: no subscription, no monthly rental.

| Event | Price |
|---|---|
| Product launch saved | **$0.0005** ($0.50 per 1,000) |
| Top comments add-on (only if enabled and the launch has comments) | $0.0005 per launch |
| Actor start | $0.001 per run |

Filtered-out launches (keywords, minimum votes) and launches skipped by monitoring mode are **not charged**. 100 launches cost about $0.05. You can cap spending per run with Apify's *maximum cost per run* setting.

### FAQ

**Is there a Product Hunt API?**
Yes, Product Hunt has an official GraphQL API (v2). This Actor wraps it: it handles pagination, rate limits (429 retries), Pacific-time day boundaries, rank calculation and clean flat output. It also adds a token-free mode based on Product Hunt's public feed.

**Why don't I get upvotes without a token?**
The public feed only includes the name, tagline, link, poster and date. Upvotes, ranks, makers and media come from the official API, which needs your free developer token.

**Is it legal to scrape Product Hunt?**
This Actor does not crawl Product Hunt's web pages. It reads the public Atom feed, which Product Hunt publishes for feed readers, and, if you choose, the official API with your own token. You are responsible for how you use the data and for complying with Product Hunt's terms, including the API's commercial-use rules. Personal data such as maker names is included only when Product Hunt makes it public, and it is subject to GDPR and similar laws.

**Does it get emails?**
No. It does not guess or harvest email addresses.

**What about pricing plans of the products (free / paid)?**
Product Hunt does not expose product pricing in its feed or API, so this Actor does not output it.

**Which timezone are leaderboard days in?**
US Pacific time, the same as Product Hunt. Daylight-saving changes are handled.

**How fresh is the data?**
Live. Every run reads Product Hunt at that moment.

### Limits

- Token-free modes return the launches currently in Product Hunt's feeds, about 50 per feed and topic. For history, date ranges, upvotes and ranks, use a token.
- An unknown topic slug falls back to the general feed. The Actor detects this, warns you and skips those results so they are not charged.
- Leaderboard rank is the launch's position in Product Hunt's own `RANKING` order for that period, as returned by the API.
- Some maker and hunter profiles are hidden by Product Hunt's API (`[REDACTED]`). Those entries are dropped rather than returned empty.
- Product Hunt's API applies fair-use rate limits. Very large date ranges may take a while because the Actor waits and retries instead of failing.

### Use it from code (API)

Every Apify Actor is also an API. Replace `<YOUR_API_TOKEN>` with the token from your Apify account (Settings, API & Integrations).

**JavaScript**

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('phantom-x64/producthunt-scraper').call({
    "mode": "topic",
    "topics": [
      "artificial-intelligence"
    ],
    "maxItems": 20
  });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

**Python**

```python
from apify_client import ApifyClient

client = ApifyClient('<YOUR_API_TOKEN>')
run = client.actor('phantom-x64/producthunt-scraper').call(run_input={
      "mode": "topic",
      "topics": [
        "artificial-intelligence"
      ],
      "maxItems": 20
    })
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

You can also start it from Make, Zapier, n8n or Google Sheets with the Apify integrations, schedule it, or call it as a tool from an AI agent through the Apify MCP server.

### Support

Found a bug or need a field? Open an issue in the **Issues** tab. Fixes usually ship within days.

# Actor input Schema

## `mode` (type: `string`):

<b>latest</b>: newest featured launches from Product Hunt's official public feed (no token needed). <b>topic</b>: latest launches for the topics below (feed without token; full history with token). <b>leaderboard</b>: daily/weekly/monthly leaderboard with ranks and votes (needs your Product Hunt API token). <b>products</b>: specific product/launch URLs (needs token).

## `topics` (type: `array`):

Product Hunt topic slugs, e.g. artificial-intelligence, developer-tools, saas, productivity, marketing. The slug is the last part of https://www.producthunt.com/topics/<slug>. Used by modes 'latest' and 'topic'.

## `period` (type: `string`):

Only for mode 'leaderboard'. Days, weeks and months follow Product Hunt's US Pacific time. Weeks start on Monday.

## `dateFrom` (type: `string`):

Leaderboard: first day/week/month to collect (default: yesterday, Pacific time). Topic (token): launches posted from this day. Latest: keep only launches created on/after this date.

## `dateTo` (type: `string`):

Inclusive end date. Leaderboard default: same as 'Date from'.

## `productUrls` (type: `array`):

Only for mode 'products'. Accepts https://www.producthunt.com/posts/<slug>, https://www.producthunt.com/products/<slug> or a bare slug.

## `maxItems` (type: `integer`):

Maximum number of launches saved (and charged) in this run.

## `maxItemsPerPeriod` (type: `integer`):

Leaderboard mode: how many top launches to take from each day/week/month.

## `keywords` (type: `array`):

Keep only launches whose name, tagline, description or topics contain any of these words or phrases (whole-word, case-insensitive: 'ai' matches 'AI agent' but not 'Tailwind'). Filtered-out launches are not charged.

## `minVotes` (type: `integer`):

Keep only launches with at least this many upvotes (API modes only; the public feed has no vote counts).

## `onlyNew` (type: `boolean`):

Remember launches returned in previous runs with the same settings and return only new ones. Schedule the Actor (e.g. hourly) to get alerts for new launches - you pay only for new results.

## `productHuntApiToken` (type: `string`):

Needed only for 'leaderboard', 'products' and full-history 'topic'. Get it free at https://www.producthunt.com/v2/oauth/applications (create an app, copy the Developer Token). Product Hunt's API terms restrict commercial use without their permission - you are responsible for your use.

## `includeMakers` (type: `boolean`):

API modes: add hunter and maker profiles (name, username, headline, X/Twitter, website) when Product Hunt exposes them.

## `includeComments` (type: `boolean`):

API modes: add the most upvoted comments of each launch. Charged as a small add-on per launch that has comments.

## `maxCommentsPerProduct` (type: `integer`):

How many top comments to include per launch (max 50).

## Actor input object example

```json
{
  "mode": "latest",
  "topics": [
    "artificial-intelligence",
    "developer-tools"
  ],
  "period": "daily",
  "maxItems": 100,
  "maxItemsPerPeriod": 50,
  "minVotes": 0,
  "onlyNew": false,
  "includeMakers": true,
  "includeComments": false,
  "maxCommentsPerProduct": 10
}
```

# Actor output Schema

## `launches` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "topics": [
        "artificial-intelligence",
        "developer-tools"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("phantom-x64/producthunt-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "topics": [
        "artificial-intelligence",
        "developer-tools",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("phantom-x64/producthunt-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "topics": [
    "artificial-intelligence",
    "developer-tools"
  ]
}' |
apify call phantom-x64/producthunt-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,phantom-x64/producthunt-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/dUFzIeUY6bOKyvkMA/builds/8QhuDDzoQ2rRLp8UA/openapi.json
