> **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>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/product-hunt/posts.mdx>

---

# Product Hunt Posts API

The posts Product Hunt is showing right now, with an optional topic filter, as one JSON list.

`GET /v1/product-hunt/posts` returns `data.posts`, at most 50 entries, with `id`, `name`, `tagline`, `url`, `productSlug`, `author.name`, `publishedAt`, `lastActivityAt` and `websiteRedirectUrl`. Add `topic` to narrow it to one topic, for example `topic=artificial-intelligence`; the response echoes it in `data.topic` and is null when you omit it.

This is Product Hunt's current most-active list, not a chronological or ranked feed. The response has no cursor: `page.hasMore` is false and `page.nextCursor` is null. An alias slug is resolved to its canonical topic in `data.topic`. If the topic value is not one Product Hunt knows, `lookupStatus` is `not_found` and `posts` is empty. A real topic with no current posts is `found` with an empty list, so branch on both fields rather than on the array length alone.

## Request

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

## FAQ

### How do I filter posts by topic?

Send `topic` with a topic slug, such as `artificial-intelligence`, `developer-tools` or `fintech`. The value is case-sensitive. An unknown topic returns `lookupStatus: not_found`, not an error.

### Can I page through the post list?

No. The list returns at most 50 posts and has no cursor. `page.hasMore` is always false and `page.nextCursor` is always null. Use the topic posts or leaderboard routes when you need paging.

### What fields does each post have?

`id`, `name`, `tagline`, `url`, `productSlug`, `author.name`, `publishedAt`, `lastActivityAt` and `websiteRedirectUrl`. `tagline`, `publishedAt`, `lastActivityAt`, `author.name` and `websiteRedirectUrl` can be null. One author name is shown; the record does not include a username or profile URL.

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