Product Hunt Daily Launches Scraper
Pricing
from $3.50 / 1,000 results
Product Hunt Daily Launches Scraper
Scrape Product Hunt daily launches with votes, topics, descriptions, screenshots and video links. Supports daily snapshots, date ranges and topic filtering. No API key needed — works out of the box.
Pricing
from $3.50 / 1,000 results
Rating
0.0
(0)
Developer
Logiover
Maintained by CommunityActor stats
1
Bookmarked
32
Total users
17
Monthly active users
4 days ago
Last modified
Categories
Share

Scrape Product Hunt daily launches, votes, maker profiles, topics, comments, and rankings via the official Product Hunt GraphQL API v2. Supports today's launches, custom date ranges, and topic/category filtering. Get clean, structured product data — no browser, no HTML parsing, straight from the source.
What Is This Actor?
Product Hunt is the world's leading product discovery platform. Every day, hundreds of new products — tools, apps, SaaS products, hardware, and AI tools — are launched and ranked by community upvotes. This actor connects directly to Product Hunt's official GraphQL API to extract structured launch data at scale.
Built for:
- 🚀 Startup & product researchers — track daily launches and identify market trends
- 🤖 AI & tool aggregators — monitor new AI product launches by topic
- 📊 Competitive intelligence — benchmark new entrants against existing products by votes and category
- 💼 Investors & VCs — source early-stage products gaining traction on PH
- 🛠️ Developer tool scouts — watch developer tools, APIs, and open-source launches daily
- 📣 Marketing & PR teams — monitor product launches in your industry for partnership and coverage opportunities
- 📰 Newsletter builders — automate your "this week in AI tools" or "top SaaS launches" digest
Features
- Three scrape modes — today's daily launches, custom date range, or filtered by topic/category
- Official GraphQL API — uses Product Hunt's own public API v2; reliable, structured, and stable
- Built-in token — works out of the box with no API key required (or bring your own for higher rate limits)
- Full product data — name, tagline, description, website URL, thumbnail, votes, comments, reviews
- Maker profiles — name, username, headline, Twitter handle, website, follower count (per maker)
- Topic taxonomy — full topic/category list for each product (id, name, slug)
- Media extraction — all images and video URLs associated with the launch
- Optional comments — fetch top comments for each post with author info and vote counts
- Configurable sort order — sort by votes, newest, or featured date
- Pagination — automatically pages through all results (20 posts per page)
- Date normalization —
launchDateis PST-adjusted to match Product Hunt's day boundaries - Maker redaction handling — detects and flags
[REDACTED]maker records cleanly - Proxy support — optional Apify Proxy integration
API Authentication
This actor uses Product Hunt's official GraphQL API v2, which requires a Bearer token for all requests.
Option 1: No setup (built-in token)
Leave apiKey, apiSecret, and accessToken all blank. The actor uses a built-in token that works for most scraping volumes out of the box. Recommended for most users.
Option 2: Your own API key (recommended for high-volume runs)
- Go to producthunt.com/v2/oauth/applications
- Create a new application
- Copy the Client ID → paste into
apiKey - Copy the Client Secret → paste into
apiSecret
The actor will automatically exchange your credentials for a Bearer token via OAuth 2.0 client_credentials flow — no manual step required.
Option 3: Pre-obtained Bearer token
If you already have a valid Bearer token, paste it directly into accessToken. The actor will skip the token exchange and use it immediately.
Priority order: accessToken → apiKey + apiSecret → built-in token
Output Data
Each record represents one Product Hunt post (product launch).
| Field | Type | Description |
|---|---|---|
id | string | Product Hunt post ID |
name | string | Product name |
slug | string | URL slug (e.g. "notion-ai") |
tagline | string | null | One-line product description |
description | string | null | Full product description |
url | string | null | Direct URL to the Product Hunt post |
website | string | null | Product's own website URL |
votesCount | number | null | Total upvotes received |
commentsCount | number | null | Total comments on the post |
launchDate | string | null | Date featured on Product Hunt (YYYY-MM-DD) |
createdAt | string | null | ISO timestamp of post creation |
featuredAt | string | null | ISO timestamp of when the post was featured |
reviewsCount | number | null | Number of product reviews |
reviewsRating | number | null | Average review rating |
thumbnailUrl | string | null | Product thumbnail image URL |
topics | array | Full topic objects: [{ id, name, slug }] |
topicNames | array | Topic names as a flat string array |
makers | array | Full maker objects (see below) |
makerNames | array | Maker display names as a flat string array |
makerUsernames | array | Maker PH usernames as a flat string array |
makersRedacted | boolean | true if all makers were redacted by PH |
media | array | Media objects: [{ type, url, videoUrl }] |
comments | array | undefined | Comments (only when scrapeComments: true) |
scrapedAt | string | ISO 8601 timestamp of when this record was scraped |
Maker Object
{"id": "123456","name": "Jane Smith","username": "janesmith","headline": "Founder @ Acme AI","twitterUsername": "janesmith","websiteUrl": "https://janesmith.io","followersCount": 8420}
Comment Object (when scrapeComments: true)
{"id": "987654","body": "This is exactly what I've been looking for. The integrations are seamless.","createdAt": "2025-05-15T10:30:00.000Z","votesCount": 24,"userName": "Alex Kim","userUsername": "alexkim"}
Topic Object
{"id": "48964","name": "Artificial Intelligence","slug": "artificial-intelligence"}
Sample Output Record
{"id": "567890","name": "Acme AI","slug": "acme-ai","tagline": "The fastest way to build AI-powered workflows","description": "Acme AI lets you connect any LLM to your existing tools in minutes...","url": "https://www.producthunt.com/posts/acme-ai","website": "https://acmeai.io","votesCount": 1842,"commentsCount": 94,"launchDate": "2025-05-15","featuredAt": "2025-05-15T07:01:00.000Z","reviewsCount": 12,"reviewsRating": 4.8,"thumbnailUrl": "https://ph-files.imgix.net/...png","topics": [{ "id": "48964", "name": "Artificial Intelligence", "slug": "artificial-intelligence" },{ "id": "267", "name": "Productivity", "slug": "productivity" }],"topicNames": ["Artificial Intelligence", "Productivity"],"makers": [{"id": "123456","name": "Jane Smith","username": "janesmith","headline": "Founder @ Acme AI","twitterUsername": "janesmith","websiteUrl": "https://janesmith.io","followersCount": 8420}],"makerNames": ["Jane Smith"],"makerUsernames": ["janesmith"],"makersRedacted": false,"media": [{ "type": "image", "url": "https://ph-files.imgix.net/...jpg", "videoUrl": null }],"scrapedAt": "2025-05-15T12:00:00.000Z"}
Input Configuration
apiKey · string · optional (secret)
Your Product Hunt API Client ID. Get one at producthunt.com/v2/oauth/applications. Leave blank to use the built-in token.
apiSecret · string · optional (secret)
Your Product Hunt API Client Secret. Required alongside apiKey for the OAuth token exchange. Leave blank to use the built-in token.
accessToken · string · optional (secret)
A pre-obtained Product Hunt Bearer token. If provided, apiKey and apiSecret are ignored.
mode · string · default: "daily"
Controls which posts are fetched.
| Mode | Value | Description |
|---|---|---|
| Daily launches | "daily" | Fetches posts from a specific date (or today if date is blank) |
| Date range | "dateRange" | Fetches posts between dateFrom and dateTo |
| Topic filter | "topic" | Fetches posts tagged with a specific topic, sorted by sortBy |
date · string · format: YYYY-MM-DD · optional
(Used when mode is "daily")
The specific date to scrape. Leave blank for today's launches.
Examples: "2025-05-15", "2025-01-01", "2024-12-25"
Note: Product Hunt's day boundaries follow PST (UTC-7). The actor accounts for this automatically — you just need to provide the calendar date.
dateFrom · string · format: YYYY-MM-DD
(Required when mode is "dateRange")
Start date of the range (inclusive). Combined with PST midnight: 2025-03-01T00:00:00-07:00
dateTo · string · format: YYYY-MM-DD
(Required when mode is "dateRange")
End date of the range (inclusive). Combined with PST end-of-day: 2025-03-14T23:59:59-07:00
topic · string
(Required when mode is "topic")
The topic slug to filter by. Use the slug as it appears in Product Hunt's topic URLs.
Common topic slugs:
| Slug | Topic |
|---|---|
artificial-intelligence | Artificial Intelligence |
developer-tools | Developer Tools |
productivity | Productivity |
marketing | Marketing |
design-tools | Design Tools |
saas | SaaS |
open-source | Open Source |
chrome-extensions | Chrome Extensions |
no-code | No-Code |
api | API |
ios | iOS |
android | Android |
fintech | Fintech |
health-fitness | Health & Fitness |
games | Games |
Browse all topics at producthunt.com/topics.
sortBy · string · default: "VOTES"
How posts are sorted in the results.
| Value | Sort Order |
|---|---|
"VOTES" | Most upvoted first (default) |
"NEWEST" | Most recently created first |
"FEATURED_AT" | By featured date |
Recommendation: Use "VOTES" for daily launches to get the leaderboard order. Use "NEWEST" for monitoring the full stream of new submissions.
maxPosts · integer · default: 0 (unlimited)
Maximum number of posts to fetch and save. The API returns 20 posts per page — the actor paginates automatically.
Set to 0 for unlimited. A typical PH day has 30–60 featured posts. Topic queries may return thousands across time.
scrapeComments · boolean · default: false
When true, the actor fetches top-level comments for each post. Comment data includes body text, author name and username, creation timestamp, and vote count.
Note: Enabling comments increases API usage proportionally. Each comment fetch is included in the same GraphQL request as the post — no extra round trips.
maxComments · integer · default: 0
(Used when scrapeComments is true)
Maximum number of comments to fetch per post. Set to 0 to fetch all available comments for each post (up to the API's limit).
proxyConfiguration · object · default: disabled
Optional proxy for all API requests. The Product Hunt API is a standard JSON/HTTPS endpoint and generally does not require a proxy. Enable only if you experience connection issues.
{ "useApifyProxy": false }
Usage Examples
Example 1 — Today's top launches (no setup needed)
{"mode": "daily","sortBy": "VOTES","maxPosts": 0,"scrapeComments": false}
Returns all of today's featured Product Hunt posts, sorted by votes. No API key needed.
Example 2 — Specific date with full comments
{"mode": "daily","date": "2025-03-14","sortBy": "VOTES","maxPosts": 0,"scrapeComments": true,"maxComments": 10}
Returns all launches from March 14, 2025 with the top 10 comments per post.
Example 3 — Full month of launches
{"mode": "dateRange","dateFrom": "2025-03-01","dateTo": "2025-03-31","sortBy": "VOTES","maxPosts": 0,"scrapeComments": false}
Returns all featured posts from March 2025 — useful for monthly market research datasets.
Example 4 — AI launches, top 100
{"mode": "topic","topic": "artificial-intelligence","sortBy": "VOTES","maxPosts": 100,"scrapeComments": false}
Returns the 100 most-voted AI product launches on Product Hunt.
Example 5 — Developer tools launches, last 7 days
{"mode": "dateRange","dateFrom": "2025-05-08","dateTo": "2025-05-15","sortBy": "VOTES","topic": "","maxPosts": 200,"scrapeComments": false}
Example 6 — Use your own API key for high volume
{"apiKey": "your_client_id_here","apiSecret": "your_client_secret_here","mode": "dateRange","dateFrom": "2024-01-01","dateTo": "2024-12-31","sortBy": "VOTES","maxPosts": 0,"scrapeComments": false}
Full year of Product Hunt launches using your own API credentials.
How It Works
API & Authentication
The actor targets Product Hunt's official GraphQL endpoint:
POST https://api.producthunt.com/v2/api/graphqlAuthorization: Bearer {token}
On startup, the actor resolves the Bearer token by priority:
accessTokeninput → used directlyapiKey+apiSecret→ exchanged for a token viaPOST /v2/oauth/token(OAuth 2.0 client credentials)- Neither provided → built-in token used
GraphQL Query
The actor sends a single parameterized GraphQL query with:
postedAfter/postedBefore— PST-adjusted datetime strings for date filteringtopic— topic slug for topic modeorder— sort direction (VOTES,NEWEST,FEATURED_AT)first+after— pagination cursor
All post fields are fetched in one query including nested topics, makers, media, and optionally comments. No secondary requests are needed per post.
Pagination
The API returns 20 posts per page with a cursor-based pagination model (pageInfo.endCursor / pageInfo.hasNextPage). The actor loops until:
- All pages are exhausted, or
maxPostsis reached
A 500 ms polite delay is added between pages.
Date Handling
Product Hunt's day boundaries are in PST (UTC-7). A post launched on May 15 PST appears as May 15 even if UTC time shows May 16 for late-day posts. The actor constructs date ranges using explicit PST offsets:
postedAfter: "2025-05-15T00:00:00-07:00"postedBefore: "2025-05-15T23:59:59-07:00"
The launchDate field is extracted from featuredAt (preferred) or createdAt and always returns the calendar date portion only (YYYY-MM-DD).
Maker Redaction
Product Hunt redacts maker information for some posts (returning "[REDACTED]" as name and username). The actor detects and filters these entries, setting makersRedacted: true when a post's maker list was entirely redacted.
Input config│▼Resolve Bearer token (accessToken → apiKey/secret → built-in)│▼Build GraphQL variables (dates, topic, sort, pagination)│▼ (paginated loop, 20 posts/page)POST GraphQL query → parse edges → push to Dataset│└── Repeat with next cursor until hasNextPage=false or maxPosts reached
Performance
| Scenario | Posts | API Pages | Est. Time |
|---|---|---|---|
| 1 day, no comments | 30–60 | 2–3 | < 30 sec |
| 1 month, no comments | 900–1,800 | 45–90 | 1–3 min |
| 1 year, no comments | 10,000–20,000 | 500–1,000 | 10–20 min |
| AI topic, top 500 | 500 | 25 | ~2 min |
| 1 day, with comments | 30–60 | 2–3 | < 1 min |
Cost: Very low. All data is fetched from a single GraphQL endpoint — no browser, no HTML parsing. The actor uses native fetch. Compute cost is negligible; API rate limits are the primary constraint.
Export Formats
Download your results from the Apify Dataset in:
- JSON — full structured output with nested arrays (
topics,makers,media,comments) - CSV — flat table; array fields serialized as JSON strings — ready for Excel or Google Sheets
- Excel (.xlsx) — native spreadsheet format
- JSONL — one record per line for streaming into databases and analytics pipelines
Practical Use Cases
Daily Product Monitoring / Newsletter Automation
Schedule this actor daily with mode: "daily" and sortBy: "VOTES". Export to Airtable, Notion, or Google Sheets. You now have a daily feed of every ranked PH launch — with votes, makers, topics, and website URLs — ready for curation into a newsletter or digest.
AI Tool Tracking
Run weekly with mode: "topic" and topic: "artificial-intelligence" and sortBy: "VOTES". Track which AI tools gain the most traction, who the makers are, and what topics they span. Use makerNames and makerUsernames for outreach.
Market Entry Research
Use mode: "dateRange" with a 3–6 month window in your target category. Analyze:
- How many products launch per month in your space
- What vote counts separate top-10 from the rest
- Which makers are serial launchers
- What taglines and descriptions resonate
Investor Deal Flow
Set up a scheduled run for mode: "daily" and filter by vote threshold in post-processing. Products with 500+ votes on launch day are early signals of strong market fit. Use website and makers[].websiteUrl for due diligence outreach.
Product Launch Benchmarking
Before your own PH launch, use mode: "dateRange" to analyze all posts in your category from the past 6 months. Benchmark expected votes, comment volume, and review ratings for products similar to yours.
Limitations
- Featured posts only. The
postsGraphQL query returns posts that were featured on Product Hunt (appearing on the homepage leaderboard). Non-featured submissions (very new or low-quality posts that didn't make the homepage) are not returned. - PST day boundaries. Product Hunt's day is defined in PST. The actor handles this automatically, but if you provide custom
dateFrom/dateTowith UTC-midnight intent, the boundaries may shift by 7 hours relative to PST-midnight. - Maker data may be redacted. Product Hunt redacts maker profiles in some cases (privacy settings, account deletions). Affected posts will have
makersRedacted: trueand emptymakerNames/makerUsernamesarrays. dailyRankandweeklyRanknot in API. The Product Hunt GraphQL API v2 does not exposedailyRankorweeklyRankfields directly. These appear in the dataset schema for forward-compatibility but will benull.pricingTypeandhunterNamenot available. The v2 API does not expose pricing type or the "hunter" (submitter) as separate structured fields. These fields will benull.- Rate limits with built-in token. The built-in token has shared rate limits. For large date range runs (full year+), providing your own API key is recommended to avoid throttling.
- Comments are top-level only. Nested replies within comment threads are not fetched — only top-level comments.
Frequently Asked Questions
Q: Do I need a Product Hunt account or API key?
No. The actor works out of the box using a built-in token. For high-volume runs (months or years of data), providing your own API key is recommended to avoid hitting shared rate limits.
Q: How do I get my own API key?
Go to producthunt.com/v2/oauth/applications, sign in, and create a new application. Copy the Client ID and Client Secret into the apiKey and apiSecret fields. The actor handles the token exchange automatically.
Q: Why are dailyRank, weeklyRank, hunterName, and pricingType null?
The Product Hunt GraphQL API v2 does not expose these fields in its public schema. They appear in the output schema for forward compatibility. Sort by votesCount descending to approximate daily rank order.
Q: Does the actor get all posts or only featured ones?
Only featured posts — those that appeared on the Product Hunt homepage leaderboard. Non-featured submissions are not returned by the posts GraphQL query. This is a Product Hunt API limitation, not an actor limitation.
Q: What is the difference between createdAt and featuredAt?
createdAt is when the post was submitted to Product Hunt. featuredAt is when it appeared on the homepage leaderboard (usually the next midnight PST). For launches, featuredAt is the more meaningful timestamp.
Q: Can I scrape a specific product by name or URL?
Not directly via this actor's input. Use mode: "topic" with the relevant topic and post-process by name or slug. Alternatively, use mode: "daily" for the launch date and filter by name.
Q: How often does Product Hunt update its data?
This actor hits the live API — data is real-time. Votes, comments, and reviews on older posts can still change as the community continues to interact with them.
Q: Can I run this on a schedule for daily monitoring?
Yes — use the Apify Scheduler with mode: "daily" and leave date blank. The actor will automatically scrape today's launches each run. Combine with Apify integrations (Google Sheets, Airtable, Slack webhooks) for automated reporting.
Technical Details
| Property | Value |
|---|---|
| Runtime | Node.js (ES Modules) |
| Framework | Apify SDK v3 |
| API | Product Hunt GraphQL API v2 |
| Endpoint | https://api.producthunt.com/v2/api/graphql |
| Auth | OAuth 2.0 Client Credentials (Bearer token) |
| HTTP client | Native fetch + optional undici ProxyAgent |
| Pagination | Cursor-based (endCursor / hasNextPage) |
| Page size | 20 posts per request |
| Inter-page delay | 500 ms |
| Date timezone | PST (UTC-7) |
| Proxy required | ❌ No (optional) |
Changelog
v1.0
- Initial release
- Three modes:
daily,dateRange,topic - Full post data: name, tagline, description, URL, website, votes, comments, reviews, thumbnail
- Maker profiles: name, username, headline, Twitter, website, follower count
- Topic taxonomy: id, name, slug per topic
- Media extraction: type, URL, videoUrl per media item
- Optional comment scraping with author data
- OAuth 2.0 client credentials token exchange
- Built-in token fallback (no setup required)
- PST-aware date range construction
- Maker redaction detection (
makersRedactedflag) - Cursor-based pagination with 500 ms inter-page delay
- Configurable sort order: VOTES, NEWEST, FEATURED_AT
Support
If you encounter API errors, empty results for a specific date, or token issues, please open a support ticket via the Apify Console. Include your scraping mode, date range, topic slug, and the actor run ID in your report. For rate limit errors, try providing your own API key from the Product Hunt developer portal.
Changelog
- 2026-05-20 — Maintenance pass: reviewed the input schema and default values for a smooth one-click start, and rebuilt the Actor on the latest base image.
Last reviewed: 2026-05-20.