# Product Hunt Launch Pricing & Website Intel (`datagrit/product-hunt-launch-pricing-intel`) Actor

Top Product Hunt launches with the product's resolved website, live pricing page, plan tiers and lowest paid price.

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

## Pricing

Pay per event

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

### What does Product Hunt Launch Pricing & Website Intel do?

Product Hunt Launch Pricing & Website Intel reads Product Hunt leaderboards and goes one step further than a launch list: for every launch it follows the Product Hunt link to the product's real website, finds the pricing page and extracts the plans, prices, billing periods, free tier or trial, and the lowest paid price. You get clean, structured records you can export as JSON, CSV or Excel, call through the Apify API, or plug into n8n, Make and AI agents through MCP.
Pick a period, set a limit and run. With no dates it reads the latest finished day.

### Why use Product Hunt Launch Pricing & Website Intel?

- **Competitor and market research.** See what every new product in your category charges, whether it has a free tier, and how it positions its plans, without opening hundreds of pages.
- **Lead lists for B2B sales.** Each row has the product website and its domain, so you can feed fresh launches into enrichment and outreach, and filter by topic, votes or pricing model first.
- **Pricing benchmarks.** Collect lowest paid price and pricing model (freemium, paid, free, usage based, contact sales) across a week, a month or a year of launches.
- **Launch monitoring.** Schedule a daily run with the "only new" option and receive each launch once.

### Example output

| rank | productName | votes | websiteDomain | pricingModel | lowestPaidPrice | lowestPaidPeriod |
|---|---|---|---|---|---|---|
| 1 | CoreSpeed | 334 | corespeed.io | freemium | 20 | month |

```json
{
  "source": "leaderboard",
  "period": "daily",
  "periodLabel": "2026-10-04",
  "rank": 1,
  "productName": "CoreSpeed",
  "votes": 334,
  "topics": ["Productivity", "Marketing", "Developer Tools"],
  "websiteUrl": "https://corespeed.io/",
  "websiteDomain": "corespeed.io",
  "pricingStatus": "parsed",
  "pricingPageUrl": "https://corespeed.io/pricing",
  "pricingModel": "freemium",
  "hasFreeTier": true,
  "currency": "USD",
  "lowestPaidPrice": 20,
  "lowestPaidPeriod": "month",
  "pricingConfidence": "medium",
  "plans": [
    { "name": "Free", "price": 0, "period": null },
    { "name": "CoreSpeed Pro", "price": 20, "period": "month" }
  ],
  "found": true
}
```

### How much does it cost?

You pay a small fee per run and a price per launch record that is lower on paid Apify plans. The Apify free plan includes monthly credit to try it. Set a maximum spend on the run and the Actor stops when it is reached.
The Actor uses plain HTTP requests and no browser, so runs are fast and cheap on platform resources. Rows without a launch, such as the status row of an empty run, are never billed.

### Input

- **Leaderboard period** – daily, weekly, monthly or yearly.
- **Dates** – optional pages to read, such as `2026-10-04`, `2026-W40`, `2026-09` or `2025`. Empty means the latest finished period.
- **Product pages** – optional Product Hunt product links or slugs to look up directly.
- **Read pricing pages** – switch off to return only Product Hunt data and the website URL.
- **Minimum votes**, **Topics**, **Pricing model** – keep only the launches you need.
- **Only launches new since the last run** – skip launches this setup already returned.
- **Maximum launches** – limit in leaderboard order.
- **Proxy configuration** – used for Product Hunt requests only, because Product Hunt blocks datacenter addresses; the default is the Apify residential proxy. Product websites are fetched directly.

### Output fields

Each record contains the launch (`rank`, `productName`, `tagline`, `topics`, `votes`, `comments`, `featuredAt`, `productHuntUrl`), the website (`websiteUrl`, `websiteDomain`, `websiteStatus`, `websiteTitle`) and the pricing (`pricingStatus`, `pricingPageUrl`, `pricingModel`, `hasFreeTier`, `hasFreeTrial`, `contactSales`, `currency`, `lowestPaidPrice`, `lowestPaidPeriod`, `pricingConfidence`, `plans`).
When a run finds nothing you get one row with `found: false` (not billed) and the run status explains why.

#### How reliable is the pricing data?

Pricing pages have no common format, so prices are read from the visible text of the page. `pricingConfidence` tells you how clear the page was: `high`, `medium` or `low`. Treat `low` as a pointer to the pricing page, not as a final price. Pages that render prices only with JavaScript, hide them behind a login or block automated requests return `pricingStatus` other than `parsed`, and the website URL stays in the row.

#### Product Hunt page coverage

A leaderboard page lists the launches Product Hunt shows on its first page, about 15 to 20 per day, week, month or year. To cover more days, pass several dates.

### Is it legal to scrape this data?

The Actor reads only publicly available pages and does not log in or bypass access controls. You are responsible for using the data in line with applicable laws
(including data protection rules) and the source's terms. If you find an issue, open it in the Issues tab; problems are answered within one business day.

### FAQ

**How fresh is the data?** Every run reads Product Hunt and the product websites live.

**Can I schedule runs?** Yes, use Apify schedules with the "only new" option to get each launch once.

**Why is pricingStatus not "parsed" for some launches?** The website may be unreachable, may block automated requests, or may show prices only after a click. The row still has the website and the reason.

**Something looks wrong.** Open an issue with the input you used; layout changes at the source are fixed quickly.

### Related Actors

See other data Actors from the same publisher on the Store profile.

# Changelog

This Actor's version history is a separate document: https://apify.com/datagrit/product-hunt-launch-pricing-intel/changelog.md

# Actor input Schema

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

Which Product Hunt leaderboard to read: daily, weekly, monthly or yearly. With no dates the latest finished period is read (yesterday for daily, last week, last month, last year). Each leaderboard page lists the launches Product Hunt shows on its first page, about 15 to 20.

## `dates` (type: `array`):

Optional periods to read, one per line, in the format of the chosen period: 2026-10-04 for daily, 2026-W40 for weekly, 2026-09 for monthly, 2025 for yearly. Leave empty for the latest finished period. At most 60 pages and products per run; entries that do not fit the period are skipped and named in the run status.

## `productUrls` (type: `array`):

Optional Product Hunt product links or slugs to look up directly, one per line, for example https://www.producthunt.com/products/notion or notion. Each is returned as one row with its website and pricing, without leaderboard fields.

## `fetchPricing` (type: `boolean`):

Open each product website, find its pricing page and extract plans, the lowest paid price and the pricing model. Switch off to return only the Product Hunt data and the website URL, which is faster.

## `minVotes` (type: `integer`):

Keep only launches with at least this many votes. Launches with no vote count are kept.

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

Keep only launches in at least one of these Product Hunt topics, one per line, for example Artificial Intelligence or Developer Tools. Matching ignores case and accepts part of a topic name.

## `pricingModel` (type: `string`):

Keep only products with this pricing model: freemium, paid, free, usageBased or contactSales. Any keeps all. Needs Read pricing pages switched on; products whose pricing could not be read do not match a specific model.

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

Return only launches that an earlier run with the same period, dates, products, topics, minimum votes and pricing model has not returned yet. The memory is kept per combination of those settings in your account, so two monitors never hide each other's launches, and only returned launches are remembered. Use it with a schedule to get a stream of new launches.

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

Most launches to return in one run, in leaderboard order across all pages and products.

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

Proxy used for requests to Product Hunt only (it blocks datacenter addresses); product websites are always fetched directly. The default is the Apify residential proxy, which keeps the run working. Switch it off only if you run from your own residential address.

## Actor input object example

```json
{
  "period": "daily",
  "dates": [],
  "productUrls": [],
  "fetchPricing": true,
  "minVotes": 0,
  "topics": [],
  "pricingModel": "any",
  "onlyNew": false,
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All returned launches with website and pricing as a dataset.

## `sourceStats` (type: `string`):

Launches read per leaderboard page, product page lookups and page errors.

# 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 = {
    "period": "daily",
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("datagrit/product-hunt-launch-pricing-intel").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 = {
    "period": "daily",
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("datagrit/product-hunt-launch-pricing-intel").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 '{
  "period": "daily",
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call datagrit/product-hunt-launch-pricing-intel --silent --output-dataset

```

## MCP server setup

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

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/FnrazXDSjVX1lqIsN/builds/WmOpDXvqvBckQDIVB/openapi.json
