docs / producthunt

Product Hunt API

Product Hunt API

base /producthunt/v18 endpoints
post/producthunt/v1/posts1 credit

today or historical leaderboard posts (daily/weekly/monthly/yearly)

ParameterAllowed / rangeDescription
period = dailyoptionaldaily · weekly · monthly · yearlyLeaderboard window. Unknown values fall back to the daily board.
dateoptionalLeaderboard date (YYYY-MM-DD). Overrides year/month/day when given.
yearoptional2013–Leaderboard year (used with month/day/week; defaults to today).
monthoptional1–12Leaderboard month 1-12 (for daily/monthly periods).
dayoptional1–31Leaderboard day of month 1-31 (for the daily period).
weekoptional1–53ISO week number 1-53 (for the weekly period).
page = 1optional1–Result page number (1-based). Use meta.next_page to go further.
Try in playground →
post/producthunt/v1/post1 credit

single launch post/product detail by slug

ParameterAllowed / rangeDescription
slugrequiredLaunch post or product slug (the segment in producthunt.com/products/<slug> or /posts/<slug>).
Try in playground →
post/producthunt/v1/topicsfree

browse Product Hunt topics/categories

ParameterAllowed / rangeDescription
page = 1optional1–Result page number (1-based). Use meta.next_page to go further.
Try in playground →
post/producthunt/v1/topic_posts1 credit

posts filtered by topic slug

ParameterAllowed / rangeDescription
slugrequiredTopic slug (the segment in producthunt.com/topics/<slug>).
page = 1optional1–Result page number (1-based). Use meta.next_page to go further.
Try in playground →
post/producthunt/v1/collections1 credit

public curated collections index

ParameterAllowed / rangeDescription
page = 1optional1–Result page number (1-based). Use meta.next_page to go further.
Try in playground →
post/producthunt/v1/collection1 credit

single collection by user+collection slug or full path

ParameterAllowed / rangeDescription
pathoptionalFull collection path (e.g. /@user/collections/<slug>). Alternative to username + collection_slug.
usernameoptionalCollection owner's username (with/without @). Combine with collection_slug, or pass the full path.
collection_slugoptionalCollection slug — the trailing segment of a collection path.
Try in playground →
post/producthunt/v1/user1 credit

maker profile plus submitted posts

ParameterAllowed / rangeDescription
usernamerequiredProduct Hunt username/handle, with or without @ (the name in producthunt.com/@<username>).
page = 1optional1–Result page number (1-based). Use meta.next_page to go further.
Try in playground →