datagrit

datagrit › Data › Product Hunt Launch Pricing & Website Intel

Data

Product Hunt Launch Pricing & Website Intel

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

Run it on Apify StoreUse the APIfrom $2.80 per 1,000 results + $10 per run · no code needed
from $2.80 per 1,000 results + $10 per runpay only for launch records you get
JSON · CSV · Excelexport or call via API
Scheduled runsdaily or weekly feeds with Apify schedules
v0.1updated 2026-10-06

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?

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.

Output fields

Every result is one flat record, so it drops straight into a spreadsheet, a database or a CRM.

FieldTypeDescriptionExample
sourcestringWhere the row came from: leaderboard (a Product Hunt leaderboard page) or product (a product page you listed in the input). Null on the status row.leaderboard
periodstringLeaderboard period the launch was read from: daily, weekly, monthly or yearly. Null for rows read from a product page.daily
periodLabelstringThe leaderboard page as a readable label, for example 2026-10-04 for a day, 2026-W40 for a week, 2026-09 for a month or 2025 for a year.2026-10-04
rankintegerPosition on the leaderboard page, 1 is the top launch. Product Hunt orders the page by its own ranking, so this is the rank Product Hunt shows. Null for product page rows.1
postIdstringProduct Hunt launch (post) ID. Stable across runs and used for the only-new memory. Null for product page rows.1259946
productNamestringName of the launched product.CoreSpeed
taglinestringOne-line tagline from the launch.Ship AI agents faster
topicsarrayProduct Hunt topics of the launch, for example Artificial Intelligence or Developer Tools. Empty for product page rows and the status row.["Artificial Intelligence","Developer Tools"]
votesintegerUpvotes on the launch at the time of the run. Null for product page rows.412
commentsintegerComments on the launch at the time of the run. Null for product page rows.37
featuredAtstringWhen Product Hunt featured the launch, ISO 8601 in UTC. Null for product page rows.2026-10-04T07:01:00.000Z
productHuntUrlstringLink to the launch page, or to the product page for rows read from a product page.https://www.producthunt.com/posts/corespeed
websiteUrlstringThe product website the Product Hunt link redirects to, without tracking parameters (ref, utm_*), after following the site's own redirects. Null when the link did not resolve.https://corespeed.io/
websiteDomainstringHost of the website without www.corespeed.io
websiteStatusstringok when the website answered with an HTML page; blocked (HTTP 401, 403 or 429), unreachable (no HTML page, DNS or connection error), unresolved (the Product Hunt link could not be followed), noWebsite (Product Hunt has no website for the launch) or notChecked (pricing check switched off). Null on the status row.ok
websiteTitlestringThe title of the website home page.CoreSpeed - AI agents
pricingStatusstringparsed when plan prices were found; noPrices when a page was read but showed no prices (usage or quote-only pricing, or prices drawn by scripts); blocked, notFound or unreachable when no pricing page could be read; notRequested when the pricing check is switched off. Null when the website itself could not be read.parsed
pricingPageUrlstringThe page the prices were read from when pricingSource is pricingPage.https://corespeed.io/pricing
pricingSourcestringpricingPage when the prices come from a pricing page linked from the home page or found at /pricing; homepage when the home page itself shows plan prices.pricingPage
pricingModelstringfreemium (a free plan and a paid plan), paid (paid plans only), free (no paid price found), usageBased (priced per use or credit), contactSales (a quote is needed for the paid plans) or unknown. Derived from the text and prices of the page, so check pricingConfidence.freemium
hasFreeTierbooleanTrue when the pricing page shows a free plan or a $0 price.true
hasFreeTrialbooleanTrue when the pricing page offers a free trial.false
contactSalesbooleanTrue when a plan asks you to contact sales or request a quote.false
currencystringCurrency of the prices, ISO 4217 code.USD
lowestPaidPricenumberPrice of the cheapest paid plan in the currency, per lowestPaidPeriod. Null when no paid price was found.20
lowestPaidPeriodstringBilling period of the lowest paid price: month, year, week, day, one-time, usage (priced per unit or credit) or null when the page does not say.month
pricingConfidencestringhigh when named plans with prices and billing periods were found, medium when some of that was missing, low when plans had no names or the price came from loose text. Treat low as a hint to check the page. Null when no prices were found.high
plansarrayPlans found on the page, in page order. Empty when no prices were found.[{"name":"Starter","price":20,"currency"
sourceUrlstringThe Product Hunt page the row was read from.https://www.producthunt.com/leaderboard/daily/2026/10/4
foundbooleanTrue for a launch row, false on the single status row returned when nothing matched.true
scrapedAtstringWhen the run read the data, ISO 8601 in UTC.2026-10-06T12:00:00.000Z

Sample record

{
  "source": "leaderboard",
  "period": "daily",
  "periodLabel": "2026-10-04",
  "rank": 1,
  "postId": "1259946",
  "productName": "CoreSpeed",
  "tagline": "Ship AI agents faster",
  "topics": [
    "Artificial Intelligence",
    "Developer Tools"
  ],
  "votes": 412,
  "comments": 37,
  "featuredAt": "2026-10-04T07:01:00.000Z",
  "productHuntUrl": "https://www.producthunt.com/posts/corespeed",
  "websiteUrl": "https://corespeed.io/",
  "websiteDomain": "corespeed.io",
  "websiteStatus": "ok",
  "websiteTitle": "CoreSpeed - AI agents",
  "pricingStatus": "parsed",
  "pricingPageUrl": "https://corespeed.io/pricing",
  "pricingSource": "pricingPage",
  "pricingModel": "freemium",
  "hasFreeTier": true,
  "hasFreeTrial": false,
  "contactSales": false,
  "currency": "USD",
  "lowestPaidPrice": 20,
  "lowestPaidPeriod": "month",
  "pricingConfidence": "high",
  "plans": [
    {
      "name": "Starter",
      "price": 20,
      "currency": "USD",
      "period": "month",
      "perSeat": false,
      "priceText": "$20"
    }
  ],
  "sourceUrl": "https://www.producthunt.com/leaderboard/daily/2026/10/4",
  "found": true,
  "scrapedAt": "2026-10-06T12:00:00.000Z"
}

Input

FieldNameTypeWhat it does
periodLeaderboard periodstringWhich 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.
datesDatesarrayOptional 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.
productUrlsProduct pagesarrayOptional 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.
fetchPricingRead pricing pagesbooleanOpen 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.
minVotesMinimum votesintegerKeep only launches with at least this many votes. Launches with no vote count are kept.
topicsTopicsarrayKeep 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.
pricingModelPricing modelstringKeep 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.
onlyNewOnly launches new since the last runbooleanReturn 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.
maxItemsMaximum launchesintegerMost launches to return in one run, in leaderboard order across all pages and products.
proxyConfigurationProxy configurationobjectProxy 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.

Call it from your code

Run the Actor and get the results in one request. Replace YOUR_APIFY_TOKEN with the token from your Apify account settings.

curl -X POST "https://api.apify.com/v2/acts/datagrit~product-hunt-launch-pricing-intel/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"period":"daily","fetchPricing":true,"maxItems":20}'
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('datagrit/product-hunt-launch-pricing-intel').call({
  "period": "daily",
  "fetchPricing": true,
  "maxItems": 20
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items[0]);

Install with npm i apify-client.

from apify_client import ApifyClient
import os

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("datagrit/product-hunt-launch-pricing-intel").call(run_input={
  "period": "daily",
  "fetchPricing": True,
  "maxItems": 20
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(len(items), items[0] if items else None)

Install with pip install apify-client.

Frequently asked questions

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.

Try Product Hunt Launch Pricing & Website Intel on Apify

Guide

How to track Product Hunt launches and what each product charges — Pull Product Hunt leaderboards with each launch's real website, pricing page, plan tiers and lowest paid price, from Python or cURL.

Related Actors

Public procurement

UK Contract Expiry Radar - Recompete Leads

UK public contracts ending soon with incumbent supplier, buyer, value and contact - recompete leads from Contracts Finder award notices.

from $3.50 / 1,000 results
Company data

French Company Finder - Sirene Financials

French company lead lists from Sirene screened by net result and revenue, with net margin, size, matching establishment and optional directors.

from $5.60 / 1,000 results