Product Hunt Scraper (official API): launches, leaderboard
Pricing
from $0.70 / 1,000 post records
Product Hunt Scraper (official API): launches, leaderboard
Returns Product Hunt posts as structured rows: daily launches and leaderboards, topic feeds, votes, rank, makers, hunter, media, resolved website and comments, plus a new-launches monitor mode. Official Product Hunt API, so no anti-bot failures. Pay per result.
Pricing
from $0.70 / 1,000 post records
Rating
0.0
(0)
Developer
Brenton Keller
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
Product Hunt Scraper (Official API): launches, votes, makers, comments
Daily launches and leaderboards, topic feeds, full post details and comments from Product Hunt, built on the official Product Hunt API instead of scraping the website. producthunt.com sits behind a bot challenge, which is why scraper-based actors fail a quarter of their runs. This actor talks to the API, so runs finish.
What it does
- Launches by date: every featured post for a day, a range of days, or the last N days, ordered by leaderboard rank, votes, or time.
- Topic feeds: filter launches by topic slug (artificial-intelligence, developer-tools, saas, productivity, ...). List all topics with mode "Topics".
- Specific posts: by Product Hunt URL or slug, or find a product's launch by its website URL.
- Full post details in one row: votes, comments count, daily/weekly/monthly rank, tagline, description, topics, makers (with Twitter and websites), hunter, thumbnail and media, product links, reviews rating.
- Resolved product website: Product Hunt's redirect link is followed to the real URL with tracking parameters stripped.
- Comments (optional, extra API calls): top comments by votes with author and timestamp.
- Monitor mode: remembers posts between runs and outputs only new launches, posts whose votes moved by at least N, or whose rank changed. Schedule it for a "what's new on Product Hunt" feed.
Who it's for
- Founders and marketers tracking competitors, categories, and launch-day performance.
- Sales and lead generation: makers of new products, with their websites and social handles, filtered by topic.
- Investors, analysts and newsletter writers who need the daily leaderboard as data, not a web page.
- AI agents that want a scheduled, changes-only feed of new launches in a niche.
Input examples
Today's leaderboard (default):
{ "days": 1, "order": "ranking" }
Last 7 days of AI launches with at least 100 votes:
{ "days": 7, "topics": ["artificial-intelligence"], "minVotes": 100, "order": "votes" }
A specific month, developer tools, with top 20 comments each:
{ "dateFrom": "2026-08-01", "dateTo": "2026-08-31", "topics": ["developer-tools"], "includeComments": true, "commentsLimit": 20, "maxItems": 300 }
Specific posts, or a product by website:
{ "mode": "posts", "postUrls": ["https://www.producthunt.com/posts/notion-3-0"], "websiteUrls": ["https://linear.app"] }
Monitor: run hourly, only report new launches or posts that gained 25+ votes:
{ "days": 1, "changesOnly": true, "minVoteDelta": 25, "monitorStoreName": "ph-today" }
The first monitor run outputs every post in the window (all are new) and seeds the store. Later runs output only changes.
List topics:
{ "mode": "topics", "topicQuery": "design", "maxItems": 50 }
Output
One row per post.
| Field | Description |
|---|---|
id, slug, url, name, tagline, description | Post identity and copy |
website | Product Hunt redirect link as returned by the API |
website_resolved | The real product URL after following the redirect (tracking stripped); null if it could not be resolved |
votes, comments_count, reviews_count, reviews_rating | Engagement |
daily_rank, weekly_rank, monthly_rank | Leaderboard positions (null when not ranked) |
launch_date, created_at, featured_at, is_featured | Timing (UTC) |
topics, topic_names | Topic slugs and names |
makers | List of { id, name, username, headline, twitter, website, url }; maker_count |
hunter_name, hunter_username, hunter_url | Who submitted the post |
thumbnail_url, media | Thumbnail and gallery items { type, url, video_url } |
product_links | { type, url } such as app store links |
comments | With includeComments: { id, body, created_at, votes, url, parent_id, user_name, user_username, user_headline } |
is_new, previous_votes, previous_seen_at, votes_delta, rank_changed | Monitor mode only |
enrichment_error | Set if the comments call failed; the base row is still returned and billed at the base rate |
raw | With includeRaw: the untouched API object |
fetched_at | When the row was fetched (UTC) |
Topics mode rows: id, name, slug, description, url, followers_count, posts_count, created_at.
Pricing
Pay per result. You are charged only for rows written to the dataset.
| Event | Price | When |
|---|---|---|
| Post record | $1.00 per 1,000 rows | Standard run |
| Enriched post record | $3.00 per 1,000 rows | Row has comments attached (includeComments) |
| Topic record | $0.50 per 1,000 rows | Topics mode |
Examples: a day's leaderboard (about 50 to 100 posts) costs under $0.10. A month of developer-tools launches with comments (300 rows) costs $0.90. A monitor run that finds 8 changed posts costs $0.008.
Rows are billed by what they contain: a post whose comments call failed is billed at the base rate. The first run in monitor mode charges every row, because every post is new to the store. Set Maximum total charge on the run to cap spend; the actor stops cleanly at the cap.
Limits and notes
- Product Hunt's API allows 6,250 complexity points per 15 minutes per token. A page of 20 posts with makers and topics costs a few hundred points, so roughly 300 to 600 posts per 15-minute window. The actor reads the rate-limit headers and waits for the window to reset (up to
maxWaitSecs, default 15 minutes) instead of failing. For large backfills, pass your own token (accessToken) to get your own quota. - The API filters by one topic server-side; additional topics are matched client-side against each post's topics.
- The API defaults
postedAfterto one month ago; the actor always sends explicit bounds, so older date ranges work. website_resolvedfollows Product Hunt's redirect with a plain HTTP client; a small share of products (bot-protected sites) resolve to null.- Monitor state is per
monitorStoreName. Do not run two monitor runs against the same store at the same time. - Data comes from Product Hunt's official API under its terms; do not use it to spam makers.
Use from an AI agent (MCP)
Every Apify actor is available as a tool through the Apify MCP server. Suggested agent pattern: schedule a run with changesOnly: true and a topic, then act only on the rows returned.
Support
Open an issue on the actor page with the run ID and input.