Product Hunt hub

Product Hunt Post API

One post with its description, hunter, makers, media, links, badges, votes, ranks, topics and the product it belongs to.

GET /v1/product-hunt/posts/{slug}

1 credit Failed requests are free

About this endpoint

GET /v1/product-hunt/posts/{slug} returns data.post with the list fields plus description, isArchived, updatedAt, productState, launchState, primaryLink, hunter, makers, media, links, badges, redirectToProduct and promo. topics holds up to 20 refs and topicsTotalCount the full count. product is the linked product, or null when the post has no product. shortenedUrl is the absolute short URL, e.g. https://www.producthunt.com/r/p/1162044; it is not followed.

Use the post slug from a launch URL, for example teamily-ai. Ranks are strings, as Product Hunt writes them, and can be null. hunter can be null on old posts, and product, promo, primaryLink, redirectToProduct and the array fields can be null. A renamed slug returns the canonical record; read post.slug. A slug with no public post returns lookupStatus: not_found and post: null.

Product Hunt Post API FAQ

What is the difference between latestScore and launchDayScore?

latestScore is the post's current score. launchDayScore is the score it had at the end of launch day. Both are integers; hideVotesCount says whether Product Hunt hides the vote count on the post.

Why are the ranks strings?

dailyRank, weeklyRank and monthlyRank are returned as strings, matching Product Hunt's own values, and any of them can be null. Parse them only when you need a number, and handle null.

What does shortenedUrl contain?

An absolute short URL, for example https://www.producthunt.com/r/p/1162044. It is not followed. The full post URL is not part of the record.

How do I get the product or comments for a post?

When post.product is not null, it gives the product's id, slug and name; use that slug on GET /v1/product-hunt/products/{slug}. Some older posts have no product, so handle null. Use the post slug on GET /v1/product-hunt/posts/{slug}/comments for its comment threads.

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.