Product Hunt Scraper (official API): launches, leaderboard avatar

Product Hunt Scraper (official API): launches, leaderboard

Pricing

from $0.70 / 1,000 post records

Go to Apify Store
Product Hunt Scraper (official API): launches, leaderboard

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

Brenton Keller

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

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.

FieldDescription
id, slug, url, name, tagline, descriptionPost identity and copy
websiteProduct Hunt redirect link as returned by the API
website_resolvedThe real product URL after following the redirect (tracking stripped); null if it could not be resolved
votes, comments_count, reviews_count, reviews_ratingEngagement
daily_rank, weekly_rank, monthly_rankLeaderboard positions (null when not ranked)
launch_date, created_at, featured_at, is_featuredTiming (UTC)
topics, topic_namesTopic slugs and names
makersList of { id, name, username, headline, twitter, website, url }; maker_count
hunter_name, hunter_username, hunter_urlWho submitted the post
thumbnail_url, mediaThumbnail and gallery items { type, url, video_url }
product_links{ type, url } such as app store links
commentsWith 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_changedMonitor mode only
enrichment_errorSet if the comments call failed; the base row is still returned and billed at the base rate
rawWith includeRaw: the untouched API object
fetched_atWhen 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.

EventPriceWhen
Post record$1.00 per 1,000 rowsStandard run
Enriched post record$3.00 per 1,000 rowsRow has comments attached (includeComments)
Topic record$0.50 per 1,000 rowsTopics 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 postedAfter to one month ago; the actor always sends explicit bounds, so older date ranges work.
  • website_resolved follows 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.