Product Hunt Leaderboard API
Ranked posts for today or a chosen day, week, month or year, with the order and period the route used.
GET /v1/product-hunt/leaderboard1 credit Failed requests are free
About this endpoint
GET /v1/product-hunt/leaderboard returns data.posts, data.totalCount, data.order, data.period and data.page. With no parameters it returns today's daily board. Use year alone for a yearly board, year plus week for a weekly board, year plus month for a monthly board, or year plus month and day for a daily board.
order names the rank order, for example YEARLY_RANK, and period echoes the resolved period. A period with no ranked posts is lookupStatus: found with an empty list. Pages hold up to 20 posts. Posts-based lists stop at the first 5,000 rows and set page.truncated: true, so totalCount can be larger than the rows you can reach.
Product Hunt Leaderboard API FAQ
How do I request a yearly leaderboard?
Send year alone, for example year=2025. Add month for a monthly board, week for a weekly board, or month and day for a daily board. Omitting every parameter means today's daily board.
What does period contain?
period echoes what the request resolved to: { kind: "today" }, a day with year, month and day, a week with year and week, a month with year and month, or a year with year. Use it to store which board a row came from.
How is the leaderboard different from launches?
leaderboard reads the ranked posts for the period. launches reads the launches for the same period shape. Both page the same way and both return order and period.
How do I page through the leaderboard?
When data.page.hasMore is true, send data.page.nextCursor as cursor with the same period. A cursor is tied to the request that issued it. If page.truncated is true, more rows exist but none are available past offset 5,000, so there is no next cursor.
How much does it cost?
Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth. Each paginated page is a separate billed request.
Other Product Hunt endpoints
- PostsGET /v1/product-hunt/posts
- PostGET /v1/product-hunt/posts/{slug}
- CommentsGET /v1/product-hunt/posts/{slug}/comments
- ProductGET /v1/product-hunt/products/{slug}
- ReviewsGET /v1/product-hunt/products/{slug}/reviews
- UserGET /v1/product-hunt/users/{username}
- User postsGET /v1/product-hunt/users/{username}/posts
- SearchGET /v1/product-hunt/search