# Product Hunt Scraper — Launches, Makers & Emails (`fermaja/product-hunt-scraper`) Actor

Startup leads from Product Hunt: every launch with website, founders (X/LinkedIn), company emails, votes and ranks. Search any niche, topic, category or date range. Fast, no API key, and incomplete launches are never charged.

- **URL**: https://apify.com/fermaja/product-hunt-scraper.md
- **Developed by:** [Fermaja](https://apify.com/fermaja) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.90 / 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.
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

### Product Hunt Scraper: startup leads, founders and emails from every launch

**Product Hunt Scraper** turns [Product Hunt](https://www.producthunt.com) into a clean, ready-to-use lead and market-intelligence database. Every day 40–60 new startups are featured there (and hundreds more launch without being featured), each one listing its **website, founders and team**. This Actor collects all of it for you:

- 🏢 **The company**: name, tagline, description, website, pricing, categories, rating, followers, Y Combinator alumni flag
- 👥 **The people**: every maker (founders and team) with their headline, plus their **X/Twitter, LinkedIn and personal site** if you want them
- 📧 **The contacts**: public **emails from the company's own website**, plus its X, LinkedIn, Instagram, YouTube and Facebook pages
- 📈 **The traction**: votes, comments, daily/weekly/monthly rank, badges, launch history

Export as **CSV, Excel or JSON**, send it to Google Sheets, HubSpot, Make, Zapier or n8n, or call it from the API. No Product Hunt API key, no login, no browser.

> **Try it now:** leave everything as it is and click **Start**. You get yesterday's top launches in a few seconds.

![Product Hunt Scraper results: the "Leads & contacts" view with companies, websites, emails, makers and socials](https://api.apify.com/v2/key-value-stores/AT59U94AyqLCQGT21/records/output-preview.png?signature=1w2VxPrVkN3t9vuHPUpHi)

*Real results from a run searching "email marketing": 20 companies in 12 seconds, shown in the **Leads & contacts** view.*

### 🆕 What's new (October 17, 2026)

A big reliability and quality update, built from real customer runs:

- ✅ **Full details on every launch again.** Product Hunt changed its website and launch details (website, makers, emails) stopped loading. That's fixed, and the scraper now **repairs itself automatically** if Product Hunt changes again.
- ⚡ **About 8× faster.** A typical run now finishes in **7–15 seconds**.
- 🎯 **New "Auto" mode.** Search "crm" or paste a product URL and you get **exactly that**, not yesterday's leaderboard on top. With an empty form you still get yesterday's best launches.
- 💸 **You never pay for incomplete data.** If a launch's details can't be loaded, it's still saved, but **free of charge**.
- 🧹 **Cleaner emails.** Only the company's own addresses are kept. Demo addresses shown in product screenshots (`jenny@acme.com`) and quoted customers are filtered out, so you're never charged for junk.

### Who uses it

| You are… | You use it to… |
|---|---|
| 🎯 **Sales & SDR teams, agencies** | Build fresh B2B lead lists every day: brand-new startups with founders, websites and emails, before your competitors reach them |
| 💰 **VCs, angels & scouts** | Spot traction early: daily/weekly/monthly winners, votes, YC alumni, launch history |
| 🔍 **Founders & product marketers** | Map every competitor in your category: who launched, how they position, how the market reacted |
| 📰 **Newsletters & media** | Auto-generate "Top launches of the week" with a schedule |
| 🤖 **AI agents & automations** | Feed fresh startup data into your workflows via API or MCP |

### How it works

1. **Pick what to scrape.** Choose any mix of sources:
   - **Leaderboards**: daily, weekly, monthly or yearly, for any date or date range
   - **Search terms**: `crm`, `email marketing`, `ai video editor`…
   - **Topics & categories**: `developer-tools`, `ai-agents`, `saas`…
   - **Product Hunt URLs**: paste any launch, product, topic, category, search or leaderboard link. The type is detected automatically.
2. **The Actor reads Product Hunt's own data feed**, the same structured data the website uses. You get exact numbers (votes, ranks, dates) instead of guesses scraped from the page layout. It's fast, light, and needs no browser.
3. **It enriches each launch.** It loads the full launch page (description, makers, hunter, socials, ratings). If you want, it also opens each maker's profile (X, LinkedIn, website) and visits the company's website (home, /contact, /about) to collect public emails.
4. **You get one clean row per launch**, saved in the order shown on Product Hunt, ready to export or sync.

💡 **Automate it:** save your input as a **Task** with *From date* = `yesterday` and add a daily **Schedule**. You'll get every new launch each morning, delivered to Google Sheets, Slack or your CRM.

### Ready-made inputs

**1. Daily lead list: every launch of the day with founders and emails**

```json
{
    "leaderboard": "daily",
    "dateFrom": "yesterday",
    "includeAllLaunches": true,
    "includeMakerProfiles": true,
    "findContacts": true
}
```

**2. Competitor research: every product in a niche**

```json
{
    "searchQueries": ["email marketing"],
    "categories": ["email-marketing"],
    "maxItems": 100,
    "findContacts": true
}
```

**3. Investor scan: the best launches of each month this year**

```json
{
    "leaderboard": "monthly",
    "dateFrom": "2026-01-01",
    "dateTo": "2026-09-30"
}
```

### Example result

A real row from a search for `email marketing` (shortened: Mailmodo lists 13 makers, 3 are shown):

```json
{
    "name": "Mailmodo AI",
    "tagline": "Complete email marketing with just prompts",
    "website": "https://mailmodo.com",
    "launchUrl": "https://www.producthunt.com/posts/mailmodo-ai",
    "launchDate": "2025-10-14",
    "votes": 467,
    "commentsCount": 72,
    "dailyRank": 2,
    "weeklyRank": 8,
    "monthlyRank": 33,
    "productCategories": ["Email marketing", "Marketing automation platforms"],
    "productRating": 4.83,
    "productFollowers": 1899,
    "productLaunchesCount": 13,
    "wasInYCombinator": true,
    "makers": [
        { "name": "Aquibur Rahman", "headline": "Cofounder & CEO, Mailmodo.com", "profileUrl": "https://www.producthunt.com/@aquib" },
        { "name": "Apurv Gupta", "headline": "Building Mailmodo, ⚡ing email marketing.", "profileUrl": "https://www.producthunt.com/@apurv_gpt" },
        { "name": "Devyesh Tandon", "headline": "Cofounder at Mailmodo", "profileUrl": "https://www.producthunt.com/@devyesh" }
    ],
    "hunter": { "name": "Aquibur Rahman", "username": "aquib" },
    "emails": ["enquiries@mailmodo.com", "support@mailmodo.com"],
    "websiteSocials": {
        "twitter": "https://twitter.com/mailmodo",
        "linkedin": "https://www.linkedin.com/company/mailmodo",
        "instagram": "https://www.instagram.com/mailmodohq",
        "youtube": "https://www.youtube.com/@mailmodo"
    },
    "source": "search \"email marketing\""
}
```

That run returned **20 email-marketing companies in 12 seconds**, and 11 of the 20 came with at least one company email.

The **Output** tab has three ready-made views (**Launches**, **Leads & contacts**, **Product details**), and you can download as JSON, CSV, Excel, XML, HTML or RSS.

### Input options

| Field | What it does |
|---|---|
| **Leaderboard** | **Auto** (default: daily, unless you add searches/URLs/topics), Daily, Weekly, Monthly, Yearly, or None |
| **From date / To date** | A single day or a range, e.g. `2026-01-01` → `2026-01-31`. Also accepts `yesterday`, `today`, `7 days ago`. Days are in Pacific time, like on Product Hunt. |
| **Product Hunt URLs** | Any leaderboard, launch (`/posts/…`), product (`/products/…`), topic, category or search URL |
| **Topics / Categories / Search terms** | e.g. `developer-tools`, `ai-agents`, `crm` |
| **Max launches** | Stop after N launches |
| **Include non-featured launches** | Every launch of the day, not only featured ones: often 3–5× more companies for lead lists |
| **Launch details, makers & hunter** | On by default |
| **Maker contact profiles** | Adds X/Twitter, LinkedIn, website, followers and bio for each maker |
| **Find emails on product websites** | Collects public emails and social links from the company's site |
| **Launch comments** | Comment text, author and votes |

### All data fields

| Group | Fields |
|---|---|
| Launch | `name`, `tagline`, `description`, `launchUrl`, `launchDate`, `featuredAt`, `isFeatured`, `votes`, `launchDayVotes`, `commentsCount`, `dailyRank`, `weeklyRank`, `monthlyRank`, `badges`, `launchNumber`, `pricing`, `topics`, `thumbnailUrl`, `media` |
| People | `makers` (name, username, headline, profileUrl + optional X, LinkedIn, website, followers, bio), `makerNames`, `makerProfileUrls`, `hunter` |
| Company | `productUrl`, `website`, `websiteDomain`, `productRating`, `productReviewsCount`, `productFollowers`, `productLaunchesCount`, `productCategories`, `firstLaunchedAt`, `isTopProduct`, `wasInYCombinator`, `goldenKittyAwards` |
| Socials | `twitterUrl`, `linkedinUrl`, `facebookUrl`, `instagramUrl`, `githubUrl`, `iosAppUrl`, `androidAppUrl`, `websiteSocials` |
| Optional | `emails`, `comments` |

### Pricing: pay only for what you get

| Event | Price |
|---|---|
| **Launch** (company, makers, hunter & details) | **$0.0012** per launch, i.e. **$1.20 per 1,000** |
| Maker contact profile (optional) | $0.0004 per maker |
| Website emails (optional) | $0.0015 per launch, **only when at least one email is found** |
| Run start (from **October 31, 2026**) | $0.005 per run |
| Launch whose details couldn't be loaded | **Free** |

**Real examples:**

- Yesterday's daily leaderboard (~45 launches): about **$0.06**
- 20 companies in a niche, with emails: about **$0.05**
- A whole month of daily leaderboards (~1,400 launches): about **$1.70**

Higher Apify plans get lower per-launch prices automatically. Apify's free plan includes monthly credit, so you can test it for free. Cap any run with **Max launches** or **Max cost per run**: the scraper stops cleanly at your limit.

### Tips

- **Biggest lead lists:** turn on *Include non-featured launches* + *Find emails on product websites*.
- **Cheapest overview:** turn off *Launch details* for a leaderboard-only list (name, votes, rank, topics).
- **Older launches work too:** founders come from the product's team page, so launches from years ago still include their makers.
- **Monitoring:** schedule a task with `yesterday` and connect Google Sheets, Slack or a webhook.

### FAQ

**Do I need a Product Hunt API key?** No. The scraper reads the same public data the website shows. No account or token is needed.

**Why do some launches have no email?** Emails are only taken from the company's own website, and only addresses on the company's own domain are kept. Some companies don't publish one, and then you aren't charged the email fee.

**Why do some makers have no X/LinkedIn?** Those links come from each maker's Product Hunt profile. If a maker hasn't added them, there's nothing to collect.

**Can I get every launch of a day, not only the featured ones?** Yes. Turn on *Include non-featured launches*.

**Is scraping Product Hunt legal?** This Actor only collects publicly available data. You're responsible for how you use it: names and emails are personal data protected by laws like GDPR, so make sure you have a legitimate reason to process them. If unsure, consult a lawyer. More in Apify's post on [the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

**Something not working, or need a field?** Open an issue in the **Issues** tab. Issues get answered fast, and the October 17 update came directly from real runs. Custom data pipelines are available on request too.

# Actor input Schema

## `leaderboard` (type: `string`):

Which Product Hunt leaderboard to scrape for the dates below. "Auto" scrapes the daily leaderboard only when you don't add any URLs, topics, categories or searches. Choose "None" to scrape only the URLs, topics, categories or searches you add.

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

First day of the leaderboard range: YYYY-MM-DD, "yesterday", "today" or "7 days ago". Product Hunt days are in Pacific time. Leave empty to scrape yesterday (daily) or the current week/month/year.

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

Last day of the range (inclusive). Leave empty to scrape only the From date. Example: From 2026-01-01, To 2026-01-31 with the Daily leaderboard scrapes every day of January.

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

Optional. Paste any Product Hunt URL — leaderboards (/leaderboard/daily/2026/10/8), launches (/posts/…), products (/products/…), topics (/topics/…), categories (/categories/…) or search (/search?q=…). The page type is detected automatically.

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

Optional. Topic slugs or URLs, e.g. "developer-tools", "artificial-intelligence", "saas".

## `categories` (type: `array`):

Optional. Category slugs or URLs, e.g. "ai-agents", "crm", "email-marketing".

## `searchQueries` (type: `array`):

Optional. Keywords to search Product Hunt products for, e.g. "crm", "ai video editor".

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

Stop after this many launches across all sources. Leave empty for no limit. A daily leaderboard usually has 30–60 featured launches.

## `includeAllLaunches` (type: `boolean`):

Product Hunt's leaderboards show featured launches by default. Turn this on to also get every other launch of the day (often 3–5× more products — good for lead lists).

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

Order of products on topic and category pages.

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

Adds the full description, makers and hunter, website, pricing, media, badges and product socials (X, LinkedIn, GitHub…). Turn off for a faster, leaderboard-only list.

## `includeMakerProfiles` (type: `boolean`):

For every maker, adds their X/Twitter, LinkedIn and personal website from their Product Hunt profile, plus followers and bio. Billed per maker profile.

## `findContacts` (type: `boolean`):

Visits each product's own website (home, /contact, /about) and collects public emails and social links. Billed only for launches where at least one email is found.

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

Adds comments and replies (text, author, votes) to each launch.

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

Only used when Launch comments is on.

## `maxConcurrency` (type: `integer`):

How many launches are processed in parallel. The default is fast and safe.

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

Apify Proxy (default datacenter) works out of the box and is included in the price.

## Actor input object example

```json
{
  "leaderboard": "auto",
  "dateFrom": "yesterday",
  "maxItems": 50,
  "includeAllLaunches": false,
  "sortBy": "highest_rated",
  "includeDetails": true,
  "includeMakerProfiles": false,
  "findContacts": false,
  "includeComments": false,
  "maxCommentsPerLaunch": 20,
  "maxConcurrency": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

## `leads` (type: `string`):

No description

## `summary` (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 = {
    "dateFrom": "yesterday",
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("fermaja/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 = {
    "dateFrom": "yesterday",
    "maxItems": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("fermaja/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 '{
  "dateFrom": "yesterday",
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call fermaja/product-hunt-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fermaja/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/6jRbbWULwAthXOsRO/builds/hMT06o3ciQvtx8obF/openapi.json
