# Product Hunt Scraper: Launches, Leaderboards & Makers (`cprussin/product-hunt-launches`) Actor

Product Hunt launches as JSON: name, tagline, live upvotes, daily rank, topics, website, hunter and makers. Current launches and topic feeds need no API key; add a free token for historical leaderboards and comments.

- **URL**: https://apify.com/cprussin/product-hunt-launches.md
- **Developed by:** [Connor Prussin](https://apify.com/cprussin) (community)
- **Categories:** Lead generation, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 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: launches, leaderboards, upvotes and makers

**Product Hunt Scraper** exports Product Hunt launches as clean JSON, CSV or Excel: **name, tagline, live upvote count, Product of the Day rank, topics, website, hunter and makers**, plus descriptions, media and comments when you add a free Product Hunt API token. Use it to track new launches every day, pull a topic's newest products, or export past daily, weekly and monthly leaderboards.

- ✅ **Works without an API key.** Current launches and topic feeds, with live upvote counts and top-5 daily ranks, need no login or token.
- ✅ **Historical leaderboards** by day, week or month for any date range, with every launch's rank. Needs a free Product Hunt developer token.
- ✅ **Topics / categories:** AI, developer tools, productivity, SaaS, marketing and more.
- ✅ **Specific launches by URL**, with makers, topics, media and the top comments.
- ✅ **Keyword filter:** keep only launches that mention "CRM", "agents" or any other words. Filtered-out launches are free.
- ✅ **Pay per launch:** $1 per 1,000 launches. No monthly rental.
- ✅ **Fast and light:** plain HTTP, no browser, no proxy. The default run finishes in a few seconds.

### What can you do with Product Hunt launch data?

- **Market research and trend spotting:** see what launches every day in your category and which products win Product of the Day.
- **Lead generation:** build lists of newly launched startups, their websites and makers for sales, partnerships or agency outreach.
- **Investors and scouts:** screen new products by upvotes, rank and topic; export a month's leaderboard for deal flow.
- **Competitor monitoring:** schedule a daily run with keywords and get new competitors in Slack, Sheets or your CRM.
- **Content and newsletters:** "top launches of the week" posts, roundups and datasets for AI agents.

### How does the Product Hunt scraper work?

Product Hunt protects www.producthunt.com with a Cloudflare browser challenge, which blocks most scrapers on datacenter IPs. This actor uses three sources that are open to automated access:

1. **No token (default):** Product Hunt's public Atom feed of current featured launches (overall or per topic), plus Product Hunt's public embed badges for each launch's **live upvote count** and **top-5 daily / weekly / monthly rank**.
2. **With a free API token:** the official [Product Hunt API v2](https://api.producthunt.com/v2/docs) for historical leaderboards, specific URLs, descriptions, topics, media, makers and comments. It pages through results, waits out Product Hunt's rate limit, and removes duplicates.
3. **Website URLs:** each launch's Product Hunt redirect link is followed to get the product's real website (best effort; see Limitations).

#### Get a free Product Hunt API token (2 minutes)

1. Log in to Product Hunt and open [API dashboard → Applications](https://www.producthunt.com/v2/oauth/applications).
2. Click **Add an application**. Any name works; use `https://localhost` as the redirect URI.
3. Click **Create Token** under "Developer Token" and paste the token into **Product Hunt API token**. It is stored as a secret input.

### What does each Product Hunt scraping mode return?

| Mode                                 | Token?   | Returns                                                                                                   |
| ------------------------------------ | -------- | --------------------------------------------------------------------------------------------------------- |
| **Latest launches** (default)        | No       | Product Hunt's current featured launches (about 50), live upvotes, top-5 ranks                            |
| **Topics**                           | No       | Current launches in each topic (about 50 per topic)                                                       |
|                                      | Optional | With a token: every launch in the topic, newest first, optionally within a date range                     |
| **Leaderboard** (daily/weekly/month) | Optional | Without a token: current launches sorted by live upvotes. With a token: any past date range, fully ranked |
| **Specific launch URLs**             | Yes      | The full record for each URL                                                                              |

### How do I choose which Product Hunt launches to scrape?

| Field                  | Description                                                                       | Example                                           |
| ---------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------- |
| `mode`                 | `latest`, `topics`, `leaderboard` or `posts`                                      | `"leaderboard"`                                   |
| `topics`               | Topic slugs or URLs (Topics mode)                                                 | `["artificial-intelligence"]`                     |
| `period`               | `daily`, `weekly` (Monday–Sunday) or `monthly`, in Pacific Time like Product Hunt | `"daily"`                                         |
| `startDate`, `endDate` | Date range: `YYYY-MM-DD`, `today`, `yesterday` or `7 days`. Default: yesterday    | `"2026-09-01"`                                    |
| `postUrls`             | Launch URLs, slugs or IDs (Posts mode)                                            | `["https://www.producthunt.com/posts/notion-ai"]` |
| `searchKeywords`       | Keep launches mentioning any of these words (name, tagline, description, topics)  | `"crm, sales"`                                    |
| `maxItems`             | Max launches in total                                                             | `20`                                              |
| `maxPerGroup`          | Max launches per day/week/month or per topic, e.g. the top 10 of each day         | `10`                                              |
| `apiToken`             | Optional Product Hunt developer token                                             | `"..."`                                           |
| `includeMakers`        | Add makers (token)                                                                | `true`                                            |
| `includeComments`      | Add the most upvoted comments (token)                                             | `false`                                           |
| `maxCommentsPerLaunch` | Comments per launch                                                               | `20`                                              |
| `resolveWebsites`      | Resolve Product Hunt redirect links to real websites                              | `true`                                            |

Example: the top 10 launches of each day in September 2026.

```json
{
  "mode": "leaderboard",
  "period": "daily",
  "startDate": "2026-09-01",
  "endDate": "2026-09-30",
  "maxPerGroup": 10,
  "maxItems": 300,
  "apiToken": "YOUR_TOKEN"
}
```

Example, no token: today's AI and developer-tool launches mentioning "agent".

```json
{
  "mode": "topics",
  "topics": ["artificial-intelligence", "developer-tools"],
  "searchKeywords": "agent",
  "maxItems": 50
}
```

### What data do you get for each Product Hunt launch?

One dataset item per launch:

```json
{
  "id": "1252633",
  "name": "Acme Agents",
  "tagline": "AI agents that file your expense reports",
  "description": "Acme connects to your inbox and card feed...",
  "slug": "acme-agents",
  "url": "https://www.producthunt.com/posts/acme-agents",
  "website": "https://acme.example/",
  "websiteRedirectUrl": "https://www.producthunt.com/r/ABCDEF",
  "topics": ["Artificial Intelligence", "Fintech"],
  "votesCount": 293,
  "commentsCount": 41,
  "reviewsCount": 3,
  "reviewsRating": 5,
  "dailyRank": 1,
  "weeklyRank": null,
  "monthlyRank": null,
  "launchDate": "2026-09-17",
  "createdAt": "2026-09-16T18:44:42Z",
  "featuredAt": "2026-09-17T07:01:00Z",
  "featured": true,
  "thumbnail": "https://ph-files.imgix.net/....png",
  "media": [
    {
      "type": "image",
      "url": "https://ph-files.imgix.net/....png",
      "videoUrl": null
    }
  ],
  "hunter": {
    "id": "123",
    "name": "Jane Doe",
    "username": "janedoe",
    "headline": "Founder at Acme",
    "profileUrl": "https://www.producthunt.com/@janedoe",
    "twitterUsername": null,
    "websiteUrl": null,
    "avatarUrl": "https://ph-avatars.imgix.net/..."
  },
  "makers": [],
  "pricingType": null,
  "productLinks": [
    { "type": "website", "url": "https://www.producthunt.com/r/ABCDEF" }
  ],
  "comments": [
    {
      "id": "c1",
      "body": "Congrats on the launch!",
      "createdAt": "2026-09-17T08:00:00Z",
      "votesCount": 12,
      "parentId": null,
      "url": "https://www.producthunt.com/posts/acme-agents#comment-c1",
      "author": null
    }
  ],
  "source": "api",
  "scrapedAt": "2026-09-29T18:00:00.000Z"
}
```

(Illustrative record.)

**Field notes**

- `source` is `feed` (no token) or `api` (token). Without a token, `description`, `slug`, `commentsCount`, `launchDate`, `featuredAt`, `thumbnail`, `media` and `makers` are `null`/empty, `topics` holds the topic you asked for, and `hunter` has only a name.
- `votesCount` without a token is read live from Product Hunt's public badge for the launch.
- `dailyRank`, `weeklyRank`, `monthlyRank`: in leaderboard mode with a token, the launch's position in Product Hunt's ranking order for that period. Without a token, only top-5 "Product of the Day/Week/Month" ranks are known; others are `null`.
- `launchDate` is the Pacific-Time day the launch was featured (or created, if never featured).
- `makers`, `hunter` and comment `author`: Product Hunt hides names and usernames of most users from third-party API apps. Hidden fields are `null`, and fully hidden people are left out.
- `pricingType` is not exposed by the API or the feed and is always `null` for now.
- The dataset's **Overview** view shows the main columns. Export as JSON, CSV, Excel, XML or HTML, or use the Apify API.

### How much does it cost to scrape Product Hunt?

Pay per event:

| Event     | Price                   | When                                                  |
| --------- | ----------------------- | ----------------------------------------------------- |
| `launch`  | $0.001 ($1.00 / 1,000)  | Each launch saved to the dataset                      |
| `comment` | $0.0003 ($0.30 / 1,000) | Each comment included (only with Include comments on) |

- The default run (20 launches) costs $0.02.
- Apify's standard small actor-start fee applies. The actor stops cleanly at your run's maximum charge, and you are never billed for launches it didn't save. Launches removed by keyword filters or as duplicates are free.

### Product Hunt scraper FAQ

**Do I need a Product Hunt account?**
No, for current launches and topics. For historical leaderboards, specific URLs and comments you need a free developer token (steps above).

**Why not scrape the website directly?**
www.producthunt.com shows a Cloudflare "Just a moment..." challenge to most automated traffic, including headless browsers on cloud IPs. The public feed, badges and official API are stable and fast, so runs don't break when the site changes.

**How many launches can I get?**
Without a token, about 50 current launches per feed (overall or per topic). With a token, as many as the date range holds, up to 10,000 per run. Product Hunt's API has a rate limit; big runs pause until it resets.

**Is it legal to scrape Product Hunt?**
The actor reads public data and Product Hunt's official API. Personal data (names of makers and commenters) may be covered by laws such as GDPR, and Product Hunt's API terms apply to your token. You are responsible for lawful use.

**Can I use it with the API, Make, Zapier or an AI agent?**
Yes, like any Apify actor: Apify API, JavaScript/Python clients, Make, Zapier, n8n, or the Apify MCP server.

### What are the limits of scraping Product Hunt?

- **No emails.** Makers' emails aren't public and aren't returned.
- Without a token the actor sees only Product Hunt's current launches (the feed), not past days, and no descriptions, comments or makers.
- `website` is best effort: Product Hunt's redirect links sit behind the same Cloudflare check. If the check blocks the actor, `website` is `null` and `websiteRedirectUrl` still opens the site in a browser.
- Leaderboard ranks from the API follow Product Hunt's API ranking order, which can differ slightly from the website for launches with equal scores.
- Product Hunt can change its feed, badges or API at any time. The actor is tested daily; report problems on the Issues tab.

### Related actors

- [google-trends](https://apify.com/cprussin/google-trends): Google Trends interest over time, regions, related queries and trending searches.
- [google-ads-transparency](https://apify.com/cprussin/google-ads-transparency): Ads from the Google Ads Transparency Center by advertiser or domain.
- [app-store-reviews](https://apify.com/cprussin/app-store-reviews): App Store and Google Play reviews for any app.

# Actor input Schema

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

Latest launches: Product Hunt's current featured launches (no token needed). Topics: current launches in one or more topics (no token needed). Leaderboard: daily, weekly or monthly leaderboards for a date range (past dates need an API token). Posts: specific launch URLs (needs an API token).

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

Topic slugs or URLs, e.g. artificial-intelligence, developer-tools, productivity or https://www.producthunt.com/topics/saas. Used in Topics mode.

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

Leaderboard mode: one leaderboard per day, per week (Monday to Sunday) or per month, in Pacific Time like Product Hunt.

## `startDate` (type: `string`):

First day (YYYY-MM-DD, "today", "yesterday" or relative like "7 days"). Default: yesterday. With a token this also filters Topics mode.

## `endDate` (type: `string`):

Last day, inclusive. Default: same as start date.

## `postUrls` (type: `array`):

Posts mode: Product Hunt launch URLs (https://www.producthunt.com/posts/<slug> or /products/<product>/launches/<slug>), slugs or numeric IDs.

## `searchKeywords` (type: `string`):

Optional. Only keep launches whose name, tagline, description or topics contain any of these comma-separated words (e.g. "crm, sales, outreach"). Filtered-out launches are not charged.

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

Stop after this many launches in total. Each launch is billed as one event.

## `maxPerGroup` (type: `integer`):

Optional. E.g. 10 = the top 10 of each day in a daily leaderboard range, or 10 per topic.

## `featuredOnly` (type: `boolean`):

With a token: skip launches Product Hunt did not feature on the homepage. Leaderboards are always featured-only, like on the site.

## `apiToken` (type: `string`):

Optional free developer token from https://www.producthunt.com/v2/oauth/applications (create an app, then "Create Token"). Unlocks historical leaderboards, specific URLs, descriptions, topics, media, makers and comments. Without it the actor uses Product Hunt's public feed.

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

With a token: add the makers of each launch. Product Hunt hides personal fields of most users from third-party apps; hidden fields are null.

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

With a token: add the most upvoted comments to each launch. Each comment is billed as one (cheaper) comment event.

## `maxCommentsPerLaunch` (type: `integer`):

Most upvoted comments first.

## `resolveWebsites` (type: `boolean`):

Follow Product Hunt's redirect link to get each product's real website. Best effort: skipped automatically if Product Hunt blocks it.

## `proxyConfiguration` (type: `object`):

Optional. Not needed: the feed and API are not rate-limited per IP for normal volumes.

## Actor input object example

```json
{
  "mode": "latest",
  "topics": [
    "artificial-intelligence"
  ],
  "period": "daily",
  "maxItems": 20,
  "featuredOnly": true,
  "includeMakers": true,
  "includeComments": false,
  "maxCommentsPerLaunch": 20,
  "resolveWebsites": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (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 = {
    "mode": "latest",
    "topics": [
        "artificial-intelligence"
    ],
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("cprussin/product-hunt-launches").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 = {
    "mode": "latest",
    "topics": ["artificial-intelligence"],
    "maxItems": 20,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("cprussin/product-hunt-launches").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 '{
  "mode": "latest",
  "topics": [
    "artificial-intelligence"
  ],
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call cprussin/product-hunt-launches --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,cprussin/product-hunt-launches"
        }
    }
}
```

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/XfIfOO6Hkkc3DNRYX/builds/flpAI9DMG20flQVs0/openapi.json
