Skip to content
scrapeatlas.Dashboard

List Product Hunt launches and leaderboards

Try in Playground

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.

GET/v1/producthunt/launchesx-api-key
x-api-keystringrequiredheader

Your ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.

Query parameters
12
viewenumquery

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

topicstringquery

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.

Exampledeveloper-tools
querystringquery

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.

min 1 chars · max 200 chars

periodenumquery

Leaderboard only. daily (default), weekly, monthly or yearly.

one of: daily, weekly, monthly, yearly

yearstringquery

Year, 2013 or later. Required with any other date part; omit every date part for the current period.

monthstringquery

Month 1–12 for daily and monthly periods.

daystringquery

Day of month for the daily period.

weekstringquery

ISO-8601 week number 1–53 for the weekly period, as in producthunt.com/leaderboard/weekly/<year>/<week>.

featuredenumquery

true (default) ranks featured launches; false includes every launch of the period.

one of: true, false

orderenumquery

Leaderboard only. ranking (default, the period’s rank) or votes.

one of: ranking, votes

cursorstringquery

Opaque nextCursor from the previous page. Omit for the first page.

limitstringquery

Records per page, 1–20; defaults to 20 (the source's page ceiling).

Response fields
24
requestIdstring

Request correlation identifier.

HTTP attempts, decoded bytes and duration for the operation, including the single shared retry.

accounting.upstreamRequestsinteger

Always included.

≥ 0

accounting.responseBytesinteger

Always included.

≥ 0

accounting.durationMsnumber

Always included.

≥ 0

successboolean

True when usable data is returned; inspect status and coverage for omissions.

statusenum

success, partial, failed, or challenged. HTTP 200 can be partial.

one of: success, partial

sourceUrlstring

Public Product Hunt page for the request.

absolute HTTPS URL

fetchedAtstring

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).

coverage.sourceenum

Always included.

one of: public_api, public_feed

coverage.completeboolean

Always included.

coverage.warningsstring[]

Always included.

topicstringnullable

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.

querystringnullable

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

launches.idstring

Launch (post) ID as a string.

launches.namestring

Launch name.

launches.taglinestringnullable

Tagline, or null.

launches.urlstring

Public product page URL.

launches.hunterNamestringnullable

Display name of the hunter who submitted the launch, or null.

launches.publishedAtstring

Feed publication time with the source's offset.

launches.updatedAtstring

Feed update time with the source's offset.

countinteger

Feed only. Number of launches returned after the text filter.

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.

Error codes
11
HTTPfailure.codeMeaning
200partialUsable data with votes_hidden warnings.
400invalid_requestMissing, duplicate, malformed or unsupported parameters, including incomplete or impossible leaderboard dates.
401unauthorizedMissing or invalid worker API key.
404not_foundThe product, launch, comment, topic, category, forum, discussion or user does not exist.
429upstream_rate_limitedSource throttling; no automatic retry.
502upstream_challengedSource rejected or challenged the unauthenticated request.
502unsupported_pageMalformed, mismatched or non-JSON source data, or a GraphQL error.
502response_too_large payload_too_complexResponse exceeded byte or parsing limits.
502unsafe_redirect request_limit upstream_errorBounded source retrieval could not complete.
503busyAll worker slots are occupied.
504timeoutTotal request deadline expired.