# Product Hunt Scraper (`anyxsolutions/product-hunt-scraper`) Actor

Scrape Product Hunt launches from the homepage, daily, weekly, monthly or yearly leaderboards, topic feeds and product pages: name, tagline, description, votes, comments, ranks, topics, makers, website and reviews. Paste a URL, get clean JSON. No login, no API key.

- **URL**: https://apify.com/anyxsolutions/product-hunt-scraper.md
- **Developed by:** [Anyx Solutions](https://apify.com/anyxsolutions) (community)
- **Categories:** Lead generation, Developer tools
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.99 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

![banner](https://anyx.solutions/banners/product-hunt-scraper.png)

## Product Hunt Scraper

**Every launch on a Product Hunt leaderboard, topic or product page, with votes, comments, ranks, makers and website, as clean JSON.**

Product Hunt is where new software, AI tools and apps launch every day. This Actor reads the
homepage, the daily, weekly, monthly and yearly leaderboards, the launch feed for any topic, and
individual product pages, and returns each launch with its name, tagline, description, vote and
comment counts, daily, weekly and monthly rank, topics, categories, makers, hunter, pricing,
website, logo, review rating and follower count. Paste a Product Hunt URL; there is no login and
no API key. Built for startup and VC deal-flow scouting, competitor and market tracking, lead
generation, and newsletters that cover new launches.

### ⚡ Quick start

```json
{
  "startUrls": [
    { "url": "https://www.producthunt.com/leaderboard/daily/2026/10/12" }
  ],
  "maxItems": 5
}
```

### 🧩 Input

| Field                | Type    | Required | Default                                                          | Description                                                                                                                                         |
| -------------------- | ------- | -------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `startUrls`          | array   | yes      | —                                                                | Product Hunt URLs: the homepage, a leaderboard (daily, weekly, monthly or yearly), a topic, the launch feed, or a product page. See the list below. |
| `maxItems`           | integer | no       | —                                                                | Maximum number of launches per start URL. The input form starts at 5; leave it empty to get every launch the page lists.                            |
| `includeDetails`     | boolean | no       | `true`                                                           | Open each launch's product page to add its description, website, makers, hunter, categories, pricing, reviews and followers.                        |
| `proxyConfiguration` | object  | no       | `{ "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }` | Proxy settings. Product Hunt blocks datacenter IPs on its leaderboards, homepage and product pages, so residential proxies are used by default.     |

**Supported URLs**

| Page                    | Example                                                                                       | What you get                                       |
| ----------------------- | --------------------------------------------------------------------------------------------- | -------------------------------------------------- |
| Homepage                | `https://www.producthunt.com/`                                                                | Today's top launches, in ranking order (about 20). |
| Daily leaderboard       | `https://www.producthunt.com/leaderboard/daily/2026/10/12`                                    | The top launches of that day, in ranking order.    |
| Weekly, monthly, yearly | `https://www.producthunt.com/leaderboard/weekly/2026/41`, `…/monthly/2026/9`, `…/yearly/2025` | The top launches of that period, in ranking order. |
| Topic                   | `https://www.producthunt.com/topics/developer-tools`                                          | The 50 most recent launches in that topic.         |
| Launch feed             | `https://www.producthunt.com/feed`                                                            | The 50 most recent launches across Product Hunt.   |
| Product                 | `https://www.producthunt.com/products/notion`                                                 | The product and its latest launch.                 |

### 📤 Output

Each launch is one dataset row. Leaderboards and the homepage give votes, comments, ranks and
topics straight away; topics and the launch feed give the name, tagline, launch date and hunter,
and the product page fills in the rest. With `includeDetails` on (the default) every row is
completed from its product page.

#### Fields

| Field            | Type   | Description                                                                                                                   |
| ---------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------- |
| `id`             | string | Product Hunt launch ID.                                                                                                       |
| `slug`           | string | The launch's short name in Product Hunt URLs.                                                                                 |
| `name`           | string | Launch name.                                                                                                                  |
| `tagline`        | string | One-line tagline.                                                                                                             |
| `description`    | string | The launch description, or the product description when the launch has none. Needs `includeDetails`.                          |
| `url`            | string | The product's page on Product Hunt.                                                                                           |
| `productId`      | string | Product Hunt product ID. A product can have several launches.                                                                 |
| `productSlug`    | string | The product's short name in Product Hunt URLs.                                                                                |
| `productName`    | string | Product name, which can differ from the launch name (for example "ngram" for the launch "ngram 2.0"). Needs `includeDetails`. |
| `websiteUrl`     | string | The product's own website. Needs `includeDetails`.                                                                            |
| `thumbnailUrl`   | string | The launch thumbnail or product logo.                                                                                         |
| `launchedAt`     | string | When the launch went live (ISO 8601, Pacific time); for feed rows without details, when it was submitted.                     |
| `votesCount`     | number | Upvotes, as Product Hunt shows them. `null` when the maker hides them.                                                        |
| `commentsCount`  | number | Number of comments.                                                                                                           |
| `dailyRank`      | number | Rank on its launch day.                                                                                                       |
| `weeklyRank`     | number | Rank in its launch week.                                                                                                      |
| `monthlyRank`    | number | Rank in its launch month.                                                                                                     |
| `topics`         | array  | Topic names, such as "Developer Tools".                                                                                       |
| `categories`     | array  | Product categories, such as "Survey and form builders". Needs `includeDetails`.                                               |
| `pricingType`    | string | Pricing as the maker set it, such as `free` or `free_options`. Needs `includeDetails`.                                        |
| `makers`         | array  | The makers: `name`, `username`, `headline` and `profileUrl`. Needs `includeDetails`.                                          |
| `hunter`         | object | The person who posted the launch: `name`, `username`, `headline` and `profileUrl`.                                            |
| `reviewsCount`   | number | Number of product reviews. Needs `includeDetails`.                                                                            |
| `reviewsRating`  | number | Average review rating out of 5, when the product has reviews. Needs `includeDetails`.                                         |
| `followersCount` | number | Number of people following the product. Needs `includeDetails`.                                                               |
| `source`         | string | Where the launch was listed: `homepage`, `leaderboard`, `feed` or `product`.                                                  |
| `startUrl`       | string | The start URL that produced this row.                                                                                         |

<details><summary>Example output</summary>

```json
{
  "id": "1276516",
  "slug": "cube-forms",
  "name": "Cube Forms",
  "tagline": "Forms that can be filled by agents",
  "description": "Cube forms are made for AI agents. Your agent can create a form and fill one in directly, over MCP or plain HTTP, from Claude Code, ChatGPT, Cursor or any agent. No browser, no CAPTCHA.\n\nPeople can still open the same link and step in anytime: check what the agent filled, change anything, or fill it themselves.\n\nFree. Sign-ups, waitlists, bug reports, sales inquiries, any form.",
  "url": "https://www.producthunt.com/products/cube-forms",
  "productId": "1341315",
  "productSlug": "cube-forms",
  "productName": "Cube Forms",
  "websiteUrl": "https://ui.usecube.io/",
  "thumbnailUrl": "https://ph-files.imgix.net/8a1c15e6-c89c-4eda-b170-bfdab3eaf687.png",
  "launchedAt": "2026-10-12T00:01:00-07:00",
  "votesCount": 73,
  "commentsCount": 9,
  "dailyRank": 19,
  "weeklyRank": 19,
  "monthlyRank": 411,
  "topics": ["Productivity", "Developer Tools", "Artificial Intelligence"],
  "categories": ["Survey and form builders"],
  "pricingType": "free",
  "makers": [
    {
      "name": "Bonan Kou",
      "username": "bonan_kou",
      "headline": "Founder and CEO of EarthOnline",
      "profileUrl": "https://www.producthunt.com/@bonan_kou"
    }
  ],
  "hunter": {
    "name": "Bonan Kou",
    "username": "bonan_kou",
    "headline": "Founder and CEO of EarthOnline",
    "profileUrl": "https://www.producthunt.com/@bonan_kou"
  },
  "reviewsCount": 0,
  "reviewsRating": null,
  "followersCount": 63,
  "source": "homepage",
  "startUrl": "https://www.producthunt.com/"
}
```

</details>

### 💡 Use cases

- **Deal-flow and startup scouting** — track every day's top launches, their traction and their makers.
- **Competitor and market monitoring** — follow a topic's new launches and see who is shipping in your space.
- **Lead generation** — reach makers of new products, with their website and Product Hunt profile.
- **Newsletters and content** — build daily or weekly roundups of the best new products.
- **Trend research** — compare votes, comments and topics across days, months and years.

### ❓ FAQ

- **Do I need a Product Hunt account or API key?** No. The Actor reads the same public pages any visitor sees.
- **Why a residential proxy?** Product Hunt blocks cloud and datacenter IPs on its leaderboards, homepage and product pages. Topic and feed URLs work without a proxy when `includeDetails` is off, which is the cheapest way to track new launches.
- **How many launches does a leaderboard give?** The launches Product Hunt shows before "load more": about 17 on a leaderboard and about 20 on the homepage. For a longer history, add one daily leaderboard URL per day.
- **Why are some fields empty on feed rows?** The topic and launch feeds carry only the name, tagline, date and hunter. Keep `includeDetails` on and each row is completed from its product page, including votes and comments for recent launches.
- **Why is `votesCount` sometimes `null`?** Product Hunt lets makers hide the vote count, usually during the first hours of a launch.
- **A topic URL returned nothing.** Product Hunt does not have a launch feed for every topic or category; the log says when a topic is not recognised. Try the topic's slug from a `producthunt.com/topics/...` link.
- **Can I scrape many pages at once?** Yes. Add one URL per page to `startUrls`; `maxItems` applies to each one separately.
- **Something looks off?** Open an issue with the URL you used.

### 🔗 More scrapers by Anyx

- [Hacker News Scraper](https://apify.com/anyxsolutions/hacker-news-scraper)
- [GitHub Trending Scraper](https://apify.com/anyxsolutions/github-trending-scraper)
- [Substack Scraper](https://apify.com/anyxsolutions/substack-scraper)
- [Google News Scraper](https://apify.com/anyxsolutions/google-news-scraper)

### 🤝 Anyx Solutions

We build custom scrapers and data-extraction pipelines.

- Email: tantosthor@gmail.com

### 🖼 Image credit

Image credit: [producthunt.com](https://www.producthunt.com/)

# Actor input Schema

## `startUrls` (type: `array`):

Product Hunt pages to scrape: the homepage (https://www.producthunt.com/), a leaderboard such as https://www.producthunt.com/leaderboard/daily/2026/10/12 (weekly, monthly and yearly work too), a topic such as https://www.producthunt.com/topics/developer-tools, the launch feed (https://www.producthunt.com/feed), or a product page such as https://www.producthunt.com/products/notion.

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

Maximum number of launches to return per start URL. Leave empty to get every launch the page lists.

## `includeDetails` (type: `boolean`):

Open each launch's product page to add its description, website, makers, hunter, categories, pricing, reviews and followers. Adds one request per launch; turn it off when the list fields are enough.

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

Proxy settings. Product Hunt blocks datacenter IPs on its leaderboards, homepage and product pages, so residential proxies are used by default. Topic and feed URLs with product details turned off also work without a proxy.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.producthunt.com/leaderboard/daily/2026/10/12"
    }
  ],
  "maxItems": 5,
  "includeDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "startUrls": [
        {
            "url": "https://www.producthunt.com/leaderboard/daily/2026/10/12"
        }
    ],
    "maxItems": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("anyxsolutions/product-hunt-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 = {
    "startUrls": [{ "url": "https://www.producthunt.com/leaderboard/daily/2026/10/12" }],
    "maxItems": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("anyxsolutions/product-hunt-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 '{
  "startUrls": [
    {
      "url": "https://www.producthunt.com/leaderboard/daily/2026/10/12"
    }
  ],
  "maxItems": 5
}' |
apify call anyxsolutions/product-hunt-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,anyxsolutions/product-hunt-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/QDXlAQWqBxcefaD4B/builds/DMgfvHiZJT14dCwAo/openapi.json
