> **For coding agents and LLMs:** This is one Social Fetch marketing page (markdown export). For API orientation start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for auth and crawl rules use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for every operation use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt).

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/platforms/product-hunt/posts-slug>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/product-hunt/posts-slug.mdx>

---

# 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}` 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`.

## Request

- **Endpoint:** `GET /v1/product-hunt/posts/{slug}`
- **Credits:** 1 credit
Failed requests are free
- **Input:** by slug
- **Full reference:** [docs](https://www.socialfetch.dev/docs/api/v1/product-hunt/posts/slug/get)
- **Platform page:** [/platforms/product-hunt](https://www.socialfetch.dev/platforms/product-hunt)

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