# Product Hunt Scraper — Launch Monitor & Feed (`zenomastro/product-hunt-launch-monitor`) Actor

Product Hunt scraper and launch monitor for startup research. Collect launches, ranks, upvotes, comments, makers, topics, media and links; optionally enrich public product pages with social, follower, review, funding, team and YC signals when exposed.

- **URL**: https://apify.com/zenomastro/product-hunt-launch-monitor.md
- **Developed by:** [Rosario Vitale](https://apify.com/zenomastro) (community)
- **Categories:** Business, Marketing, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 launch records

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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 — Launch Intelligence & Monitor

### Why use this Actor?

Product Hunt scraper and launch monitor for startup research. Collect launches, ranks, upvotes, comments, makers, topics, media and links; optionally enrich public product pages with social, follower, review, funding, team and YC signals when exposed.

### Features

- **Maximum launches** — Maximum launches. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Include keywords** — Keep launches whose title/content/external links contain at least one keyword.
- **Exclude keywords** — Exclude keywords. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Only launches from last N hours (0 = off)** — Only launches from last N hours (0 = off). Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Persistent monitor key** — Reuse on schedules to mark previously seen launches.
- **Emit only unseen launches** — Emit only unseen launches. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Include raw feed HTML** — Include raw feed HTML. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Request timeout** — Request timeout. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Retries** — Retries. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.
- **Enrich public product pages** — Fetch a bounded set of public Product Hunt product pages and extract metadata such as tagline, image and public vote/comment counts when exposed.
- **Maximum enriched launches** — Cap public product-page enrichment requests.
- **Enrichment concurrency** — Parallel Product Hunt product-page enrichment requests.

### Use cases

- Startup discovery.
- Competitor launch tracking.
- Vc and market research.
- Daily product monitoring.

### Example input

```json
{
  "maxItems": 50,
  "sinceHours": 0,
  "onlyNew": false,
  "includeContentHtml": false,
  "requestTimeoutSecs": 25,
  "retries": 2
}
```

### Pricing & cost control

Use the bounded input limits and filters to keep runs predictable. Pay-per-result Actors only charge primary result rows; summary, status and monitoring metadata are designed to add context without inflating result volume.

### FAQ

**What is this Actor for?**\
It is designed for startup discovery, competitor launch tracking, VC and market research.

**Can I run it on a schedule?**\
Yes. You can schedule Actor runs on Apify and send the resulting dataset into automations, webhooks, storage, or downstream APIs.

**How do I control cost and run size?**\
Use the input limits and filters shown in the Actor input form. The Actor applies bounded defaults and hard caps so large jobs remain predictable.

### Search keywords

product hunt scraper, product hunt scraper github, product hunt scraping, apify product hunt scraper, product hunt what is it, product hunt top products, product hunt ideas, product hunt launches, product hunt launches today, product hunt launch guide, product hunt launch time, product hunt launch checklist, product hunt launch strategy, product hunt launch service

Turn Product Hunt's public Atom launch feed into a clean, low-cost monitoring dataset for startup discovery, VC deal flow, competitor tracking, newsletters and market research.

Unlike leaderboard scrapers that require brittle page parsing, this Actor uses the public Product Hunt feed directly. It does not require a Product Hunt login, browser, cookie or developer token. That makes it especially suitable for frequent scheduled runs.

### Features

- Public Product Hunt Atom feed.
- Product title, Product Hunt URL, publication/update timestamps and author.
- Cleaned content text plus external links and images extracted from the feed entry.
- Include and exclude keyword filters applied before result charging.
- Optional last-N-hours filter.
- Persistent `monitorKey` that marks previously seen launch IDs.
- `onlyNew` mode for alerts, Slack/Zapier workflows and daily digests.
- Deterministic deduplication, retries, timeouts and a free summary row.
- Optional raw content HTML for advanced pipelines.

### Example

```json
{
  "maxItems": 50,
  "includeKeywords": ["AI", "developer"],
  "monitorKey": "daily-ai-products",
  "onlyNew": true
}
```

A launch row is ready for JSON, CSV, spreadsheets, a CRM or an LLM pipeline. External links discovered inside the public feed entry are preserved separately so downstream systems do not need to parse HTML again.

### Monitoring strategy

Schedule the Actor every hour or every day with the same `monitorKey`. The Actor keeps a bounded persistent set of launch IDs and can return only entries it has not seen before. This avoids repeatedly billing and processing the same launch in downstream workflows.

### Scope

This product intentionally focuses on the reliable public launch feed rather than claiming historical leaderboard coverage that depends on Product Hunt's changing web application. Use a leaderboard-specific Actor when historical ranking is the requirement; use this Actor when fresh launches, monitoring reliability and low execution cost matter most.

Use public Product Hunt data responsibly and comply with applicable Product Hunt terms and privacy requirements.

### Extended capabilities

- Combine the live Product Hunt feed with optional product, topic, category, or leaderboard source pages.
- Extract makers, topics, media URLs, engagement counts, rank when exposed, website metadata, and launch details.
- Monitor new launches with persistent state and source-page diagnostics.

# Actor input Schema

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

Maximum launches. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `includeKeywords` (type: `array`):

Keep launches whose title/content/external links contain at least one keyword.

## `excludeKeywords` (type: `array`):

Exclude keywords. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `sinceHours` (type: `integer`):

Only launches from last N hours (0 = off). Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `monitorKey` (type: `string`):

Reuse on schedules to mark previously seen launches.

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

Emit only unseen launches. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `includeContentHtml` (type: `boolean`):

Include raw feed HTML. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `requestTimeoutSecs` (type: `integer`):

Request timeout. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `retries` (type: `integer`):

Retries. Configure this value to control the Actor run; bounded defaults are chosen for reliable production use.

## `includePageEnrichment` (type: `boolean`):

Fetch a bounded set of public Product Hunt product pages and extract metadata such as tagline, image and public vote/comment counts when exposed.

## `maxEnrichedItems` (type: `integer`):

Cap public product-page enrichment requests.

## `enrichmentConcurrency` (type: `integer`):

Parallel Product Hunt product-page enrichment requests.

## `includeFeed` (type: `boolean`):

Include current launches from Product Hunt's public feed.

## `sourceUrls` (type: `array`):

Optional Product Hunt leaderboard, topic, category or product URLs. Product links discovered on these pages are merged with feed launches.

## Actor input object example

```json
{
  "maxItems": 50,
  "includeKeywords": [],
  "excludeKeywords": [],
  "sinceHours": 0,
  "onlyNew": false,
  "includeContentHtml": false,
  "requestTimeoutSecs": 25,
  "retries": 2,
  "includePageEnrichment": false,
  "maxEnrichedItems": 20,
  "enrichmentConcurrency": 4,
  "includeFeed": true,
  "sourceUrls": []
}
```

# 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("zenomastro/product-hunt-launch-monitor").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("zenomastro/product-hunt-launch-monitor").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 '{}' |
apify call zenomastro/product-hunt-launch-monitor --silent --output-dataset

```

## MCP server setup

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

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/lo5O38R9pBBcTpj9E/builds/DMe4q7VV9dE6t3w3x/openapi.json
