List Product Hunt launches and leaderboards
List Product Hunt launches. view=feed (default) reads the public launch feed, newest first, with name, tagline, product URL, hunter and published/updated times; filter it by topic slug or display name and narrow it with a case-insensitive text match. view=leaderboard ranks a daily, weekly, monthly or yearly leaderboard by rank or votes, with votes, comments, ranks, hunter, product and topics, paged with cursor. An unknown topic returns not_found instead of the unfiltered feed.
/v1/producthunt/launchesx-api-keyHeaders
Get your API keyYour ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.
feed (default) reads the launch feed (topic, query); leaderboard reads a ranked period (period, year, month, day, week, featured, order, cursor, limit).
one of: feed, leaderboard
Feed only. Optional topic slug such as artificial-intelligence or developer-tools; a display name such as Developer Tools is converted to its slug. The topic is confirmed before the feed is read.
developer-toolsFeed only. Optional case-insensitive text filter applied to the name and tagline of the returned launches. It filters this feed; use search for the archive.
min 1 chars · max 200 chars
Leaderboard only. daily (default), weekly, monthly or yearly.
one of: daily, weekly, monthly, yearly
Year, 2013 or later. Required with any other date part; omit every date part for the current period.
Month 1–12 for daily and monthly periods.
Day of month for the daily period.
ISO-8601 week number 1–53 for the weekly period, as in producthunt.com/leaderboard/weekly/<year>/<week>.
true (default) ranks featured launches; false includes every launch of the period.
one of: true, false
Leaderboard only. ranking (default, the period’s rank) or votes.
one of: ranking, votes
Opaque nextCursor from the previous page. Omit for the first page.
Records per page, 1–20; defaults to 20 (the source's page ceiling).
Request correlation identifier.
HTTP attempts, decoded bytes and duration for the operation, including the single shared retry.
Always included.
≥ 0
Always included.
≥ 0
Always included.
≥ 0
True when usable data is returned; inspect status and coverage for omissions.
success, partial, failed, or challenged. HTTP 200 can be partial.
one of: success, partial
Public Product Hunt page for the request.
absolute HTTPS URL
UTC retrieval time.
source is public_api (Product Hunt's public web GraphQL) or public_feed (the Atom launch feed). Complete means this bounded page was returned without known omissions; votes_hidden marks launches whose vote count Product Hunt hides during their first hours (returned as null).
Always included.
one of: public_api, public_feed
Always included.
Always included.
Feed only. Optional topic slug such as artificial-intelligence or developer-tools; a display name such as Developer Tools is converted to its slug. The topic is confirmed before the feed is read.
Feed only. Optional case-insensitive text filter applied to the name and tagline of the returned launches. It filters this feed; use search for the archive.
Feed launches in source order (up to 50), or leaderboard launches for this page in the requested order.
up to 100 items
Launch (post) ID as a string.
Launch name.
Tagline, or null.
Public product page URL.
Display name of the hunter who submitted the launch, or null.
Feed publication time with the source's offset.
Feed update time with the source's offset.
Feed only. Number of launches returned after the text filter.
No fields match.
HTTP 200 returns the success variant. Check status: partial means usable data with warnings, and failed or challenged requests carry a failure object described in Errors & responses.
| HTTP | failure.code | Meaning |
|---|---|---|
| 200 | partial | Usable data with votes_hidden warnings. |
| 400 | invalid_request | Missing, duplicate, malformed or unsupported parameters, including incomplete or impossible leaderboard dates. |
| 401 | unauthorized | Missing or invalid worker API key. |
| 404 | not_found | The product, launch, comment, topic, category, forum, discussion or user does not exist. |
| 429 | upstream_rate_limited | Source throttling; no automatic retry. |
| 502 | upstream_challenged | Source rejected or challenged the unauthenticated request. |
| 502 | unsupported_page | Malformed, mismatched or non-JSON source data, or a GraphQL error. |
| 502 | response_too_large payload_too_complex | Response exceeded byte or parsing limits. |
| 502 | unsafe_redirect request_limit upstream_error | Bounded source retrieval could not complete. |
| 503 | busy | All worker slots are occupied. |
| 504 | timeout | Total request deadline expired. |