Product Hunt Launch Monitor — Products & Upvotes avatar

Product Hunt Launch Monitor — Products & Upvotes

Under maintenance

Pricing

from $2.34 / 1,000 result storeds

Go to Apify Store
Product Hunt Launch Monitor — Products & Upvotes

Product Hunt Launch Monitor — Products & Upvotes

Under maintenance

Collect Product Hunt's current ranked or newest launch listings. Export product names, taglines, URLs, visible upvotes, makers, topics, and dates, with optional local filtering.

Pricing

from $2.34 / 1,000 result storeds

Rating

0.0

(0)

Developer

North Glass Labs

North Glass Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

4 days ago

Last modified

Categories

Share

Product Hunt Daily Launch Monitor & Scraper

Monitor the products visible on Product Hunt's current server-rendered ranked or newest listing. Get structured launch names, taglines, Product Hunt URLs, displayed upvotes, topics, and detail-page metadata when available.

Use it for daily launch monitoring, startup research, and product discovery without maintaining a browser scraper.

What this Actor does

  1. Fetches the current ranked homepage (popular or top) or /newest (newest).
  2. Parses only verified launch cards from that server-rendered listing.
  3. Optionally applies searchQuery as a local filter over each visible product's name, tagline, and topics.
  4. Visits each selected product page and enriches the listing record when Product Hunt exposes additional metadata.
  5. Pushes one structured item per product to the default dataset.

Scope and limitations

  • This is not a full-catalog Product Hunt search. Product Hunt's dedicated search results are currently client-rendered, so this Actor only filters products present in the current ranked/newest server-rendered listing.
  • popular and top currently select the same ranked homepage; they do not represent separate historical or all-time datasets.
  • Product Hunt may omit upvotes, topics, maker profiles, or launch dates. Missing lists are returned as []; missing text/date values may be null; unavailable upvotes are 0.
  • makers contains Product Hunt display names and profile URLs when those links are present. The Actor does not return email addresses, phone numbers, or other maker contact data.
  • A filter with no match in the verified current listing returns an empty dataset. A blocked or unparseable listing fails instead of reporting a false-success empty run.

Input

FieldTypeDefaultDescription
searchQuerystring""Optional case-insensitive local filter over visible names, taglines, and topics.
maxResultsinteger50Maximum products to enrich and save; range 1–500.
sortBystringpopularnewest fetches /newest; popular and top fetch the ranked homepage.

The ranked homepage is the proven default. Product Hunt controls /newest, and its availability can vary or return an upstream 404; the Actor fails visibly rather than substituting ranked products for an explicitly requested newest listing.

Daily monitoring input

{
"searchQuery": "",
"maxResults": 50,
"sortBy": "popular"
}

Focused startup-research input

{
"searchQuery": "productivity",
"maxResults": 20,
"sortBy": "popular"
}

Because filtering is local to the current listing, a phrase such as "AI tools" only matches if that exact phrase appears in a visible name, tagline, or topic. For broader discovery, use a short keyword such as "AI" or "productivity".

Output

Each default-dataset item follows this contract:

FieldTypeMeaning
namestringProduct name shown by Product Hunt.
taglinestring or nullProduct tagline or detail-page description.
urlstringAbsolute Product Hunt product/post URL.
upvotesintegerDisplayed vote/rating count when found; otherwise 0.
makersarrayZero or more {name, profile} objects from Product Hunt profile links.
topicsarray of stringsProduct Hunt topic labels when found.
launchDatestring or nullDate text/ISO value exposed on the product page when found.

API recipes

Set your Apify token and Actor identifier first. ACTOR_ID accepts the username~actor-name format.

export APIFY_TOKEN="YOUR_APIFY_TOKEN"
export ACTOR_ID="YOUR_USERNAME~producthunt-scraper"

The synchronous endpoint below starts a run, waits for completion, and returns default-dataset items as JSON. For large runs, use Apify's asynchronous run endpoint instead to avoid client timeout limits.

cURL

curl --fail --silent --show-error \
--request POST \
--header 'Content-Type: application/json' \
--data '{"searchQuery":"productivity","maxResults":20,"sortBy":"popular"}' \
"https://api.apify.com/v2/acts/${ACTOR_ID}/run-sync-get-dataset-items?token=${APIFY_TOKEN}"

Python

import os
import requests
actor_id = os.environ["ACTOR_ID"]
token = os.environ["APIFY_TOKEN"]
response = requests.post(
f"https://api.apify.com/v2/acts/{actor_id}/run-sync-get-dataset-items",
params={"token": token},
json={"searchQuery": "AI", "maxResults": 20, "sortBy": "newest"},
timeout=300,
)
response.raise_for_status()
items = response.json()
print(f"Received {len(items)} current-listing products")

JavaScript (Node.js 18+)

const actorId = process.env.ACTOR_ID;
const token = process.env.APIFY_TOKEN;
const endpoint = `https://api.apify.com/v2/acts/${actorId}/run-sync-get-dataset-items?token=${token}`;
const response = await fetch(endpoint, {
method: 'POST',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({ searchQuery: '', maxResults: 50, sortBy: 'popular' }),
});
if (!response.ok) throw new Error(`Apify request failed: ${response.status}`);
const items = await response.json();
console.log(`Received ${items.length} current-listing products`);

n8n HTTP Request

Create an HTTP Request node with:

  • Method: POST
  • URL: https://api.apify.com/v2/acts/YOUR_USERNAME~producthunt-scraper/run-sync-get-dataset-items
  • Query parameter: token = your Apify API token (store it in an n8n credential or environment variable)
  • Send Body: enabled
  • Body Content Type: JSON
  • JSON Body:
{
"searchQuery": "",
"maxResults": 50,
"sortBy": "popular"
}

The node output is the returned array of dataset items. Schedule the workflow daily, then connect item-list, database, spreadsheet, Slack, or email nodes for your monitoring workflow. Keep the token out of exported workflow JSON when sharing it.

Practical workflows

  • Daily launch digest: schedule sortBy: "newest" with an empty filter and compare URLs with yesterday's stored records.
  • Startup research: run a short topic keyword against the current ranked listing, then review taglines, topics, and Product Hunt pages.
  • Product discovery feed: save the newest visible launches to a sheet/database and deduplicate on url.
  • Category pulse: schedule separate runs for short terms such as AI, developer, or productivity; remember each term filters only that run's current listing.

The Actor returns a snapshot, not change history. Persist datasets externally or in your workflow if you need day-over-day tracking.

Cost and runtime

The Actor fetches one listing page, then fetches up to maxResults product pages sequentially with a one-second pause between products. Higher maxResults generally means a longer run and more platform resource usage.

Your actual charge depends on the pricing and platform-usage terms displayed on the Actor's current Apify Store page and your Apify plan. Check that page before running; this README does not assume a fixed per-run or per-result price. Start with maxResults: 10 or 20 to measure runtime and cost for your use case, then increase it if needed.

Reliability notes

Product Hunt can change its HTML or return security challenges. The Actor restricts discovery to verified listing-card structures and excludes review/footer links. If no verified cards can be parsed, it raises an error rather than silently emitting unrelated products or an empty dataset.