# Product Hunt Scraper | Daily Launches, Votes & Founders (`resounding_diplomacy/product-hunt-scraper`) Actor

Scrape Product Hunt daily launches with upvotes, comments, topics, maker profiles, and website URLs. Filter by date and topic to track new product launches and trending tech. Extract founder info and sort by popularity. Export as JSON or CSV, run via API, or integrate with other tools.

- **URL**: https://apify.com/resounding\_diplomacy/product-hunt-scraper.md
- **Developed by:** [alars num](https://apify.com/resounding_diplomacy) (community)
- **Categories:** Marketing, Business
- **Stats:** 2 total users, 1 monthly users, 75.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Product Hunt Scraper

Scrape Product Hunt to discover trending products, launches, and makers. Extract product names, taglines, upvote counts, comment counts, topics, maker profiles, and thumbnails as structured JSON. No API key required.

This actor handles both Product Hunt's Next.js server-rendered pages and leaderboard/topic pages with robust DOM fallback parsing. It supports date filtering (today, yesterday, this week, this month), topic filtering, and automatic deduplication across multiple pages. Export to JSON, CSV, or via API.

### Features

- Date range filtering: today, yesterday, this week, or this month
- Topic filtering (e.g. `AI`, `SaaS`, `Developer Tools`)
- Dual parsing strategy: `__NEXT_DATA__` JSON extraction with DOM fallback for maximum reliability
- Automatic deduplication across leaderboard pages and homepage
- Sort by upvotes, comments, or newest
- Extracts product name, tagline, description, URL, upvotes, comments, topics, makers, thumbnail, and website
- Proxy rotation support for reliable access
- Rank assignment and scrape metadata included in every record

### Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `dateFilter` | String | `today` | Date range: `today`, `yesterday`, `this_week`, or `this_month` |
| `topic` | String | `""` | Topic slug to filter (e.g. `AI`, `SaaS`, `Developer Tools`) |
| `maxItems` | Integer | `50` | Maximum number of products to return |
| `sortBy` | String | `upvotes` | Sort order: `upvotes`, `comments`, or `newest` |
| `proxyConfiguration` | Object | Apify proxy | Optional custom proxy configuration |

#### Example input

```json
{
    "dateFilter": "this_week",
    "topic": "AI",
    "maxItems": 100,
    "sortBy": "upvotes"
}
````

### Output

```json
{
    "rank": 1,
    "name": "ExampleAI",
    "tagline": "AI-powered tool for developers",
    "description": "Detailed product description...",
    "url": "https://www.producthunt.com/posts/exampleai",
    "upvotes": 1240,
    "commentsCount": 89,
    "featuredAt": "2026-07-04T00:00:00.000Z",
    "topics": [
        { "name": "Artificial Intelligence", "slug": "artificial-intelligence" }
    ],
    "makers": [
        { "name": "Jane Doe", "username": "janedoe", "url": "https://www.producthunt.com/@janedoe" }
    ],
    "thumbnail": "https://...",
    "website": "https://exampleai.com",
    "productHuntUrl": "https://www.producthunt.com/posts/exampleai",
    "scrapedAt": "2026-07-04T10:30:00.000Z",
    "dateFilter": "this_week",
    "topicFilter": "AI"
}
```

### Use cases

- **Market research** — track new product launches and identify trends in specific categories
- **Lead generation** — extract maker profiles to build outreach lists of founders and product builders
- **Competitive intelligence** — monitor competitor launches and community reception
- **Content curation** — build weekly product roundup newsletters or blog posts
- **Investment scouting** — discover promising early-stage products by upvote velocity
- **Topic monitoring** — track all launches in a specific niche over time

### How to use

1. Open the actor on the Apify Store.
2. Set `dateFilter` to the desired time range.
3. Optionally enter a `topic` to narrow results to a category.
4. Adjust `maxItems` and `sortBy` as needed.
5. Click **Start** and export results to JSON, CSV, or connect via API.

Use Apify's scheduler for daily or weekly runs to build a historical dataset of Product Hunt launches.

# Actor input Schema

## `dateFilter` (type: `string`):

Which time period to scrape products from. 'today' fetches the current day's launches, 'yesterday' gets the previous day, 'this\_week' fetches the past 7 days, and 'this\_month' fetches the current calendar month.

## `topic` (type: `string`):

Filter products by topic slug (e.g. 'tech', 'ai', 'games', 'books', 'productivity'). Leave empty to scrape all topics. Uses Product Hunt topic URLs: /topics/{topic}/daily.

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

Maximum number of product items to scrape and push to the dataset.

## `sortBy` (type: `string`):

How to sort the scraped products. 'upvotes' sorts by most upvoted first (default), 'comments' by most commented, 'newest' by launch order.

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

Proxy settings for bypassing rate limits and bot detection. Apify Proxy (automatic) is recommended for Product Hunt. You can also use your own proxy group or residential proxies.

## Actor input object example

```json
{
  "dateFilter": "today",
  "topic": "",
  "maxItems": 50,
  "sortBy": "upvotes",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("resounding_diplomacy/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 = {}

# Run the Actor and wait for it to finish
run = client.actor("resounding_diplomacy/product-hunt-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{}' |
apify call resounding_diplomacy/product-hunt-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=resounding_diplomacy/product-hunt-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Product Hunt Scraper | Daily Launches, Votes & Founders",
        "description": "Scrape Product Hunt daily launches with upvotes, comments, topics, maker profiles, and website URLs. Filter by date and topic to track new product launches and trending tech. Extract founder info and sort by popularity. Export as JSON or CSV, run via API, or integrate with other tools.",
        "version": "0.0",
        "x-build-id": "cvr1Wa9VBHcZpUH5w"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/resounding_diplomacy~product-hunt-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-resounding_diplomacy-product-hunt-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/resounding_diplomacy~product-hunt-scraper/runs": {
            "post": {
                "operationId": "runs-sync-resounding_diplomacy-product-hunt-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/resounding_diplomacy~product-hunt-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-resounding_diplomacy-product-hunt-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "dateFilter": {
                        "title": "Date Filter",
                        "enum": [
                            "today",
                            "yesterday",
                            "this_week",
                            "this_month"
                        ],
                        "type": "string",
                        "description": "Which time period to scrape products from. 'today' fetches the current day's launches, 'yesterday' gets the previous day, 'this_week' fetches the past 7 days, and 'this_month' fetches the current calendar month.",
                        "default": "today"
                    },
                    "topic": {
                        "title": "Topic Filter",
                        "type": "string",
                        "description": "Filter products by topic slug (e.g. 'tech', 'ai', 'games', 'books', 'productivity'). Leave empty to scrape all topics. Uses Product Hunt topic URLs: /topics/{topic}/daily.",
                        "default": ""
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of product items to scrape and push to the dataset.",
                        "default": 50
                    },
                    "sortBy": {
                        "title": "Sort By",
                        "enum": [
                            "upvotes",
                            "comments",
                            "newest"
                        ],
                        "type": "string",
                        "description": "How to sort the scraped products. 'upvotes' sorts by most upvoted first (default), 'comments' by most commented, 'newest' by launch order.",
                        "default": "upvotes"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings for bypassing rate limits and bot detection. Apify Proxy (automatic) is recommended for Product Hunt. You can also use your own proxy group or residential proxies.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
