Product Hunt Launch Monitor — Products & Upvotes
Under maintenancePricing
from $2.34 / 1,000 result storeds
Product Hunt Launch Monitor — Products & Upvotes
Under maintenanceCollect 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
Maintained by CommunityActor 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
- Fetches the current ranked homepage (
popularortop) or/newest(newest). - Parses only verified launch cards from that server-rendered listing.
- Optionally applies
searchQueryas a local filter over each visible product's name, tagline, and topics. - Visits each selected product page and enriches the listing record when Product Hunt exposes additional metadata.
- 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.
popularandtopcurrently 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 benull; unavailable upvotes are0. makerscontains 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
| Field | Type | Default | Description |
|---|---|---|---|
searchQuery | string | "" | Optional case-insensitive local filter over visible names, taglines, and topics. |
maxResults | integer | 50 | Maximum products to enrich and save; range 1–500. |
sortBy | string | popular | newest 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:
| Field | Type | Meaning |
|---|---|---|
name | string | Product name shown by Product Hunt. |
tagline | string or null | Product tagline or detail-page description. |
url | string | Absolute Product Hunt product/post URL. |
upvotes | integer | Displayed vote/rating count when found; otherwise 0. |
makers | array | Zero or more {name, profile} objects from Product Hunt profile links. |
topics | array of strings | Product Hunt topic labels when found. |
launchDate | string or null | Date 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 osimport requestsactor_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, orproductivity; 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.